4aaa8f8d0ace5cb1893e07c0ff20656c0421391e
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Wed Mar 30 16:17:23 CEST 2005 [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 /opt/ansic/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_sitecustomize=''
667 usesitecustomize=''
668 d_sockatmark=''
669 d_sockatmarkproto=''
670 d_msg_ctrunc=''
671 d_msg_dontroute=''
672 d_msg_oob=''
673 d_msg_peek=''
674 d_msg_proxy=''
675 d_oldsock=''
676 d_scm_rights=''
677 d_socket=''
678 d_sockpair=''
679 sockethdr=''
680 socketlib=''
681 d_socklen_t=''
682 d_socks5_init=''
683 d_sqrtl=''
684 d_srand48_r=''
685 srand48_r_proto=''
686 d_srandom_r=''
687 srandom_r_proto=''
688 d_sresgproto=''
689 d_sresuproto=''
690 d_statblks=''
691 d_statfs_f_flags=''
692 d_statfs_s=''
693 d_fstatvfs=''
694 d_statvfs=''
695 d_stdio_cnt_lval=''
696 d_stdio_ptr_lval=''
697 d_stdio_ptr_lval_nochange_cnt=''
698 d_stdio_ptr_lval_sets_cnt=''
699 d_stdiobase=''
700 d_stdstdio=''
701 stdio_base=''
702 stdio_bufsiz=''
703 stdio_cnt=''
704 stdio_filbuf=''
705 stdio_ptr=''
706 d_index=''
707 d_strchr=''
708 d_strcoll=''
709 d_strctcpy=''
710 d_strerrm=''
711 d_strerror=''
712 d_sysernlst=''
713 d_syserrlst=''
714 d_strerror_r=''
715 strerror_r_proto=''
716 d_strftime=''
717 d_strlcat=''
718 d_strlcpy=''
719 d_strtod=''
720 d_strtol=''
721 d_strtold=''
722 d_strtoll=''
723 d_strtoq=''
724 d_strtoul=''
725 d_strtoull=''
726 d_strtouq=''
727 d_strxfrm=''
728 d_symlink=''
729 d_syscall=''
730 d_syscallproto=''
731 d_sysconf=''
732 d_system=''
733 d_tcgetpgrp=''
734 d_tcsetpgrp=''
735 d_telldirproto=''
736 d_time=''
737 timetype=''
738 clocktype=''
739 d_times=''
740 d_tmpnam_r=''
741 tmpnam_r_proto=''
742 d_truncate=''
743 d_ttyname_r=''
744 ttyname_r_proto=''
745 d_tzname=''
746 d_u32align=''
747 d_ualarm=''
748 d_umask=''
749 d_semctl_semid_ds=''
750 d_semctl_semun=''
751 d_union_semun=''
752 d_unordered=''
753 d_usleep=''
754 d_usleepproto=''
755 d_ustat=''
756 d_vfork=''
757 usevfork=''
758 d_voidsig=''
759 signal_t=''
760 d_volatile=''
761 d_charvspr=''
762 d_vprintf=''
763 d_wait4=''
764 d_waitpid=''
765 d_wcstombs=''
766 d_wctomb=''
767 d_writev=''
768 dlext=''
769 cccdlflags=''
770 ccdlflags=''
771 dlsrc=''
772 ld=''
773 lddlflags=''
774 usedl=''
775 doublesize=''
776 ebcdic=''
777 fflushNULL=''
778 fflushall=''
779 fpossize=''
780 fpostype=''
781 gccansipedantic=''
782 gccosandvers=''
783 gccversion=''
784 gidformat=''
785 gidsign=''
786 gidsize=''
787 gidtype=''
788 groupstype=''
789 h_fcntl=''
790 h_sysfile=''
791 html1dir=''
792 html1direxp=''
793 installhtml1dir=''
794 html3dir=''
795 html3direxp=''
796 installhtml3dir=''
797 i_arpainet=''
798 i_crypt=''
799 db_hashtype=''
800 db_prefixtype=''
801 db_version_major=''
802 db_version_minor=''
803 db_version_patch=''
804 i_db=''
805 i_dbm=''
806 i_rpcsvcdbm=''
807 d_dirnamlen=''
808 direntrytype=''
809 i_dirent=''
810 i_dld=''
811 i_dlfcn=''
812 i_fcntl=''
813 i_float=''
814 i_fp=''
815 i_fp_class=''
816 i_gdbm=''
817 d_grpasswd=''
818 i_grp=''
819 i_ieeefp=''
820 i_inttypes=''
821 i_langinfo=''
822 i_libutil=''
823 i_limits=''
824 i_locale=''
825 i_machcthr=''
826 i_malloc=''
827 i_math=''
828 i_memory=''
829 i_mntent=''
830 i_ndbm=''
831 i_netdb=''
832 i_neterrno=''
833 i_netinettcp=''
834 i_niin=''
835 i_sysin=''
836 i_poll=''
837 i_prot=''
838 i_pthread=''
839 d_pwage=''
840 d_pwchange=''
841 d_pwclass=''
842 d_pwcomment=''
843 d_pwexpire=''
844 d_pwgecos=''
845 d_pwpasswd=''
846 d_pwquota=''
847 i_pwd=''
848 i_sfio=''
849 i_shadow=''
850 i_socks=''
851 i_stddef=''
852 i_stdlib=''
853 i_string=''
854 strings=''
855 i_sunmath=''
856 i_sysaccess=''
857 i_sysdir=''
858 i_sysfile=''
859 d_voidtty=''
860 i_bsdioctl=''
861 i_sysfilio=''
862 i_sysioctl=''
863 i_syssockio=''
864 i_syslog=''
865 i_sysmman=''
866 i_sysmode=''
867 i_sysmount=''
868 i_sysndir=''
869 i_sysparam=''
870 i_sysresrc=''
871 i_syssecrt=''
872 i_sysselct=''
873 i_sysstat=''
874 i_sysstatfs=''
875 i_sysstatvfs=''
876 i_systimes=''
877 i_systypes=''
878 i_sysuio=''
879 i_sysun=''
880 i_sysutsname=''
881 i_sysvfs=''
882 i_syswait=''
883 i_sgtty=''
884 i_termio=''
885 i_termios=''
886 d_tm_tm_gmtoff=''
887 d_tm_tm_zone=''
888 i_systime=''
889 i_systimek=''
890 i_time=''
891 timeincl=''
892 i_unistd=''
893 i_ustat=''
894 i_utime=''
895 i_values=''
896 i_stdarg=''
897 i_varargs=''
898 i_varhdr=''
899 i_vfork=''
900 inc_version_list=''
901 inc_version_list_init=''
902 installprefix=''
903 installprefixexp=''
904 installstyle=''
905 installusrbinperl=''
906 intsize=''
907 longsize=''
908 shortsize=''
909 issymlink=''
910 libc=''
911 ldlibpthname=''
912 libperl=''
913 shrpenv=''
914 useshrplib=''
915 glibpth=''
916 libpth=''
917 loclibpth=''
918 plibpth=''
919 xlibpth=''
920 ignore_versioned_solibs=''
921 libs=''
922 libsdirs=''
923 libsfiles=''
924 libsfound=''
925 libspath=''
926 lns=''
927 d_PRIEUldbl=''
928 d_PRIFUldbl=''
929 d_PRIGUldbl=''
930 d_PRIeldbl=''
931 d_PRIfldbl=''
932 d_PRIgldbl=''
933 d_SCNfldbl=''
934 sPRIEUldbl=''
935 sPRIFUldbl=''
936 sPRIGUldbl=''
937 sPRIeldbl=''
938 sPRIfldbl=''
939 sPRIgldbl=''
940 sSCNfldbl=''
941 lseeksize=''
942 lseektype=''
943 make_set_make=''
944 d_mymalloc=''
945 freetype=''
946 mallocobj=''
947 mallocsrc=''
948 malloctype=''
949 usemallocwrap=''
950 usemymalloc=''
951 installman1dir=''
952 man1dir=''
953 man1direxp=''
954 man1ext=''
955 installman3dir=''
956 man3dir=''
957 man3direxp=''
958 man3ext=''
959 modetype=''
960 multiarch=''
961 mydomain=''
962 myhostname=''
963 phostname=''
964 c=''
965 n=''
966 d_eofnblk=''
967 eagain=''
968 o_nonblock=''
969 rd_nodata=''
970 need_va_copy=''
971 netdb_hlen_type=''
972 netdb_host_type=''
973 netdb_name_type=''
974 netdb_net_type=''
975 groupcat=''
976 hostcat=''
977 passcat=''
978 orderlib=''
979 ranlib=''
980 d_perl_otherlibdirs=''
981 otherlibdirs=''
982 package=''
983 spackage=''
984 pager=''
985 api_revision=''
986 api_subversion=''
987 api_version=''
988 api_versionstring=''
989 patchlevel=''
990 perl_patchlevel=''
991 revision=''
992 subversion=''
993 version=''
994 version_patchlevel_string=''
995 perl5=''
996 perladmin=''
997 perlpath=''
998 d_nv_preserves_uv=''
999 i16size=''
1000 i16type=''
1001 i32size=''
1002 i32type=''
1003 i64size=''
1004 i64type=''
1005 i8size=''
1006 i8type=''
1007 ivsize=''
1008 ivtype=''
1009 nv_preserves_uv_bits=''
1010 nvsize=''
1011 nvtype=''
1012 u16size=''
1013 u16type=''
1014 u32size=''
1015 u32type=''
1016 u64size=''
1017 u64type=''
1018 u8size=''
1019 u8type=''
1020 uvsize=''
1021 uvtype=''
1022 ivdformat=''
1023 nvEUformat=''
1024 nvFUformat=''
1025 nvGUformat=''
1026 nveformat=''
1027 nvfformat=''
1028 nvgformat=''
1029 uvXUformat=''
1030 uvoformat=''
1031 uvuformat=''
1032 uvxformat=''
1033 pidtype=''
1034 prefix=''
1035 prefixexp=''
1036 installprivlib=''
1037 privlib=''
1038 privlibexp=''
1039 prototype=''
1040 ptrsize=''
1041 d_PRIXU64=''
1042 d_PRId64=''
1043 d_PRIi64=''
1044 d_PRIo64=''
1045 d_PRIu64=''
1046 d_PRIx64=''
1047 sPRIXU64=''
1048 sPRId64=''
1049 sPRIi64=''
1050 sPRIo64=''
1051 sPRIu64=''
1052 sPRIx64=''
1053 d_quad=''
1054 quadkind=''
1055 quadtype=''
1056 uquadtype=''
1057 drand01=''
1058 randbits=''
1059 randfunc=''
1060 randseedtype=''
1061 seedfunc=''
1062 installscript=''
1063 scriptdir=''
1064 scriptdirexp=''
1065 selectminbits=''
1066 selecttype=''
1067 sh=''
1068 sig_count=''
1069 sig_name=''
1070 sig_name_init=''
1071 sig_num=''
1072 sig_num_init=''
1073 sig_size=''
1074 installsitearch=''
1075 sitearch=''
1076 sitearchexp=''
1077 installsitebin=''
1078 sitebin=''
1079 sitebinexp=''
1080 installsitehtml1dir=''
1081 sitehtml1dir=''
1082 sitehtml1direxp=''
1083 installsitehtml3dir=''
1084 sitehtml3dir=''
1085 sitehtml3direxp=''
1086 installsitelib=''
1087 sitelib=''
1088 sitelib_stem=''
1089 sitelibexp=''
1090 installsiteman1dir=''
1091 siteman1dir=''
1092 siteman1direxp=''
1093 installsiteman3dir=''
1094 siteman3dir=''
1095 siteman3direxp=''
1096 siteprefix=''
1097 siteprefixexp=''
1098 installsitescript=''
1099 sitescript=''
1100 sitescriptexp=''
1101 sizesize=''
1102 sizetype=''
1103 so=''
1104 socksizetype=''
1105 sharpbang=''
1106 shsharp=''
1107 spitshell=''
1108 src=''
1109 ssizetype=''
1110 startperl=''
1111 startsh=''
1112 stdchar=''
1113 d_stdio_stream_array=''
1114 stdio_stream_array=''
1115 sysman=''
1116 trnl=''
1117 uidformat=''
1118 uidsign=''
1119 uidsize=''
1120 uidtype=''
1121 archname64=''
1122 use64bitall=''
1123 use64bitint=''
1124 usefaststdio=''
1125 ccflags_uselargefiles=''
1126 ldflags_uselargefiles=''
1127 libswanted_uselargefiles=''
1128 uselargefiles=''
1129 uselongdouble=''
1130 usemorebits=''
1131 usemultiplicity=''
1132 nm_opt=''
1133 nm_so_opt=''
1134 runnm=''
1135 usenm=''
1136 useperlio=''
1137 userelocatableinc=''
1138 usesocks=''
1139 d_oldpthreads=''
1140 use5005threads=''
1141 useithreads=''
1142 usereentrant=''
1143 usethreads=''
1144 incpath=''
1145 mips_type=''
1146 usrinc=''
1147 d_vendorarch=''
1148 installvendorarch=''
1149 vendorarch=''
1150 vendorarchexp=''
1151 d_vendorbin=''
1152 installvendorbin=''
1153 vendorbin=''
1154 vendorbinexp=''
1155 installvendorhtml1dir=''
1156 vendorhtml1dir=''
1157 vendorhtml1direxp=''
1158 installvendorhtml3dir=''
1159 vendorhtml3dir=''
1160 vendorhtml3direxp=''
1161 d_vendorlib=''
1162 installvendorlib=''
1163 vendorlib=''
1164 vendorlib_stem=''
1165 vendorlibexp=''
1166 installvendorman1dir=''
1167 vendorman1dir=''
1168 vendorman1direxp=''
1169 installvendorman3dir=''
1170 vendorman3dir=''
1171 vendorman3direxp=''
1172 usevendorprefix=''
1173 vendorprefix=''
1174 vendorprefixexp=''
1175 d_vendorscript=''
1176 installvendorscript=''
1177 vendorscript=''
1178 vendorscriptexp=''
1179 versiononly=''
1180 defvoidused=''
1181 voidflags=''
1182 yacc=''
1183 yaccflags=''
1184 CONFIG=''
1185
1186 define='define'
1187 undef='undef'
1188 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1189 rmlist=''
1190
1191 : We must find out about Eunice early
1192 eunicefix=':'
1193 if test -f /etc/unixtovms; then
1194         eunicefix=/etc/unixtovms
1195 fi
1196 if test -f /etc/unixtovms.exe; then
1197         eunicefix=/etc/unixtovms.exe
1198 fi
1199
1200 : Set executable suffix now -- needed before hints available
1201 if test -f "/libs/version.library"; then
1202 : Amiga OS
1203     _exe=""
1204 elif test -f "/system/gnu_library/bin/ar.pm"; then
1205 : Stratus VOS
1206     _exe=".pm"
1207 elif test -n "$DJGPP"; then
1208 : DOS DJGPP
1209     _exe=".exe"
1210 elif test -d c:/. -o -n "$is_os2" ; then
1211 : OS/2 or cygwin
1212     _exe=".exe"
1213 fi
1214
1215 i_whoami=''
1216 ccname=''
1217 ccversion=''
1218 perllibs=''
1219 : set useposix=false in your hint file to disable the POSIX extension.
1220 useposix=true
1221 : set useopcode=false in your hint file to disable the Opcode extension.
1222 useopcode=true
1223 : Trailing extension.  Override this in a hint file, if needed.
1224 : Extra object files, if any, needed on this platform.
1225 archobjs=''
1226 archname=''
1227 : Possible local include directories to search.
1228 : Set locincpth to "" in a hint file to defeat local include searches.
1229 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1230 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1231 :
1232 : no include file wanted by default
1233 inclwanted=''
1234
1235 groupstype=''
1236 libnames=''
1237 : change the next line if compiling for Xenix/286 on Xenix/386
1238 xlibpth='/usr/lib/386 /lib/386'
1239 : Possible local library directories to search.
1240 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1241 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1242
1243 : general looking path for locating libraries
1244 glibpth="/lib /usr/lib $xlibpth"
1245 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1246 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1247 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1248
1249 : Private path used by Configure to find libraries.  Its value
1250 : is prepended to libpth. This variable takes care of special
1251 : machines, like the mips.  Usually, it should be empty.
1252 plibpth=''
1253
1254 : default library list
1255 libswanted=''
1256 : some systems want to use only the non-versioned libso:s
1257 ignore_versioned_solibs=''
1258 siteman1dir=''
1259 siteman3dir=''
1260 sitescript=''
1261 archname64=''
1262 ccflags_uselargefiles=''
1263 ldflags_uselargefiles=''
1264 libswanted_uselargefiles=''
1265 : set usemultiplicity on the Configure command line to enable multiplicity.
1266 : set usesocks on the Configure command line to enable socks.
1267 : set usethreads on the Configure command line to enable threads.
1268 usereentrant='undef'
1269 : full support for void wanted by default
1270 defvoidused=15
1271
1272 : List of libraries we want.
1273 : If anyone needs extra -lxxx, put those in a hint file.
1274 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1275 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1276 : We probably want to search /usr/shlib before most other libraries.
1277 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1278 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1279 glibpth="/usr/shlib $glibpth"
1280 : Do not use vfork unless overridden by a hint file.
1281 usevfork=false
1282
1283 : Find the basic shell for Bourne shell scripts
1284 case "$sh" in
1285 '')
1286         case "$SYSTYPE" in
1287         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1288         *) xxx='/bin/sh';;
1289         esac
1290         if test -f "$xxx"; then
1291                 sh="$xxx"
1292         else
1293                 : Build up a list and do a single loop so we can 'break' out.
1294                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1295                 for xxx in sh bash ksh pdksh ash; do
1296                         for p in $pth; do
1297                                 try="$try ${p}/${xxx}"
1298                         done
1299                 done
1300                 for xxx in $try; do
1301                         if test -f "$xxx"; then
1302                                 sh="$xxx";
1303                                 break
1304                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1305                                 sh="$xxx";
1306                                 break
1307                         elif test -f "$xxx.exe"; then
1308                                 sh="$xxx";
1309                                 break
1310                         fi
1311                 done
1312         fi
1313         ;;
1314 esac
1315
1316 case "$sh" in
1317 '')     cat >&2 <<EOM
1318 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1319
1320 Usually it's in /bin/sh.  How did you even get this far?
1321 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1322 we'll try to straighten this all out.
1323 EOM
1324         exit 1
1325         ;;
1326 esac
1327
1328 : see if sh knows # comments
1329 if `$sh -c '#' >/dev/null 2>&1`; then
1330         shsharp=true
1331         spitshell=cat
1332         xcat=/bin/cat
1333         test -f $xcat$_exe || xcat=/usr/bin/cat
1334         if test ! -f $xcat$_exe; then
1335                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1336                         if test -f $p/cat$_exe; then
1337                                 xcat=$p/cat
1338                                 break
1339                         fi
1340                 done
1341                 if test ! -f $xcat$_exe; then
1342                         echo "Can't find cat anywhere!"
1343                         exit 1
1344                 fi
1345         fi
1346         echo "#!$xcat" >sharp
1347         $eunicefix sharp
1348         chmod +x sharp
1349         ./sharp > today
1350         if test -s today; then
1351                 sharpbang='#!'
1352         else
1353                 echo "#! $xcat" > sharp
1354                 $eunicefix sharp
1355                 chmod +x sharp
1356                 ./sharp > today
1357                 if test -s today; then
1358                         sharpbang='#! '
1359                 else
1360                         sharpbang=': use '
1361                 fi
1362         fi
1363 else
1364         echo " "
1365         echo "Your $sh doesn't grok # comments--I will strip them later on."
1366         shsharp=false
1367         cd ..
1368         echo "exec grep -v '^[  ]*#'" >spitshell
1369         chmod +x spitshell
1370         $eunicefix spitshell
1371         spitshell=`pwd`/spitshell
1372         cd UU
1373         echo "I presume that if # doesn't work, #! won't work either!"
1374         sharpbang=': use '
1375 fi
1376 rm -f sharp today
1377
1378 : figure out how to guarantee sh startup
1379 case "$startsh" in
1380 '') startsh=${sharpbang}${sh} ;;
1381 *)
1382 esac
1383 cat >sharp <<EOSS
1384 $startsh
1385 set abc
1386 test "$?abc" != 1
1387 EOSS
1388
1389 chmod +x sharp
1390 $eunicefix sharp
1391 if ./sharp; then
1392         : echo "Yup, it does."
1393 else
1394         echo "Hmm... '$startsh' does not guarantee sh startup..."
1395         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1396 fi
1397 rm -f sharp
1398
1399
1400 : Save command line options in file UU/cmdline.opt for later use in
1401 : generating config.sh.
1402 cat > cmdline.opt <<EOSH
1403 # Configure command line arguments.
1404 config_arg0='$0'
1405 config_args='$*'
1406 config_argc=$#
1407 EOSH
1408 argn=1
1409 args_exp=''
1410 args_sep=''
1411 for arg in "$@"; do
1412         cat >>cmdline.opt <<EOSH
1413 config_arg$argn='$arg'
1414 EOSH
1415         # Extreme backslashitis: replace each ' by '"'"'
1416         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1417 $arg
1418 EOC
1419         arg_exp=`cat cmdl.opt`
1420         args_exp="$args_exp$args_sep'$arg_exp'"
1421         argn=`expr $argn + 1`
1422         args_sep=' '
1423 done
1424 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1425 # used by ./hints/os2.sh
1426 rm -f cmdl.opt
1427
1428 : produce awk script to parse command line options
1429 cat >options.awk <<'EOF'
1430 BEGIN {
1431         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1432
1433         len = length(optstr);
1434         for (i = 1; i <= len; i++) {
1435                 c = substr(optstr, i, 1);
1436                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1437                 if (a == ":") {
1438                         arg[c] = 1;
1439                         i++;
1440                 }
1441                 opt[c] = 1;
1442         }
1443 }
1444 {
1445         expect = 0;
1446         str = $0;
1447         if (substr(str, 1, 1) != "-") {
1448                 printf("'%s'\n", str);
1449                 next;
1450         }
1451         len = length($0);
1452         for (i = 2; i <= len; i++) {
1453                 c = substr(str, i, 1);
1454                 if (!opt[c]) {
1455                         printf("-%s\n", substr(str, i));
1456                         next;
1457                 }
1458                 printf("-%s\n", c);
1459                 if (arg[c]) {
1460                         if (i < len)
1461                                 printf("'%s'\n", substr(str, i + 1));
1462                         else
1463                                 expect = 1;
1464                         next;
1465                 }
1466         }
1467 }
1468 END {
1469         if (expect)
1470                 print "?";
1471 }
1472 EOF
1473
1474 : process the command line options
1475 set X `for arg in "$@"; do echo "X$arg"; done |
1476         sed -e s/X// | awk -f options.awk`
1477 eval "set $*"
1478 shift
1479 rm -f options.awk
1480
1481 : set up default values
1482 fastread=''
1483 reuseval=false
1484 config_sh=''
1485 alldone=''
1486 error=''
1487 silent=''
1488 extractsh=''
1489 override=''
1490 knowitall=''
1491 rm -f optdef.sh posthint.sh
1492 cat >optdef.sh <<EOS
1493 $startsh
1494 EOS
1495
1496
1497 : option parsing
1498 while test $# -gt 0; do
1499         case "$1" in
1500         -d) shift; fastread=yes;;
1501         -e) shift; alldone=cont;;
1502         -f)
1503                 shift
1504                 cd ..
1505                 if test -r "$1"; then
1506                         config_sh="$1"
1507                 else
1508                         echo "$me: cannot read config file $1." >&2
1509                         error=true
1510                 fi
1511                 cd UU
1512                 shift;;
1513         -h) shift; error=true;;
1514         -r) shift; reuseval=true;;
1515         -s) shift; silent=true; realsilent=true;;
1516         -E) shift; alldone=exit;;
1517         -K) shift; knowitall=true;;
1518         -O) shift; override=true;;
1519         -S) shift; silent=true; extractsh=true;;
1520         -D)
1521                 shift
1522                 case "$1" in
1523                 *=)
1524                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1525                         echo "$me: ignoring -D $1" >&2
1526                         ;;
1527                 *=*) echo "$1" | \
1528                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1529                 *) echo "$1='define'" >> optdef.sh;;
1530                 esac
1531                 shift
1532                 ;;
1533         -U)
1534                 shift
1535                 case "$1" in
1536                 *=) echo "$1" >> optdef.sh;;
1537                 *=*)
1538                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1539                         echo "$me: ignoring -U $1" >&2
1540                         ;;
1541                 *) echo "$1='undef'" >> optdef.sh;;
1542                 esac
1543                 shift
1544                 ;;
1545         -A)
1546             shift
1547             xxx=''
1548             yyy="$1"
1549             zzz=''
1550             uuu=undef
1551             case "$yyy" in
1552             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1553                  case "$zzz" in
1554                  *:*) zzz='' ;;
1555                  *)   xxx=append
1556                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1557                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1558                  esac
1559                  ;;
1560             esac
1561             case "$xxx" in
1562             '')  case "$yyy" in
1563                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1564                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1565                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1566                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1567                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1568                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1569                  esac
1570                  ;;       
1571             esac
1572             case "$xxx" in
1573             append)
1574                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1575             clear)
1576                 echo "$yyy=''"                  >> posthint.sh ;;
1577             define)
1578                 case "$zzz" in
1579                 '') zzz=define ;;
1580                 esac
1581                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1582             eval)
1583                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1584             prepend)
1585                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1586             undef)
1587                 case "$zzz" in
1588                 '') zzz="$uuu" ;;
1589                 esac
1590                 echo "$yyy=$zzz"                >> posthint.sh ;;
1591             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1592             esac
1593             shift
1594             ;;
1595         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1596             exit 0;;
1597         --) break;;
1598         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1599         *) break;;
1600         esac
1601 done
1602
1603 case "$error" in
1604 true)
1605         cat >&2 <<EOM
1606 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1607                  [-U symbol] [-U symbol=] [-A command:symbol...]
1608   -d : use defaults for all answers.
1609   -e : go on without questioning past the production of config.sh.
1610   -f : specify an alternate default configuration file.
1611   -h : print this help message and exit (with an error status).
1612   -r : reuse C symbols value if possible (skips costly nm extraction).
1613   -s : silent mode, only echoes questions and essential information.
1614   -D : define symbol to have some value:
1615          -D symbol         symbol gets the value 'define'
1616          -D symbol=value   symbol gets the value 'value'
1617   -E : stop at the end of questions, after having produced config.sh.
1618   -K : do not use unless you know what you are doing.
1619   -O : let -D and -U override definitions from loaded configuration file.
1620   -S : perform variable substitutions on all .SH files (can mix with -f)
1621   -U : undefine symbol:
1622          -U symbol    symbol gets the value 'undef'
1623          -U symbol=   symbol gets completely empty
1624   -A : manipulate symbol after the platform specific hints have been applied:
1625          -A symbol=value                append " "value to symbol
1626          -A append:symbol=value         append value to symbol
1627          -A define:symbol=value         define symbol to have value
1628          -A clear:symbol                define symbol to be ''
1629          -A define:symbol               define symbol to be 'define'
1630          -A eval:symbol=value           define symbol to be eval of value
1631          -A prepend:symbol=value        prepend value to symbol
1632          -A undef:symbol                define symbol to be 'undef'
1633          -A undef:symbol=               define symbol to be ''
1634   -V : print version number and exit (with a zero status).
1635 EOM
1636         exit 1
1637         ;;
1638 esac
1639
1640 : Sanity checks
1641 case "$fastread$alldone" in
1642 yescont|yesexit) ;;
1643 *)
1644         case "$extractsh" in
1645         true) ;;
1646         *)
1647                 if test ! -t 0; then
1648                         echo "Say 'sh Configure', not 'sh <Configure'"
1649                         exit 1
1650                 fi
1651                 ;;
1652         esac
1653         ;;
1654 esac
1655
1656 exec 4>&1
1657 case "$silent" in
1658 true) exec 1>/dev/null;;
1659 esac
1660
1661 : run the defines and the undefines, if any, but leave the file out there...
1662 touch optdef.sh
1663 . ./optdef.sh
1664 : create the posthint manipulation script and leave the file out there...
1665 touch posthint.sh
1666
1667 : set package name
1668 package=perl5
1669 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1670 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1671 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1672 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1673 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1674 esac
1675
1676 : Some greps do not return status, grrr.
1677 echo "grimblepritz" >grimble
1678 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1679         contains=contains
1680 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1681         contains=grep
1682 else
1683         contains=contains
1684 fi
1685 rm -f grimble
1686 : the following should work in any shell
1687 case "$contains" in
1688 contains*)
1689         echo " "
1690         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1691         cat >contains <<'EOSS'
1692 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1693 EOSS
1694 chmod +x contains
1695 esac
1696
1697 : Find the path to the source tree
1698 case "$src" in
1699 '') case "$0" in
1700     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1701          case "$src" in
1702          /*)    ;;
1703          .)     ;;
1704          *)     src=`cd ../$src && pwd` ;;
1705          esac
1706          ;;
1707     *)   src='.';;
1708     esac;;
1709 esac
1710 case "$src" in
1711 '')     src=/
1712         rsrc=/
1713         ;;
1714 /*) rsrc="$src";;
1715 *) rsrc="../$src";;
1716 esac
1717 if test -f $rsrc/Configure && \
1718         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1719 then
1720    : found it, so we are ok.
1721 else
1722         rsrc=''
1723         for src in . .. ../.. ../../.. ../../../..; do
1724                 if test -f ../$src/Configure && \
1725                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1726                 then
1727                         rsrc=../$src
1728                         break
1729                 fi
1730         done
1731 fi
1732 case "$rsrc" in
1733 '')
1734         cat <<EOM >&4
1735
1736 Sorry, I can't seem to locate the source dir for $package.  Please start
1737 Configure with an explicit path -- i.e. /some/path/Configure.
1738
1739 EOM
1740         exit 1
1741         ;;
1742 ../.)   rsrc='..';;
1743 *)
1744         echo " "
1745         echo "Sources for $package found in \"$src\"." >&4
1746         ;;
1747 esac
1748
1749 : script used to extract .SH files with variable substitutions
1750 cat >extract <<'EOS'
1751 PERL_CONFIG_SH=true
1752 echo "Doing variable substitutions on .SH files..."
1753 if test -f MANIFEST; then
1754         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1755 else
1756         echo "(Looking for .SH files under the source directory.)"
1757         set x `(cd "$src"; find . -name "*.SH" -print)`
1758 fi
1759 shift
1760 case $# in
1761 0) set x `(cd "$src"; echo *.SH)`; shift;;
1762 esac
1763 if test ! -f "$src/$1"; then
1764         shift
1765 fi
1766 mkdir_p='
1767 name=$1;
1768 create="";
1769 while test $name; do
1770         if test ! -d "$name"; then
1771                 create="$name $create";
1772                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1773                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1774         else
1775                 name="";
1776         fi;
1777 done;
1778 for file in $create; do
1779         mkdir $file;
1780 done
1781 '
1782 for file in $*; do
1783         case "$src" in
1784         ".")
1785                 case "$file" in
1786                 */*)
1787                         dir=`expr X$file : 'X\(.*\)/'`
1788                         file=`expr X$file : 'X.*/\(.*\)'`
1789                         (cd "$dir" && . ./$file)
1790                         ;;
1791                 *)
1792                         . ./$file
1793                         ;;
1794                 esac
1795                 ;;
1796         *)
1797                 case "$file" in
1798                 */*)
1799                         dir=`expr X$file : 'X\(.*\)/'`
1800                         file=`expr X$file : 'X.*/\(.*\)'`
1801                         (set x $dir; shift; eval $mkdir_p)
1802                         sh <"$src/$dir/$file"
1803                         ;;
1804                 *)
1805                         sh <"$src/$file"
1806                         ;;
1807                 esac
1808                 ;;
1809         esac
1810 done
1811 if test -f "$src/config_h.SH"; then
1812         if test ! -f config.h; then
1813         : oops, they left it out of MANIFEST, probably, so do it anyway.
1814         . "$src/config_h.SH"
1815         fi
1816 fi
1817 EOS
1818
1819 : extract files and exit if asked to do so
1820 case "$extractsh" in
1821 true)
1822         case "$realsilent" in
1823         true) ;;
1824         *) exec 1>&4;;
1825         esac
1826         case "$config_sh" in
1827         '') config_sh='config.sh';;
1828         esac
1829         echo " "
1830         echo "Fetching answers from $config_sh..."
1831         cd ..
1832         . $config_sh
1833         test "$override" && . ./optdef.sh
1834         echo " "
1835         . UU/extract
1836         rm -rf UU
1837         echo "Extraction done."
1838         exit 0
1839         ;;
1840 esac
1841
1842 : Eunice requires " " instead of "", can you believe it
1843 echo " "
1844 : Here we go...
1845 echo "Beginning of configuration questions for $package."
1846
1847 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1848
1849 : first determine how to suppress newline on echo command
1850 echo " "
1851 echo "Checking echo to see how to suppress newlines..."
1852 (echo "hi there\c" ; echo " ") >.echotmp
1853 if $contains c .echotmp >/dev/null 2>&1 ; then
1854         echo "...using -n."
1855         n='-n'
1856         c=''
1857 else
1858         cat <<'EOM'
1859 ...using \c
1860 EOM
1861         n=''
1862         c='\c'
1863 fi
1864 echo $n "The star should be here-->$c"
1865 echo '*'
1866 rm -f .echotmp
1867
1868 : Now test for existence of everything in MANIFEST
1869 echo " "
1870 if test -f "$rsrc/MANIFEST"; then
1871         echo "First let's make sure your kit is complete.  Checking..." >&4
1872         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1873         rm -f missing
1874         tmppwd=`pwd`
1875         for filelist in x??; do
1876                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1877         done
1878         if test -s missing; then
1879                 cat missing >&4
1880                 cat >&4 <<'EOM'
1881
1882 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1883
1884 You have the option of continuing the configuration process, despite the
1885 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1886 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1887 and contact the author (perlbug@perl.org).
1888
1889 EOM
1890                 echo $n "Continue? [n] $c" >&4
1891                 read ans
1892                 case "$ans" in
1893                 y*)
1894                         echo "Continuing..." >&4
1895                         rm -f missing
1896                         ;;
1897                 *)
1898                         echo "ABORTING..." >&4
1899                         kill $$
1900                         ;;
1901                 esac
1902         else
1903                 echo "Looks good..."
1904         fi
1905 else
1906         echo "There is no MANIFEST file.  I hope your kit is complete !"
1907 fi
1908 rm -f missing x??
1909
1910 echo " "
1911 : Find the appropriate value for a newline for tr
1912 if test -n "$DJGPP"; then
1913        trnl='\012'
1914 fi
1915 if test X"$trnl" = X; then
1916         case "`echo foo|tr '\n' x 2>/dev/null`" in
1917         foox) trnl='\n' ;;
1918         esac
1919 fi
1920 if test X"$trnl" = X; then
1921         case "`echo foo|tr '\012' x 2>/dev/null`" in
1922         foox) trnl='\012' ;;
1923         esac
1924 fi
1925 if test X"$trnl" = X; then
1926        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1927        fooxy) trnl='\n\r' ;;
1928        esac
1929 fi
1930 if test X"$trnl" = X; then
1931         cat <<EOM >&2
1932
1933 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1934
1935 EOM
1936         exit 1
1937 fi
1938
1939 : compute the number of columns on the terminal for proper question formatting
1940 case "$COLUMNS" in
1941 '') COLUMNS='80';;
1942 esac
1943
1944 : set up the echo used in my read
1945 myecho="case \"\$xxxm\" in
1946 '') echo $n \"\$rp $c\" >&4;;
1947 *) case \"\$rp\" in
1948         '') echo $n \"[\$xxxm] $c\";;
1949         *)
1950                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1951                         echo \"\$rp\" >&4
1952                         echo $n \"[\$xxxm] $c\" >&4
1953                 else
1954                         echo $n \"\$rp [\$xxxm] $c\" >&4
1955                 fi
1956                 ;;
1957         esac;;
1958 esac"
1959
1960 : now set up to do reads with possible shell escape and default assignment
1961 cat <<EOSC >myread
1962 $startsh
1963 xxxm=\$dflt
1964 $myecho
1965 ans='!'
1966 case "\$fastread" in
1967 yes) case "\$dflt" in
1968         '') ;;
1969         *) ans='';
1970                 case "\$silent-\$rp" in
1971                 true-) ;;
1972                 *) echo " " >&4;;
1973                 esac;;
1974         esac;;
1975 *) case "\$silent" in
1976         true) case "\$rp" in
1977                 '') ans='';;
1978                 esac;;
1979         esac;;
1980 esac
1981 while expr "X\$ans" : "X!" >/dev/null; do
1982         read answ
1983         set x \$xxxm
1984         shift
1985         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1986         case  "\$answ" in
1987         "!")
1988                 sh 1>&4
1989                 echo " "
1990                 $myecho
1991                 ;;
1992         !*)
1993                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1994                 shift
1995                 sh 1>&4 -c "\$*"
1996                 echo " "
1997                 $myecho
1998                 ;;
1999         "\$ans")
2000                 case "\$ans" in
2001                 \\&*)
2002                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2003                         shift
2004                         case "\$1" in
2005                         -d)
2006                                 fastread=yes
2007                                 echo "(OK, I'll run with -d after this question.)" >&4
2008                                 ;;
2009                         -*)
2010                                 echo "*** Sorry, \$1 not supported yet." >&4
2011                                 ;;
2012                         esac
2013                         $myecho
2014                         ans=!
2015                         ;;
2016                 esac;;
2017         *)
2018                 case "\$aok" in
2019                 y)
2020                         echo "*** Substitution done -- please confirm."
2021                         xxxm="\$ans"
2022                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2023                         xxxm="\$ans"
2024                         ans=!
2025                         ;;
2026                 *)
2027                         echo "*** Error -- try again."
2028                         ans=!
2029                         ;;
2030                 esac
2031                 $myecho
2032                 ;;
2033         esac
2034         case "\$ans\$xxxm\$nostick" in
2035         '')
2036                 ans=!
2037                 $myecho
2038                 ;;
2039         esac
2040 done
2041 case "\$ans" in
2042 '') ans="\$xxxm";;
2043 esac
2044 EOSC
2045
2046 : create .config dir to save info across Configure sessions
2047 test -d ../.config || mkdir ../.config
2048 cat >../.config/README <<EOF
2049 This directory created by Configure to save information that should
2050 persist across sessions for $package.
2051
2052 You may safely delete it if you wish.
2053 EOF
2054
2055 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2056 case "$usedevel" in
2057 $define|true|[yY]*) ;;
2058 *) case "$xversion" in
2059    *[13579])
2060         cat >&4 <<EOH
2061 *** WHOA THERE!!! ***
2062
2063     This is an UNSTABLE DEVELOPMENT release.
2064     The version of this $package distribution is $xversion, that is, odd,
2065     (as opposed to even) and that signifies a development release.
2066     If you want a maintenance release, you want an even-numbered version.
2067
2068     Do ***NOT*** install this into production use.
2069     Data corruption and crashes are possible.
2070
2071     It is most seriously suggested that you do not continue any further
2072     unless you want to help in developing and debugging Perl.
2073
2074     If you *still* want to build perl, you can answer 'y' now,
2075     or pass -Dusedevel to Configure.
2076
2077 EOH
2078         rp='Do you really want to continue?'
2079         dflt='n'
2080         . ./myread
2081         case "$ans" in
2082         [yY]) echo >&4 "Okay, continuing."
2083               usedevel="$define" ;;
2084         *) echo >&4 "Okay, bye."
2085            exit 1
2086            ;;
2087         esac
2088         ;;
2089     esac
2090     ;;
2091 esac
2092 case "$usedevel" in
2093 $define|true|[yY]*)
2094         case "$versiononly" in
2095         '') versiononly="$define" ;;
2096         esac
2097         case "$installusrbinperl" in
2098         '') installusrbinperl="$undef" ;;
2099         esac
2100         ;;
2101 esac
2102
2103 : general instructions
2104 needman=true
2105 firsttime=true
2106 user=`(logname) 2>/dev/null`
2107 case "$user" in
2108 '') user=`whoami 2>&1`;;
2109 esac
2110 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2111         firsttime=false
2112         echo " "
2113         rp='Would you like to see the instructions?'
2114         dflt=n
2115         . ./myread
2116         case "$ans" in
2117         [yY]*) ;;
2118         *) needman=false;;
2119         esac
2120 fi
2121 if $needman; then
2122         cat <<EOH
2123
2124 This installation shell script will examine your system and ask you questions
2125 to determine how the perl5 package should be installed. If you get
2126 stuck on a question, you may use a ! shell escape to start a subshell or
2127 execute a command.  Many of the questions will have default answers in square
2128 brackets; typing carriage return will give you the default.
2129
2130 On some of the questions which ask for file or directory names you are allowed
2131 to use the ~name construct to specify the login directory belonging to "name",
2132 even if you don't have a shell which knows about that.  Questions where this is
2133 allowed will be marked "(~name ok)".
2134
2135 EOH
2136         rp=''
2137         dflt='Type carriage return to continue'
2138         . ./myread
2139         cat <<'EOH'
2140
2141 The prompter used in this script allows you to use shell variables and
2142 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2143 in the default answer, as if the default line was a set of arguments given to a
2144 script shell.  This means you may also use $* to repeat the whole default line,
2145 so you do not have to re-type everything to add something to the default.
2146
2147 Everytime there is a substitution, you will have to confirm.  If there is an
2148 error (e.g. an unmatched backtick), the default answer will remain unchanged
2149 and you will be prompted again.
2150
2151 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2152 the questions and use the computed defaults (or the previous answers if there
2153 was already a config.sh file). Type 'Configure -h' for a list of options.
2154 You may also start interactively and then answer '& -d' at any prompt to turn
2155 on the non-interactive behaviour for the remainder of the execution.
2156
2157 EOH
2158         . ./myread
2159         cat <<EOH
2160
2161 Much effort has been expended to ensure that this shell script will run on any
2162 Unix system.  If despite that it blows up on yours, your best bet is to edit
2163 Configure and run it again.  If you can't run Configure for some reason,
2164 you'll have to generate a config.sh file by hand.  Whatever problems you
2165 have, let me (perlbug@perl.org) know how I blew it.
2166
2167 This installation script affects things in two ways:
2168
2169 1) it may do direct variable substitutions on some of the files included
2170    in this kit.
2171 2) it builds a config.h file for inclusion in C programs.  You may edit
2172    any of these files as the need arises after running this script.
2173
2174 If you make a mistake on a question, there is no easy way to back up to it
2175 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2176 files.  Configure will offer to let you do this before it runs the SH files.
2177
2178 EOH
2179         dflt='Type carriage return to continue'
2180         . ./myread
2181         case "$firsttime" in
2182         true) echo $user >>../.config/instruct;;
2183         esac
2184 fi
2185
2186 : find out where common programs are
2187 echo " "
2188 echo "Locating common programs..." >&4
2189 cat <<EOSC >loc
2190 $startsh
2191 case \$# in
2192 0) exit 1;;
2193 esac
2194 thing=\$1
2195 shift
2196 dflt=\$1
2197 shift
2198 for dir in \$*; do
2199         case "\$thing" in
2200         .)
2201         if test -d \$dir/\$thing; then
2202                 echo \$dir
2203                 exit 0
2204         fi
2205         ;;
2206         *)
2207         for thisthing in \$dir/\$thing; do
2208                 : just loop through to pick last item
2209         done
2210         if test -f \$thisthing; then
2211                 echo \$thisthing
2212                 exit 0
2213         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2214                 echo \$thisthing
2215                 exit 0
2216         elif test -f \$dir/\$thing.exe; then
2217                 if test -n "$DJGPP"; then
2218                         echo \$dir/\$thing.exe
2219                 elif test "$eunicefix" != ":"; then
2220                         : on Eunice apparently
2221                         echo \$dir/\$thing
2222                         exit 0
2223                 fi
2224                 exit 0
2225         fi
2226         ;;
2227         esac
2228 done
2229 echo \$dflt
2230 exit 1
2231 EOSC
2232 chmod +x loc
2233 $eunicefix loc
2234 loclist="
2235 awk
2236 cat
2237 chmod
2238 comm
2239 cp
2240 echo
2241 expr
2242 grep
2243 ls
2244 mkdir
2245 rm
2246 sed
2247 sort
2248 touch
2249 tr
2250 uniq
2251 "
2252 trylist="
2253 Mcc
2254 ar
2255 bison
2256 byacc
2257 cpp
2258 csh
2259 date
2260 egrep
2261 gmake
2262 gzip
2263 less
2264 ln
2265 make
2266 more
2267 nm
2268 nroff
2269 pg
2270 test
2271 uname
2272 zip
2273 "
2274 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2275 pth="$pth /lib /usr/lib"
2276 for file in $loclist; do
2277         eval xxx=\$$file
2278         case "$xxx" in
2279         /*|?:[\\/]*)
2280                 if test -f "$xxx"; then
2281                         : ok
2282                 else
2283                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2284                         xxx=`./loc $file $file $pth`
2285                 fi
2286                 ;;
2287         '') xxx=`./loc $file $file $pth`;;
2288         *) xxx=`./loc $xxx $xxx $pth`;;
2289         esac
2290         eval $file=$xxx$_exe
2291         eval _$file=$xxx
2292         case "$xxx" in
2293         /*)
2294                 echo $file is in $xxx.
2295                 ;;
2296         ?:[\\/]*)
2297                 echo $file is in $xxx.
2298                 ;;
2299         *)
2300                 echo "I don't know where '$file' is, and my life depends on it." >&4
2301                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2302                 exit 1
2303                 ;;
2304         esac
2305 done
2306 echo " "
2307 echo "Don't worry if any of the following aren't found..."
2308 say=offhand
2309 for file in $trylist; do
2310         eval xxx=\$$file
2311         case "$xxx" in
2312         /*|?:[\\/]*)
2313                 if test -f "$xxx"; then
2314                         : ok
2315                 else
2316                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2317                         xxx=`./loc $file $file $pth`
2318                 fi
2319                 ;;
2320         '') xxx=`./loc $file $file $pth`;;
2321         *) xxx=`./loc $xxx $xxx $pth`;;
2322         esac
2323         eval $file=$xxx$_exe
2324         eval _$file=$xxx
2325         case "$xxx" in
2326         /*)
2327                 echo $file is in $xxx.
2328                 ;;
2329         ?:[\\/]*)
2330                 echo $file is in $xxx.
2331                 ;;
2332         *)
2333                 echo "I don't see $file out there, $say."
2334                 say=either
2335                 ;;
2336         esac
2337 done
2338 case "$egrep" in
2339 egrep)
2340         echo "Substituting grep for egrep."
2341         egrep=$grep
2342         _egrep=$grep
2343         ;;
2344 esac
2345 case "$ln" in
2346 ln)
2347         echo "Substituting cp for ln."
2348         ln=$cp
2349         _ln=$cp
2350         ;;
2351 esac
2352 case "$make" in
2353 make)   
2354         case "$gmake" in
2355         gmake)
2356         echo "I can't find make or gmake, and my life depends on it." >&4
2357         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2358         exit 1
2359         ;;
2360         esac
2361         ;;
2362 esac    
2363 case "$gmake" in
2364 gmake)  ;;
2365 *)      # We can't have osname yet.
2366         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2367                 # Assume that gmake, if found, is definitely GNU make
2368                 # and prefer it over the system make.
2369                 echo "Substituting gmake for make."
2370                 make=$gmake
2371                 _make=$gmake
2372         fi
2373         ;;
2374 esac
2375 case "$test" in
2376 test)
2377         echo "Hopefully test is built into your sh."
2378         ;;
2379 *)
2380         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2381                 echo "Using the test built into your sh."
2382                 test=test
2383                 _test=test
2384         fi
2385         ;;
2386 esac
2387 case "$echo" in
2388 echo)
2389         echo "Hopefully echo is built into your sh."
2390         ;;
2391 '') ;;
2392 *)
2393         echo " "
2394 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2395         $echo $n "hi there$c" >foo1
2396         echo $n "hi there$c" >foo2
2397         if cmp foo1 foo2 >/dev/null 2>&1; then
2398                 echo "They are compatible.  In fact, they may be identical."
2399         else
2400                 case "$n" in
2401                 '-n') n='' c='\c';;
2402                 *) n='-n' c='';;
2403                 esac
2404                 cat <<FOO
2405 They are not compatible!  You are probably running ksh on a non-USG system.
2406 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2407 have echo built in and we may have to run some Bourne shell scripts.  That
2408 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2409
2410 FOO
2411                 $echo $n "The star should be here-->$c"
2412                 $echo "*"
2413         fi
2414         $rm -f foo1 foo2
2415         ;;
2416 esac
2417
2418 cat <<EOS >trygcc
2419 $startsh
2420 EOS
2421 cat <<'EOSC' >>trygcc
2422 case "$cc" in
2423 '') ;;
2424 *)  $rm -f try try.*
2425     $cat >try.c <<EOM
2426 int main(int argc, char *argv[]) {
2427   return 0;
2428 }
2429 EOM
2430     if $cc -o try $ccflags $ldflags try.c; then
2431        :
2432     else
2433         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2434         despair=yes
2435         trygcc=yes
2436         case "$cc" in
2437         *gcc*) trygcc=no ;;
2438         esac
2439         case "`$cc -v -c try.c 2>&1`" in
2440         *gcc*) trygcc=no ;;
2441         esac
2442         if $test X"$trygcc" = Xyes; then
2443             if gcc -o try -c try.c; then
2444                 echo " "
2445                 echo "You seem to have a working gcc, though." >&4
2446                 rp="Would you like to use it?"
2447                 dflt=y
2448                 if $test -f myread; then
2449                     . ./myread
2450                 else
2451                     if $test -f UU/myread; then
2452                         . ./UU/myread
2453                     else
2454                         echo "Cannot find myread, sorry.  Aborting." >&2
2455                         exit 1
2456                     fi
2457                 fi  
2458                 case "$ans" in
2459                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2460                        if $test -f usethreads.cbu; then
2461                            $cat >&4 <<EOM 
2462
2463 *** However, any setting of the C compiler flags (e.g. for thread support)
2464 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2465 *** (together with e.g. -Dusethreads).
2466
2467 EOM
2468                        fi;;
2469                 esac
2470             fi
2471         fi
2472     fi
2473     $rm -f try try.*
2474     ;;
2475 esac
2476 EOSC
2477
2478 cat <<EOS >checkcc
2479 $startsh
2480 EOS
2481 cat <<'EOSC' >>checkcc
2482 case "$cc" in        
2483 '') ;;
2484 *)  $rm -f try try.*              
2485     $cat >try.c <<EOM
2486 int main(int argc, char *argv[]) {
2487   return 0;
2488 }
2489 EOM
2490     if $cc -o try $ccflags $ldflags try.c; then
2491        :
2492     else
2493         if $test X"$despair" = Xyes; then
2494            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2495         fi
2496         $cat >&4 <<EOM         
2497 You need to find a working C compiler.
2498 Either (purchase and) install the C compiler supplied by your OS vendor,
2499 or for a free C compiler try http://gcc.gnu.org/
2500 I cannot continue any further, aborting.
2501 EOM
2502         exit 1
2503     fi
2504     $rm -f try try.*
2505     ;;
2506 esac
2507 EOSC
2508
2509 : determine whether symbolic links are supported
2510 echo " "
2511 $touch blurfl
2512 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2513         echo "Symbolic links are supported." >&4
2514         lns="$ln -s"
2515 else
2516         echo "Symbolic links are NOT supported." >&4
2517         lns="$ln"
2518 fi
2519 $rm -f blurfl sym
2520
2521 : determine whether symbolic links are supported
2522 echo " "
2523 case "$lns" in
2524 *"ln"*" -s")
2525         echo "Checking how to test for symbolic links..." >&4
2526         $lns blurfl sym
2527         if $test "X$issymlink" = X; then
2528                 case "$newsh" in
2529                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2530                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2531                 esac
2532                 if test $? = 0; then
2533                         issymlink="test -h"
2534                 else
2535                         echo "Your builtin 'test -h' may be broken." >&4
2536                         case "$test" in
2537                         /*)     ;;
2538                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2539                                 for p in $pth
2540                                 do
2541                                         if test -f "$p/$test"; then
2542                                                 test="$p/$test"
2543                                                 break
2544                                         fi
2545                                 done
2546                                 ;;
2547                         esac
2548                         case "$test" in
2549                         /*)
2550                                 echo "Trying external '$test -h'." >&4
2551                                 issymlink="$test -h"
2552                                 if $test ! -h sym >/dev/null 2>&1; then
2553                                         echo "External '$test -h' is broken, too." >&4
2554                                         issymlink=''
2555                                 fi
2556                                 ;;
2557                         *)      issymlink='' ;;
2558                         esac
2559                 fi              
2560         fi
2561         if $test "X$issymlink" = X; then
2562                 if $test -L sym 2>/dev/null; then
2563                         issymlink="$test -L"
2564                         echo "The builtin '$test -L' worked." >&4
2565                 fi
2566         fi
2567         if $test "X$issymlink" != X; then
2568                 echo "You can test for symbolic links with '$issymlink'." >&4
2569         else
2570                 echo "I do not know how you can test for symbolic links." >&4
2571         fi
2572         $rm -f blurfl sym
2573         ;;
2574 *)      echo "No symbolic links, so not testing for their testing..." >&4
2575         ;;
2576 esac
2577 echo " "
2578
2579
2580 case "$mksymlinks" in
2581 $define|true|[yY]*)
2582         case "$src" in
2583         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2584                 exit 1
2585                 ;;
2586         *)      case "$lns:$issymlink" in
2587                 *"ln"*" -s:"*"test -"?)
2588                         echo "Creating the symbolic links..." >&4
2589                         echo "(First creating the subdirectories...)" >&4
2590                         cd ..
2591                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2592                                 read directory
2593                                 test -z "$directory" && break
2594                                 mkdir -p $directory
2595                         done
2596                         # Sanity check 1.
2597                         if test ! -d t/base; then
2598                                 echo "Failed to create the subdirectories.  Aborting." >&4
2599                                 exit 1
2600                         fi
2601                         echo "(Then creating the symlinks...)" >&4
2602                         awk '{print $1}' $src/MANIFEST | while true; do
2603                                 read filename
2604                                 test -z "$filename" && break
2605                                 if test -f $filename; then
2606                                         if $issymlink $filename; then
2607                                                 rm -f $filename
2608                                         fi
2609                                 fi
2610                                 if test -f $filename; then
2611                                         echo "$filename already exists, not symlinking."
2612                                 else
2613                                         ln -s $src/$filename $filename
2614                                 fi
2615                         done
2616                         # Sanity check 2.
2617                         if test ! -f t/base/lex.t; then
2618                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2619                                 exit 1
2620                         fi
2621                         cd UU
2622                         ;;
2623                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2624                         ;;
2625                 esac
2626                 ;;
2627         esac
2628         ;;
2629 esac
2630
2631
2632 case "$usecrosscompile" in
2633 $define|true|[yY]*)
2634         $echo "Cross-compiling..."
2635         croak=''
2636         case "$cc" in
2637         *-*-gcc) # A cross-compiling gcc, probably.
2638             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2639             ar=$targetarch-ar
2640             # leave out ld, choosing it is more complex
2641             nm=$targetarch-nm
2642             ranlib=$targetarch-ranlib
2643             $echo 'extern int foo;' > try.c
2644             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2645             shift
2646             if $test $# -gt 0; then
2647                 incpth="$incpth $*"
2648                 incpth="`$echo $incpth|$sed 's/^ //'`"
2649                 echo "Guessing incpth '$incpth'." >&4
2650                 for i in $*; do
2651                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2652                     if $test -d $j; then
2653                         libpth="$libpth $j"
2654                     fi
2655                 done   
2656                 libpth="`$echo $libpth|$sed 's/^ //'`"
2657                 echo "Guessing libpth '$libpth'." >&4
2658             fi
2659             $rm -f try.c
2660             ;;
2661         esac
2662         case "$targetarch" in
2663         '') echo "Targetarch not defined." >&4; croak=y ;;
2664         *)  echo "Using targetarch $targetarch." >&4 ;;
2665         esac
2666         case "$incpth" in
2667         '') echo "Incpth not defined." >&4; croak=y ;;
2668         *)  echo "Using incpth '$incpth'." >&4 ;;
2669         esac
2670         case "$libpth" in
2671         '') echo "Libpth not defined." >&4; croak=y ;;
2672         *)  echo "Using libpth '$libpth'." >&4 ;;
2673         esac
2674         case "$usrinc" in
2675         '') for i in $incpth; do
2676                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2677                     usrinc=$i
2678                     echo "Guessing usrinc $usrinc." >&4
2679                     break
2680                 fi
2681             done
2682             case "$usrinc" in
2683             '') echo "Usrinc not defined." >&4; croak=y ;;
2684             esac
2685             ;;
2686         *)  echo "Using usrinc $usrinc." >&4 ;;
2687         esac
2688         case "$targethost" in
2689         '') echo "Targethost not defined." >&4; croak=y ;;
2690         *)  echo "Using targethost $targethost." >&4
2691         esac
2692         locincpth=' '
2693         loclibpth=' '
2694         case "$croak" in
2695         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2696         esac
2697         case "$src" in
2698         /*) run=$src/Cross/run
2699             targetmkdir=$src/Cross/mkdir
2700             to=$src/Cross/to
2701             from=$src/Cross/from
2702             ;;
2703         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2704             run=$pwd/Cross/run
2705             targetmkdir=$pwd/Cross/mkdir
2706             to=$pwd/Cross/to
2707             from=$pwd/Cross/from
2708             ;;
2709         esac
2710         case "$targetrun" in
2711         '') targetrun=ssh ;;
2712         esac
2713         case "$targetto" in
2714         '') targetto=scp ;;
2715         esac
2716         case "$targetfrom" in
2717         '') targetfrom=scp ;;
2718         esac
2719         run=$run-$targetrun
2720         to=$to-$targetto
2721         from=$from-$targetfrom
2722         case "$targetdir" in
2723         '')  targetdir=/tmp
2724              echo "Guessing targetdir $targetdir." >&4
2725              ;;
2726         esac
2727         case "$targetuser" in
2728         '')  targetuser=root
2729              echo "Guessing targetuser $targetuser." >&4
2730              ;;
2731         esac
2732         case "$targetfrom" in
2733         scp)    q=-q ;;
2734         *)      q='' ;;
2735         esac
2736         case "$targetrun" in
2737         ssh|rsh)
2738             cat >$run <<EOF
2739 #!/bin/sh
2740 case "\$1" in
2741 -cwd)
2742   shift
2743   cwd=\$1
2744   shift
2745   ;;
2746 esac
2747 case "\$cwd" in
2748 '') cwd=$targetdir ;;
2749 esac
2750 exe=\$1
2751 shift
2752 if $test ! -f \$exe.xok; then
2753   $to \$exe
2754   $touch \$exe.xok
2755 fi
2756 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2757 EOF
2758             ;;
2759         *)  echo "Unknown targetrun '$targetrun'" >&4
2760             exit 1
2761             ;;
2762         esac
2763         case "$targetmkdir" in
2764         */Cross/mkdir)
2765             cat >$targetmkdir <<EOF
2766 #!/bin/sh
2767 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2768 EOF
2769             $chmod a+rx $targetmkdir
2770             ;;
2771         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2772             exit 1
2773             ;;
2774         esac
2775         case "$targetto" in
2776         scp|rcp)
2777             cat >$to <<EOF
2778 #!/bin/sh
2779 for f in \$@
2780 do
2781   case "\$f" in
2782   /*)
2783     $targetmkdir \`dirname \$f\`
2784     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2785     ;;
2786   *)
2787     $targetmkdir $targetdir/\`dirname \$f\`
2788     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2789     ;;
2790   esac
2791 done
2792 exit 0
2793 EOF
2794             ;;
2795         cp) cat >$to <<EOF
2796 #!/bin/sh
2797 for f in \$@
2798 do
2799   case "\$f" in
2800   /*)
2801     $mkdir -p $targetdir/\`dirname \$f\`
2802     $cp \$f $targetdir/\$f || exit 1
2803     ;;
2804   *)
2805     $targetmkdir $targetdir/\`dirname \$f\`
2806     $cp \$f $targetdir/\$f || exit 1
2807     ;;
2808   esac
2809 done
2810 exit 0
2811 EOF
2812             ;;
2813         *)  echo "Unknown targetto '$targetto'" >&4
2814             exit 1
2815             ;;
2816         esac
2817         case "$targetfrom" in
2818         scp|rcp)
2819           cat >$from <<EOF
2820 #!/bin/sh
2821 for f in \$@
2822 do
2823   $rm -f \$f
2824   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2825 done
2826 exit 0
2827 EOF
2828             ;;
2829         cp) cat >$from <<EOF
2830 #!/bin/sh
2831 for f in \$@
2832 do
2833   $rm -f \$f
2834   cp $targetdir/\$f . || exit 1
2835 done
2836 exit 0
2837 EOF
2838             ;;
2839         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2840             exit 1
2841             ;;
2842         esac
2843         if $test ! -f $run; then
2844             echo "Target 'run' script '$run' not found." >&4
2845         else
2846             $chmod a+rx $run
2847         fi
2848         if $test ! -f $to; then
2849             echo "Target 'to' script '$to' not found." >&4
2850         else
2851             $chmod a+rx $to
2852         fi
2853         if $test ! -f $from; then
2854             echo "Target 'from' script '$from' not found." >&4
2855         else
2856             $chmod a+rx $from
2857         fi
2858         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2859             exit 1
2860         fi
2861         cat >&4 <<EOF
2862 Using '$run' for remote execution,
2863 and '$from' and '$to'
2864 for remote file transfer.
2865 EOF
2866         ;;
2867 *)      run=''
2868         to=:
2869         from=:
2870         usecrosscompile='undef'
2871         targetarch=''
2872         ;;
2873 esac
2874
2875 : see whether [:lower:] and [:upper:] are supported character classes
2876 echo " "
2877 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2878 ABYZ)
2879         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2880         up='[:upper:]'
2881         low='[:lower:]'
2882         ;;
2883 *)      # There is a discontinuity in EBCDIC between 'R' and 'S'
2884         # (0xd9 and 0xe2), therefore that is a nice testing point.
2885         if test "X$up" = X -o "X$low" = X; then
2886             case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2887             rs) up='[A-Z]'
2888                 low='[a-z]'
2889                 ;;
2890             esac
2891         fi
2892         if test "X$up" = X -o "X$low" = X; then
2893             case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2894             rs) up='A-Z'
2895                 low='a-z'
2896                 ;;
2897             esac
2898         fi
2899         if test "X$up" = X -o "X$low" = X; then
2900             case "`echo RS | od -x 2>/dev/null`" in
2901             *D9E2*|*d9e2*)
2902                 echo "Hey, this might be EBCDIC." >&4
2903                 if test "X$up" = X -o "X$low" = X; then
2904                     case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2905                     rs) up='[A-IJ-RS-Z]'
2906                         low='[a-ij-rs-z]'
2907                         ;;
2908                     esac
2909                 fi
2910                 if test "X$up" = X -o "X$low" = X; then
2911                     case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2912                     rs) up='A-IJ-RS-Z'
2913                         low='a-ij-rs-z'
2914                         ;;
2915                     esac
2916                 fi
2917                 ;;
2918             esac
2919         fi
2920 esac
2921 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
2922 rs)
2923     echo "Using $up and $low to convert case." >&4
2924     ;;
2925 *)
2926     echo "I don't know how to translate letters from upper to lower case." >&4
2927     echo "Your tr is not acting any way I know of." >&4
2928     exit 1
2929     ;;
2930 esac
2931 : set up the translation script tr, must be called with ./tr of course
2932 cat >tr <<EOSC
2933 $startsh
2934 case "\$1\$2" in
2935 '[A-Z][a-z]') exec $tr '$up' '$low';;
2936 '[a-z][A-Z]') exec $tr '$low' '$up';;
2937 esac
2938 exec $tr "\$@"
2939 EOSC
2940 chmod +x tr
2941 $eunicefix tr
2942
2943 : Try to determine whether config.sh was made on this system
2944 case "$config_sh" in
2945 '')
2946 myuname=`$uname -a 2>/dev/null`
2947 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2948 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2949 # because the A-Z/a-z are not consecutive.
2950 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2951         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2952 newmyuname="$myuname"
2953 dflt=n
2954 case "$knowitall" in
2955 '')
2956         if test -f ../config.sh; then
2957                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2958                         eval "`grep myuname= ../config.sh`"
2959                 fi
2960                 if test "X$myuname" = "X$newmyuname"; then
2961                         dflt=y
2962                 fi
2963         fi
2964         ;;
2965 *) dflt=y;;
2966 esac
2967
2968 : Get old answers from old config file if Configure was run on the
2969 : same system, otherwise use the hints.
2970 hint=default
2971 cd ..
2972 if test -f config.sh; then
2973         echo " "
2974         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2975         . UU/myread
2976         case "$ans" in
2977         n*|N*) echo "OK, I'll ignore it."
2978                 mv config.sh config.sh.old
2979                 myuname="$newmyuname"
2980                 ;;
2981         *)  echo "Fetching default answers from your old config.sh file..." >&4
2982                 tmp_n="$n"
2983                 tmp_c="$c"
2984                 tmp_sh="$sh"
2985                 . ./config.sh
2986                 cp config.sh UU
2987                 n="$tmp_n"
2988                 c="$tmp_c"
2989                 : Older versions did not always set $sh.  Catch re-use of such
2990                 : an old config.sh.
2991                 case "$sh" in
2992                 '') sh="$tmp_sh" ;;
2993                 esac
2994                 hint=previous
2995                 ;;
2996         esac
2997 fi
2998 . ./UU/checkcc
2999 if test ! -f config.sh; then
3000         $cat <<EOM
3001
3002 First time through, eh?  I have some defaults handy for some systems
3003 that need some extra help getting the Configure answers right:
3004
3005 EOM
3006         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3007         dflt=''
3008         : Half the following guesses are probably wrong... If you have better
3009         : tests or hints, please send them to perlbug@perl.org
3010         : The metaconfig authors would also appreciate a copy...
3011         $test -f /irix && osname=irix
3012         $test -f /xenix && osname=sco_xenix
3013         $test -f /dynix && osname=dynix
3014         $test -f /dnix && osname=dnix
3015         $test -f /lynx.os && osname=lynxos
3016         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3017         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3018         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3019         $test -f /bin/mips && /bin/mips && osname=mips
3020         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3021                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3022         $test -d /usr/apollo/bin && osname=apollo
3023         $test -f /etc/saf/_sactab && osname=svr4
3024         $test -d /usr/include/minix && osname=minix
3025         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3026         if $test -d /MachTen -o -d /MachTen_Folder; then
3027                 osname=machten
3028                 if $test -x /sbin/version; then
3029                         osvers=`/sbin/version | $awk '{print $2}' |
3030                         $sed -e 's/[A-Za-z]$//'`
3031                 elif $test -x /usr/etc/version; then
3032                         osvers=`/usr/etc/version | $awk '{print $2}' |
3033                         $sed -e 's/[A-Za-z]$//'`
3034                 else
3035                         osvers="$2.$3"
3036                 fi
3037         fi
3038
3039         $test -f /sys/posix.dll &&
3040                 $test -f /usr/bin/what &&
3041                 set X `/usr/bin/what /sys/posix.dll` &&
3042                 $test "$3" = UWIN &&
3043                 osname=uwin &&
3044                 osvers="$5"
3045
3046         if $test -f $uname; then
3047                 set X $myuname
3048                 shift
3049
3050                 case "$5" in
3051                 fps*) osname=fps ;;
3052                 mips*)
3053                         case "$4" in
3054                         umips) osname=umips ;;
3055                         *) osname=mips ;;
3056                         esac;;
3057                 [23]100) osname=mips ;;
3058                 next*) osname=next ;;
3059                 i386*)
3060                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3061                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3062                                 osname='sco'
3063                                 osvers=$tmp
3064                         elif $test -f /etc/kconfig; then
3065                                 osname=isc
3066                                 if test "$lns" = "$ln -s"; then
3067                                         osvers=4
3068                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3069                                         osvers=3
3070                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3071                                         osvers=2
3072                                 fi
3073                         fi
3074                         tmp=''
3075                         ;;
3076                 pc*)
3077                         if test -n "$DJGPP"; then
3078                                 osname=dos
3079                                 osvers=djgpp
3080                         fi
3081                         ;;
3082                 esac
3083
3084                 case "$1" in
3085                 aix) osname=aix
3086                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3087                         case "$tmp" in
3088                         # oslevel can fail with:
3089                         # oslevel: Unable to acquire lock.
3090                         *not\ found) osvers="$4"."$3" ;;
3091                         '<3240'|'<>3240') osvers=3.2.0 ;;
3092                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3093                         '=3250'|'>3250') osvers=3.2.5 ;;
3094                         *) osvers=$tmp;;
3095                         esac
3096                         ;;
3097                 bsd386) osname=bsd386
3098                         osvers=`$uname -r`
3099                         ;;
3100                 cygwin*) osname=cygwin
3101                         osvers="$3"
3102                         ;;
3103                 *dc.osx) osname=dcosx
3104                         osvers="$3"
3105                         ;;
3106                 dnix) osname=dnix
3107                         osvers="$3"
3108                         ;;
3109                 domainos) osname=apollo
3110                         osvers="$3"
3111                         ;;
3112                 dgux)   osname=dgux 
3113                         osvers="$3"
3114                         ;;
3115                 dynixptx*) osname=dynixptx
3116                         osvers=`echo "$4"|sed 's/^v//'`
3117                         ;;
3118                 freebsd) osname=freebsd 
3119                         osvers="$3" ;;
3120                 genix)  osname=genix ;;
3121                 gnu)    osname=gnu
3122                         osvers="$3" ;;
3123                 hp*)    osname=hpux 
3124                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3125                         ;;
3126                 irix*)  osname=irix
3127                         case "$3" in
3128                         4*) osvers=4 ;;
3129                         5*) osvers=5 ;;
3130                         *)      osvers="$3" ;;
3131                         esac
3132                         ;;
3133                 linux)  osname=linux
3134                         case "$3" in
3135                         *)      osvers="$3" ;;
3136                         esac
3137                         ;;
3138                 MiNT)   osname=mint
3139                         ;;
3140                 netbsd*) osname=netbsd
3141                         osvers="$3"
3142                         ;;
3143                 news-os) osvers="$3"
3144                         case "$3" in
3145                         4*) osname=newsos4 ;;
3146                         *) osname=newsos ;;
3147                         esac
3148                         ;;
3149                 next*) osname=next ;;
3150                 nonstop-ux) osname=nonstopux ;;
3151                 openbsd) osname=openbsd
3152                         osvers="$3"
3153                         ;;
3154                 os2)    osname=os2
3155                         osvers="$4"
3156                         ;;
3157                 POSIX-BC | posix-bc ) osname=posix-bc
3158                         osvers="$3"
3159                         ;;
3160                 powerux | power_ux | powermax_os | powermaxos | \
3161                 powerunix | power_unix) osname=powerux
3162                         osvers="$3"
3163                         ;;
3164                 qnx) osname=qnx
3165                         osvers="$4"
3166                         ;;
3167                 solaris) osname=solaris
3168                         case "$3" in
3169                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3170                         *)      osvers="$3" ;;
3171                         esac
3172                         ;;
3173                 sunos) osname=sunos
3174                         case "$3" in
3175                         5*) osname=solaris
3176                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3177                         *)      osvers="$3" ;;
3178                         esac
3179                         ;;
3180                 titanos) osname=titanos
3181                         case "$3" in
3182                         1*) osvers=1 ;;
3183                         2*) osvers=2 ;;
3184                         3*) osvers=3 ;;
3185                         4*) osvers=4 ;;
3186                         *)      osvers="$3" ;;
3187                         esac
3188                         ;;
3189                 ultrix) osname=ultrix
3190                         osvers="$3"
3191                         ;;
3192                 osf1|mls+)      case "$5" in
3193                                 alpha)
3194                                         osname=dec_osf
3195                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3196                                         case "$osvers" in
3197                                         [1-9].[0-9]*) ;;
3198                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3199                                         esac
3200                                         ;;
3201                         hp*)    osname=hp_osf1  ;;
3202                         mips)   osname=mips_osf1 ;;
3203                         esac
3204                         ;;
3205                 # UnixWare 7.1.2 is known as Open UNIX 8
3206                 openunix|unixware) osname=svr5
3207                         osvers="$4"
3208                         ;;
3209                 uts)    osname=uts
3210                         osvers="$3"
3211                         ;;
3212                 vos) osvers="$3"
3213                         ;;
3214                 $2) case "$osname" in
3215                         *isc*) ;;
3216                         *freebsd*) ;;
3217                         svr*)
3218                                 : svr4.x or possibly later
3219                                 case "svr$3" in 
3220                                 ${osname}*)
3221                                         osname=svr$3
3222                                         osvers=$4
3223                                         ;;
3224                                 esac
3225                                 case "$osname" in
3226                                 svr4.0)
3227                                         : Check for ESIX
3228                                         if test -f /stand/boot ; then
3229                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3230                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3231                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3232                                                         if test -n "$isesix"; then
3233                                                                 osname=esix4
3234                                                         fi
3235                                                 fi
3236                                         fi
3237                                         ;;
3238                                 esac
3239                                 ;;
3240                         *)      if test -f /etc/systemid; then
3241                                         osname=sco
3242                                         set `echo $3 | $sed 's/\./ /g'` $4
3243                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3244                                                 osvers=$1.$2.$3
3245                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3246                                                 osvers=$1.$2
3247                                         elif $test -f $src/hints/sco_$1.sh; then
3248                                                 osvers=$1
3249                                         fi
3250                                 else
3251                                         case "$osname" in
3252                                         '') : Still unknown.  Probably a generic Sys V.
3253                                                 osname="sysv"
3254                                                 osvers="$3"
3255                                                 ;;
3256                                         esac
3257                                 fi
3258                                 ;;
3259                         esac
3260                         ;;
3261                 *)      case "$osname" in
3262                         '') : Still unknown.  Probably a generic BSD.
3263                                 osname="$1"
3264                                 osvers="$3"
3265                                 ;;
3266                         esac
3267                         ;;
3268                 esac
3269         else
3270                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3271                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3272                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3273                                 osname=news_os
3274                         fi
3275                         $rm -f UU/kernel.what
3276                 elif test -d c:/. -o -n "$is_os2" ; then
3277                         set X $myuname
3278                         osname=os2
3279                         osvers="$5"
3280                 fi
3281         fi
3282         
3283         case "$targetarch" in
3284         '') ;;
3285         *)  hostarch=$osname
3286             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3287             osvers=''
3288             ;;
3289         esac
3290
3291         : Now look for a hint file osname_osvers, unless one has been
3292         : specified already.
3293         case "$hintfile" in
3294         ''|' ')
3295                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3296                 : Also try without trailing minor version numbers.
3297                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3298                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3299                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3300                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3301                 case "$file" in
3302                 '') dflt=none ;;
3303                 *)  case "$osvers" in
3304                         '') dflt=$file
3305                                 ;;
3306                         *)  if $test -f $src/hints/$file.sh ; then
3307                                         dflt=$file
3308                                 elif $test -f $src/hints/$xfile.sh ; then
3309                                         dflt=$xfile
3310                                 elif $test -f $src/hints/$xxfile.sh ; then
3311                                         dflt=$xxfile
3312                                 elif $test -f $src/hints/$xxxfile.sh ; then
3313                                         dflt=$xxxfile
3314                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3315                                         dflt=$xxxxfile
3316                                 elif $test -f "$src/hints/${osname}.sh" ; then
3317                                         dflt="${osname}"
3318                                 else
3319                                         dflt=none
3320                                 fi
3321                                 ;;
3322                         esac
3323                         ;;
3324                 esac
3325                 if $test -f Policy.sh ; then
3326                         case "$dflt" in
3327                         *Policy*) ;;
3328                         none) dflt="Policy" ;;
3329                         *) dflt="Policy $dflt" ;;
3330                         esac
3331                 fi
3332                 ;;
3333         *)
3334                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3335                 ;;
3336         esac
3337
3338         if $test -f Policy.sh ; then
3339                 $cat <<EOM
3340
3341 There's also a Policy hint file available, which should make the
3342 site-specific (policy) questions easier to answer.
3343 EOM
3344
3345         fi
3346
3347         $cat <<EOM
3348
3349 You may give one or more space-separated answers, or "none" if appropriate.
3350 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3351 is a good thing.  DO NOT give a wrong version or a wrong OS.
3352
3353 EOM
3354
3355         rp="Which of these apply, if any?"
3356         . UU/myread
3357         tans=$ans
3358         for file in $tans; do
3359                 if $test X$file = XPolicy -a -f Policy.sh; then
3360                         . Policy.sh
3361                         $cat Policy.sh >> UU/config.sh
3362                 elif $test -f $src/hints/$file.sh; then
3363                         . $src/hints/$file.sh
3364                         $cat $src/hints/$file.sh >> UU/config.sh
3365                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3366                         : nothing
3367                 else
3368                         : Give one chance to correct a possible typo.
3369                         echo "$file.sh does not exist"
3370                         dflt=$file
3371                         rp="hint to use instead?"
3372                         . UU/myread
3373                         for file in $ans; do
3374                                 if $test -f "$src/hints/$file.sh"; then
3375                                         . $src/hints/$file.sh
3376                                         $cat $src/hints/$file.sh >> UU/config.sh
3377                                 elif $test X$ans = X -o X$ans = Xnone ; then
3378                                         : nothing
3379                                 else
3380                                         echo "$file.sh does not exist -- ignored."
3381                                 fi
3382                         done
3383                 fi
3384         done
3385
3386         hint=recommended
3387         : Remember our hint file for later.
3388         if $test -f "$src/hints/$file.sh" ; then
3389                 hintfile="$file"
3390         else
3391                 hintfile=''
3392         fi
3393 fi
3394 cd UU
3395 ;;
3396 *)
3397         echo " "
3398         echo "Fetching default answers from $config_sh..." >&4
3399         tmp_n="$n"
3400         tmp_c="$c"
3401         cd ..
3402         cp $config_sh config.sh 2>/dev/null
3403         chmod +w config.sh
3404         . ./config.sh
3405         cd UU
3406         cp ../config.sh .
3407         n="$tmp_n"
3408         c="$tmp_c"
3409         hint=previous
3410         ;;
3411 esac
3412 test "$override" && . ./optdef.sh
3413
3414 : Restore computed paths
3415 for file in $loclist $trylist; do
3416         eval $file="\$_$file"
3417 done
3418
3419 cat << EOM
3420
3421 Configure uses the operating system name and version to set some defaults.
3422 The default value is probably right if the name rings a bell. Otherwise,
3423 since spelling matters for me, either accept the default or answer "none"
3424 to leave it blank.
3425
3426 EOM
3427 case "$osname" in
3428         ''|' ')
3429                 case "$hintfile" in
3430                 ''|' '|none) dflt=none ;;
3431                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3432                 esac
3433                 ;;
3434         *) dflt="$osname" ;;
3435 esac
3436 rp="Operating system name?"
3437 . ./myread
3438 case "$ans" in
3439 none)  osname='' ;;
3440 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3441 esac
3442 echo " "
3443 case "$osvers" in
3444         ''|' ')
3445                 case "$hintfile" in
3446                 ''|' '|none) dflt=none ;;
3447                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3448                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3449                         case "$dflt" in
3450                         ''|' ') dflt=none ;;
3451                         esac
3452                         ;;
3453                 esac
3454                 ;;
3455         *) dflt="$osvers" ;;
3456 esac
3457 rp="Operating system version?"
3458 . ./myread
3459 case "$ans" in
3460 none)  osvers='' ;;
3461 *) osvers="$ans" ;;
3462 esac
3463
3464
3465 . ./posthint.sh
3466
3467 : who configured the system
3468 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3469 case "$cf_by" in
3470 "")
3471         cf_by=`(logname) 2>/dev/null`
3472         case "$cf_by" in
3473         "")
3474                 cf_by=`(whoami) 2>/dev/null`
3475                 case "$cf_by" in
3476                 "") cf_by=unknown ;;
3477                 esac ;;
3478         esac ;;
3479 esac
3480
3481 : set up the script used to warn in case of inconsistency
3482 cat <<EOS >whoa
3483 $startsh
3484 EOS
3485 cat <<'EOSC' >>whoa
3486 dflt=y
3487 echo " "
3488 echo "*** WHOA THERE!!! ***" >&4
3489 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3490 rp="    Keep the $hint value?"
3491 . ./myread
3492 case "$ans" in
3493 y) td=$was; tu=$was;;
3494 esac
3495 EOSC
3496
3497 : function used to set $1 to $val
3498 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3499 case "$val$was" in
3500 $define$undef) . ./whoa; eval "$var=\$td";;
3501 $undef$define) . ./whoa; eval "$var=\$tu";;
3502 *) eval "$var=$val";;
3503 esac'
3504
3505 case "$usesocks" in
3506 $define|true|[yY]*)     dflt='y';;
3507 *) dflt='n';;
3508 esac
3509 cat <<EOM
3510
3511 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3512 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3513 to use the PerlIO abstraction layer, this will be implicitly selected.
3514
3515 If this doesn't make any sense to you, just accept the default '$dflt'.
3516 EOM
3517 rp='Build Perl for SOCKS?'
3518 . ./myread
3519 case "$ans" in
3520 y|Y)    val="$define" ;;     
3521 *)      val="$undef" ;;
3522 esac
3523 set usesocks
3524 eval $setvar
3525
3526 case "$usesocks" in
3527 $define|true|[yY]*) useperlio="$define";;
3528 esac
3529
3530 case "$useperlio" in
3531 $define|true|[yY]*|'')  dflt='y';;
3532 *) dflt='n';;
3533 esac
3534 cat <<EOM
3535
3536 Previous version of $package used the standard IO mechanisms as
3537 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
3538 alternate IO mechanisms via the PerlIO abstraction layer, but the
3539 stdio mechanism is still available if needed.  The abstraction layer
3540 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3541 Using PerlIO with sfio may cause problems with some extension modules.
3542
3543 If this doesn't make any sense to you, just accept the default '$dflt'.
3544 EOM
3545 rp='Use the PerlIO abstraction layer?'
3546 . ./myread
3547 case "$ans" in
3548 y|Y) 
3549         val="$define"
3550         ;;
3551 *)      
3552         echo "Ok, doing things the stdio way."
3553         val="$undef"
3554         ;;
3555 esac
3556 set useperlio
3557 eval $setvar 
3558
3559 case "$usesocks" in
3560 $define|true|[yY]*)
3561         case "$useperlio" in
3562         $define|true|[yY]*) ;;
3563         *)      cat >&4 <<EOM
3564
3565 You are using the SOCKS proxy protocol library which means that you
3566 should also use the PerlIO layer.  You may be headed for trouble.
3567
3568 EOM
3569                 ;;
3570         esac
3571         ;;
3572 esac
3573
3574         
3575 case "$usethreads" in
3576 $define|true|[yY]*)     dflt='y';;
3577 *)     # Catch case where user specified ithreads or 5005threads but
3578        # forgot -Dusethreads (A.D. 4/2002)
3579        case "$useithreads$use5005threads" in
3580        *$define*)      
3581                 case "$useperlio" in
3582                 "$define")      dflt='y' ;;
3583                 *)              dflt='n' ;;
3584                 esac
3585                 ;;
3586        *)       dflt='n';;
3587        esac
3588        ;;
3589 esac
3590 cat <<EOM
3591
3592 Perl can be built to take advantage of threads on some systems.
3593 To do so, Configure can be run with -Dusethreads.
3594
3595 Note that Perl built with threading support runs slightly slower
3596 and uses more memory than plain Perl. The current implementation
3597 is believed to be stable, but it is fairly new, and so should be
3598 treated with caution.
3599
3600 If this doesn't make any sense to you, just accept the default '$dflt'.
3601 EOM
3602 rp='Build a threading Perl?'
3603 . ./myread
3604 case "$ans" in
3605 y|Y)    val="$define" ;;
3606 *)      val="$undef" ;;
3607 esac
3608 set usethreads
3609 eval $setvar
3610
3611 case "$usethreads" in
3612 $define)
3613         $cat <<EOM
3614
3615 Since release 5.6, Perl has had two different threading implementations,
3616 the newer interpreter-based version (ithreads) with one interpreter per
3617 thread, and the older 5.005 version (5005threads).
3618 The 5005threads version is effectively unmaintained and will probably be
3619 removed in Perl 5.10, so there should be no need to build a Perl using it
3620 unless needed for backwards compatibility with some existing 5.005threads
3621 code.
3622
3623 EOM
3624         : Default to ithreads unless overridden on command line or with
3625         : old config.sh
3626         dflt='y'
3627         case "$use5005threads" in
3628                 $define|true|[yY]*) dflt='n';;
3629         esac
3630         case "$useithreads" in
3631                 $undef|false|[nN]*) dflt='n';;
3632         esac
3633         rp='Use the newer interpreter-based ithreads?'
3634         . ./myread
3635         case "$ans" in
3636         y|Y)    val="$define" ;;
3637         *)      val="$undef" ;;
3638         esac
3639         set useithreads
3640         eval $setvar
3641         : Now set use5005threads to the opposite value.
3642         case "$useithreads" in
3643         $define) val="$undef" ;;
3644         *) val="$define" ;;
3645         esac
3646         set use5005threads
3647         eval $setvar
3648         ;;
3649 *)
3650         useithreads="$undef"
3651         use5005threads="$undef"
3652         ;;
3653 esac
3654
3655 case "$useithreads$use5005threads" in
3656 "$define$define")
3657         $cat >&4 <<EOM
3658
3659 You cannot have both the ithreads and the 5.005 threads enabled
3660 at the same time.  Disabling the 5.005 threads since they are
3661 much less stable than the ithreads.
3662
3663 EOM
3664         use5005threads="$undef"
3665         ;;
3666 esac
3667
3668 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3669         cat >&4 <<EOF
3670 ***
3671 *** To build with ithreads you must also use the PerlIO layer.
3672 *** Cannot continue, aborting.
3673 ***
3674 EOF
3675         exit 1
3676 fi
3677
3678 case "$d_oldpthreads" in
3679 '')     : Configure tests would be welcome here.  For now, assume undef.
3680         val="$undef" ;;
3681 *)      val="$d_oldpthreads" ;;
3682 esac
3683 set d_oldpthreads
3684 eval $setvar
3685
3686
3687 : Look for a hint-file generated 'call-back-unit'.  If the
3688 : user has specified that a threading perl is to be built,
3689 : we may need to set or change some other defaults.
3690 if $test -f usethreads.cbu; then
3691     echo "Your platform has some specific hints regarding threaded builds, using them..."
3692     . ./usethreads.cbu
3693 else
3694     case "$usethreads" in
3695         "$define"|true|[yY]*)
3696                 $cat <<EOM
3697 (Your platform does not have any specific hints for threaded builds.
3698  Assuming POSIX threads, then.)
3699 EOM
3700         ;;
3701     esac
3702 fi
3703
3704 cat <<EOM
3705
3706 Perl can be built so that multiple Perl interpreters can coexist
3707 within the same Perl executable.
3708 EOM
3709
3710 case "$useithreads" in
3711 $define)
3712         cat <<EOM
3713 This multiple interpreter support is required for interpreter-based threads.
3714 EOM
3715         val="$define"
3716         ;;
3717 *)      case "$usemultiplicity" in
3718         $define|true|[yY]*)     dflt='y';;
3719         *) dflt='n';;
3720         esac
3721         echo " "
3722         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3723         rp='Build Perl for multiplicity?'
3724         . ./myread
3725         case "$ans" in
3726         y|Y)    val="$define" ;;
3727         *)      val="$undef" ;;
3728         esac
3729         ;;
3730 esac
3731 set usemultiplicity
3732 eval $setvar
3733
3734
3735 case "$usemorebits" in
3736 "$define"|true|[yY]*)
3737         use64bitint="$define"
3738         uselongdouble="$define"
3739         usemorebits="$define"
3740         ;;
3741 *)      usemorebits="$undef"
3742         ;;
3743 esac
3744
3745 : make some quick guesses about what we are up against
3746 echo " "
3747 $echo $n "Hmm...  $c"
3748 echo exit 1 >bsd
3749 echo exit 1 >usg
3750 echo exit 1 >v7
3751 echo exit 1 >osf1
3752 echo exit 1 >eunice
3753 echo exit 1 >xenix
3754 echo exit 1 >venix
3755 echo exit 1 >os2
3756 d_bsd="$undef"
3757 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3758 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3759 then
3760         echo "Looks kind of like an OSF/1 system, but we'll see..."
3761         echo exit 0 >osf1
3762 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3763         xxx=`./loc addbib blurfl $pth`
3764         if $test -f $xxx; then
3765         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3766                 echo exit 0 >bsd
3767                 echo exit 0 >usg
3768         else
3769                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3770                         echo "Looks kind of like an extended USG system, but we'll see..."
3771                 else
3772                         echo "Looks kind of like a USG system, but we'll see..."
3773                 fi
3774                 echo exit 0 >usg
3775         fi
3776 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3777         echo "Looks kind of like a BSD system, but we'll see..."
3778         d_bsd="$define"
3779         echo exit 0 >bsd
3780 else
3781         echo "Looks kind of like a Version 7 system, but we'll see..."
3782         echo exit 0 >v7
3783 fi
3784 case "$eunicefix" in
3785 *unixtovms*)
3786         $cat <<'EOI'
3787 There is, however, a strange, musty smell in the air that reminds me of
3788 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3789 EOI
3790         echo exit 0 >eunice
3791         d_eunice="$define"
3792 : it so happens the Eunice I know will not run shell scripts in Unix format
3793         ;;
3794 *)
3795         echo " "
3796         echo "Congratulations.  You aren't running Eunice."
3797         d_eunice="$undef"
3798         ;;
3799 esac
3800 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3801 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3802 : semicolon as a patch separator
3803 case "$p_" in
3804 :) ;;
3805 *)
3806         $cat <<'EOI'
3807 I have the feeling something is not exactly right, however...don't tell me...
3808 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3809 (Or you may be running DOS with DJGPP.)
3810 EOI
3811         echo exit 0 >os2
3812         ;;
3813 esac
3814 if test -f /xenix; then
3815         echo "Actually, this looks more like a XENIX system..."
3816         echo exit 0 >xenix
3817         d_xenix="$define"
3818 else
3819         echo " "
3820         echo "It's not Xenix..."
3821         d_xenix="$undef"
3822 fi
3823 chmod +x xenix
3824 $eunicefix xenix
3825 if test -f /venix; then
3826         echo "Actually, this looks more like a VENIX system..."
3827         echo exit 0 >venix
3828 else
3829         echo " "
3830         if ./xenix; then
3831                 : null
3832         else
3833                 echo "Nor is it Venix..."
3834         fi
3835 fi
3836 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3837 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3838 $rm -f foo
3839
3840 case "$cc" in
3841 '') dflt=cc;;
3842 *) dflt="$cc";;
3843 esac
3844 rp="Use which C compiler?"
3845 . ./myread
3846 cc="$ans"
3847
3848 : See if they have not cc but they do have gcc
3849 . ./trygcc
3850 : Look for a hint-file generated 'call-back-unit'.  Now that the
3851 : user has specified the compiler, we may need to set or change some
3852 : other defaults.
3853 if $test -f cc.cbu; then
3854     . ./cc.cbu
3855 fi
3856 . ./checkcc
3857
3858 echo " "
3859 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3860 $cat >try.c <<EOM
3861 #include <stdio.h>
3862 int main() {
3863 #ifdef __GNUC__
3864 #ifdef __VERSION__
3865         printf("%s\n", __VERSION__);
3866 #else
3867         printf("%s\n", "1");
3868 #endif
3869 #endif
3870         return(0);
3871 }
3872 EOM
3873 if $cc -o try $ccflags $ldflags try.c; then
3874         gccversion=`$run ./try`
3875         case "$gccversion" in
3876         '') echo "You are not using GNU cc." ;;
3877         *)  echo "You are using GNU cc $gccversion."
3878             ccname=gcc
3879             ;;
3880         esac
3881 else
3882         echo " "
3883         echo "*** WHOA THERE!!! ***" >&4
3884         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3885         case "$knowitall" in
3886         '')
3887         echo "    You'd better start hunting for one and let me know about it." >&4
3888                 exit 1
3889                 ;;
3890         esac
3891 fi
3892 $rm -f try try.*
3893 case "$gccversion" in
3894 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3895 esac
3896 case "$gccversion" in
3897 '') gccosandvers='' ;;
3898 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3899    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3900    gccshortvers=''
3901    case "$gccosandvers" in
3902    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3903    $osname$osvers) ;; # looking good
3904    $osname*) cat <<EOM >&4
3905
3906 *** WHOA THERE!!! ***
3907
3908     Your gcc has not been compiled for the exact release of
3909     your operating system ($gccosandvers versus $osname$osvers).
3910
3911     In general it is a good idea to keep gcc synchronized with
3912     the operating system because otherwise serious problems
3913     may ensue when trying to compile software, like Perl.
3914
3915     I'm trying to be optimistic here, though, and will continue.
3916     If later during the configuration and build icky compilation
3917     problems appear (headerfile conflicts being the most common
3918     manifestation), I suggest reinstalling the gcc to match
3919     your operating system release.
3920
3921 EOM
3922       ;;
3923    *) gccosandvers='' ;; # failed to parse, better be silent
3924    esac
3925    ;;
3926 esac
3927 case "$ccname" in
3928 '') ccname="$cc" ;;
3929 esac
3930
3931 # gcc 3.* complain about adding -Idirectories that they already know about,
3932 # so we will take those off from locincpth.
3933 case "$gccversion" in
3934 3*)
3935     echo "main(){}">try.c
3936     for incdir in $locincpth; do
3937        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3938              grep '^c[cp]p*[01]: warning: changing search order '`
3939        if test "X$warn" != X; then
3940            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3941        fi
3942     done
3943     $rm -f try try.*
3944 esac
3945
3946 : decide how portable to be.  Allow command line overrides.
3947 case "$d_portable" in
3948 "$undef") ;;
3949 *)      d_portable="$define" ;;
3950 esac
3951
3952 : set up shell script to do ~ expansion
3953 cat >filexp <<EOSS
3954 $startsh
3955 : expand filename
3956 case "\$1" in
3957  ~/*|~)
3958         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3959         ;;
3960  ~*)
3961         if $test -f /bin/csh; then
3962                 /bin/csh -f -c "glob \$1"
3963                 failed=\$?
3964                 echo ""
3965                 exit \$failed
3966         else
3967                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3968                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3969                 if $test ! -d "\$dir"; then
3970                         me=\`basename \$0\`
3971                         echo "\$me: can't locate home directory for: \$name" >&2
3972                         exit 1
3973                 fi
3974                 case "\$1" in
3975                 */*)
3976                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3977                         ;;
3978                 *)
3979                         echo \$dir
3980                         ;;
3981                 esac
3982         fi
3983         ;;
3984 *)
3985         echo \$1
3986         ;;
3987 esac
3988 EOSS
3989 chmod +x filexp
3990 $eunicefix filexp
3991
3992 : now set up to get a file name
3993 cat <<EOS >getfile
3994 $startsh
3995 EOS
3996 cat <<'EOSC' >>getfile
3997 tilde=''
3998 fullpath=''
3999 already=''
4000 skip=''
4001 none_ok=''
4002 exp_file=''
4003 nopath_ok=''
4004 orig_rp="$rp"
4005 orig_dflt="$dflt"
4006 case "$gfpth" in
4007 '') gfpth='.' ;;
4008 esac
4009
4010 case "$fn" in
4011 *\(*)
4012         : getfile will accept an answer from the comma-separated list
4013         : enclosed in parentheses even if it does not meet other criteria.
4014         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
4015         fn=`echo $fn | sed 's/(.*)//'`
4016         ;;
4017 esac
4018
4019 case "$fn" in
4020 *:*)
4021         loc_file=`expr $fn : '.*:\(.*\)'`
4022         fn=`expr $fn : '\(.*\):.*'`
4023         ;;
4024 esac
4025
4026 case "$fn" in
4027 *~*) tilde=true;;
4028 esac
4029 case "$fn" in
4030 */*) fullpath=true;;
4031 esac
4032 case "$fn" in
4033 *+*) skip=true;;
4034 esac
4035 case "$fn" in
4036 *n*) none_ok=true;;
4037 esac
4038 case "$fn" in
4039 *e*) exp_file=true;;
4040 esac
4041 case "$fn" in
4042 *p*) nopath_ok=true;;
4043 esac
4044
4045 case "$fn" in
4046 *f*) type='File';;
4047 *d*) type='Directory';;
4048 *l*) type='Locate';;
4049 esac
4050
4051 what="$type"
4052 case "$what" in
4053 Locate) what='File';;
4054 esac
4055
4056 case "$exp_file" in
4057 '')
4058         case "$d_portable" in
4059         "$define") ;;
4060         *) exp_file=true;;
4061         esac
4062         ;;
4063 esac
4064
4065 cd ..
4066 while test "$type"; do
4067         redo=''
4068         rp="$orig_rp"
4069         dflt="$orig_dflt"
4070         case "$tilde" in
4071         true) rp="$rp (~name ok)";;
4072         esac
4073         . UU/myread
4074         if test -f UU/getfile.ok && \
4075                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4076         then
4077                 value="$ans"
4078                 ansexp="$ans"
4079                 break
4080         fi
4081         case "$ans" in
4082         none)
4083                 value=''
4084                 ansexp=''
4085                 case "$none_ok" in
4086                 true) type='';;
4087                 esac
4088                 ;;
4089         *)
4090                 case "$tilde" in
4091                 '') value="$ans"
4092                         ansexp="$ans";;
4093                 *)
4094                         value=`UU/filexp $ans`
4095                         case $? in
4096                         0)
4097                                 if test "$ans" != "$value"; then
4098                                         echo "(That expands to $value on this system.)"
4099                                 fi
4100                                 ;;
4101                         *) value="$ans";;
4102                         esac
4103                         ansexp="$value"
4104                         case "$exp_file" in
4105                         '') value="$ans";;
4106                         esac
4107                         ;;
4108                 esac
4109                 case "$fullpath" in
4110                 true)
4111                         case "$ansexp" in
4112                         /*) value="$ansexp" ;;
4113                         [a-zA-Z]:/*) value="$ansexp" ;;
4114                         *)
4115                                 redo=true
4116                                 case "$already" in
4117                                 true)
4118                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4119                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4120                                         ;;
4121                                 *)
4122                                 echo "Please give a full path name, starting with slash." >&4
4123                                         case "$tilde" in
4124                                         true)
4125                                 echo "Note that using ~name is ok provided it expands well." >&4
4126                                                 already=true
4127                                                 ;;
4128                                         esac
4129                                 esac
4130                                 ;;
4131                         esac
4132                         ;;
4133                 esac
4134                 case "$redo" in
4135                 '')
4136                         case "$type" in
4137                         File)
4138                                 for fp in $gfpth; do
4139                                         if test "X$fp" = X.; then
4140                                             pf="$ansexp"
4141                                         else    
4142                                             pf="$fp/$ansexp"
4143                                         fi
4144                                         if test -f "$pf"; then
4145                                                 type=''
4146                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4147                                         then
4148                                                 echo "($value is not a plain file, but that's ok.)"
4149                                                 type=''
4150                                         fi
4151                                         if test X"$type" = X; then
4152                                             value="$pf"
4153                                             break
4154                                         fi
4155                                 done
4156                                 ;;
4157                         Directory)
4158                                 for fp in $gfpth; do
4159                                         if test "X$fp" = X.; then
4160                                             dir="$ans"
4161                                             direxp="$ansexp"
4162                                         else    
4163                                             dir="$fp/$ansexp"
4164                                             direxp="$fp/$ansexp"
4165                                         fi
4166                                         if test -d "$direxp"; then
4167                                                 type=''
4168                                                 value="$dir"
4169                                                 break
4170                                         fi
4171                                 done
4172                                 ;;
4173                         Locate)
4174                                 if test -d "$ansexp"; then
4175                                         echo "(Looking for $loc_file in directory $value.)"
4176                                         value="$value/$loc_file"
4177                                         ansexp="$ansexp/$loc_file"
4178                                 fi
4179                                 if test -f "$ansexp"; then
4180                                         type=''
4181                                 fi
4182                                 case "$nopath_ok" in
4183                                 true)   case "$value" in
4184                                         */*) ;;
4185                                         *)      echo "Assuming $value will be in people's path."
4186                                                 type=''
4187                                                 ;;
4188                                         esac
4189                                         ;;
4190                                 esac
4191                                 ;;
4192                         esac
4193
4194                         case "$skip" in
4195                         true) type='';
4196                         esac
4197
4198                         case "$type" in
4199                         '') ;;
4200                         *)
4201                                 if test "$fastread" = yes; then
4202                                         dflt=y
4203                                 else
4204                                         dflt=n
4205                                 fi
4206                                 rp="$what $value doesn't exist.  Use that name anyway?"
4207                                 . UU/myread
4208                                 dflt=''
4209                                 case "$ans" in
4210                                 y*) type='';;
4211                                 *) echo " ";;
4212                                 esac
4213                                 ;;
4214                         esac
4215                         ;;
4216                 esac
4217                 ;;
4218         esac
4219 done
4220 cd UU
4221 ans="$value"
4222 rp="$orig_rp"
4223 dflt="$orig_dflt"
4224 rm -f getfile.ok
4225 test "X$gfpthkeep" != Xy && gfpth=""
4226 EOSC
4227
4228 : What should the include directory be ?
4229 echo " "
4230 $echo $n "Hmm...  $c"
4231 dflt='/usr/include'
4232 incpath=''
4233 mips_type=''
4234 if $test -f /bin/mips && /bin/mips; then
4235         echo "Looks like a MIPS system..."
4236         $cat >usr.c <<'EOCP'
4237 #ifdef SYSTYPE_BSD43
4238 /bsd43
4239 #endif
4240 EOCP
4241         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4242                 dflt='/bsd43/usr/include'
4243                 incpath='/bsd43'
4244                 mips_type='BSD 4.3'
4245         else
4246                 mips_type='System V'
4247         fi
4248         $rm -f usr.c usr.out
4249         echo "and you're compiling with the $mips_type compiler and libraries."
4250         xxx_prompt=y
4251         echo "exit 0" >mips
4252 else
4253         echo "Doesn't look like a MIPS system."
4254         xxx_prompt=n
4255         echo "exit 1" >mips
4256 fi
4257 chmod +x mips
4258 $eunicefix mips
4259 case "$usrinc" in
4260 '') ;;
4261 *) dflt="$usrinc";;
4262 esac
4263 case "$xxx_prompt" in
4264 y)      fn=d/
4265         echo " "
4266         rp='Where are the include files you want to use?'
4267         . ./getfile
4268         usrinc="$ans"
4269         ;;
4270 *)      usrinc="$dflt"
4271         ;;
4272 esac
4273
4274 : see how we invoke the C preprocessor
4275 echo " "
4276 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4277 cat <<'EOT' >testcpp.c
4278 #define ABC abc
4279 #define XYZ xyz
4280 ABC.XYZ
4281 EOT
4282 cd ..
4283 if test ! -f cppstdin; then
4284         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4285                 # AIX cc -E doesn't show the absolute headerfile
4286                 # locations but we'll cheat by using the -M flag.
4287                 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
4288         else
4289                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4290         fi
4291 else
4292         echo "Keeping your $hint cppstdin wrapper."
4293 fi
4294 chmod 755 cppstdin
4295 wrapper=`pwd`/cppstdin
4296 ok='false'
4297 cd UU
4298
4299 if $test "X$cppstdin" != "X" && \
4300         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4301         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4302 then
4303         echo "You used to use $cppstdin $cppminus so we'll use that again."
4304         case "$cpprun" in
4305         '') echo "But let's see if we can live without a wrapper..." ;;
4306         *)
4307                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4308                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4309                 then
4310                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4311                         ok='true'
4312                 else
4313                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4314                 fi
4315                 ;;
4316         esac
4317 else
4318         case "$cppstdin" in
4319         '') ;;
4320         *)
4321                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4322                 ;;
4323         esac
4324 fi
4325
4326 if $ok; then
4327         : nothing
4328 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4329         $cc -E <testcpp.c >testcpp.out 2>&1; \
4330         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4331         echo "Yup, it does."
4332         x_cpp="$cc -E"
4333         x_minus='';
4334 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4335         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4336         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4337         echo "Yup, it does."
4338         x_cpp="$cc -E"
4339         x_minus='-';
4340 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4341         $cc -P <testcpp.c >testcpp.out 2>&1; \
4342         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4343         echo "Yipee, that works!"
4344         x_cpp="$cc -P"
4345         x_minus='';
4346 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4347         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4348         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4349         echo "At long last!"
4350         x_cpp="$cc -P"
4351         x_minus='-';
4352 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4353         $cpp <testcpp.c >testcpp.out 2>&1; \
4354         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4355         echo "It works!"
4356         x_cpp="$cpp"
4357         x_minus='';
4358 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4359         $cpp - <testcpp.c >testcpp.out 2>&1; \
4360         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4361         echo "Hooray, it works!  I was beginning to wonder."
4362         x_cpp="$cpp"
4363         x_minus='-';
4364 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4365         $wrapper <testcpp.c >testcpp.out 2>&1; \
4366         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4367         x_cpp="$wrapper"
4368         x_minus=''
4369         echo "Eureka!"
4370 else
4371         dflt=''
4372         rp="No dice.  I can't find a C preprocessor.  Name one:"
4373         . ./myread
4374         x_cpp="$ans"
4375         x_minus=''
4376         $x_cpp <testcpp.c >testcpp.out 2>&1
4377         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4378                 echo "OK, that will do." >&4
4379         else
4380 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4381                 exit 1
4382         fi
4383 fi
4384
4385 case "$ok" in
4386 false)
4387         cppstdin="$x_cpp"
4388         cppminus="$x_minus"
4389         cpprun="$x_cpp"
4390         cpplast="$x_minus"
4391         set X $x_cpp
4392         shift
4393         case "$1" in
4394         "$cpp")
4395                 echo "Perhaps can we force $cc -E using a wrapper..."
4396                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4397                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4398                 then
4399                         echo "Yup, we can."
4400                         cppstdin="$wrapper"
4401                         cppminus='';
4402                 else
4403                         echo "Nope, we'll have to live without it..."
4404                 fi
4405                 ;;
4406         esac
4407         case "$cpprun" in
4408         "$wrapper")
4409                 cpprun=''
4410                 cpplast=''
4411                 ;;
4412         esac
4413         ;;
4414 esac
4415
4416 case "$cppstdin" in
4417 "$wrapper"|'cppstdin') ;;
4418 *) $rm -f $wrapper;;
4419 esac
4420 $rm -f testcpp.c testcpp.out
4421
4422 : Set private lib path
4423 case "$plibpth" in
4424 '') if ./mips; then
4425                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4426         fi;;
4427 esac
4428 case "$libpth" in
4429 ' ') dlist='';;
4430 '') dlist="$loclibpth $plibpth $glibpth";;
4431 *) dlist="$libpth";;
4432 esac
4433
4434 : Now check and see which directories actually exist, avoiding duplicates
4435 libpth=''
4436 for xxx in $dlist
4437 do
4438     if $test -d $xxx; then
4439                 case " $libpth " in
4440                 *" $xxx "*) ;;
4441                 *) libpth="$libpth $xxx";;
4442                 esac
4443     fi
4444 done
4445 $cat <<'EOM'
4446
4447 Some systems have incompatible or broken versions of libraries.  Among
4448 the directories listed in the question below, please remove any you
4449 know not to be holding relevant libraries, and add any that are needed.
4450 Say "none" for none.
4451
4452 EOM
4453 case "$libpth" in
4454 '') dflt='none';;
4455 *)
4456         set X $libpth
4457         shift
4458         dflt=${1+"$@"}
4459         ;;
4460 esac
4461 rp="Directories to use for library searches?"
4462 . ./myread
4463 case "$ans" in
4464 none) libpth=' ';;
4465 *) libpth="$ans";;
4466 esac
4467
4468 : compute shared library extension
4469 case "$so" in
4470 '')
4471         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4472                 dflt='sl'
4473         else
4474                 dflt='so'
4475         fi
4476         ;;
4477 *) dflt="$so";;
4478 esac
4479 $cat <<EOM
4480
4481 On some systems, shared libraries may be available.  Answer 'none' if
4482 you want to suppress searching of shared libraries for the remainder
4483 of this configuration.
4484
4485 EOM
4486 rp='What is the file extension used for shared libraries?'
4487 . ./myread
4488 so="$ans"
4489
4490 : Define several unixisms.
4491 : Hints files or command line option can be used to override them.
4492 : The convoluted testing is in case hints files set either the old
4493 : or the new name.
4494 case "$_exe" in
4495 '')     case "$exe_ext" in
4496         '')     ;;
4497         *)      _exe="$exe_ext" ;;
4498         esac
4499         ;;
4500 esac
4501 case "$_a" in
4502 '')     case "$lib_ext" in
4503     '') _a='.a';;
4504         *)      _a="$lib_ext" ;;
4505         esac
4506         ;;
4507 esac
4508 case "$_o" in
4509 '') case "$obj_ext" in
4510         '')     _o='.o';;
4511         *)      _o="$obj_ext";;
4512         esac
4513         ;;
4514 esac
4515 case "$p_" in
4516 '') case "$path_sep" in
4517         '')     p_=':';;
4518         *)      p_="$path_sep";;
4519         esac
4520         ;;
4521 esac
4522 exe_ext=$_exe
4523 lib_ext=$_a
4524 obj_ext=$_o
4525 path_sep=$p_
4526
4527 : Which makefile gets called first.  This is used by make depend.
4528 case "$firstmakefile" in
4529 '') firstmakefile='makefile';;
4530 esac
4531
4532 case "$ccflags" in
4533 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4534 esac
4535
4536 case "$uselongdouble" in
4537 $define|true|[yY]*)     dflt='y';;
4538 *) dflt='n';;
4539 esac
4540 cat <<EOM
4541
4542 Perl can be built to take advantage of long doubles which
4543 (if available) may give more accuracy and range for floating point numbers.
4544
4545 If this doesn't make any sense to you, just accept the default '$dflt'.
4546 EOM
4547 rp='Try to use long doubles if available?'
4548 . ./myread
4549 case "$ans" in
4550 y|Y)    val="$define"   ;;
4551 *)      val="$undef"    ;;
4552 esac
4553 set uselongdouble
4554 eval $setvar
4555
4556 case "$uselongdouble" in
4557 true|[yY]*) uselongdouble="$define" ;;
4558 esac
4559
4560 : Look for a hint-file generated 'call-back-unit'.  If the
4561 : user has specified that long doubles should be used,
4562 : we may need to set or change some other defaults.
4563 if $test -f uselongdouble.cbu; then
4564     echo "Your platform has some specific hints regarding long doubles, using them..."
4565     . ./uselongdouble.cbu
4566 else
4567     case "$uselongdouble" in
4568         $define)
4569                 $cat <<EOM
4570 (Your platform does not have any specific hints for long doubles.)
4571 EOM
4572         ;;
4573     esac
4574 fi
4575
4576 : Looking for optional libraries
4577 echo " "
4578 echo "Checking for optional libraries..." >&4
4579 case "$libs" in
4580 ' '|'') dflt='';;
4581 *) dflt="$libs";;
4582 esac
4583 case "$libswanted" in
4584 '') libswanted='c_s';;
4585 esac
4586 case "$usesocks" in
4587 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4588 esac
4589 libsfound=''
4590 libsfiles=''
4591 libsdirs=''
4592 libspath=''
4593 for thisdir in $libpth $xlibpth; do
4594   test -d $thisdir && libspath="$libspath $thisdir"
4595 done
4596 for thislib in $libswanted; do
4597         for thisdir in $libspath; do
4598             xxx=''
4599             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4600                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4601                 $test -f "$xxx" && eval $libscheck
4602                 $test -f "$xxx" && libstyle=shared
4603             fi
4604             if test ! -f "$xxx"; then
4605                 xxx=$thisdir/lib$thislib.$so
4606                 $test -f "$xxx" && eval $libscheck
4607                 $test -f "$xxx" && libstyle=shared
4608             fi  
4609             if test ! -f "$xxx"; then
4610                 xxx=$thisdir/lib$thislib$_a
4611                 $test -f "$xxx" && eval $libscheck
4612                 $test -f "$xxx" && libstyle=static
4613             fi
4614             if test ! -f "$xxx"; then
4615                 xxx=$thisdir/$thislib$_a
4616                 $test -f "$xxx" && eval $libscheck
4617                 $test -f "$xxx" && libstyle=static
4618             fi
4619             if test ! -f "$xxx"; then
4620                 xxx=$thisdir/lib${thislib}_s$_a
4621                 $test -f "$xxx" && eval $libscheck
4622                 $test -f "$xxx" && libstyle=static
4623                 $test -f "$xxx" && thislib=${thislib}_s
4624             fi
4625             if test ! -f "$xxx"; then
4626                 xxx=$thisdir/Slib$thislib$_a
4627                 $test -f "$xxx" && eval $libscheck
4628                 $test -f "$xxx" && libstyle=static
4629             fi
4630             if $test -f "$xxx"; then
4631                 case "$libstyle" in
4632                 shared) echo "Found -l$thislib (shared)." ;;
4633                 static) echo "Found -l$thislib." ;;
4634                 *)      echo "Found -l$thislib ($libstyle)." ;;
4635                 esac
4636                 case " $dflt " in
4637                 *"-l$thislib "*);;
4638                 *) dflt="$dflt -l$thislib"
4639                    libsfound="$libsfound $xxx"
4640                    yyy=`basename $xxx`
4641                    libsfiles="$libsfiles $yyy"
4642                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4643                    case " $libsdirs " in
4644                    *" $yyy "*) ;;
4645                    *) libsdirs="$libsdirs $yyy" ;;
4646                    esac
4647                    ;;
4648                 esac
4649                 break
4650             fi  
4651         done
4652         if $test ! -f "$xxx"; then
4653             echo "No -l$thislib."
4654         fi
4655 done
4656 set X $dflt
4657 shift
4658 dflt="$*"
4659 case "$libs" in
4660 '') dflt="$dflt";;
4661 *) dflt="$libs";;
4662 esac
4663 case "$dflt" in
4664 ' '|'') dflt='none';;
4665 esac
4666
4667 $cat <<EOM
4668
4669 In order to compile $package on your machine, a number of libraries
4670 are usually needed.  Include any other special libraries here as well.
4671 Say "none" for none.  The default list is almost always right.
4672 EOM
4673
4674 echo " "
4675 rp="What libraries to use?"
4676 . ./myread
4677 case "$ans" in
4678 none) libs=' ';;
4679 *) libs="$ans";;
4680 esac
4681
4682 : determine optimization, if desired, or use for debug flag also
4683 case "$optimize" in
4684 ' '|$undef) dflt='none';;
4685 '') dflt='-O';;
4686 *) dflt="$optimize";;
4687 esac
4688 $cat <<EOH
4689
4690 By default, $package compiles with the -O flag to use the optimizer.
4691 Alternately, you might want to use the symbolic debugger, which uses
4692 the -g flag (on traditional Unix systems).  Either flag can be
4693 specified here.  To use neither flag, specify the word "none".
4694
4695 EOH
4696 rp="What optimizer/debugger flag should be used?"
4697 . ./myread
4698 optimize="$ans"
4699 case "$optimize" in
4700 'none') optimize=" ";;
4701 esac
4702
4703 dflt=''
4704 : We will not override a previous value, but we might want to
4705 : augment a hint file
4706 case "$hint" in
4707 default|recommended)
4708         case "$gccversion" in
4709         1*) dflt='-fpcc-struct-return' ;;
4710         esac
4711         case "$optimize" in
4712         *-g*) dflt="$dflt -DDEBUGGING";;
4713         esac
4714         case "$gccversion" in
4715         2*) if test -d /etc/conf/kconfig.d &&
4716                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4717                 then
4718                         # Interactive Systems (ISC) POSIX mode.
4719                         dflt="$dflt -posix"
4720                 fi
4721                 ;;
4722         esac
4723         case "$gccversion" in
4724         1*) ;;
4725         2.[0-8]*) ;;
4726         ?*)     echo " "
4727                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4728                 echo 'int main(void) { return 0; }' > gcctest.c
4729                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4730                         echo "Yes, it does." 2>&1
4731                         case "$ccflags" in
4732                         *strict-aliasing*)
4733                                 echo "Leaving current flags $ccflags alone." 2>&1
4734                                 ;;
4735                         *) dflt="$dflt -fno-strict-aliasing" ;;
4736                         esac
4737                 else
4738                         echo "Nope, it doesn't, but that's ok." 2>&1
4739                 fi
4740                 ;;
4741         esac
4742         # For gcc, adding -pipe speeds up compilations for some, but apparently
4743         # some assemblers can't read from stdin.  (It also slows down compilations
4744         # in other cases, but those are apparently rarer these days.)  AD 5/2004.
4745         case "$gccversion" in
4746         ?*)     echo " "
4747                 echo "Checking if your compiler accepts -pipe" 2>&1
4748                 echo 'int main(void) { return 0; }' > gcctest.c
4749                 if $cc -O2 -pipe -o gcctest gcctest.c; then
4750                         echo "Yes, it does." 2>&1
4751                         case "$ccflags" in
4752                         *-pipe*)
4753                                 echo "Leaving current flags $ccflags alone." 2>&1
4754                                 ;;
4755                         *) dflt="$dflt -pipe" ;;
4756                         esac
4757                 else
4758                         echo "Nope, it doesn't, but that's ok." 2>&1
4759                 fi
4760                 ;;
4761         esac
4762         ;;
4763 esac
4764
4765 case "$mips_type" in
4766 *BSD*|'') inclwanted="$locincpth $usrinc";;
4767 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4768 esac
4769 for thisincl in $inclwanted; do
4770         if $test -d $thisincl; then
4771                 if $test x$thisincl != x$usrinc; then
4772                         case "$dflt" in
4773                         *" -I$thisincl "*);;
4774                         *) dflt="$dflt -I$thisincl ";;
4775                         esac
4776                 fi
4777         fi
4778 done
4779
4780 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4781         xxx=true;
4782 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4783         xxx=true;
4784 else
4785         xxx=false;
4786 fi;
4787 if $xxx; then
4788         case "$dflt" in
4789         *$2*);;
4790         *) dflt="$dflt -D$2";;
4791         esac;
4792 fi'
4793
4794 set signal.h LANGUAGE_C; eval $inctest
4795
4796 case "$usesocks" in
4797 $define)
4798         ccflags="$ccflags -DSOCKS"
4799         ;;
4800 esac
4801
4802 case "$hint" in
4803 default|recommended) dflt="$ccflags $dflt" ;;
4804 *) dflt="$ccflags";;
4805 esac
4806
4807 case "$dflt" in
4808 ''|' ') dflt=none;;
4809 esac
4810
4811 $cat <<EOH
4812
4813 Your C compiler may want other flags.  For this question you should include
4814 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4815 but you should NOT include libraries or ld flags like -lwhatever.  If you
4816 want $package to honor its debug switch, you should include -DDEBUGGING here.
4817 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4818
4819 To use no flags, specify the word "none".
4820
4821 EOH
4822 set X $dflt
4823 shift
4824 dflt=${1+"$@"}
4825 rp="Any additional cc flags?"
4826 . ./myread
4827 case "$ans" in
4828 none) ccflags='';;
4829 *) ccflags="$ans";;
4830 esac
4831
4832 : the following weeds options from ccflags that are of no interest to cpp
4833 case "$cppflags" in
4834 '') cppflags="$ccflags" ;;
4835 *)  cppflags="$cppflags $ccflags" ;;
4836 esac
4837 case "$gccversion" in
4838 1*) cppflags="$cppflags -D__GNUC__"
4839 esac
4840 case "$mips_type" in
4841 '');;
4842 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4843 esac
4844 case "$cppflags" in
4845 '');;
4846 *)
4847         echo " "
4848         echo "Let me guess what the preprocessor flags are..." >&4
4849         set X $cppflags
4850         shift
4851         cppflags=''
4852         $cat >cpp.c <<'EOM'
4853 #define BLURFL foo
4854
4855 BLURFL xx LFRULB
4856 EOM
4857         previous=''
4858         for flag in $*
4859         do
4860                 case "$flag" in
4861                 -*) ftry="$flag";;
4862                 *) ftry="$previous $flag";;
4863                 esac
4864                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4865                         >cpp1.out 2>/dev/null && \
4866                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4867                         >cpp2.out 2>/dev/null && \
4868                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4869                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4870                 then
4871                         cppflags="$cppflags $ftry"
4872                         previous=''
4873                 else
4874                         previous="$flag"
4875                 fi
4876         done
4877         set X $cppflags
4878         shift
4879         cppflags=${1+"$@"}
4880         case "$cppflags" in
4881         *-*)  echo "They appear to be: $cppflags";;
4882         esac
4883         $rm -f cpp.c cpp?.out
4884         ;;
4885 esac
4886
4887 : flags used in final linking phase
4888 case "$ldflags" in
4889 '') if ./venix; then
4890                 dflt='-i -z'
4891         else
4892                 dflt=''
4893         fi
4894         case "$ccflags" in
4895         *-posix*) dflt="$dflt -posix" ;;
4896         esac
4897         ;;
4898 *) dflt="$ldflags";;
4899 esac
4900
4901 : Try to guess additional flags to pick up local libraries.
4902 for thislibdir in $libpth; do
4903         case " $loclibpth " in
4904         *" $thislibdir "*)
4905                 case "$dflt " in
4906                 *"-L$thislibdir "*) ;;
4907                 *)  dflt="$dflt -L$thislibdir" ;;
4908                 esac
4909                 ;;
4910         esac
4911 done
4912
4913 case "$dflt" in
4914 '') dflt='none' ;;
4915 esac
4916
4917 $cat <<EOH
4918
4919 Your C linker may need flags.  For this question you should
4920 include -L/whatever and any other flags used by the C linker, but you
4921 should NOT include libraries like -lwhatever.
4922
4923 Make sure you include the appropriate -L/path flags if your C linker
4924 does not normally search all of the directories you specified above,
4925 namely
4926         $libpth
4927 To use no flags, specify the word "none".
4928
4929 EOH
4930
4931 rp="Any additional ld flags (NOT including libraries)?"
4932 . ./myread
4933 case "$ans" in
4934 none) ldflags='';;
4935 *) ldflags="$ans";;
4936 esac
4937 rmlist="$rmlist pdp11"
4938
4939 : coherency check
4940 echo " "
4941 echo "Checking your choice of C compiler and flags for coherency..." >&4
4942 $cat > try.c <<'EOF'
4943 #include <stdio.h>
4944 int main() { printf("Ok\n"); return(0); }
4945 EOF
4946 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4947 shift
4948 $cat >try.msg <<'EOM'
4949 I've tried to compile and run the following simple program:
4950
4951 EOM
4952 $cat try.c >> try.msg
4953
4954 $cat >> try.msg <<EOM
4955
4956 I used the command:
4957
4958         $*
4959         $run ./try
4960
4961 and I got the following output:
4962
4963 EOM
4964 dflt=y
4965 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4966         if $sh -c "$run ./try" >>try.msg 2>&1; then
4967                 xxx=`$run ./try`
4968                 case "$xxx" in
4969                 "Ok") dflt=n ;;
4970                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4971                         case " $libs " in
4972                         *" -lsfio "*)
4973                                 cat >> try.msg <<'EOQS'
4974 If $libs contains -lsfio, and sfio is mis-configured, then it
4975 sometimes (apparently) runs and exits with a 0 status, but with no
4976 output!  It may have to do with sfio's use of _exit vs. exit.
4977
4978 EOQS
4979                                 rp="You have a big problem.  Shall I abort Configure"
4980                                 dflt=y
4981                                 ;;
4982                         esac
4983                         ;;
4984                 esac
4985         else
4986                 echo "The program compiled OK, but exited with status $?." >>try.msg
4987                 rp="You have a problem.  Shall I abort Configure"
4988                 dflt=y
4989         fi
4990 else
4991         echo "I can't compile the test program." >>try.msg
4992         rp="You have a BIG problem.  Shall I abort Configure"
4993         dflt=y
4994 fi
4995 case "$dflt" in
4996 y)
4997         $cat try.msg >&4
4998         case "$knowitall" in
4999         '')
5000                 echo "(The supplied flags or libraries might be incorrect.)"
5001                 ;;
5002         *) dflt=n;;
5003         esac
5004         echo " "
5005         . ./myread
5006         case "$ans" in
5007         n*|N*) ;;
5008         *)      echo "Ok.  Stopping Configure." >&4
5009                 exit 1
5010                 ;;
5011         esac
5012         ;;
5013 n) echo "OK, that should do.";;
5014 esac
5015 $rm -f try try.* core
5016
5017 : define a shorthand compile call
5018 compile='
5019 mc_file=$1;
5020 shift;
5021 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5022 : define a shorthand compile call for compilations that should be ok.
5023 compile_ok='
5024 mc_file=$1;
5025 shift;
5026 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5027
5028 : determine filename position in cpp output
5029 echo " "
5030 echo "Computing filename position in cpp output for #include directives..." >&4
5031 case "$osname" in
5032 vos) testaccess=-e ;;
5033 *)   testaccess=-r ;;
5034 esac
5035 echo '#include <stdio.h>' > foo.c
5036 $cat >fieldn <<EOF
5037 $startsh
5038 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5039 $grep '^[       ]*#.*stdio\.h' | \
5040 while read cline; do
5041         pos=1
5042         set \$cline
5043         while $test \$# -gt 0; do
5044                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5045                         echo "\$pos"
5046                         exit 0
5047                 fi
5048                 shift
5049                 pos=\`expr \$pos + 1\`
5050         done
5051 done
5052 EOF
5053 chmod +x fieldn
5054 fieldn=`./fieldn`
5055 $rm -f foo.c fieldn
5056 case $fieldn in
5057 '') pos='???';;
5058 1) pos=first;;
5059 2) pos=second;;
5060 3) pos=third;;
5061 *) pos="${fieldn}th";;
5062 esac
5063 echo "Your cpp writes the filename in the $pos field of the line."
5064
5065 case "$osname" in
5066 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5067 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5068 *)   cppfilter='' ;;
5069 esac
5070 : locate header file
5071 $cat >findhdr <<EOF
5072 $startsh
5073 wanted=\$1
5074 name=''
5075 for usrincdir in $usrinc
5076 do
5077         if test -f \$usrincdir/\$wanted; then
5078                 echo "\$usrincdir/\$wanted"
5079                 exit 0
5080         fi
5081 done
5082 awkprg='{ print \$$fieldn }'
5083 echo "#include <\$wanted>" > foo\$\$.c
5084 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5085 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5086 while read cline; do
5087         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5088         case "\$name" in
5089         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5090         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5091         *) exit 2;;
5092         esac;
5093 done;
5094 #
5095 # status = 0: grep returned 0 lines, case statement not executed
5096 # status = 1: headerfile found
5097 # status = 2: while loop executed, no headerfile found
5098 #
5099 status=\$?
5100 $rm -f foo\$\$.c;
5101 if test \$status -eq 1; then
5102         exit 0;
5103 fi
5104 exit 1
5105 EOF
5106 chmod +x findhdr
5107
5108 : define an alternate in-header-list? function
5109 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5110 cont=true; xxf="echo \"<\$1> found.\" >&4";
5111 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5112 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5113 esac;
5114 case $# in 4) instead=instead;; *) instead="at last";; esac;
5115 while $test "$cont"; do
5116         xxx=`./findhdr $1`
5117         var=$2; eval "was=\$$2";
5118         if $test "$xxx" && $test -r "$xxx";
5119         then eval $xxf;
5120         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5121                 cont="";
5122         else eval $xxnf;
5123         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5124         set $yyy; shift; shift; yyy=$@;
5125         case $# in 0) cont="";;
5126         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5127                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5128         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5129                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5130         esac;
5131 done;
5132 while $test "$yyy";
5133 do set $yyy; var=$2; eval "was=\$$2";
5134         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5135         set $yyy; shift; shift; yyy=$@;
5136 done'
5137
5138 : see if stdlib is available
5139 set stdlib.h i_stdlib
5140 eval $inhdr
5141
5142 : check for lengths of integral types
5143 echo " "
5144 case "$intsize" in
5145 '')
5146         echo "Checking to see how big your integers are..." >&4
5147         $cat >try.c <<EOCP
5148 #include <stdio.h>
5149 #$i_stdlib I_STDLIB
5150 #ifdef I_STDLIB
5151 #include <stdlib.h>
5152 #endif
5153 int main()
5154 {
5155         printf("intsize=%d;\n", (int)sizeof(int));
5156         printf("longsize=%d;\n", (int)sizeof(long));
5157         printf("shortsize=%d;\n", (int)sizeof(short));
5158         exit(0);
5159 }
5160 EOCP
5161         set try
5162         if eval $compile_ok && $run ./try > /dev/null; then
5163                 eval `$run ./try`
5164                 echo "Your integers are $intsize bytes long."
5165                 echo "Your long integers are $longsize bytes long."
5166                 echo "Your short integers are $shortsize bytes long."
5167         else
5168                 $cat >&4 <<EOM
5169 !
5170 Help! I can't compile and run the intsize test program: please enlighten me!
5171 (This is probably a misconfiguration in your system or libraries, and
5172 you really ought to fix it.  Still, I'll try anyway.)
5173 !
5174 EOM
5175                 dflt=4
5176                 rp="What is the size of an integer (in bytes)?"
5177                 . ./myread
5178                 intsize="$ans"
5179                 dflt=$intsize
5180                 rp="What is the size of a long integer (in bytes)?"
5181                 . ./myread
5182                 longsize="$ans"
5183                 dflt=2
5184                 rp="What is the size of a short integer (in bytes)?"
5185                 . ./myread
5186                 shortsize="$ans"
5187         fi
5188         ;;
5189 esac
5190 $rm -f try try.*
5191
5192 : check for long long
5193 echo " "
5194 echo "Checking to see if you have long long..." >&4
5195 echo 'int main() { long long x = 7; return 0; }' > try.c
5196 set try
5197 if eval $compile; then
5198         val="$define"
5199         echo "You have long long."
5200 else
5201         val="$undef"
5202         echo "You do not have long long."
5203 fi
5204 $rm try.*
5205 set d_longlong
5206 eval $setvar
5207
5208 : check for length of long long
5209 case "${d_longlong}${longlongsize}" in
5210 $define)
5211         echo " "
5212         echo "Checking to see how big your long longs are..." >&4
5213         $cat >try.c <<'EOCP'
5214 #include <stdio.h>
5215 int main()
5216 {
5217     printf("%d\n", (int)sizeof(long long));
5218     return(0);
5219 }
5220 EOCP
5221         set try
5222         if eval $compile_ok; then
5223                 longlongsize=`$run ./try`
5224                 echo "Your long longs are $longlongsize bytes long."
5225         else
5226                 dflt='8'
5227                 echo " "
5228                 echo "(I can't seem to compile the test program.  Guessing...)"
5229                 rp="What is the size of a long long (in bytes)?"
5230                 . ./myread
5231                 longlongsize="$ans"
5232         fi
5233         if $test "X$longsize" = "X$longlongsize"; then
5234                 echo "(That isn't any different from an ordinary long.)"
5235         fi      
5236         ;;
5237 esac
5238 $rm -f try.* try
5239
5240 : see if inttypes.h is available
5241 : we want a real compile instead of Inhdr because some systems
5242 : have an inttypes.h which includes non-existent headers
5243 echo " "
5244 $cat >try.c <<EOCP
5245 #include <inttypes.h>
5246 int main() {
5247         static int32_t foo32 = 0x12345678;
5248 }
5249 EOCP
5250 set try
5251 if eval $compile; then
5252         echo "<inttypes.h> found." >&4
5253         val="$define"
5254 else
5255         echo "<inttypes.h> NOT found." >&4
5256         val="$undef"
5257 fi
5258 $rm -f try.c try
5259 set i_inttypes
5260 eval $setvar
5261
5262 : check for int64_t
5263 echo " "
5264 echo "Checking to see if you have int64_t..." >&4
5265 $cat >try.c <<EOCP
5266 #include <sys/types.h>
5267 #$i_inttypes I_INTTYPES
5268 #ifdef I_INTTYPES
5269 #include <inttypes.h>
5270 #endif
5271 int main() { int64_t x = 7; }
5272 EOCP
5273 set try
5274 if eval $compile; then
5275         val="$define"
5276         echo "You have int64_t."
5277 else
5278         val="$undef"
5279         echo "You do not have int64_t."
5280 fi
5281 $rm -f try try.*
5282 set d_int64_t
5283 eval $setvar
5284
5285
5286 echo " "
5287 echo "Checking which 64-bit integer type we could use..." >&4
5288
5289 case "$intsize" in
5290 8) val=int
5291    set quadtype
5292    eval $setvar
5293    val='"unsigned int"'
5294    set uquadtype
5295    eval $setvar
5296    quadkind=1
5297    ;;
5298 *) case "$longsize" in
5299    8) val=long
5300       set quadtype
5301       eval $setvar
5302       val='"unsigned long"'
5303       set uquadtype
5304       eval $setvar
5305       quadkind=2
5306       ;;
5307    *) case "$d_longlong:$longlongsize" in
5308       define:8)
5309         val='"long long"'
5310         set quadtype
5311         eval $setvar
5312         val='"unsigned long long"'
5313         set uquadtype
5314         eval $setvar
5315         quadkind=3
5316         ;;
5317       *) case "$d_int64_t" in
5318          define)
5319            val=int64_t
5320            set quadtype
5321            eval $setvar
5322            val=uint64_t
5323            set uquadtype
5324            eval $setvar
5325            quadkind=4
5326            ;;
5327          esac
5328          ;;
5329       esac
5330       ;;
5331    esac
5332    ;;
5333 esac
5334
5335 case "$quadtype" in
5336 '')     echo "Alas, no 64-bit integer types in sight." >&4
5337         d_quad="$undef"
5338         ;;
5339 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5340         d_quad="$define"
5341         ;;
5342 esac
5343
5344
5345 case "$uselonglong" in
5346 "$define"|true|[yY]*)
5347         cat <<EOM >&4
5348
5349 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5350 EOM
5351         use64bitint="$define"
5352         ;;
5353 esac                          
5354 case "$use64bits" in
5355 "$define"|true|[yY]*)
5356         cat <<EOM >&4
5357
5358 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5359 EOM
5360         use64bitint="$define"
5361         ;;
5362 esac                          
5363 case "$use64bitints" in
5364 "$define"|true|[yY]*)
5365         cat <<EOM >&4
5366
5367 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5368 EOM
5369         use64bitint="$define"
5370         ;;
5371 esac                          
5372 case "$use64bitsint" in
5373 "$define"|true|[yY]*)
5374         cat <<EOM >&4
5375
5376 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5377 EOM
5378         use64bitint="$define"
5379         ;;
5380 esac                          
5381 case "$uselonglongs" in
5382 "$define"|true|[yY]*)
5383         cat <<EOM >&4
5384
5385 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5386 EOM
5387         use64bitint="$define"
5388         ;;
5389 esac                          
5390 case "$use64bitsall" in
5391 "$define"|true|[yY]*)
5392         cat <<EOM >&4
5393
5394 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5395 EOM
5396         use64bitall="$define"
5397         ;;
5398 esac                          
5399
5400 case "$ccflags" in
5401 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5402 esac
5403 case "$use64bitall" in
5404 "$define"|true|[yY]*) use64bitint="$define" ;;
5405 esac
5406
5407 case "$longsize" in
5408 8) cat <<EOM
5409
5410 You have natively 64-bit long integers.
5411 EOM
5412    val="$define"
5413    ;;
5414 *) case "$use64bitint" in
5415    "$define"|true|[yY]*) dflt='y';;
5416    *) dflt='n';;
5417    esac
5418    case "$d_quad" in
5419    "$define") ;;
5420    *) dflt='n' ;;
5421    esac
5422    cat <<EOM
5423
5424 Perl can be built to take advantage of 64-bit integer types
5425 on some systems.  To do so, Configure can be run with -Duse64bitint.
5426 Choosing this option will most probably introduce binary incompatibilities.
5427
5428 If this doesn't make any sense to you, just accept the default '$dflt'.
5429 (The default has been chosen based on your configuration.)
5430 EOM
5431    rp='Try to use 64-bit integers, if available?'
5432    . ./myread
5433    case "$ans" in
5434    [yY]*) val="$define" ;;
5435    *)     val="$undef"  ;;
5436    esac
5437    ;;
5438 esac
5439 set use64bitint
5440 eval $setvar
5441
5442 case "$use64bitall" in
5443 "$define"|true|[yY]*) dflt='y' ;;
5444 *) case "$longsize" in
5445    8) dflt='y' ;;
5446    *) dflt='n' ;;
5447    esac
5448    ;;
5449 esac    
5450 cat <<EOM
5451
5452 You may also choose to try maximal 64-bitness.  It means using as much
5453 64-bitness as possible on the platform.  This in turn means even more
5454 binary incompatibilities.  On the other hand, your platform may not
5455 have any more 64-bitness available than what you already have chosen.
5456
5457 If this doesn't make any sense to you, just accept the default '$dflt'.
5458 (The default has been chosen based on your configuration.)
5459 EOM
5460 rp='Try to use maximal 64-bit support, if available?'
5461 . ./myread
5462 case "$ans" in
5463 [yY]*) val="$define" ;;
5464 *)     val="$undef"  ;;
5465 esac
5466 set use64bitall
5467 eval $setvar
5468 case "$use64bitall" in
5469 "$define")
5470         case "$use64bitint" in
5471         "$undef")
5472                 cat <<EOM
5473
5474 Since you have chosen a maximally 64-bit build, I'm also turning on
5475 the use of 64-bit integers.
5476 EOM
5477                 use64bitint="$define" ;;
5478         esac
5479         ;;
5480 esac
5481
5482 : Look for a hint-file generated 'call-back-unit'.  If the
5483 : user has specified that a 64-bit perl is to be built,
5484 : we may need to set or change some other defaults.
5485 if $test -f use64bitint.cbu; then
5486         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5487         . ./use64bitint.cbu
5488 fi
5489 case "$use64bitint" in
5490 "$define"|true|[yY]*)
5491         case "$longsize" in
5492         4) case "$archname64" in
5493            '') archname64=64int ;;
5494            esac
5495            ;;
5496         esac
5497         ;;
5498 esac
5499
5500 : Look for a hint-file generated 'call-back-unit'.  If the
5501 : user has specified that a maximally 64-bit perl is to be built,
5502 : we may need to set or change some other defaults.
5503 if $test -f use64bitall.cbu; then
5504         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5505         . ./use64bitall.cbu
5506 fi
5507 case "$use64bitall" in
5508 "$define"|true|[yY]*)
5509         case "$longsize" in
5510         4) case "$archname64" in
5511            ''|64int) archname64=64all ;;
5512            esac
5513            ;;
5514         esac
5515         ;;
5516 esac
5517
5518 case "$d_quad:$use64bitint" in
5519 $undef:$define)
5520         cat >&4 <<EOF
5521
5522 *** You have chosen to use 64-bit integers,
5523 *** but none can be found.
5524 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5525 *** Cannot continue, aborting.
5526
5527 EOF
5528         exit 1
5529         ;;
5530 esac
5531
5532 : check for length of double
5533 echo " "
5534 case "$doublesize" in
5535 '')
5536         echo "Checking to see how big your double precision numbers are..." >&4
5537         $cat >try.c <<EOCP
5538 #include <stdio.h>
5539 #$i_stdlib I_STDLIB
5540 #ifdef I_STDLIB
5541 #include <stdlib.h>
5542 #endif
5543 int main()
5544 {
5545     printf("%d\n", (int)sizeof(double));
5546     exit(0);
5547 }
5548 EOCP
5549         set try
5550         if eval $compile_ok; then
5551                 doublesize=`$run ./try`
5552                 echo "Your double is $doublesize bytes long."
5553         else
5554                 dflt='8'
5555                 echo "(I can't seem to compile the test program.  Guessing...)"
5556                 rp="What is the size of a double precision number (in bytes)?"
5557                 . ./myread
5558                 doublesize="$ans"
5559         fi
5560         ;;
5561 esac
5562 $rm -f try.c try
5563
5564 : check for long doubles
5565 echo " "
5566 echo "Checking to see if you have long double..." >&4
5567 echo 'int main() { long double x = 7.0; }' > try.c
5568 set try
5569 if eval $compile; then
5570         val="$define"
5571         echo "You have long double."
5572 else
5573         val="$undef"
5574         echo "You do not have long double."
5575 fi
5576 $rm try.*
5577 set d_longdbl
5578 eval $setvar
5579
5580 : check for length of long double
5581 case "${d_longdbl}${longdblsize}" in
5582 $define)
5583         echo " "
5584         echo "Checking to see how big your long doubles are..." >&4
5585         $cat >try.c <<'EOCP'
5586 #include <stdio.h>
5587 int main()
5588 {
5589         printf("%d\n", sizeof(long double));
5590 }
5591 EOCP
5592         set try
5593         set try
5594         if eval $compile; then
5595                 longdblsize=`$run ./try`
5596                 echo "Your long doubles are $longdblsize bytes long."
5597         else
5598                 dflt='8'
5599                 echo " "
5600                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5601                 rp="What is the size of a long double (in bytes)?"
5602                 . ./myread
5603                 longdblsize="$ans"
5604         fi
5605         if $test "X$doublesize" = "X$longdblsize"; then
5606                 echo "That isn't any different from an ordinary double."
5607                 echo "I'll keep your setting anyway, but you may see some"
5608                 echo "harmless compilation warnings."
5609         fi      
5610         ;;
5611 esac
5612 $rm -f try.* try
5613
5614 : determine the architecture name
5615 echo " "
5616 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5617         tarch=`arch`"-$osname"
5618 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5619         if uname -m > tmparch 2>&1 ; then
5620                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5621                         -e 's/$/'"-$osname/" tmparch`
5622         else
5623                 tarch="$osname"
5624         fi
5625         $rm -f tmparch
5626 else
5627         tarch="$osname"
5628 fi
5629 case "$myarchname" in
5630 ''|"$tarch") ;;
5631 *)
5632         echo "(Your architecture name used to be $myarchname.)"
5633         archname=''
5634         ;;
5635 esac
5636 case "$targetarch" in
5637 '') ;;
5638 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5639 esac
5640 myarchname="$tarch"
5641 case "$archname" in
5642 '') dflt="$tarch";;
5643 *) dflt="$archname";;
5644 esac
5645 rp='What is your architecture name'
5646 . ./myread
5647 archname="$ans"
5648 case "$usethreads" in
5649 $define)
5650         echo "Threads selected." >&4
5651         case "$archname" in
5652         *-thread*) echo "...and architecture name already has -thread." >&4
5653                 ;;
5654         *)      archname="$archname-thread"
5655                 echo "...setting architecture name to $archname." >&4
5656                 ;;
5657         esac
5658         ;;
5659 esac
5660 case "$usemultiplicity" in
5661 $define)
5662         echo "Multiplicity selected." >&4
5663         case "$archname" in
5664         *-multi*) echo "...and architecture name already has -multi." >&4
5665                 ;;
5666         *)      archname="$archname-multi"
5667                 echo "...setting architecture name to $archname." >&4
5668                 ;;
5669         esac
5670         ;;
5671 esac
5672 case "$use64bitint$use64bitall" in
5673 *"$define"*)
5674         case "$archname64" in
5675         '')
5676                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5677                 ;;
5678         *)
5679                 case "$use64bitint" in
5680                 "$define") echo "64 bit integers selected." >&4 ;;
5681                 esac
5682                 case "$use64bitall" in
5683                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5684                 esac
5685                 case "$archname" in
5686                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5687                         ;;
5688                 *)      archname="$archname-$archname64"
5689                         echo "...setting architecture name to $archname." >&4
5690                         ;;
5691                 esac
5692                 ;;
5693         esac
5694 esac
5695 case "$uselongdouble" in
5696 $define)
5697         echo "Long doubles selected." >&4
5698         case "$longdblsize" in
5699         $doublesize)
5700                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5701                 ;;
5702         *)
5703                 case "$archname" in
5704                 *-ld*) echo "...and architecture name already has -ld." >&4
5705                         ;;
5706                 *)      archname="$archname-ld"
5707                         echo "...setting architecture name to $archname." >&4
5708                         ;;
5709                 esac
5710                 ;;
5711         esac
5712         ;;
5713 esac
5714 case "$useperlio" in
5715 $define)
5716         echo "Perlio selected." >&4
5717         ;;
5718 *)
5719         echo "Perlio not selected, using stdio." >&4
5720         case "$archname" in
5721         *-stdio*) echo "...and architecture name already has -stdio." >&4
5722                 ;;
5723         *)      archname="$archname-stdio"
5724                 echo "...setting architecture name to $archname." >&4
5725                 ;;
5726         esac
5727         ;;
5728 esac
5729 if $test -f archname.cbu; then
5730         echo "Your platform has some specific hints for architecture name, using them..."
5731         . ./archname.cbu
5732 fi
5733
5734 : determine root of directory hierarchy where package will be installed.
5735 case "$prefix" in
5736 '')
5737         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5738         ;;
5739 *?/)
5740         dflt=`echo "$prefix" | sed 's/.$//'`
5741         ;;
5742 *)
5743         dflt="$prefix"
5744         ;;
5745 esac
5746 $cat <<EOM
5747
5748 By default, $package will be installed in $dflt/bin, manual pages
5749 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5750 installation directories. Typically this is something like /usr/local.
5751 If you wish to have binaries under /usr/bin but other parts of the
5752 installation under /usr/local, that's ok: you will be prompted
5753 separately for each of the installation directories, the prefix being
5754 only used to set the defaults.
5755
5756 EOM
5757 fn=d~
5758 rp='Installation prefix to use?'
5759 . ./getfile
5760 oldprefix=''
5761 case "$prefix" in
5762 '') ;;
5763 *)
5764         case "$ans" in
5765         "$prefix") ;;
5766         *) oldprefix="$prefix";;
5767         esac
5768         ;;
5769 esac
5770 prefix="$ans"
5771 prefixexp="$ansexp"
5772
5773 case "$afsroot" in
5774 '')     afsroot=/afs ;;
5775 *)      afsroot=$afsroot ;;
5776 esac
5777
5778 : is AFS running?
5779 echo " "
5780 case "$afs" in
5781 $define|true)   afs=true ;;
5782 $undef|false)   afs=false ;;
5783 *)      if test -d $afsroot; then
5784                 afs=true
5785         else
5786                 afs=false
5787         fi
5788         ;;
5789 esac
5790 if $afs; then
5791         echo "AFS may be running... I'll be extra cautious then..." >&4
5792 else
5793         echo "AFS does not seem to be running..." >&4
5794 fi
5795
5796 : determine installation prefix for where package is to be installed.
5797 if $afs; then 
5798 $cat <<EOM
5799
5800 Since you are running AFS, I need to distinguish the directory in which
5801 files will reside from the directory in which they are installed (and from
5802 which they are presumably copied to the former directory by occult means).
5803
5804 EOM
5805         case "$installprefix" in
5806         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5807         *) dflt="$installprefix";;
5808         esac
5809 else
5810 $cat <<EOM
5811
5812 In some special cases, particularly when building $package for distribution,
5813 it is convenient to distinguish the directory in which files should be
5814 installed from the directory ($prefix) in which they will
5815 eventually reside.  For most users, these two directories are the same.
5816
5817 EOM
5818         case "$installprefix" in
5819         '') dflt=$prefix ;;
5820         *) dflt=$installprefix;;
5821         esac
5822 fi
5823 fn=d~
5824 rp='What installation prefix should I use for installing files?'
5825 . ./getfile
5826 installprefix="$ans"
5827 installprefixexp="$ansexp"
5828
5829 : set the prefixit variable, to compute a suitable default value
5830 prefixit='case "$3" in
5831 ""|none)
5832         case "$oldprefix" in
5833         "") eval "$1=\"\$$2\"";;
5834         *)
5835                 case "$3" in
5836                 "") eval "$1=";;
5837                 none)
5838                         eval "tp=\"\$$2\"";
5839                         case "$tp" in
5840                         ""|" ") eval "$1=\"\$$2\"";;
5841                         *) eval "$1=";;
5842                         esac;;
5843                 esac;;
5844         esac;;
5845 *)
5846         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5847         case "$tp" in
5848         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5849         /*-$oldprefix/*|\~*-$oldprefix/*)
5850                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5851         *) eval "$1=\"\$$2\"";;
5852         esac;;
5853 esac'
5854
5855 : get the patchlevel
5856 echo " "
5857 echo "Getting the current patchlevel..." >&4
5858 if $test -r $rsrc/patchlevel.h;then
5859         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5860         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5861         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5862         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5863         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5864         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5865        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5866 else
5867         revision=0
5868         patchlevel=0
5869         subversion=0
5870         api_revision=0
5871         api_version=0
5872         api_subversion=0
5873         perl_patchlevel=0
5874         $echo "(You do not have patchlevel.h.  Eek.)"
5875 fi
5876 if $test -r $rsrc/.patch ; then  
5877         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5878                 perl_patchlevel=`cat $rsrc/.patch`
5879         fi
5880 fi
5881 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5882 version_patchlevel_string="version $patchlevel subversion $subversion"
5883 case "$perl_patchlevel" in
5884 0|'') ;;
5885 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5886 esac
5887
5888 $echo "(You have $package $version_patchlevel_string.)"
5889
5890 case "$osname" in
5891 dos|vms)
5892         : XXX Should be a Configure test for double-dots in filenames.
5893         version=`echo $revision $patchlevel $subversion | \
5894                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5895         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5896                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5897         ;;
5898 *)
5899         version=`echo $revision $patchlevel $subversion | \
5900                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5901         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5902                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5903         ;;
5904 esac
5905 : Special case the 5.005_xx maintenance series, which used 5.005
5906 : without any subversion label as a subdirectory in $sitelib
5907 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5908         api_versionstring='5.005'
5909 fi
5910
5911 : determine installation style
5912 : For now, try to deduce it from prefix unless it is already set.
5913 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5914 case "$installstyle" in
5915 '')     case "$prefix" in
5916                 *perl*) dflt='lib';;
5917                 *) dflt='lib/perl5' ;;
5918         esac
5919         ;;
5920 *)      dflt="$installstyle" ;;
5921 esac
5922 : Probably not worth prompting for this since we prompt for all
5923 : the directories individually, and the prompt would be too long and
5924 : confusing anyway.
5925 installstyle=$dflt
5926
5927 : determine where private library files go
5928 : Usual default is /usr/local/lib/perl5/$version.
5929 : Also allow things like /opt/perl/lib/$version, since 
5930 : /opt/perl/lib/perl5... would be redundant.
5931 : The default "style" setting is made in installstyle.U
5932 case "$installstyle" in
5933 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5934 *)       set dflt privlib lib/$version ;;
5935 esac
5936 eval $prefixit
5937 $cat <<EOM
5938
5939 There are some auxiliary files for $package that need to be put into a
5940 private library directory that is accessible by everyone.
5941
5942 EOM
5943 fn=d~+
5944 rp='Pathname where the private library files will reside?'
5945 . ./getfile
5946 privlib="$ans"
5947 privlibexp="$ansexp"
5948 : Change installation prefix, if necessary.
5949 if $test X"$prefix" != X"$installprefix"; then
5950         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5951 else
5952         installprivlib="$privlibexp"
5953 fi
5954
5955 : set the prefixup variable, to restore leading tilda escape
5956 prefixup='case "$prefixexp" in
5957 "$prefix") ;;
5958 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5959 esac'
5960
5961 : determine where public architecture dependent libraries go
5962 set archlib archlib
5963 eval $prefixit
5964 : privlib default is /usr/local/lib/$package/$version
5965 : archlib default is /usr/local/lib/$package/$version/$archname
5966 : privlib may have an optional trailing /share.
5967 tdflt=`echo $privlib | $sed 's,/share$,,'`
5968 tdflt=$tdflt/$archname
5969 case "$archlib" in
5970 '')     dflt=$tdflt
5971         ;;
5972 *)      dflt="$archlib"
5973     ;;
5974 esac
5975 $cat <<EOM
5976
5977 $spackage contains architecture-dependent library files.  If you are
5978 sharing libraries in a heterogeneous environment, you might store
5979 these files in a separate location.  Otherwise, you can just include
5980 them with the rest of the public library files.
5981
5982 EOM
5983 fn=d+~
5984 rp='Where do you want to put the public architecture-dependent libraries?'
5985 . ./getfile
5986 archlib="$ans"
5987 archlibexp="$ansexp"
5988 if $test X"$archlib" = X"$privlib"; then
5989         d_archlib="$undef"
5990 else
5991         d_archlib="$define"
5992 fi
5993 : Change installation prefix, if necessary.
5994 if $test X"$prefix" != X"$installprefix"; then
5995         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5996 else
5997         installarchlib="$archlibexp"
5998 fi
5999
6000 : see if setuid scripts can be secure
6001 $cat <<EOM
6002
6003 Some kernels have a bug that prevents setuid #! scripts from being
6004 secure.  Some sites have disabled setuid #! scripts because of this.
6005
6006 First let's decide if your kernel supports secure setuid #! scripts.
6007 (If setuid #! scripts would be secure but have been disabled anyway,
6008 don't say that they are secure if asked.)
6009
6010 EOM
6011
6012 val="$undef"
6013 if $test -d /dev/fd; then
6014         echo "#!$ls" >reflect
6015         chmod +x,u+s reflect
6016         ./reflect >flect 2>&1
6017         if $contains "/dev/fd" flect >/dev/null; then
6018                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6019                 val="$define"
6020         else
6021                 $cat <<EOM
6022 If you are not sure if they are secure, I can check but I'll need a
6023 username and password different from the one you are using right now.
6024 If you don't have such a username or don't want me to test, simply
6025 enter 'none'.
6026
6027 EOM
6028                 rp='Other username to test security of setuid scripts with?'
6029                 dflt='none'
6030                 . ./myread
6031                 case "$ans" in
6032                 n|none)
6033                         case "$d_suidsafe" in
6034                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6035                                 dflt=n;;
6036                         "$undef")
6037                                 echo "Well, the $hint value is *not* secure." >&4
6038                                 dflt=n;;
6039                         *)      echo "Well, the $hint value *is* secure." >&4
6040                                 dflt=y;;
6041                         esac
6042                         ;;
6043                 *)
6044                         $rm -f reflect flect
6045                         echo "#!$ls" >reflect
6046                         chmod +x,u+s reflect
6047                         echo >flect
6048                         chmod a+w flect
6049                         echo '"su" will (probably) prompt you for '"$ans's password."
6050                         su $ans -c './reflect >flect'
6051                         if $contains "/dev/fd" flect >/dev/null; then
6052                                 echo "Okay, it looks like setuid scripts are secure." >&4
6053                                 dflt=y
6054                         else
6055                                 echo "I don't think setuid scripts are secure." >&4
6056                                 dflt=n
6057                         fi
6058                         ;;
6059                 esac
6060                 rp='Does your kernel have *secure* setuid scripts?'
6061                 . ./myread
6062                 case "$ans" in
6063                 [yY]*)  val="$define";;
6064                 *)      val="$undef";;
6065                 esac
6066         fi
6067 else
6068         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6069         echo "(That's for file descriptors, not floppy disks.)"
6070         val="$undef"
6071 fi
6072 set d_suidsafe
6073 eval $setvar
6074
6075 $rm -f reflect flect
6076
6077 : now see if they want to do setuid emulation
6078 echo " "
6079 val="$undef"
6080 case "$d_suidsafe" in
6081 "$define")
6082         val="$undef"
6083         echo "No need to emulate SUID scripts since they are secure here." >&4
6084         ;;
6085 *)
6086         $cat <<EOM
6087 Some systems have disabled setuid scripts, especially systems where
6088 setuid scripts cannot be secure.  On systems where setuid scripts have
6089 been disabled, the setuid/setgid bits on scripts are currently
6090 useless.  It is possible for $package to detect those bits and emulate
6091 setuid/setgid in a secure fashion.  This emulation will only work if
6092 setuid scripts have been disabled in your kernel.
6093
6094 EOM
6095         case "$d_dosuid" in
6096         "$define") dflt=y ;;
6097         *) dflt=n ;;
6098         esac
6099         rp="Do you want to do setuid/setgid emulation?"
6100         . ./myread
6101         case "$ans" in
6102         [yY]*)  val="$define";;
6103         *)      val="$undef";;
6104         esac
6105         ;;
6106 esac
6107 set d_dosuid
6108 eval $setvar
6109
6110 : see if this is a malloc.h system
6111 : we want a real compile instead of Inhdr because some systems have a
6112 : malloc.h that just gives a compile error saying to use stdlib.h instead
6113 echo " "
6114 $cat >try.c <<EOCP
6115 #include <stdlib.h>
6116 #include <malloc.h>
6117 int main () { return 0; }
6118 EOCP
6119 set try
6120 if eval $compile; then
6121     echo "<malloc.h> found." >&4
6122     val="$define"
6123 else
6124     echo "<malloc.h> NOT found." >&4
6125     val="$undef"
6126 fi
6127 $rm -f try.c try
6128 set i_malloc
6129 eval $setvar
6130
6131 : check for void type
6132 echo " "
6133 echo "Checking to see how well your C compiler groks the void type..." >&4
6134 case "$voidflags" in
6135 '')
6136         $cat >try.c <<EOCP
6137 #$i_stdlib I_STDLIB
6138 #ifdef I_STDLIB
6139 #include <stdlib.h>
6140 #endif
6141 #if TRY & 1
6142 void sub() {
6143 #else
6144 sub() {
6145 #endif
6146         extern void moo();      /* function returning void */
6147         void (*goo)();          /* ptr to func returning void */
6148 #if TRY & 8
6149         void *hue;              /* generic ptr */
6150 #endif
6151 #if TRY & 2
6152         void (*foo[10])();
6153 #endif
6154
6155 #if TRY & 4
6156         if(goo == moo) {
6157                 exit(0);
6158         }
6159 #endif
6160         exit(0);
6161 }
6162 int main() { sub(); }
6163 EOCP
6164         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6165                 voidflags=$defvoidused
6166         echo "Good.  It appears to support void to the level $package wants.">&4
6167                 if $contains warning .out >/dev/null 2>&1; then
6168                         echo "However, you might get some warnings that look like this:"
6169                         $cat .out
6170                 fi
6171         else
6172 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6173                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6174                         echo "It supports 1..."
6175                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6176                                 echo "It also supports 2..."
6177                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6178                                         voidflags=7
6179                                         echo "And it supports 4 but not 8 definitely."
6180                                 else
6181                                         echo "It doesn't support 4..."
6182                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6183                                                 voidflags=11
6184                                                 echo "But it supports 8."
6185                                         else
6186                                                 voidflags=3
6187                                                 echo "Neither does it support 8."
6188                                         fi
6189                                 fi
6190                         else
6191                                 echo "It does not support 2..."
6192                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6193                                         voidflags=13
6194                                         echo "But it supports 4 and 8."
6195                                 else
6196                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6197                                                 voidflags=5
6198                                                 echo "And it supports 4 but has not heard about 8."
6199                                         else
6200                                                 echo "However it supports 8 but not 4."
6201                                         fi
6202                                 fi
6203                         fi
6204                 else
6205                         echo "There is no support at all for void."
6206                         voidflags=0
6207                 fi
6208         fi
6209 esac
6210 case "$voidflags" in
6211 "$defvoidused") ;;
6212 *)      $cat >&4 <<'EOM'
6213   Support flag bits are:
6214     1: basic void declarations.
6215     2: arrays of pointers to functions returning void.
6216     4: operations between pointers to and addresses of void functions.
6217     8: generic void pointers.
6218 EOM
6219         dflt="$voidflags";
6220         rp="Your void support flags add up to what?"
6221         . ./myread
6222         voidflags="$ans"
6223         ;;
6224 esac
6225 $rm -f try.* .out
6226
6227 : check for length of pointer
6228 echo " "
6229 case "$ptrsize" in
6230 '')
6231         echo "Checking to see how big your pointers are..." >&4
6232         if test "$voidflags" -gt 7; then
6233                 echo '#define VOID_PTR char *' > try.c
6234         else
6235                 echo '#define VOID_PTR void *' > try.c
6236         fi
6237         $cat >>try.c <<EOCP
6238 #include <stdio.h>
6239 #$i_stdlib I_STDLIB
6240 #ifdef I_STDLIB
6241 #include <stdlib.h>
6242 #endif
6243 int main()
6244 {
6245     printf("%d\n", (int)sizeof(VOID_PTR));
6246     exit(0);
6247 }
6248 EOCP
6249         set try
6250         if eval $compile_ok; then
6251                 ptrsize=`$run ./try`
6252                 echo "Your pointers are $ptrsize bytes long."
6253         else
6254                 dflt='4'
6255                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6256                 rp="What is the size of a pointer (in bytes)?"
6257                 . ./myread
6258                 ptrsize="$ans"
6259         fi
6260         ;;
6261 esac
6262 $rm -f try.c try
6263 case "$use64bitall" in
6264 "$define"|true|[yY]*)
6265         case "$ptrsize" in
6266         4)      cat <<EOM >&4
6267
6268 *** You have chosen a maximally 64-bit build,
6269 *** but your pointers are only 4 bytes wide.
6270 *** Please rerun Configure without -Duse64bitall.
6271 EOM
6272                 case "$d_quad" in
6273                 define)
6274                         cat <<EOM >&4
6275 *** Since you have quads, you could possibly try with -Duse64bitint.
6276 EOM
6277                         ;;
6278                 esac
6279                 cat <<EOM >&4
6280 *** Cannot continue, aborting.
6281
6282 EOM
6283
6284                 exit 1
6285                 ;;
6286         esac
6287         ;;
6288 esac
6289
6290
6291 : determine whether to use malloc wrapping
6292 echo " "
6293 case "$usemallocwrap" in
6294 [yY]*|true|$define)     dflt='y' ;;
6295 [nN]*|false|$undef)     dflt='n' ;;
6296 *)      case "$usedevel" in
6297         [yY]*|true|$define)     dflt='y' ;;
6298         *) dflt='n' ;;
6299         esac
6300         ;;
6301 esac
6302 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6303 . ./myread
6304 usemallocwrap="$ans"
6305 case "$ans" in
6306 y*|true)
6307         usemallocwrap="$define" ;;
6308 *)
6309         usemallocwrap="$undef" ;;
6310 esac
6311
6312 : determine which malloc to compile in
6313 echo " "
6314 case "$usemymalloc" in
6315 [yY]*|true|$define)     dflt='y' ;;
6316 [nN]*|false|$undef)     dflt='n' ;;
6317 *)      case "$ptrsize" in
6318         4) dflt='y' ;;
6319         *) dflt='n' ;;
6320         esac
6321         ;;
6322 esac
6323 rp="Do you wish to attempt to use the malloc that comes with $package?"
6324 . ./myread
6325 usemymalloc="$ans"
6326 case "$ans" in
6327 y*|true)
6328         usemymalloc='y'
6329         mallocsrc='malloc.c'
6330         mallocobj="malloc$_o"
6331         d_mymalloc="$define"
6332         case "$libs" in
6333         *-lmalloc*)
6334                 : Remove malloc from list of libraries to use
6335                 echo "Removing unneeded -lmalloc from library list" >&4
6336                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6337                 shift
6338                 libs="$*"
6339                 echo "libs = $libs" >&4
6340                 ;;
6341         esac
6342         ;;
6343 *)
6344         usemymalloc='n'
6345         mallocsrc=''
6346         mallocobj=''
6347         d_mymalloc="$undef"
6348         ;;
6349 esac
6350
6351 : compute the return types of malloc and free
6352 echo " "
6353 $cat >malloc.c <<END
6354 #$i_malloc I_MALLOC
6355 #$i_stdlib I_STDLIB
6356 #include <stdio.h>
6357 #include <sys/types.h>
6358 #ifdef I_MALLOC
6359 #include <malloc.h>
6360 #endif
6361 #ifdef I_STDLIB
6362 #include <stdlib.h>
6363 #endif
6364 #ifdef TRY_MALLOC
6365 void *malloc();
6366 #endif
6367 #ifdef TRY_FREE
6368 void free();
6369 #endif
6370 END
6371 case "$malloctype" in
6372 '')
6373         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6374                 malloctype='void *'
6375         else
6376                 malloctype='char *'
6377         fi
6378         ;;
6379 esac
6380 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6381
6382 case "$freetype" in
6383 '')
6384         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6385                 freetype='void'
6386         else
6387                 freetype='int'
6388         fi
6389         ;;
6390 esac
6391 echo "Your system uses $freetype free(), it would seem." >&4
6392 $rm -f malloc.[co]
6393 $cat <<EOM
6394
6395 After $package is installed, you may wish to install various
6396 add-on modules and utilities.  Typically, these add-ons will
6397 be installed under $prefix with the rest
6398 of this package.  However, you may wish to install such add-ons
6399 elsewhere under a different prefix.
6400
6401 If you do not wish to put everything under a single prefix, that's
6402 ok.  You will be prompted for the individual locations; this siteprefix
6403 is only used to suggest the defaults.
6404
6405 The default should be fine for most people.
6406
6407 EOM
6408 fn=d~+
6409 rp='Installation prefix to use for add-on modules and utilities?'
6410 : XXX Here might be another good place for an installstyle setting.
6411 case "$siteprefix" in
6412 '') dflt=$prefix ;;
6413 *)  dflt=$siteprefix ;;
6414 esac
6415 . ./getfile
6416 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6417 oldsiteprefix=''
6418 case "$siteprefix" in
6419 '') ;;
6420 *)      case "$ans" in
6421         "$prefix") ;;
6422         *) oldsiteprefix="$prefix";;
6423         esac
6424         ;;
6425 esac
6426 siteprefix="$ans"
6427 siteprefixexp="$ansexp"
6428
6429 : determine where site specific libraries go.
6430 : Usual default is /usr/local/lib/perl5/site_perl/$version
6431 : The default "style" setting is made in installstyle.U
6432 : XXX No longer works with Prefixit stuff.
6433 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6434 case "$sitelib" in
6435 '') case "$installstyle" in
6436         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6437         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6438         esac
6439         ;;
6440 *)      dflt="$sitelib"
6441         ;;
6442 esac
6443 $cat <<EOM
6444
6445 The installation process will create a directory for
6446 site-specific extensions and modules.  Most users find it convenient
6447 to place all site-specific files in this directory rather than in the
6448 main distribution directory.
6449
6450 EOM
6451 fn=d~+
6452 rp='Pathname for the site-specific library files?'
6453 . ./getfile
6454 sitelib="$ans"
6455 sitelibexp="$ansexp"
6456 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6457 : Change installation prefix, if necessary.
6458 if $test X"$prefix" != X"$installprefix"; then
6459         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6460 else
6461         installsitelib="$sitelibexp"
6462 fi
6463
6464 : determine where site specific architecture-dependent libraries go.
6465 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6466 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6467 : sitelib may have an optional trailing /share.
6468 case "$sitearch" in
6469 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6470         dflt="$dflt/$archname"
6471         ;;
6472 *)      dflt="$sitearch"
6473         ;;
6474 esac
6475 set sitearch sitearch none
6476 eval $prefixit
6477 $cat <<EOM
6478
6479 The installation process will also create a directory for
6480 architecture-dependent site-specific extensions and modules.
6481
6482 EOM
6483 fn=d~+
6484 rp='Pathname for the site-specific architecture-dependent library files?'
6485 . ./getfile
6486 sitearch="$ans"
6487 sitearchexp="$ansexp"
6488 : Change installation prefix, if necessary.
6489 if $test X"$prefix" != X"$installprefix"; then
6490         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6491 else
6492         installsitearch="$sitearchexp"
6493 fi
6494
6495 $cat <<EOM
6496
6497 The installation process will also create a directory for
6498 vendor-supplied add-ons.  Vendors who supply perl with their system
6499 may find it convenient to place all vendor-supplied files in this
6500 directory rather than in the main distribution directory.  This will
6501 ease upgrades between binary-compatible maintenance versions of perl.
6502
6503 Of course you may also use these directories in whatever way you see
6504 fit.  For example, you might use them to access modules shared over a
6505 company-wide network.
6506
6507 The default answer should be fine for most people.
6508 This causes further questions about vendor add-ons to be skipped
6509 and no vendor-specific directories will be configured for perl.
6510
6511 EOM
6512 rp='Do you want to configure vendor-specific add-on directories?'
6513 case "$usevendorprefix" in
6514 define|true|[yY]*) dflt=y ;;
6515 *)      : User may have set vendorprefix directly on Configure command line.
6516         case "$vendorprefix" in
6517         ''|' ') dflt=n ;;
6518         *)      dflt=y ;;
6519         esac
6520         ;;
6521 esac
6522 . ./myread
6523 case "$ans" in
6524 [yY]*)  fn=d~+
6525         rp='Installation prefix to use for vendor-supplied add-ons?'
6526         case "$vendorprefix" in
6527         '') dflt='' ;;
6528         *)  dflt=$vendorprefix ;;
6529         esac
6530         . ./getfile
6531         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6532         oldvendorprefix=''
6533         case "$vendorprefix" in
6534         '') ;;
6535         *)      case "$ans" in
6536                 "$prefix") ;;
6537                 *) oldvendorprefix="$prefix";;
6538                 esac
6539                 ;;
6540         esac
6541         usevendorprefix="$define"
6542         vendorprefix="$ans"
6543         vendorprefixexp="$ansexp"
6544         ;;
6545 *)      usevendorprefix="$undef"
6546         vendorprefix=''
6547         vendorprefixexp=''
6548         ;;
6549 esac
6550
6551 case "$vendorprefix" in
6552 '')     d_vendorlib="$undef"
6553         vendorlib=''
6554         vendorlibexp=''
6555         ;;
6556 *)      d_vendorlib="$define"
6557         : determine where vendor-supplied modules go.
6558         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6559         case "$vendorlib" in
6560         '')
6561                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6562                 case "$installstyle" in
6563                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6564                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6565                 esac
6566                 ;;
6567         *)      dflt="$vendorlib"
6568                 ;;
6569         esac
6570         fn=d~+
6571         rp='Pathname for the vendor-supplied library files?'
6572         . ./getfile
6573         vendorlib="$ans"
6574         vendorlibexp="$ansexp"
6575         ;;
6576 esac
6577 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6578 : Change installation prefix, if necessary.
6579 if $test X"$prefix" != X"$installprefix"; then
6580         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6581 else
6582         installvendorlib="$vendorlibexp"
6583 fi
6584
6585 case "$vendorprefix" in
6586 '')     d_vendorarch="$undef"
6587         vendorarch=''
6588         vendorarchexp=''
6589         ;;
6590 *)      d_vendorarch="$define"
6591         : determine where vendor-supplied architecture-dependent libraries go.
6592         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6593         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6594         : vendorlib may have an optional trailing /share.
6595         case "$vendorarch" in
6596         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6597                 dflt="$dflt/$archname"
6598                 ;;
6599         *)      dflt="$vendorarch" ;;
6600         esac
6601         fn=d~+
6602         rp='Pathname for vendor-supplied architecture-dependent files?'
6603         . ./getfile
6604         vendorarch="$ans"
6605         vendorarchexp="$ansexp"
6606         ;;
6607 esac
6608 : Change installation prefix, if necessary.
6609 if $test X"$prefix" != X"$installprefix"; then
6610         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6611 else
6612         installvendorarch="$vendorarchexp"
6613 fi
6614
6615 : Final catch-all directories to search
6616 $cat <<EOM
6617
6618 Lastly, you can have perl look in other directories for extensions and
6619 modules in addition to those already specified.
6620 These directories will be searched after 
6621         $sitearch 
6622         $sitelib 
6623 EOM
6624 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6625 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6626 echo ' '
6627 case "$otherlibdirs" in
6628 ''|' ') dflt='none' ;;
6629 *)      dflt="$otherlibdirs" ;;
6630 esac
6631 $cat <<EOM
6632 Enter a colon-separated set of extra paths to include in perl's @INC
6633 search path, or enter 'none' for no extra paths.
6634
6635 EOM
6636
6637 rp='Colon-separated list of additional directories for perl to search?'
6638 . ./myread
6639 case "$ans" in
6640 ' '|''|none)    otherlibdirs=' ' ;;     
6641 *)      otherlibdirs="$ans" ;;
6642 esac
6643 case "$otherlibdirs" in
6644 ' ') val=$undef ;;
6645 *)      val=$define ;;
6646 esac
6647 set d_perl_otherlibdirs
6648 eval $setvar
6649
6650 : Cruising for prototypes
6651 echo " "
6652 echo "Checking out function prototypes..." >&4
6653 $cat >prototype.c <<EOCP
6654 #$i_stdlib I_STDLIB
6655 #ifdef I_STDLIB
6656 #include <stdlib.h>
6657 #endif
6658 int main(int argc, char *argv[]) {
6659         exit(0);}
6660 EOCP
6661 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6662         echo "Your C compiler appears to support function prototypes."
6663         val="$define"
6664 else
6665         echo "Your C compiler doesn't seem to understand function prototypes."
6666         val="$undef"
6667 fi
6668 set prototype
6669 eval $setvar
6670 $rm -f prototype*
6671
6672 case "$prototype" in
6673 "$define") ;;
6674 *)      ansi2knr='ansi2knr'
6675         echo " "
6676         cat <<EOM >&4
6677
6678 $me:  FATAL ERROR:
6679 This version of $package can only be compiled by a compiler that 
6680 understands function prototypes.  Unfortunately, your C compiler 
6681         $cc $ccflags
6682 doesn't seem to understand them.  Sorry about that.
6683
6684 If GNU cc is available for your system, perhaps you could try that instead.  
6685
6686 Eventually, we hope to support building Perl with pre-ANSI compilers.
6687 If you would like to help in that effort, please contact <perlbug@perl.org>.
6688
6689 Aborting Configure now.
6690 EOM
6691         exit 2
6692         ;;
6693 esac
6694
6695 : determine where public executables go
6696 echo " "
6697 set dflt bin bin
6698 eval $prefixit
6699 fn=d~
6700 rp='Pathname where the public executables will reside?'
6701 . ./getfile
6702 if $test "X$ansexp" != "X$binexp"; then
6703         installbin=''
6704 fi
6705 bin="$ans"
6706 binexp="$ansexp"
6707 : Change installation prefix, if necessary.
6708 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6709 if $test X"$prefix" != X"$installprefix"; then
6710         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6711 else
6712         installbin="$binexp"
6713 fi
6714
6715 echo " "
6716 case "$extras" in
6717 '') dflt='n';;
6718 *) dflt='y';;
6719 esac
6720 cat <<EOM
6721 Perl can be built with extra modules or bundles of modules which
6722 will be fetched from the CPAN and installed alongside Perl.
6723
6724 Notice that you will need access to the CPAN; either via the Internet,
6725 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6726 be asked later to configure the CPAN.pm module which will in turn do
6727 the installation of the rest of the extra modules or bundles.)
6728
6729 Notice also that if the modules require any external software such as
6730 libraries and headers (the libz library and the zlib.h header for the
6731 Compress::Zlib module, for example) you MUST have any such software
6732 already installed, this configuration process will NOT install such
6733 things for you.
6734
6735 If this doesn't make any sense to you, just accept the default '$dflt'.
6736 EOM
6737 rp='Install any extra modules (y or n)?'
6738 . ./myread
6739 case "$ans" in
6740 y|Y)
6741         cat <<EOM
6742
6743 Please list any extra modules or bundles to be installed from CPAN,
6744 with spaces between the names.  The names can be in any format the
6745 'install' command of CPAN.pm will understand.  (Answer 'none',
6746 without the quotes, to install no extra modules or bundles.)
6747 EOM
6748         rp='Extras?'
6749         dflt="$extras"
6750         . ./myread
6751         extras="$ans"
6752 esac
6753 case "$extras" in
6754 ''|'none')
6755         val=''
6756         $rm -f ../extras.lst
6757         ;;
6758 *)      echo "(Saving the list of extras for later...)"
6759         echo "$extras" > ../extras.lst
6760         val="'$extras'"
6761         ;;
6762 esac
6763 set extras
6764 eval $setvar
6765 echo " "
6766
6767 : determine where html pages for programs go
6768 set html1dir html1dir none
6769 eval $prefixit
6770 $cat <<EOM
6771
6772 If you wish to install html files for programs in $spackage, indicate 
6773 the appropriate directory here.  To skip installing html files,
6774 answer "none".
6775 EOM
6776 case "$html1dir" in
6777 ''|none|$undef|' ') dflt=none ;;
6778 *) dflt=$html1dir ;;
6779 esac
6780 fn=dn+~
6781 rp="Directory for the main $spackage html pages?"
6782 . ./getfile
6783 html1dir="$ans"
6784 html1direxp="$ansexp"
6785 : Use ' ' for none so value is preserved next time through Configure
6786 $test X"$html1dir" = "X" && html1dir=' '
6787 : Change installation prefix, if necessary.
6788 if $test X"$prefix" != X"$installprefix"; then
6789         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6790 else
6791         installhtml1dir="$html1direxp"
6792 fi
6793
6794 : determine where html pages for libraries and modules go
6795 set html3dir html3dir none
6796 eval $prefixit
6797 $cat <<EOM
6798
6799 If you wish to install html files for modules associated with $spackage,
6800 indicate the appropriate directory here.  To skip installing html files,
6801 answer "none".
6802 EOM
6803 : There is no obvious default.  If they have specified html1dir, then
6804 : try to key off that, possibly changing .../html1 into .../html3.
6805 case "$html3dir" in
6806 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6807 *) dflt=$html3dir ;;
6808 esac
6809 fn=dn+~
6810 rp="Directory for the $spackage module html pages?"
6811 . ./getfile
6812 html3dir="$ans"
6813 html3direxp="$ansexp"
6814 : Use ' ' for none so value is preserved next time through Configure
6815 $test X"$html3dir" = "X" && html3dir=' '
6816 : Change installation prefix, if necessary.
6817 if $test X"$prefix" != X"$installprefix"; then
6818         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6819 else
6820         installhtml3dir="$html3direxp"
6821 fi
6822
6823 : Find perl5.005 or later.
6824 echo "Looking for a previously installed perl5.005 or later... "
6825 case "$perl5" in
6826 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6827                 : Check if this perl is recent and can load a simple module
6828                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6829                         perl5=$tdir/perl
6830                         break;
6831                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6832                         perl5=$tdir/perl5
6833                         break;
6834                 fi
6835         done
6836         ;;
6837 *)      perl5="$perl5"
6838         ;;
6839 esac
6840 case "$perl5" in
6841 '')     echo "None found.  That's ok.";;
6842 *)      echo "Using $perl5." ;;
6843 esac
6844
6845 : Determine list of previous versions to include in @INC
6846 $cat > getverlist <<EOPL
6847 #!$perl5 -w
6848 use File::Basename;
6849 \$api_versionstring = "$api_versionstring";
6850 \$version = "$version";
6851 \$stem = "$sitelib_stem";
6852 \$archname = "$archname";
6853 EOPL
6854         $cat >> getverlist <<'EOPL'
6855 # Can't have leading @ because metaconfig interprets it as a command!
6856 ;@inc_version_list=();
6857 # XXX Redo to do opendir/readdir? 
6858 if (-d $stem) {
6859     chdir($stem);
6860     ;@candidates = glob("5.*");
6861 }
6862 else {
6863     ;@candidates = ();
6864 }
6865
6866 # XXX ToDo:  These comparisons must be reworked when two-digit
6867 # subversions come along, so that 5.7.10 compares as greater than
6868 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6869 # widespread that we can use the built-in version vectors rather
6870 # than reinventing them here.  For 5.6.0, however, we must
6871 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6872 foreach $d (@candidates) {
6873     if ($d lt $version) {
6874         if ($d ge $api_versionstring) {
6875             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6876         }
6877         elsif ($d ge "5.005") {
6878             unshift(@inc_version_list, grep { -d } $d);
6879         }
6880     }
6881     else {
6882         # Skip newer version.  I.e. don't look in
6883         # 5.7.0 if we're installing 5.6.1.
6884     }
6885 }
6886
6887 if (@inc_version_list) {
6888     print join(' ', @inc_version_list);
6889 }
6890 else {
6891     # Blank space to preserve value for next Configure run.
6892     print " ";
6893 }
6894 EOPL
6895 chmod +x getverlist
6896 case "$inc_version_list" in
6897 '')     if test -x "$perl5$exe_ext"; then
6898                 dflt=`$perl5 getverlist`
6899         else
6900                 dflt='none'
6901         fi
6902         ;;
6903 $undef) dflt='none' ;;
6904 *)  eval dflt=\"$inc_version_list\" ;;
6905 esac
6906 case "$dflt" in
6907 ''|' ') dflt=none ;;
6908 esac
6909 case "$dflt" in
6910 5.005) dflt=none ;;
6911 esac
6912 $cat <<EOM
6913
6914 In order to ease the process of upgrading, this version of perl 
6915 can be configured to use modules built and installed with earlier 
6916 versions of perl that were installed under $prefix.  Specify here
6917 the list of earlier versions that this version of perl should check.
6918 If Configure detected no earlier versions of perl installed under
6919 $prefix, then the list will be empty.  Answer 'none' to tell perl
6920 to not search earlier versions.
6921
6922 The default should almost always be sensible, so if you're not sure,
6923 just accept the default.
6924 EOM
6925
6926 rp='List of earlier versions to include in @INC?'
6927 . ./myread
6928 case "$ans" in
6929 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6930 *) inc_version_list="$ans" ;;
6931 esac
6932 case "$inc_version_list" in
6933 ''|' ') 
6934         inc_version_list_init='0';;
6935 *)      inc_version_list_init=`echo $inc_version_list |
6936                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6937         ;;
6938 esac
6939 $rm -f getverlist
6940
6941 : determine whether to install perl also as /usr/bin/perl
6942
6943 echo " "
6944 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6945         $cat <<EOM
6946 Many scripts expect perl to be installed as /usr/bin/perl.
6947
6948 If you want to, I can install the perl you are about to compile
6949 as /usr/bin/perl (in addition to $bin/perl).
6950 EOM
6951         if test -f /usr/bin/perl; then
6952             $cat <<EOM
6953
6954 However, please note that because you already have a /usr/bin/perl,
6955 overwriting that with a new Perl would very probably cause problems.
6956 Therefore I'm assuming you don't want to do that (unless you insist).
6957
6958 EOM
6959             case "$installusrbinperl" in
6960             "$define"|[yY]*)    dflt='y';;
6961             *)                  dflt='n';;
6962             esac
6963         else
6964             $cat <<EOM
6965
6966 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6967
6968 EOM
6969             case "$installusrbinperl" in
6970             "$undef"|[nN]*)     dflt='n';;
6971             *)                  dflt='y';;
6972             esac
6973         fi
6974         rp="Do you want to install perl as /usr/bin/perl?"
6975         . ./myread
6976         case "$ans" in
6977         [yY]*)  val="$define";;
6978         *)      val="$undef" ;;
6979         esac
6980 else
6981         val="$undef"
6982 fi
6983 set installusrbinperl
6984 eval $setvar
6985
6986 echo " "
6987 echo "Checking for GNU C Library..." >&4
6988 cat >try.c <<'EOCP'
6989 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
6990    alone are insufficient to distinguish different versions, such as
6991    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
6992    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
6993 */
6994 #include <stdio.h>
6995 int main(void)
6996 {
6997 #ifdef __GLIBC__
6998 #   ifdef __GLIBC_MINOR__
6999 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
7000 #           include <gnu/libc-version.h>
7001             printf("%s\n",  gnu_get_libc_version());
7002 #       else
7003             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
7004 #       endif
7005 #   else
7006         printf("%d\n",  __GLIBC__);
7007 #   endif
7008     return 0;
7009 #else
7010     return 1;
7011 #endif
7012 }
7013 EOCP
7014 set try
7015 if eval $compile_ok && $run ./try > glibc.ver; then
7016         val="$define"
7017         gnulibc_version=`$cat glibc.ver`
7018         echo "You are using the GNU C Library version $gnulibc_version"
7019 else
7020         val="$undef"
7021         gnulibc_version=''
7022         echo "You are not using the GNU C Library"
7023 fi
7024 $rm -f try try.* glibc.ver
7025 set d_gnulibc
7026 eval $setvar
7027
7028 : see if nm is to be used to determine whether a symbol is defined or not
7029 case "$usenm" in
7030 '')
7031         dflt=''
7032         case "$d_gnulibc" in
7033         "$define")
7034                 echo " "
7035                 echo "nm probably won't work on the GNU C Library." >&4
7036                 dflt=n
7037                 ;;
7038         esac
7039         case "$dflt" in
7040         '') 
7041                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7042                         echo " "
7043                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
7044                         echo "'nm' won't be sufficient on this sytem." >&4
7045                         dflt=n
7046                 fi
7047                 ;;
7048         esac
7049         case "$dflt" in
7050         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7051                 if $test $dflt -gt 20; then
7052                         dflt=y
7053                 else
7054                         dflt=n
7055                 fi
7056                 ;;
7057         esac
7058         ;;
7059 *)
7060         case "$usenm" in
7061         true|$define) dflt=y;;
7062         *) dflt=n;;
7063         esac
7064         ;;
7065 esac
7066 $cat <<EOM
7067
7068 I can use $nm to extract the symbols from your C libraries. This
7069 is a time consuming task which may generate huge output on the disk (up
7070 to 3 megabytes) but that should make the symbols extraction faster. The
7071 alternative is to skip the 'nm' extraction part and to compile a small
7072 test program instead to determine whether each symbol is present. If
7073 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7074 this may be the best solution.
7075
7076 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7077
7078 EOM
7079 rp="Shall I use $nm to extract C symbols from the libraries?"
7080 . ./myread
7081 case "$ans" in
7082 [Nn]*) usenm=false;;
7083 *) usenm=true;;
7084 esac
7085
7086 runnm=$usenm
7087 case "$reuseval" in
7088 true) runnm=false;;
7089 esac
7090
7091 : nm options which may be necessary
7092 case "$nm_opt" in
7093 '') if $test -f /mach_boot; then
7094                 nm_opt=''       # Mach
7095         elif $test -d /usr/ccs/lib; then
7096                 nm_opt='-p'     # Solaris (and SunOS?)
7097         elif $test -f /dgux; then
7098                 nm_opt='-p'     # DG-UX
7099         elif $test -f /lib64/rld; then
7100                 nm_opt='-p'     # 64-bit Irix
7101         else
7102                 nm_opt=''
7103         fi;;
7104 esac
7105
7106 : nm options which may be necessary for shared libraries but illegal
7107 : for archive libraries.  Thank you, Linux.
7108 case "$nm_so_opt" in
7109 '')     case "$myuname" in
7110         *linux*|gnu*)
7111                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7112                         nm_so_opt='--dynamic'
7113                 fi
7114                 ;;
7115         esac
7116         ;;
7117 esac
7118
7119 case "$runnm" in
7120 true)
7121 : get list of predefined functions in a handy place
7122 echo " "
7123 case "$libc" in
7124 '') libc=unknown
7125         case "$libs" in
7126         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7127         esac
7128         ;;
7129 esac
7130 case "$libs" in
7131 '') ;;
7132 *)  for thislib in $libs; do
7133         case "$thislib" in
7134         -lc|-lc_s)
7135                 : Handle C library specially below.
7136                 ;;
7137         -l*)
7138                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7139                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7140                         :
7141                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7142                         :
7143                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7144                         :
7145                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7146                         :
7147                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7148                         :
7149                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7150                         :
7151                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7152                         :
7153                 else
7154                         try=''
7155                 fi
7156                 libnames="$libnames $try"
7157                 ;;
7158         *) libnames="$libnames $thislib" ;;
7159         esac
7160         done
7161         ;;
7162 esac
7163 xxx=normal
7164 case "$libc" in
7165 unknown)
7166         set /lib/libc.$so
7167         for xxx in $libpth; do
7168                 $test -r $1 || set $xxx/libc.$so
7169                 : The messy sed command sorts on library version numbers.
7170                 $test -r $1 || \
7171                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7172                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7173                                 h
7174                                 s/[0-9][0-9]*/0000&/g
7175                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7176                                 G
7177                                 s/\n/ /' | \
7178                          $sort | $sed -e 's/^.* //'`
7179                 eval set \$$#
7180         done
7181         $test -r $1 || set /usr/ccs/lib/libc.$so
7182         $test -r $1 || set /lib/libsys_s$_a
7183         ;;
7184 *)
7185         set blurfl
7186         ;;
7187 esac
7188 if $test -r "$1"; then
7189         echo "Your (shared) C library seems to be in $1."
7190         libc="$1"
7191 elif $test -r /lib/libc && $test -r /lib/clib; then
7192         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7193         xxx=apollo
7194         libc='/lib/clib /lib/libc'
7195         if $test -r /lib/syslib; then
7196                 echo "(Your math library is in /lib/syslib.)"
7197                 libc="$libc /lib/syslib"
7198         fi
7199 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7200         echo "Your C library seems to be in $libc, as you said before."
7201 elif $test -r $incpath/usr/lib/libc$_a; then
7202         libc=$incpath/usr/lib/libc$_a;
7203         echo "Your C library seems to be in $libc.  That's fine."
7204 elif $test -r /lib/libc$_a; then
7205         libc=/lib/libc$_a;
7206         echo "Your C library seems to be in $libc.  You're normal."
7207 else
7208         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7209                 :
7210         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7211                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7212         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7213                 :
7214         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7215                 :
7216         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7217                 :
7218         else
7219                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7220         fi
7221         if $test -r "$tans"; then
7222                 echo "Your C library seems to be in $tans, of all places."
7223                 libc=$tans
7224         else
7225                 libc='blurfl'
7226         fi
7227 fi
7228 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7229         dflt="$libc"
7230         cat <<EOM
7231
7232 If the guess above is wrong (which it might be if you're using a strange
7233 compiler, or your machine supports multiple models), you can override it here.
7234
7235 EOM
7236 else
7237         dflt=''
7238         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7239         cat >&4 <<EOM
7240 I can't seem to find your C library.  I've looked in the following places:
7241
7242 EOM
7243         $sed 's/^/      /' libpath
7244         cat <<EOM
7245
7246 None of these seems to contain your C library. I need to get its name...
7247
7248 EOM
7249 fi
7250 fn=f
7251 rp='Where is your C library?'
7252 . ./getfile
7253 libc="$ans"
7254
7255 echo " "
7256 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7257 set X `cat libnames`
7258 shift
7259 xxx=files
7260 case $# in 1) xxx=file; esac
7261 echo "Extracting names from the following $xxx for later perusal:" >&4
7262 echo " "
7263 $sed 's/^/      /' libnames >&4
7264 echo " "
7265 $echo $n "This may take a while...$c" >&4
7266
7267 for file in $*; do
7268         case $file in
7269         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7270         *) $nm $nm_opt $file 2>/dev/null;;
7271         esac
7272 done >libc.tmp
7273
7274 $echo $n ".$c"
7275 $grep fprintf libc.tmp > libc.ptf
7276 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7277 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7278 xxx='[ADTSIW]'
7279 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7280         eval $xscan;\
7281         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7282                 eval $xrun
7283 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7284         eval $xscan;\
7285         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7286                 eval $xrun
7287 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7288         eval $xscan;\
7289         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7290                 eval $xrun
7291 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7292         eval $xscan;\
7293         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7294                 eval $xrun
7295 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7296         eval $xscan;\
7297         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7298                 eval $xrun
7299 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7300         eval $xscan;\
7301         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7302                 eval $xrun
7303 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7304                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7305         eval $xscan;\
7306         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7307                 eval $xrun
7308 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7309         eval $xscan;\
7310         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7311                 eval $xrun
7312 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7313         eval $xscan;\
7314         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7315                 eval $xrun
7316 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7317         eval $xscan;\
7318         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7319                 eval $xrun
7320 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7321         eval $xscan;\
7322         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7323                 eval $xrun
7324 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7325         eval $xscan;\
7326         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7327                 eval $xrun
7328 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7329         eval $xscan;\
7330         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7331                 eval $xrun
7332 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7333         eval $xscan;\
7334         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7335                 eval $xrun
7336 else
7337         $nm -p $* 2>/dev/null >libc.tmp
7338         $grep fprintf libc.tmp > libc.ptf
7339         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7340                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7341         then
7342                 nm_opt='-p'
7343                 eval $xrun
7344         else
7345                 echo " "
7346                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7347                 com=''
7348                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7349                         for thisname in $libnames $libc; do
7350                                 $ar t $thisname >>libc.tmp
7351                         done
7352                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7353                         echo "Ok." >&4
7354                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7355                         # Repeat libc to extract forwarders to DLL entries too
7356                         for thisname in $libnames $libc; do
7357                                 $ar tv $thisname >>libc.tmp
7358                                 # Revision 50 of EMX has bug in $ar.
7359                                 # it will not extract forwarders to DLL entries
7360                                 # Use emximp which will extract exactly them.
7361                                 emximp -o tmp.imp $thisname \
7362                                     2>/dev/null && \
7363                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7364                                     < tmp.imp >>libc.tmp
7365                                 $rm tmp.imp
7366                         done
7367                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7368                         echo "Ok." >&4
7369                 else
7370                         echo "$ar didn't seem to work right." >&4
7371                         echo "Maybe this is a Cray...trying bld instead..." >&4
7372                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7373                         then
7374                                 for thisname in $libnames; do
7375                                         bld t $libnames | \
7376                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7377                                         $ar t $thisname >>libc.tmp
7378                                 done
7379                                 echo "Ok." >&4
7380                         else
7381                                 echo "That didn't work either.  Giving up." >&4
7382                                 exit 1
7383                         fi
7384                 fi
7385         fi
7386 fi
7387 nm_extract="$com"
7388 case "$PASE" in
7389 define)
7390     echo " "
7391     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7392     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7393     ;;
7394 *)  if $test -f /lib/syscalls.exp; then
7395         echo " "
7396         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7397         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7398     fi
7399     ;;
7400 esac
7401 ;;
7402 esac
7403 $rm -f libnames libpath
7404
7405 : see if dld is available
7406 set dld.h i_dld
7407 eval $inhdr
7408
7409 : is a C symbol defined?
7410 csym='tlook=$1;
7411 case "$3" in
7412 -v) tf=libc.tmp; tdc="";;
7413 -a) tf=libc.tmp; tdc="[]";;
7414 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7415 esac;
7416 tx=yes;
7417 case "$reuseval-$4" in
7418 true-) ;;
7419 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7420 esac;
7421 case "$tx" in
7422 yes)
7423         tval=false;
7424         if $test "$runnm" = true; then
7425                 if $contains $tlook $tf >/dev/null 2>&1; then
7426                         tval=true;
7427                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7428                         echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7429                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7430                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7431                         $rm -f try$_exe try.c core core.* try.core;
7432                 fi;
7433         else
7434                 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7435                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7436                 $rm -f try$_exe try.c;
7437         fi;
7438         ;;
7439 *)
7440         case "$tval" in
7441         $define) tval=true;;
7442         *) tval=false;;
7443         esac;
7444         ;;
7445 esac;
7446 eval "$2=$tval"'
7447
7448 : define an is-in-libc? function
7449 inlibc='echo " "; td=$define; tu=$undef;
7450 sym=$1; var=$2; eval "was=\$$2";
7451 tx=yes;
7452 case "$reuseval$was" in
7453 true) ;;
7454 true*) tx=no;;
7455 esac;
7456 case "$tx" in
7457 yes)
7458         set $sym tres -f;
7459         eval $csym;
7460         case "$tres" in
7461         true)
7462                 echo "$sym() found." >&4;
7463                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7464         *)
7465                 echo "$sym() NOT found." >&4;
7466                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7467         esac;;
7468 *)
7469         case "$was" in
7470         $define) echo "$sym() found." >&4;;
7471         *) echo "$sym() NOT found." >&4;;
7472         esac;;
7473 esac'
7474
7475 : see if dlopen exists
7476 xxx_runnm="$runnm"
7477 runnm=false
7478 set dlopen d_dlopen
7479 eval $inlibc
7480 runnm="$xxx_runnm"
7481
7482 : determine which dynamic loading, if any, to compile in
7483 echo " "
7484 dldir="ext/DynaLoader"
7485 case "$usedl" in
7486 $define|y|true)
7487         dflt='y'
7488         usedl="$define"
7489         ;;
7490 $undef|n|false)
7491         dflt='n'
7492         usedl="$undef"
7493         ;;
7494 *) 
7495         dflt='n'
7496         case "$d_dlopen" in
7497             $define) dflt='y' ;;
7498         esac
7499         case "$i_dld" in
7500             $define) dflt='y' ;;
7501         esac
7502         : Does a dl_xxx.xs file exist for this operating system
7503         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7504         ;;
7505 esac
7506 rp="Do you wish to use dynamic loading?"
7507 . ./myread
7508 usedl="$ans"
7509 case "$ans" in
7510 y*) usedl="$define"
7511         case "$dlsrc" in
7512         '')
7513                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7514                         dflt="$dldir/dl_${osname}.xs"
7515                 elif $test "$d_dlopen" = "$define" ; then
7516                         dflt="$dldir/dl_dlopen.xs"
7517                 elif $test "$i_dld" = "$define" ; then
7518                         dflt="$dldir/dl_dld.xs"
7519                 else
7520                         dflt=''
7521                 fi
7522                 ;;
7523         *)      dflt="$dldir/$dlsrc"
7524                 ;;
7525         esac
7526     echo "The following dynamic loading files are available:"
7527         : Can not go over to $dldir because getfile has path hard-coded in.
7528         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7529         rp="Source file to use for dynamic loading"
7530         fn="fne"
7531         gfpth="$src"
7532         . ./getfile
7533         usedl="$define"
7534         : emulate basename
7535         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7536
7537         $cat << EOM
7538
7539 Some systems may require passing special flags to $cc -c to
7540 compile modules that will be used to create a shared library.
7541 To use no flags, say "none".
7542
7543 EOM
7544     case "$cccdlflags" in
7545     '') case "$gccversion" in
7546                 '') case "$osname" in
7547                         hpux)   dflt='+z' ;;
7548                         next)   dflt='none' ;;
7549                         irix*)  dflt='-KPIC' ;;
7550                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7551                         sunos)  dflt='-pic' ;;
7552                         *)      dflt='none' ;;
7553                     esac
7554                         ;;
7555                 *)  case "$osname" in
7556                         darwin) dflt='none' ;;
7557                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7558                         *)      dflt='-fpic' ;;
7559                     esac ;;
7560             esac ;;
7561         ' ') dflt='none' ;;
7562     *)  dflt="$cccdlflags" ;;
7563     esac
7564     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7565     . ./myread
7566     case "$ans" in
7567     none) cccdlflags=' ' ;;
7568     *) cccdlflags="$ans" ;;
7569     esac
7570
7571     cat << EOM
7572
7573 Some systems use ld to create libraries that can be dynamically loaded,
7574 while other systems (such as those using ELF) use $cc.
7575
7576 EOM
7577         case "$ld" in
7578         '')     $cat >try.c <<EOM
7579 /* Test for whether ELF binaries are produced */
7580 #include <fcntl.h>
7581 #$i_stdlib I_STDLIB
7582 #ifdef I_STDLIB
7583 #include <stdlib.h>
7584 #endif
7585 int main() {
7586         char b[4];
7587         int i = open("a.out",O_RDONLY);
7588         if(i == -1) 
7589                 exit(1); /* fail */
7590         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7591                 exit(0); /* succeed (yes, it's ELF) */
7592         else
7593                 exit(1); /* fail */
7594 }
7595 EOM
7596                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7597                         cat <<EOM
7598 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7599 EOM
7600                         dflt="$cc"
7601                 else
7602                         echo "I'll use ld to build dynamic libraries."
7603                         dflt='ld'
7604                 fi
7605                 rm -f try.c a.out
7606                 ;;
7607         *)      dflt="$ld"
7608                 ;;
7609         esac
7610
7611     rp="What command should be used to create dynamic libraries?"
7612     . ./myread
7613         ld="$ans"
7614
7615     cat << EOM
7616
7617 Some systems may require passing special flags to $ld to create a
7618 library that can be dynamically loaded.  If your ld flags include
7619 -L/other/path options to locate libraries outside your loader's normal
7620 search path, you may need to specify those -L options here as well.  To
7621 use no flags, say "none".
7622
7623 EOM
7624     case "$lddlflags" in
7625     '') case "$osname" in
7626                         beos) dflt='-nostart' ;;
7627                         hpux) dflt='-b';
7628                               case "$gccversion" in
7629                               '') dflt="$dflt +vnocompatwarnings" ;;
7630                               esac
7631                               ;;        
7632                         linux|irix*|gnu*)       dflt='-shared' ;;
7633                         next)  dflt='none' ;;
7634                         solaris) dflt='-G' ;;
7635                         sunos) dflt='-assert nodefinitions' ;;
7636                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7637                 *)     dflt='none' ;;
7638                         esac
7639                         ;;
7640     *) dflt="$lddlflags" ;;
7641     esac
7642
7643         : Try to guess additional flags to pick up local libraries.
7644         : Be careful not to append to a plain 'none'
7645         case "$dflt" in
7646         none) dflt='' ;;
7647         esac
7648         for thisflag in $ldflags; do
7649                 case "$thisflag" in
7650                 -L*|-R*|-Wl,-R*)
7651                         case " $dflt " in
7652                         *" $thisflag "*) ;;
7653                         *) dflt="$dflt $thisflag" ;;
7654                         esac
7655                         ;;
7656                 esac
7657         done
7658
7659         case "$dflt" in
7660         ''|' ') dflt='none' ;;
7661         esac
7662
7663     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7664     . ./myread
7665     case "$ans" in
7666     none) lddlflags=' ' ;;
7667     *) lddlflags="$ans" ;;
7668     esac
7669
7670         cat <<EOM
7671
7672 Some systems may require passing special flags to $cc to indicate that
7673 the resulting executable will use dynamic linking.  To use no flags,
7674 say "none".
7675
7676 EOM
7677     case "$ccdlflags" in
7678     '') case "$osname" in
7679             linux|hpux|gnu*)    dflt='-Wl,-E' ;;
7680             next|sunos) dflt='none' ;;
7681             *)          dflt='none' ;;
7682             esac ;;
7683     ' ')  dflt='none' ;;
7684     *)  dflt="$ccdlflags" ;;
7685     esac
7686     rp="Any special flags to pass to $cc to use dynamic linking?"
7687     . ./myread
7688     case "$ans" in
7689     none) ccdlflags=' ' ;;
7690     *) ccdlflags="$ans" ;;
7691     esac
7692     ;;
7693 *)  usedl="$undef"
7694         ld='ld'
7695     dlsrc='dl_none.xs'
7696     lddlflags=''
7697     ccdlflags=''
7698     ;;
7699 esac
7700
7701 also=''
7702 case "$usedl" in
7703 $undef)
7704         # No dynamic loading being used, so don't bother even to prompt.
7705         useshrplib='false'
7706         ;;
7707 *)      case "$useshrplib" in
7708         '')     case "$osname" in
7709                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7710                         dflt=y
7711                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7712                         ;;
7713                 next*)
7714                         case "$osvers" in
7715                         4*)     dflt=y
7716                                 also='Building a shared libperl is needed for MAB support.'
7717                                 ;;
7718                         *)      dflt=n
7719                                 ;;
7720                         esac
7721                         ;;
7722                 *)      dflt=n
7723                         ;;
7724                 esac
7725                 ;;
7726         $define|true|[Yy]*)
7727                 dflt=y
7728                 ;;
7729         *)      dflt=n
7730                 ;;
7731         esac
7732         $cat << EOM
7733
7734 The perl executable is normally obtained by linking perlmain.c with
7735 libperl${_a}, any static extensions (usually just DynaLoader), and
7736 any other libraries needed on this system (such as -lm, etc.).  Since
7737 your system supports dynamic loading, it is probably possible to build
7738 a shared libperl.$so.  If you will have more than one executable linked
7739 to libperl.$so, this will significantly reduce the size of each
7740 executable, but it may have a noticeable affect on performance.  The
7741 default is probably sensible for your system.
7742 $also
7743
7744 EOM
7745         rp="Build a shared libperl.$so (y/n)"
7746         . ./myread
7747         case "$ans" in
7748         true|$define|[Yy]*)
7749                 useshrplib='true'  ;;
7750         *)      useshrplib='false' ;;
7751         esac
7752         ;;
7753 esac
7754
7755 case "$useshrplib" in
7756 true)
7757         case "$libperl" in
7758         '')
7759                 # Figure out a good name for libperl.so.  Since it gets stored in
7760                 # a version-specific architecture-dependent library, the version
7761                 # number isn't really that important, except for making cc/ld happy.
7762                 #
7763                 # A name such as libperl.so.3.1
7764                 majmin="libperl.$so.$patchlevel.$subversion"
7765                 # A name such as libperl.so.301
7766                 majonly=`echo $patchlevel $subversion |
7767                         $awk '{printf "%d%02d", $1, $2}'`
7768                 majonly=libperl.$so.$majonly
7769                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7770                 # rely on figuring it out from the naming of libc.
7771                 case "${osname}${osvers}" in
7772                 next4*)
7773                         dflt=libperl.5.$so
7774                         # XXX How handle the --version stuff for MAB?
7775                         ;;
7776                 linux*|gnu*)  # ld won't link with a bare -lperl otherwise.
7777                         dflt=libperl.$so
7778                         ;;
7779                 cygwin*) # ld links against an importlib
7780                         dflt=libperl$lib_ext
7781                         ;;
7782                 *)      # Try to guess based on whether libc has major.minor.
7783                         case "$libc" in
7784                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7785                         *libc.$so.[0-9]*) dflt=$majonly ;;
7786                         *)      dflt=libperl.$so ;;
7787                         esac
7788                         ;;
7789                 esac
7790                 ;;
7791         *)      dflt=$libperl
7792                 ;;
7793         esac
7794         cat << EOM
7795
7796 I need to select a good name for the shared libperl.  If your system uses
7797 library names with major and minor numbers, then you might want something
7798 like $majmin.  Alternatively, if your system uses a single version
7799 number for shared libraries, then you might want to use $majonly.
7800 Or, your system might be quite happy with a simple libperl.$so.
7801
7802 Since the shared libperl will get installed into a version-specific
7803 architecture-dependent directory, the version number of the shared perl
7804 library probably isn't important, so the default should be o.k.
7805
7806 EOM
7807         rp='What name do you want to give to the shared libperl?'
7808         . ./myread
7809         libperl=$ans
7810         echo "Ok, I'll use $libperl"
7811         ;;
7812 *)
7813         libperl="libperl${_a}"
7814         ;;
7815 esac
7816
7817 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7818 case "$shrpdir" in
7819 '') ;;
7820 *)      $cat >&4 <<EOM
7821 WARNING:  Use of the shrpdir variable for the installation location of
7822 the shared $libperl is not supported.  It was never documented and
7823 will not work in this version.  Let me (perlbug@perl.org)
7824 know of any problems this may cause.
7825
7826 EOM
7827         case "$shrpdir" in
7828         "$archlibexp/CORE")
7829                 $cat >&4 <<EOM
7830 But your current setting of $shrpdir is
7831 the default anyway, so it's harmless.
7832 EOM
7833                 ;;
7834         *)
7835                 $cat >&4 <<EOM
7836 Further, your current attempted setting of $shrpdir
7837 conflicts with the value of $archlibexp/CORE
7838 that installperl will use.
7839 EOM
7840                 ;;
7841         esac
7842         ;;
7843 esac
7844
7845 # How will the perl executable find the installed shared $libperl?
7846 # Add $xxx to ccdlflags.
7847 # If we can't figure out a command-line option, use $shrpenv to
7848 # set env LD_RUN_PATH.  The main perl makefile uses this.
7849 shrpdir=$archlibexp/CORE
7850 xxx=''
7851 tmp_shrpenv=''
7852 if "$useshrplib"; then
7853     case "$osname" in 
7854         aix)
7855                 # We'll set it in Makefile.SH...
7856                 ;;
7857         solaris)
7858                 xxx="-R $shrpdir"
7859                 ;;
7860         freebsd|netbsd|openbsd|interix)
7861                 xxx="-Wl,-R$shrpdir"
7862                 ;;
7863         bsdos|linux|irix*|dec_osf|gnu*)
7864                 xxx="-Wl,-rpath,$shrpdir"
7865                 ;;
7866         next)
7867                 # next doesn't like the default...
7868                 ;;
7869         beos)
7870                 # beos doesn't like the default, either.
7871                 ;;
7872         hpux*)
7873                 # hpux doesn't like the default, either.
7874                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7875                 ;;
7876         *)
7877                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7878                 ;;
7879         esac
7880         case "$xxx" in
7881         '') ;;
7882         *)      
7883                 # Only add $xxx if it isn't already in ccdlflags.
7884                 case " $ccdlflags " in
7885                 *" $xxx "*)     ;;
7886                 *)      ccdlflags="$ccdlflags $xxx"
7887                         cat <<EOM >&4
7888
7889 Adding $xxx to the flags
7890 passed to $ld so that the perl executable will find the 
7891 installed shared $libperl.
7892
7893 EOM
7894                         ;;
7895                 esac
7896                 ;;
7897         esac
7898 fi
7899 # Fix ccdlflags in AIX for building external extensions.
7900 # (For building Perl itself bare -bE:perl.exp is needed,
7901 #  Makefile.SH takes care of this.)
7902 case "$osname" in
7903 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7904 esac
7905 # Respect a hint or command-line value.
7906 case "$shrpenv" in
7907 '') shrpenv="$tmp_shrpenv" ;;
7908 esac
7909 case "$ldlibpthname" in
7910 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7911 none)   ldlibpthname='' ;;
7912 esac
7913
7914 : determine where manual pages are on this system
7915 echo " "
7916 case "$sysman" in
7917 '') 
7918         syspath='/usr/share/man/man1 /usr/man/man1'
7919         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7920         syspath="$syspath /usr/man/u_man/man1"
7921         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7922         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7923         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7924         sysman=`./loc . /usr/man/man1 $syspath`
7925         ;;
7926 esac
7927 if $test -d "$sysman"; then
7928         echo "System manual is in $sysman." >&4
7929 else
7930         echo "Could not find manual pages in source form." >&4
7931 fi
7932
7933 : determine where manual pages go
7934 set man1dir man1dir none
7935 eval $prefixit
7936 $cat <<EOM
7937
7938 $spackage has manual pages available in source form.
7939 EOM
7940 case "$nroff" in
7941 nroff)
7942         echo "However, you don't have nroff, so they're probably useless to you."
7943         case "$man1dir" in
7944         '') man1dir="none";;
7945         esac;;
7946 esac
7947 echo "If you don't want the manual sources installed, answer 'none'."
7948 case "$man1dir" in
7949 ' ') dflt=none
7950         ;;
7951 '')
7952         lookpath="$prefixexp/share/man/man1"
7953         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7954         lookpath="$lookpath $prefixexp/man/p_man/man1"
7955         lookpath="$lookpath $prefixexp/man/u_man/man1"
7956         lookpath="$lookpath $prefixexp/man/man.1"
7957         case "$sysman" in
7958         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7959         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7960         esac
7961         set dflt
7962         eval $prefixup
7963         ;;
7964 *)  dflt="$man1dir"
7965         ;;
7966 esac
7967 echo " "
7968 fn=dn+~
7969 rp="Where do the main $spackage manual pages (source) go?"
7970 . ./getfile
7971 if $test "X$man1direxp" != "X$ansexp"; then
7972         installman1dir=''
7973 fi
7974 man1dir="$ans"
7975 man1direxp="$ansexp"
7976 case "$man1dir" in
7977 '')     man1dir=' '
7978         installman1dir='';;
7979 esac
7980
7981 : Change installation prefix, if necessary.
7982 if $test X"$prefix" != X"$installprefix"; then
7983         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7984 else
7985         installman1dir="$man1direxp"
7986 fi
7987
7988 : What suffix to use on installed man pages
7989
7990 case "$man1dir" in
7991 ' ')
7992         man1ext='0'
7993         ;;
7994 *)
7995         rp="What suffix should be used for the main $spackage man pages?"
7996         case "$man1ext" in
7997         '')     case "$man1dir" in
7998                 *1)  dflt=1 ;;
7999                 *1p) dflt=1p ;;
8000                 *1pm) dflt=1pm ;;
8001                 *l) dflt=l;;
8002                 *n) dflt=n;;
8003                 *o) dflt=o;;
8004                 *p) dflt=p;;
8005                 *C) dflt=C;;
8006                 *L) dflt=L;;
8007                 *L1) dflt=L1;;
8008                 *) dflt=1;;
8009                 esac
8010                 ;;
8011         *)      dflt="$man1ext";;
8012         esac
8013         . ./myread
8014         man1ext="$ans"
8015         ;;
8016 esac
8017
8018 : see if we can have long filenames
8019 echo " "
8020 first=123456789abcdef
8021 $rm -f $first
8022 if (echo hi >$first) 2>/dev/null; then
8023         if $test -f 123456789abcde; then
8024                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
8025                 val="$undef"
8026         else
8027                 echo 'You can have filenames longer than 14 characters.'>&4
8028                 val="$define"
8029         fi
8030 else
8031         $cat <<'EOM'
8032 You can't have filenames longer than 14 chars.
8033 You can't even think about them!
8034 EOM
8035         val="$undef"
8036 fi 
8037 set d_flexfnam
8038 eval $setvar
8039 $rm -rf 123456789abcde*
8040
8041 : determine where library module manual pages go
8042 set man3dir man3dir none
8043 eval $prefixit
8044 $cat <<EOM
8045
8046 $spackage has manual pages for many of the library modules.
8047 EOM
8048
8049 case "$nroff" in
8050 nroff)
8051         $cat <<'EOM'
8052 However, you don't have nroff, so they're probably useless to you.
8053 EOM
8054         case "$man3dir" in
8055         '') man3dir="none";;
8056         esac;;
8057 esac
8058
8059 case "$d_flexfnam" in
8060 undef)
8061         $cat <<'EOM'
8062 However, your system can't handle the long file names like File::Basename.3. 
8063 EOM
8064         case "$man3dir" in
8065         '') man3dir="none";;
8066         esac;;
8067 esac
8068
8069 echo "If you don't want the manual sources installed, answer 'none'."
8070 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8071 case "$man3dir" in
8072 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8073         if $test -d "$privlib/man/man3"; then
8074                 cat <<EOM >&4
8075
8076 WARNING:  Previous versions of perl installed man3 pages into
8077 $privlib/man/man3.  This version will suggest a 
8078 new default of $dflt.  
8079 EOM
8080                 tdflt=$dflt
8081                 dflt='n'
8082                 rp='Do you wish to preserve the old behavior?(y/n)'
8083                 . ./myread
8084                 case "$ans" in
8085                 y*) dflt="$privlib/man/man3" ;;
8086                 *)  dflt=$tdflt ;;
8087                 esac
8088     fi
8089         ;;
8090 *)      dflt="$man3dir" ;;
8091 esac
8092 case "$dflt" in
8093 ' ') dflt=none ;;
8094 esac
8095 echo " "
8096 fn=dn+~
8097 rp="Where do the $package library man pages (source) go?"
8098 . ./getfile
8099 man3dir="$ans"
8100 man3direxp="$ansexp"
8101 case "$man3dir" in
8102 '')     man3dir=' '
8103         installman3dir='';;
8104 esac
8105
8106 : Change installation prefix, if necessary.
8107 if $test X"$prefix" != X"$installprefix"; then
8108         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8109 else
8110         installman3dir="$man3direxp"
8111 fi
8112
8113 : What suffix to use on installed man pages
8114 case "$man3dir" in
8115 ' ')
8116         man3ext='0'
8117         ;;
8118 *)
8119         rp="What suffix should be used for the $package library man pages?"
8120         case "$man3ext" in
8121         '')     case "$man3dir" in
8122                 *3)  dflt=3 ;;
8123                 *3p) dflt=3p ;;
8124                 *3pm) dflt=3pm ;;
8125                 *l) dflt=l;;
8126                 *n) dflt=n;;
8127                 *o) dflt=o;;
8128                 *p) dflt=p;;
8129                 *C) dflt=C;;
8130                 *L) dflt=L;;
8131                 *L3) dflt=L3;;
8132                 *) dflt=3;;
8133                 esac
8134                 ;;
8135         *)      dflt="$man3ext";;
8136         esac
8137         . ./myread
8138         man3ext="$ans"
8139         ;;
8140 esac
8141
8142 : see if we have to deal with yellow pages, now NIS.
8143 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8144         if $test -f /usr/etc/nibindd; then
8145                 echo " "
8146                 echo "I'm fairly confident you're on a NeXT."
8147                 echo " "
8148                 rp='Do you get the hosts file via NetInfo?'
8149                 dflt=y
8150                 case "$hostcat" in
8151                 nidump*) ;;
8152                 '') ;;
8153                 *) dflt=n;;
8154                 esac
8155                 . ./myread
8156                 case "$ans" in
8157                 y*) hostcat='nidump hosts .';;
8158                 *)      case "$hostcat" in
8159                         nidump*) hostcat='';;
8160                         esac
8161                         ;;
8162                 esac
8163         fi
8164         case "$hostcat" in
8165         nidump*) ;;
8166         *)
8167                 case "$hostcat" in
8168                 *ypcat*) dflt=y;;
8169                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8170                                 dflt=y
8171                         else
8172                                 dflt=n
8173                         fi;;
8174                 *) dflt=n;;
8175                 esac
8176                 echo " "
8177                 rp='Are you getting the hosts file via yellow pages?'
8178                 . ./myread
8179                 case "$ans" in
8180                 y*) hostcat='ypcat hosts';;
8181                 *) hostcat='cat /etc/hosts';;
8182                 esac
8183                 ;;
8184         esac
8185 fi
8186 case "$hostcat" in
8187 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8188 esac
8189 case "$groupcat" in
8190 '') test -f /etc/group && groupcat='cat /etc/group';;
8191 esac
8192 case "$passcat" in
8193 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8194 esac
8195
8196 : now get the host name
8197 echo " "
8198 echo "Figuring out host name..." >&4
8199 case "$myhostname" in
8200 '') cont=true
8201         echo 'Maybe "hostname" will work...'
8202         if tans=`sh -c hostname 2>&1` ; then
8203                 myhostname=$tans
8204                 phostname=hostname
8205                 cont=''
8206         fi
8207         ;;
8208 *) cont='';;
8209 esac
8210 if $test "$cont"; then
8211         if ./xenix; then
8212                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8213                 if tans=`cat /etc/systemid 2>&1` ; then
8214                         myhostname=$tans
8215                         phostname='cat /etc/systemid'
8216                         echo "Whadyaknow.  Xenix always was a bit strange..."
8217                         cont=''
8218                 fi
8219         elif $test -r /etc/systemid; then
8220                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8221         fi
8222 fi
8223 if $test "$cont"; then
8224         echo 'No, maybe "uuname -l" will work...'
8225         if tans=`sh -c 'uuname -l' 2>&1` ; then
8226                 myhostname=$tans
8227                 phostname='uuname -l'
8228         else
8229                 echo 'Strange.  Maybe "uname -n" will work...'
8230                 if tans=`sh -c 'uname -n' 2>&1` ; then
8231                         myhostname=$tans
8232                         phostname='uname -n'
8233                 else
8234                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8235                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8236                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8237                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8238                         else
8239                                 case "$myhostname" in
8240                                 '') echo "Does this machine have an identity crisis or something?"
8241                                         phostname='';;
8242                                 *)
8243                                         echo "Well, you said $myhostname before..."
8244                                         phostname='echo $myhostname';;
8245                                 esac
8246                         fi
8247                 fi
8248         fi
8249 fi
8250 case "$myhostname" in
8251 '') myhostname=noname ;;
8252 esac
8253 : you do not want to know about this
8254 set $myhostname
8255 myhostname=$1
8256
8257 : verify guess
8258 if $test "$myhostname" ; then
8259         dflt=y
8260         rp='Your host name appears to be "'$myhostname'".'" Right?"
8261         . ./myread
8262         case "$ans" in
8263         y*) ;;
8264         *) myhostname='';;
8265         esac
8266 fi
8267
8268 : bad guess or no guess
8269 while $test "X$myhostname" = X ; do
8270         dflt=''
8271         rp="Please type the (one word) name of your host:"
8272         . ./myread
8273         myhostname="$ans"
8274 done
8275
8276 : translate upper to lower if necessary
8277 case "$myhostname" in
8278 *[A-Z]*)
8279         echo "(Normalizing case in your host name)"
8280         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8281         ;;
8282 esac
8283
8284 case "$myhostname" in
8285 *.*)
8286         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8287         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8288         echo "(Trimming domain name from host name--host name is now $myhostname)"
8289         ;;
8290 *) case "$mydomain" in
8291         '')
8292                 {
8293                         test "X$hostcat" = "Xypcat hosts" &&
8294                         ypmatch "$myhostname" hosts 2>/dev/null |\
8295                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8296                         $test -s hosts
8297                 } || {
8298                         test "X$hostcat" != "X" &&
8299                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8300                                         /[       ]$myhostname[  . ]/p" > hosts
8301                 }
8302                 tmp_re="[       . ]"
8303                 if $test -f hosts; then
8304                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8305                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8306                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8307                                 hosts | $sort | $uniq | \
8308                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8309                         case `$echo X$dflt` in
8310                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8311                                 dflt=.
8312                                 ;;
8313                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8314                                 ;;
8315                         esac
8316                 else
8317                         echo "(I cannot locate a hosts database anywhere)"
8318                         dflt=.
8319                 fi
8320                 case "$dflt" in
8321                 .)
8322                         tans=`./loc resolv.conf X /etc /usr/etc`
8323                         if $test -f "$tans"; then
8324                                 echo "(Attempting domain name extraction from $tans)"
8325                                 dflt=.`$sed -n -e 's/   / /g' \
8326                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8327                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8328                                 case "$dflt" in
8329                                 .) dflt=.`$sed -n -e 's/        / /g' \
8330                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8331                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8332                                         ;;
8333                                 esac
8334                         fi
8335                         ;;
8336                 esac
8337                 case "$dflt" in
8338                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8339                         dflt=.`sh -c domainname 2>/dev/null`
8340                         case "$dflt" in
8341                         '') dflt='.';;
8342                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8343                         esac
8344                         ;;
8345                 esac
8346                 case "$dflt$osname" in
8347                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8348                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8349                         ;;
8350                 esac
8351                 case "$dflt" in
8352                 .) echo "(Lost all hope -- silly guess then)"
8353                         dflt='.nonet'
8354                         ;;
8355                 esac
8356                 $rm -f hosts
8357                 ;;
8358         *) dflt="$mydomain";;
8359         esac;;
8360 esac
8361 echo " "
8362 rp="What is your domain name?"
8363 . ./myread
8364 tans="$ans"
8365 case "$ans" in
8366 '') ;;
8367 .*) ;;
8368 *) tans=".$tans";;
8369 esac
8370 mydomain="$tans"
8371
8372 : translate upper to lower if necessary
8373 case "$mydomain" in
8374 *[A-Z]*)
8375         echo "(Normalizing case in your domain name)"
8376         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8377         ;;
8378 esac
8379
8380 : a little sanity check here
8381 case "$phostname" in
8382 '') ;;
8383 *)
8384         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8385         $myhostname$mydomain|$myhostname) ;;
8386         *)
8387                 case "$phostname" in
8388                 sed*)
8389                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8390                         ;;
8391                 *)
8392                         echo "(That doesn't agree with your $phostname command, by the way.)"
8393                         ;;
8394                 esac
8395         ;;
8396         esac
8397         ;;
8398 esac
8399
8400 $cat <<EOM
8401
8402 I need to get your e-mail address in Internet format if possible, i.e.
8403 something like user@host.domain. Please answer accurately since I have
8404 no easy means to double check it. The default value provided below
8405 is most probably close to reality but may not be valid from outside
8406 your organization...
8407
8408 EOM
8409 cont=x
8410 while test "$cont"; do
8411         case "$cf_email" in
8412         '') dflt="$cf_by@$myhostname$mydomain";;
8413         *) dflt="$cf_email";;
8414         esac
8415         rp='What is your e-mail address?'
8416         . ./myread
8417         cf_email="$ans"
8418         case "$cf_email" in
8419         *@*.*) cont='' ;;
8420         *)
8421                 rp='Address does not look like an Internet one.  Use it anyway?'
8422                 case "$fastread" in
8423                 yes) dflt=y ;;
8424                 *) dflt=n ;;
8425                 esac
8426                 . ./myread
8427                 case "$ans" in
8428                 y*) cont='' ;;
8429                 *) echo " " ;;
8430                 esac
8431                 ;;
8432         esac
8433 done
8434
8435 $cat <<EOM
8436
8437 If you or somebody else will be maintaining perl at your site, please
8438 fill in the correct e-mail address here so that they may be contacted
8439 if necessary. Currently, the "perlbug" program included with perl
8440 will send mail to this address in addition to perlbug@perl.org. You may
8441 enter "none" for no administrator.
8442
8443 EOM
8444 case "$perladmin" in
8445 '') dflt="$cf_email";;
8446 *) dflt="$perladmin";;
8447 esac
8448 rp='Perl administrator e-mail address'
8449 . ./myread
8450 perladmin="$ans"
8451
8452 : determine whether to only install version-specific parts.
8453 echo " "
8454 $cat <<EOM
8455 Do you want to install only the version-specific parts of the perl
8456 distribution?  Usually you do *not* want to do this.
8457 EOM
8458 case "$versiononly" in
8459 "$define"|[Yy]*|true) dflt='y' ;;
8460 *) dflt='n';
8461 esac
8462 rp="Do you want to install only the version-specific parts of perl?"
8463 . ./myread
8464 case "$ans" in
8465 [yY]*)  val="$define";;
8466 *)      val="$undef" ;;
8467 esac
8468 set versiononly
8469 eval $setvar
8470
8471 case "$versiononly" in
8472 "$define") inc_version_list=''
8473            inc_version_list_init=0
8474            ;;
8475 esac
8476
8477 : figure out how to guarantee perl startup
8478 case "$startperl" in
8479 '')
8480         case "$sharpbang" in
8481         *!)
8482                 $cat <<EOH
8483
8484 I can use the #! construct to start perl on your system. This will
8485 make startup of perl scripts faster, but may cause problems if you
8486 want to share those scripts and perl is not in a standard place
8487 ($binexp/perl) on all your platforms. The alternative is to force
8488 a shell by starting the script with a single ':' character.
8489
8490 EOH
8491                 case "$versiononly" in
8492                 "$define")      dflt="$binexp/perl$version";;  
8493                 *)              dflt="$binexp/perl";;
8494                 esac
8495                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8496                 . ./myread
8497                 case "$ans" in
8498                 none)   startperl=": # use perl";;
8499                 *)      startperl="#!$ans"
8500                         if $test 30 -lt `echo "$ans" | wc -c`; then
8501                                 $cat >&4 <<EOM
8502
8503 WARNING:  Some systems limit the #! command to 32 characters.
8504 If you experience difficulty running Perl scripts with #!, try
8505 installing Perl in a directory with a shorter pathname.
8506
8507 EOM
8508                         fi ;;
8509                 esac
8510                 ;;
8511         *) startperl=": # use perl"
8512                 ;;
8513         esac
8514         ;;
8515 esac
8516 echo "I'll use $startperl to start perl scripts."
8517
8518 : figure best path for perl in scripts
8519 case "$perlpath" in
8520 '')
8521         case "$versiononly" in
8522         "$define")      perlpath="$binexp/perl$version";;
8523         *)              perlpath="$binexp/perl";;
8524         esac
8525         case "$startperl" in
8526         *!*) ;;
8527         *)
8528                 $cat <<EOH
8529
8530 I will use the "eval 'exec'" idiom to start Perl on your system.
8531 I can use the full path of your Perl binary for this purpose, but
8532 doing so may cause problems if you want to share those scripts and
8533 Perl is not always in a standard place ($binexp/perl).
8534
8535 EOH
8536                 dflt="$binexp/perl"
8537                 rp="What path shall I use in \"eval 'exec'\"?"
8538                 . ./myread
8539                 perlpath="$ans"
8540                 ;;
8541         esac
8542         ;;
8543 esac
8544 case "$startperl" in
8545 *!*)    ;;
8546 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8547 esac
8548
8549 : determine where public executable scripts go
8550 set scriptdir scriptdir
8551 eval $prefixit
8552 case "$scriptdir" in
8553 '')
8554         dflt="$bin"
8555         : guess some guesses
8556         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8557         $test -d /usr/share/bin     && dflt=/usr/share/bin
8558         $test -d /usr/local/script  && dflt=/usr/local/script
8559         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8560         $test -d $prefixexp/script  && dflt=$prefixexp/script
8561         set dflt
8562         eval $prefixup
8563         ;;
8564 *)  dflt="$scriptdir"
8565         ;;
8566 esac
8567 $cat <<EOM
8568  
8569 Some installations have a separate directory just for executable scripts so
8570 that they can mount it across multiple architectures but keep the scripts in
8571 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8572 Or you might just lump your scripts in with all your other executables.
8573  
8574 EOM
8575 fn=d~
8576 rp='Where do you keep publicly executable scripts?'
8577 . ./getfile
8578 if $test "X$ansexp" != "X$scriptdirexp"; then
8579         installscript=''
8580 fi
8581 scriptdir="$ans"
8582 scriptdirexp="$ansexp"
8583 : Change installation prefix, if necessary.
8584 if $test X"$prefix" != X"$installprefix"; then
8585         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8586 else
8587         installscript="$scriptdirexp"
8588 fi
8589
8590 : determine where add-on public executables go
8591 case "$sitebin" in
8592 '')     dflt=$siteprefix/bin ;;
8593 *)      dflt=$sitebin ;;
8594 esac
8595 fn=d~
8596 rp='Pathname where the add-on public executables should be installed?'
8597 . ./getfile
8598 sitebin="$ans"
8599 sitebinexp="$ansexp"
8600 : Change installation prefix, if necessary.
8601 if $test X"$prefix" != X"$installprefix"; then
8602         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8603 else
8604         installsitebin="$sitebinexp"
8605 fi
8606
8607 : determine where add-on html pages go
8608 : There is no standard location, so try to copy the previously-selected
8609 : directory structure for the core html pages.
8610 case "$sitehtml1dir" in
8611 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8612 *)     dflt=$sitehtml1dir ;;
8613 esac
8614 case "$dflt" in
8615 ''|' ') dflt=none ;;
8616 esac
8617 fn=dn+~
8618 rp='Pathname where the site-specific html pages should be installed?'
8619 . ./getfile
8620 sitehtml1dir="$ans"
8621 sitehtml1direxp="$ansexp"
8622 : Change installation prefix, if necessary.
8623 if $test X"$prefix" != X"$installprefix"; then
8624         installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
8625 else
8626         installsitehtml1dir="$sitehtml1direxp"
8627 fi
8628
8629 : determine where add-on library html pages go
8630 : There is no standard location, so try to copy the previously-selected
8631 : directory structure for the core html pages.
8632 case "$sitehtml3dir" in
8633 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8634 *)     dflt=$sitehtml3dir ;;
8635 esac
8636 case "$dflt" in
8637 ''|' ') dflt=none ;;
8638 esac
8639 fn=dn+~
8640 rp='Pathname where the site-specific library html pages should be installed?'
8641 . ./getfile
8642 sitehtml3dir="$ans"
8643 sitehtml3direxp="$ansexp"
8644 : Change installation prefix, if necessary.
8645 if $test X"$prefix" != X"$installprefix"; then
8646         installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
8647 else
8648         installsitehtml3dir="$sitehtml3direxp"
8649 fi
8650
8651 : determine where add-on manual pages go
8652 case "$siteman1dir" in
8653 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8654 *)      dflt=$siteman1dir ;;
8655 esac
8656 case "$dflt" in
8657 ''|' ') dflt=none ;;
8658 esac
8659 fn=dn+~
8660 rp='Pathname where the site-specific manual pages should be installed?'
8661 . ./getfile
8662 siteman1dir="$ans"
8663 siteman1direxp="$ansexp"
8664 : Change installation prefix, if necessary.
8665 if $test X"$prefix" != X"$installprefix"; then
8666         installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
8667 else
8668         installsiteman1dir="$siteman1direxp"
8669 fi
8670
8671 : determine where add-on library man pages go
8672 case "$siteman3dir" in
8673 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8674 *)      dflt=$siteman3dir ;;
8675 esac
8676 case "$dflt" in
8677 ''|' ') dflt=none ;;
8678 esac
8679 fn=dn+~
8680 rp='Pathname where the site-specific library manual pages should be installed?'
8681 . ./getfile
8682 siteman3dir="$ans"
8683 siteman3direxp="$ansexp"
8684 : Change installation prefix, if necessary.
8685 if $test X"$prefix" != X"$installprefix"; then
8686         installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
8687 else
8688         installsiteman3dir="$siteman3direxp"
8689 fi
8690
8691 : determine where add-on public executable scripts go
8692 case "$sitescript" in
8693 '')     dflt=$siteprefix/script
8694         $test -d $dflt || dflt=$sitebin ;;
8695 *)  dflt="$sitescript" ;;
8696 esac
8697 fn=d~+
8698 rp='Pathname where add-on public executable scripts should be installed?'
8699 . ./getfile
8700 sitescript="$ans"
8701 sitescriptexp="$ansexp"
8702 : Change installation prefix, if necessary.
8703 if $test X"$prefix" != X"$installprefix"; then
8704         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8705 else
8706         installsitescript="$sitescriptexp"
8707 fi
8708
8709 case "$usefaststdio" in
8710 $define|true|[yY]*|'')
8711         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8712         case "$xversion" in
8713         [68])   dflt='y' ;;
8714         *)      dflt='n' ;;
8715         esac
8716         ;;
8717 *) dflt='n';;
8718 esac
8719 cat <<EOM
8720
8721 Perl can be built to use 'fast stdio', which means using the stdio
8722 library but also directly manipulating the stdio buffers to enable
8723 faster I/O.  Using stdio is better for backward compatibility (especially
8724 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8725 interface has been preferred instead of stdio.
8726
8727 If this doesn't make any sense to you, just accept the default '$dflt'.
8728 EOM
8729 rp='Use the "fast stdio" if available?'
8730 . ./myread
8731 case "$ans" in
8732 y|Y)    val="$define" ;;     
8733 *)      val="$undef" ;;
8734 esac
8735 set usefaststdio
8736 eval $setvar
8737
8738
8739 : define an is-a-typedef? function
8740 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8741 case "$inclist" in
8742 "") inclist="sys/types.h";;
8743 esac;
8744 eval "varval=\$$var";
8745 case "$varval" in
8746 "")
8747         $rm -f temp.c;
8748         for inc in $inclist; do
8749                 echo "#include <$inc>" >>temp.c;
8750         done;
8751         echo "#ifdef $type" >> temp.c;
8752         echo "printf(\"We have $type\");" >> temp.c;
8753         echo "#endif" >> temp.c;
8754         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8755         if $contains $type temp.E >/dev/null 2>&1; then
8756                 eval "$var=\$type";
8757         else
8758                 eval "$var=\$def";
8759         fi;
8760         $rm -f temp.?;;
8761 *) eval "$var=\$varval";;
8762 esac'
8763
8764 : define an is-a-typedef? function that prompts if the type is not available.
8765 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8766 case "$inclist" in
8767 "") inclist="sys/types.h";;
8768 esac;
8769 eval "varval=\$$var";
8770 case "$varval" in
8771 "")
8772         $rm -f temp.c;
8773         for inc in $inclist; do
8774                 echo "#include <$inc>" >>temp.c;
8775         done;
8776         echo "#ifdef $type" >> temp.c;
8777         echo "printf(\"We have $type\");" >> temp.c;
8778         echo "#endif" >> temp.c;
8779         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8780         echo " " ;
8781         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8782         if $contains $type temp.E >/dev/null 2>&1; then
8783                 echo "$type found." >&4;
8784                 eval "$var=\$type";
8785         else
8786                 echo "$type NOT found." >&4;
8787                 dflt="$def";
8788                 . ./myread ;
8789                 eval "$var=\$ans";
8790         fi;
8791         $rm -f temp.?;;
8792 *) eval "$var=\$varval";;
8793 esac'
8794
8795 : see what type lseek is declared as in the kernel
8796 rp="What is the type used for lseek's offset on this system?"
8797 set off_t lseektype long stdio.h sys/types.h
8798 eval $typedef_ask
8799
8800 echo " "
8801 echo "Checking to see how big your file offsets are..." >&4
8802 $cat >try.c <<EOCP
8803 #include <sys/types.h>
8804 #include <stdio.h>
8805 int main()
8806 {
8807     printf("%d\n", (int)sizeof($lseektype));
8808     return(0); 
8809 }
8810 EOCP
8811 set try
8812 if eval $compile_ok; then
8813         lseeksize=`$run ./try`
8814         echo "Your file offsets are $lseeksize bytes long."
8815 else
8816         dflt=$longsize
8817         echo " "
8818         echo "(I can't seem to compile the test program.  Guessing...)"
8819         rp="What is the size of your file offsets (in bytes)?"
8820         . ./myread
8821         lseeksize="$ans"
8822 fi
8823 $rm -f try.c try
8824
8825 : see what type file positions are declared as in the library
8826 rp="What is the type for file position used by fsetpos()?"
8827 set fpos_t fpostype long stdio.h sys/types.h
8828 eval $typedef_ask
8829
8830 echo " "
8831 case "$fpostype" in
8832 *_t) zzz="$fpostype"    ;;
8833 *)   zzz="fpos_t"       ;;
8834 esac
8835 echo "Checking the size of $zzz..." >&4 
8836 cat > try.c <<EOCP
8837 #include <sys/types.h>
8838 #include <stdio.h>
8839 #$i_stdlib I_STDLIB
8840 #ifdef I_STDLIB
8841 #include <stdlib.h>
8842 #endif
8843 int main() {
8844     printf("%d\n", (int)sizeof($fpostype));
8845     exit(0);
8846 }
8847 EOCP
8848 set try
8849 if eval $compile_ok; then
8850         yyy=`$run ./try`
8851         case "$yyy" in
8852         '')     fpossize=4
8853                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8854                 ;;
8855         *)      fpossize=$yyy
8856                 echo "Your $zzz is $fpossize bytes long."
8857                 ;;
8858         esac
8859 else
8860         dflt="$longsize"
8861         echo " " >&4
8862         echo "(I can't compile the test program.  Guessing...)" >&4
8863         rp="What is the size of your file positions (in bytes)?"
8864         . ./myread
8865         fpossize="$ans"
8866 fi
8867
8868 # Backward compatibility (uselfs is deprecated).
8869 case "$uselfs" in
8870 "$define"|true|[yY]*)
8871         cat <<EOM >&4
8872
8873 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8874 EOM
8875         uselargefiles="$define"
8876         ;;
8877 esac                          
8878
8879 case "$lseeksize:$fpossize" in
8880 8:8) cat <<EOM
8881
8882 You can have files larger than 2 gigabytes.
8883 EOM
8884    val="$define" ;;
8885 *)    case "$uselargefiles" in
8886    "$undef"|false|[nN]*) dflt='n' ;;
8887    *)   dflt='y' ;;
8888    esac
8889    cat <<EOM
8890
8891 Perl can be built to understand large files (files larger than 2 gigabytes)
8892 on some systems.  To do so, Configure can be run with -Duselargefiles.
8893
8894 If this doesn't make any sense to you, just accept the default '$dflt'.
8895 EOM
8896    rp='Try to understand large files, if available?'
8897    . ./myread
8898    case "$ans" in
8899    y|Y)         val="$define" ;;
8900    *)           val="$undef"  ;;
8901    esac
8902    ;;
8903 esac
8904 set uselargefiles
8905 eval $setvar
8906 : Look for a hint-file generated 'call-back-unit'.  If the
8907 : user has specified that a large files perl is to be built,
8908 : we may need to set or change some other defaults.
8909 if $test -f uselargefiles.cbu; then
8910         echo "Your platform has some specific hints regarding large file builds, using them..."
8911         . ./uselargefiles.cbu
8912 fi
8913 case "$uselargefiles" in
8914 "$define")
8915         if $test -f uselargefiles.cbu; then
8916                 echo " "
8917                 echo "Rechecking to see how big your file offsets are..." >&4
8918                 $cat >try.c <<EOCP
8919 #include <sys/types.h>
8920 #include <stdio.h>
8921 int main()
8922 {
8923     printf("%d\n", (int)sizeof($lseektype));
8924     return(0); 
8925 }
8926 EOCP
8927                 set try
8928                 if eval $compile_ok; then
8929                         lseeksize=`$run ./try`
8930                         $echo "Your file offsets are now $lseeksize bytes long."
8931                 else
8932                         dflt="$lseeksize"
8933                         echo " "
8934                         echo "(I can't seem to compile the test program.  Guessing...)"
8935                         rp="What is the size of your file offsets (in bytes)?"
8936                         . ./myread
8937                         lseeksize="$ans"
8938                 fi
8939                 case "$fpostype" in
8940                 *_t) zzz="$fpostype"    ;;
8941                 *)   zzz="fpos_t"       ;;
8942                 esac
8943                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8944                 $cat > try.c <<EOCP
8945 #include <sys/types.h>
8946 #include <stdio.h>
8947 #$i_stdlib I_STDLIB
8948 #ifdef I_STDLIB
8949 #include <stdlib.h>
8950 #endif
8951 int main() {
8952     printf("%d\n", (int)sizeof($fpostype));
8953     return(0);
8954 }
8955 EOCP
8956                 set try
8957                 if eval $compile_ok; then
8958                         yyy=`$run ./try`
8959                         dflt="$lseeksize"
8960                         case "$yyy" in
8961                         '')     echo " "
8962                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8963                                 ;;
8964                         *)      fpossize=$yyy
8965                                 echo " $fpossize bytes." >&4
8966                                 ;;
8967                         esac
8968                 else
8969                         dflt="$fpossize"
8970                         echo " "
8971                         echo "(I can't compile the test program.  Guessing...)" >&4
8972                         rp="What is the size of your file positions (in bytes)?"
8973                         . ./myread
8974                         fpossize="$ans"
8975                 fi
8976                 $rm -f try.c try
8977         fi
8978         ;;
8979 esac
8980
8981 # probably will refer to
8982 #   $archlib $privlib $sitearch $sitelib $vendorarch $vendorlib
8983 need_relocation=0
8984 userelocatableinc=undef
8985
8986 case "$vendorprefix" in
8987 '')     d_vendorbin="$undef"
8988         vendorbin=''
8989         vendorbinexp=''
8990         ;;
8991 *)      d_vendorbin="$define"
8992         : determine where vendor-supplied executables go.
8993         case "$vendorbin" in
8994         '') dflt=$vendorprefix/bin ;;
8995         *)      dflt="$vendorbin" ;;
8996         esac
8997         fn=d~+
8998         rp='Pathname for the vendor-supplied executables directory?'
8999         . ./getfile
9000         vendorbin="$ans"
9001         vendorbinexp="$ansexp"
9002         ;;
9003 esac
9004 : Change installation prefix, if necessary.
9005 if $test X"$prefix" != X"$installprefix"; then
9006         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
9007 else
9008         installvendorbin="$vendorbinexp"
9009 fi
9010
9011 case "$vendorprefix" in
9012 '')     vendorhtml1dir=''
9013         vendorhtml1direxp=''
9014         ;;
9015 *)      : determine where vendor-supplied html pages go.
9016         : There is no standard location, so try to copy the previously-selected
9017         : directory structure for the core html pages.
9018         : XXX Better default suggestions would be welcome.
9019         case "$vendorhtml1dir" in
9020         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9021         *)      dflt=$vendorhtml1dir ;;
9022         esac
9023         case "$dflt" in
9024         ''|' ') dflt=none ;;
9025         esac
9026         fn=dn+~
9027         rp='Pathname for the vendor-supplied html pages?'
9028         . ./getfile
9029         vendorhtml1dir="$ans"
9030         vendorhtml1direxp="$ansexp"
9031         ;;
9032 esac
9033 : Use ' ' for none so value is preserved next time through Configure
9034 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9035 : Change installation prefix, if necessary.
9036 if $test X"$prefix" != X"$installprefix"; then
9037         installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
9038 else
9039         installvendorhtml1dir="$vendorhtml1direxp"
9040 fi
9041
9042 case "$vendorprefix" in
9043 '')     vendorhtml3dir=''
9044         vendorhtml3direxp=''
9045         ;;
9046 *)      : determine where vendor-supplied module html pages go.
9047         : There is no standard location, so try to copy the previously-selected
9048         : directory structure for the core html pages.
9049         : XXX Better default suggestions would be welcome.
9050         case "$vendorhtml3dir" in
9051         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9052         *)      dflt=$vendorhtml3dir ;;
9053         esac
9054         case "$dflt" in
9055         ''|' ') dflt=none ;;
9056         esac
9057         fn=dn+~
9058         rp='Pathname for the vendor-supplied html pages?'
9059         . ./getfile
9060         vendorhtml3dir="$ans"
9061         vendorhtml3direxp="$ansexp"
9062         ;;
9063 esac
9064 : Use ' ' for none so value is preserved next time through Configure
9065 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9066 : Change installation prefix, if necessary.
9067 if $test X"$prefix" != X"$installprefix"; then
9068         installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
9069 else
9070         installvendorhtml3dir="$vendorhtml3direxp"
9071 fi
9072
9073 case "$vendorprefix" in
9074 '')     vendorman1dir=''
9075         vendorman1direxp=''
9076         ;;
9077 *)      : determine where vendor-supplied manual pages go.
9078         case "$vendorman1dir" in
9079         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9080         *)      dflt=$vendorman1dir ;;
9081         esac
9082         case "$dflt" in
9083         ''|' ') dflt=none ;;
9084         esac
9085         fn=nd~+
9086         rp='Pathname for the vendor-supplied manual section 1 pages?'
9087         . ./getfile
9088         vendorman1dir="$ans"
9089         vendorman1direxp="$ansexp"
9090         ;;
9091 esac
9092 : Use ' ' for none so value is preserved next time through Configure
9093 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9094 : Change installation prefix, if necessary.
9095 if $test X"$prefix" != X"$installprefix"; then
9096         installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
9097 else
9098         installvendorman1dir="$vendorman1direxp"
9099 fi
9100
9101 case "$vendorprefix" in
9102 '')     vendorman3dir=''
9103         vendorman3direxp=''
9104         ;;
9105 *)      : determine where vendor-supplied module manual pages go.
9106         case "$vendorman3dir" in
9107         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9108         *)      dflt=$vendorman3dir ;;
9109         esac
9110         case "$dflt" in
9111         ''|' ') dflt=none ;;
9112         esac
9113         fn=nd~+
9114         rp='Pathname for the vendor-supplied manual section 3 pages?'
9115         . ./getfile
9116         vendorman3dir="$ans"
9117         vendorman3direxp="$ansexp"
9118         ;;
9119 esac
9120 : Use ' ' for none so value is preserved next time through Configure
9121 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9122 : Change installation prefix, if necessary.
9123 if $test X"$prefix" != X"$installprefix"; then
9124         installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
9125 else
9126         installvendorman3dir="$vendorman3direxp"
9127 fi
9128
9129 case "$vendorprefix" in
9130 '')     d_vendorscript="$undef"
9131         vendorscript=''
9132         vendorscriptexp=''
9133         ;;
9134 *)      d_vendorscript="$define"
9135         : determine where vendor-supplied scripts go.
9136         case "$vendorscript" in
9137         '')     dflt=$vendorprefix/script
9138                 $test -d $dflt || dflt=$vendorbin ;;
9139         *)  dflt="$vendorscript" ;;
9140         esac
9141         $cat <<EOM
9142
9143 The installation process will create a directory for 
9144 vendor-supplied scripts.
9145
9146 EOM
9147         fn=d~+
9148         rp='Pathname for the vendor-supplied scripts directory?'
9149         . ./getfile
9150         vendorscript="$ans"
9151         vendorscriptexp="$ansexp"
9152         ;;
9153 esac
9154 : Change installation prefix, if necessary.
9155 if $test X"$prefix" != X"$installprefix"; then
9156         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9157 else
9158         installvendorscript="$vendorscriptexp"
9159 fi
9160
9161 : see if qgcvt exists
9162 set qgcvt d_qgcvt
9163 eval $inlibc
9164
9165 echo " "
9166
9167 if $test X"$d_longdbl" = X"$define"; then
9168
9169 echo "Checking how to print long doubles..." >&4
9170
9171 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9172         $cat >try.c <<'EOCP'
9173 #include <sys/types.h>
9174 #include <stdio.h>
9175 int main() {
9176   double d = 123.456;
9177   printf("%.3f\n", d);
9178 }
9179 EOCP
9180         set try
9181         if eval $compile; then
9182                 yyy=`$run ./try`
9183                 case "$yyy" in
9184                 123.456)
9185                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9186                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9187                         echo "We will use %f."
9188                         ;;
9189                 esac
9190         fi
9191 fi
9192
9193 if $test X"$sPRIfldbl" = X; then
9194         $cat >try.c <<'EOCP'
9195 #include <sys/types.h>
9196 #include <stdio.h>
9197 int main() {
9198   long double d = 123.456;
9199   printf("%.3Lf\n", d);
9200 }
9201 EOCP
9202         set try
9203         if eval $compile; then
9204                 yyy=`$run ./try`
9205                 case "$yyy" in
9206                 123.456)
9207                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9208                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9209                         echo "We will use %Lf."
9210                         ;;
9211                 esac
9212         fi
9213 fi
9214
9215 if $test X"$sPRIfldbl" = X; then
9216         $cat >try.c <<'EOCP'
9217 #include <sys/types.h>
9218 #include <stdio.h>
9219 int main() {
9220   long double d = 123.456;
9221   printf("%.3llf\n", d);
9222 }
9223 EOCP
9224         set try
9225         if eval $compile; then
9226                 yyy=`$run ./try`
9227                 case "$yyy" in
9228                 123.456)
9229                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9230                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9231                         echo "We will use %llf."
9232                         ;;
9233                 esac
9234         fi
9235 fi
9236
9237 if $test X"$sPRIfldbl" = X; then
9238         $cat >try.c <<'EOCP'
9239 #include <sys/types.h>
9240 #include <stdio.h>
9241 int main() {
9242   long double d = 123.456;
9243   printf("%.3lf\n", d);
9244 }
9245 EOCP
9246         set try
9247         if eval $compile; then
9248                 yyy=`$run ./try`
9249                 case "$yyy" in
9250                 123.456)
9251                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9252                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9253                         echo "We will use %lf."
9254                         ;;
9255                 esac
9256         fi
9257 fi
9258
9259 if $test X"$sPRIfldbl" = X; then
9260         echo "Cannot figure out how to print long doubles." >&4
9261 else
9262         sSCNfldbl=$sPRIfldbl    # expect consistency
9263 fi
9264
9265 $rm -f try try.*
9266
9267 fi # d_longdbl
9268
9269 case "$sPRIfldbl" in
9270 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9271         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9272         d_SCNfldbl="$undef";
9273         ;;
9274 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9275         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9276         d_SCNfldbl="$define";
9277         ;;
9278 esac
9279
9280 : Check how to convert floats to strings.
9281
9282 if test "X$d_Gconvert" = X; then
9283
9284 echo " "
9285 echo "Checking for an efficient way to convert floats to strings."
9286 echo " " > try.c
9287 case "$uselongdouble" in
9288 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9289 esac
9290 case "$d_longdbl" in
9291 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9292 esac
9293 case "$d_PRIgldbl" in
9294 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9295 esac
9296 $cat >>try.c <<EOP
9297 #ifdef TRY_gconvert
9298 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9299 char *myname = "gconvert";
9300 #endif
9301 #ifdef TRY_gcvt
9302 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9303 char *myname = "gcvt";
9304 #endif
9305 #ifdef TRY_qgcvt
9306 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9307 char *myname = "qgcvt";
9308 #define DOUBLETYPE long double
9309 #endif
9310 #ifdef TRY_sprintf
9311 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9312 #ifdef HAS_PRIgldbl
9313 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9314 #else
9315 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9316 #endif
9317 #else
9318 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9319 #endif
9320 char *myname = "sprintf";
9321 #endif
9322
9323 #ifndef DOUBLETYPE
9324 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9325 #define DOUBLETYPE long double
9326 #else
9327 #define DOUBLETYPE double
9328 #endif
9329 #endif
9330
9331 #include <stdio.h>
9332
9333 #define I_STDLIB $i_stdlib
9334 #ifdef I_STDLIB
9335 #include <stdlib.h>
9336 #endif
9337
9338 int
9339 checkit(expect, got)
9340 char *expect;
9341 char *got;
9342 {
9343     if (strcmp(expect, got)) {
9344                 printf("%s oddity:  Expected %s, got %s\n",
9345                         myname, expect, got);
9346                 exit(1);
9347         }
9348 }
9349
9350 int main()
9351
9352         char buf[64]; 
9353         buf[63] = '\0';
9354
9355         /* This must be 1st test on (which?) platform */
9356         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9357         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9358         checkit("0.1", buf);
9359
9360         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9361         checkit("0.01", buf);
9362
9363         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9364         checkit("0.001", buf);
9365
9366         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9367         checkit("0.0001", buf);
9368
9369         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9370         if (strlen(buf) > 5)
9371             checkit("9e-005", buf); /* for Microsoft ?? */
9372         else
9373             checkit("9e-05", buf);
9374
9375         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9376         checkit("1", buf);
9377
9378         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9379         checkit("1.1", buf);
9380
9381         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9382         checkit("1.01", buf);
9383
9384         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9385         checkit("1.001", buf);
9386
9387         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9388         checkit("1.0001", buf);
9389
9390         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9391         checkit("1.00001", buf);
9392
9393         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9394         checkit("1.000001", buf);
9395
9396         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9397         checkit("0", buf);
9398
9399         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9400         checkit("-1", buf);
9401
9402         /* Some Linux gcvt's give 1.e+5 here. */
9403         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9404         checkit("100000", buf);
9405         
9406         /* Some Linux gcvt's give -1.e+5 here. */
9407         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9408         checkit("-100000", buf);
9409
9410         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9411         checkit("123.456", buf);
9412
9413         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9414         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9415         /* 34 should be enough to scare even long double
9416          * places into using the e notation. */
9417         if (strlen(buf) > 5)
9418             checkit("1e+034", buf); /* for Microsoft */
9419         else
9420             checkit("1e+34", buf);
9421
9422         /* For Perl, if you add additional tests here, also add them to
9423          * t/base/num.t for benefit of platforms not using Configure or
9424          * overriding d_Gconvert */
9425
9426         exit(0);
9427 }
9428 EOP
9429 : first add preferred functions to our list
9430 xxx_list=""
9431 for xxx_convert in $gconvert_preference; do
9432     case $xxx_convert in
9433     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9434     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9435     esac 
9436 done
9437 : then add any others
9438 for xxx_convert in gconvert gcvt sprintf; do
9439     case "$xxx_list" in
9440     *$xxx_convert*) ;;
9441     *) xxx_list="$xxx_list $xxx_convert" ;;
9442     esac 
9443 done
9444
9445 case "$d_longdbl$uselongdouble" in
9446 "$define$define")
9447     : again, add prefered functions to our list first
9448     xxx_ld_list=""
9449     for xxx_convert in $gconvert_ld_preference; do
9450         case $xxx_convert in
9451         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9452         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9453         esac
9454     done
9455     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9456     for xxx_convert in qgcvt sprintf $xxx_list; do
9457         case "$xxx_ld_list" in
9458         $xxx_convert*|*" $xxx_convert"*) ;;
9459         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9460         esac
9461     done
9462     : if sprintf cannot do long doubles, move it to the end
9463     if test "$d_PRIgldbl" != "$define"; then
9464         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9465     fi
9466     : if no qgcvt, remove it
9467     if test "$d_qgcvt" != "$define"; then
9468         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9469     fi
9470     : use the ld_list
9471     xxx_list="$xxx_ld_list"
9472     ;;
9473 esac
9474
9475 for xxx_convert in $xxx_list; do
9476         echo "Trying $xxx_convert..."
9477         $rm -f try try$_o
9478         set try -DTRY_$xxx_convert
9479         if eval $compile; then
9480                 echo "$xxx_convert() found." >&4
9481                 if $run ./try; then
9482                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9483                         break;
9484                 else
9485                         echo "...But $xxx_convert didn't work as I expected."
9486                         xxx_convert=''
9487                 fi
9488         else
9489                 echo "$xxx_convert NOT found." >&4
9490         fi
9491 done
9492
9493 if test X$xxx_convert = X; then
9494     echo "*** WHOA THERE!!! ***" >&4
9495     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9496     xxx_convert=sprintf
9497 fi
9498
9499 case "$xxx_convert" in
9500 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9501 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9502 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9503 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9504    "$define$define$define")
9505       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9506    "$define$define$undef")
9507       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9508    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9509    esac
9510    ;;  
9511 esac
9512
9513 fi
9514
9515 : see if _fwalk exists
9516 set fwalk d__fwalk
9517 eval $inlibc
9518
9519 : Initialize h_fcntl
9520 h_fcntl=false
9521
9522 : Initialize h_sysfile
9523 h_sysfile=false
9524
9525 : access call always available on UNIX
9526 set access d_access
9527 eval $inlibc
9528
9529 : locate the flags for 'access()'
9530 case "$d_access" in
9531 "$define")
9532         echo " "
9533         $cat >access.c <<EOCP
9534 #include <sys/types.h>
9535 #ifdef I_FCNTL
9536 #include <fcntl.h>
9537 #endif
9538 #ifdef I_SYS_FILE
9539 #include <sys/file.h>
9540 #endif
9541 #ifdef I_UNISTD
9542 #include <unistd.h>
9543 #endif
9544 #$i_stdlib I_STDLIB
9545 #ifdef I_STDLIB
9546 #include <stdlib.h>
9547 #endif
9548 int main() {
9549         exit(R_OK);
9550 }
9551 EOCP
9552         : check sys/file.h first, no particular reason here
9553         if $test `./findhdr sys/file.h` && \
9554                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9555                 h_sysfile=true;
9556                 echo "<sys/file.h> defines the *_OK access constants." >&4
9557         elif $test `./findhdr fcntl.h` && \
9558                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9559                 h_fcntl=true;
9560                 echo "<fcntl.h> defines the *_OK access constants." >&4
9561         elif $test `./findhdr unistd.h` && \
9562                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9563                 echo "<unistd.h> defines the *_OK access constants." >&4
9564         else
9565                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9566         fi
9567         ;;
9568 esac
9569 $rm -f access*
9570
9571 : see if accessx exists
9572 set accessx d_accessx
9573 eval $inlibc
9574
9575 : see if aintl exists
9576 set aintl d_aintl
9577 eval $inlibc
9578
9579 : see if alarm exists
9580 set alarm d_alarm
9581 eval $inlibc
9582
9583 : see if POSIX threads are available
9584 set pthread.h i_pthread
9585 eval $inhdr
9586
9587 : define a fucntion to check prototypes
9588 $cat > protochk <<EOSH
9589 $startsh
9590 cc="$cc"
9591 optimize="$optimize"
9592 ccflags="$ccflags"
9593 prototype="$prototype"
9594 define="$define"
9595 rm=$rm
9596 usethreads=$usethreads
9597 i_pthread=$i_pthread
9598 pthread_h_first=$pthread_h_first
9599 EOSH
9600
9601 $cat >> protochk <<'EOSH'
9602
9603 $rm -f try.c
9604 foo="$1"
9605 shift
9606 while test $# -ge 2; do
9607         case "$1" in
9608                 $define) echo "#include <$2>" >> try.c ;;
9609                 literal) echo "$2" >> try.c ;;
9610         esac
9611     # Extra magic for the benefit of systems that need pthread.h
9612     # to be included early to correctly detect threadsafe functions.
9613     # Such functions must guarantee themselves, though, that the usethreads
9614     # and i_pthread have been defined, before calling protochk.
9615     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9616         echo "#include <pthread.h>" >> try.c
9617         pthread_h_done=yes
9618     fi
9619     shift 2
9620 done
9621 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9622 cat >> try.c <<'EOCP'
9623 #ifdef CAN_PROTOTYPE
9624 #define _(args) args
9625 #else
9626 #define _(args) ()
9627 #endif
9628 EOCP
9629 echo "$foo" >> try.c
9630 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9631 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9632 status=$?
9633 $rm -f try.[co]
9634 exit $status
9635 EOSH
9636 chmod +x protochk
9637 $eunicefix protochk
9638
9639 hasproto='varname=$1; func=$2; shift; shift;
9640 while $test $# -ge 2; do
9641         case "$1" in
9642         $define) echo "#include <$2>";;
9643         esac ;
9644     shift 2;
9645 done > try.c;
9646 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9647 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9648         echo "$func() prototype found.";
9649         val="$define";
9650 else
9651         echo "$func() prototype NOT found.";
9652         val="$undef";
9653 fi;
9654 set $varname;
9655 eval $setvar;
9656 $rm -f try.c tryout.c'
9657
9658 : see if sys/types.h has to be included
9659 set sys/types.h i_systypes
9660 eval $inhdr
9661
9662 : see if sys/select.h has to be included
9663 set sys/select.h i_sysselct
9664 eval $inhdr
9665
9666 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9667 while $test $# -ge 2; do
9668         case "$1" in
9669         $define) echo "#include <$2>";;
9670         esac ;
9671     shift 2;
9672 done > try.c;
9673 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9674 set try;
9675 if eval $compile; then
9676         val="$define";
9677 else
9678         val="$undef";
9679 fi;
9680 set $varname;
9681 eval $setvar;
9682 $rm -f try.c try.o'
9683
9684 : see if we should include time.h, sys/time.h, or both
9685 echo " "
9686 if test "X$timeincl" = X; then
9687         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9688         $echo $n "I'm now running the test program...$c"
9689         $cat >try.c <<EOCP
9690 #include <sys/types.h>
9691 #ifdef I_TIME
9692 #include <time.h>
9693 #endif
9694 #ifdef I_SYSTIME
9695 #ifdef SYSTIMEKERNEL
9696 #define KERNEL
9697 #endif
9698 #include <sys/time.h>
9699 #endif
9700 #ifdef I_SYSSELECT
9701 #include <sys/select.h>
9702 #endif
9703 #$i_stdlib I_STDLIB
9704 #ifdef I_STDLIB
9705 #include <stdlib.h>
9706 #endif
9707 int main()
9708 {
9709         struct tm foo;
9710 #ifdef S_TIMEVAL
9711         struct timeval bar;
9712 #endif
9713 #ifdef S_TIMEZONE
9714         struct timezone tzp;
9715 #endif
9716         if (foo.tm_sec == foo.tm_sec)
9717                 exit(0);
9718 #ifdef S_TIMEVAL
9719         if (bar.tv_sec == bar.tv_sec)
9720                 exit(0);
9721 #endif
9722         exit(1);
9723 }
9724 EOCP
9725         flags=''
9726         for s_timezone in '-DS_TIMEZONE' ''; do
9727         sysselect=''
9728         for s_timeval in '-DS_TIMEVAL' ''; do
9729         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9730         for i_time in '' '-DI_TIME'; do
9731         for i_systime in '-DI_SYSTIME' ''; do
9732                 case "$flags" in
9733                 '') $echo $n ".$c"
9734                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9735                         if eval $compile; then
9736                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9737                                 shift
9738                                 flags="$*"
9739                                 echo " "
9740                                 $echo $n "Succeeded with $flags$c"
9741                         fi
9742                         ;;
9743                 esac
9744         done
9745         done
9746         done
9747         done
9748         done
9749         timeincl=''
9750         echo " "
9751         case "$flags" in
9752         *SYSTIMEKERNEL*) i_systimek="$define"
9753                 timeincl=`./findhdr sys/time.h`
9754                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9755         *) i_systimek="$undef";;
9756         esac
9757         case "$flags" in
9758         *I_TIME*) i_time="$define"
9759                 timeincl=`./findhdr time.h`" $timeincl"
9760                 echo "We'll include <time.h>." >&4;;
9761         *) i_time="$undef";;
9762         esac
9763         case "$flags" in
9764         *I_SYSTIME*) i_systime="$define"
9765                 timeincl=`./findhdr sys/time.h`" $timeincl"
9766                 echo "We'll include <sys/time.h>." >&4;;
9767         *) i_systime="$undef";;
9768         esac
9769         $rm -f try.c try
9770 fi
9771 : see if struct tm knows about tm_zone
9772 case "$i_systime$i_time" in
9773 *$define*) 
9774         echo " "
9775         echo "Checking to see if your struct tm has tm_zone field..." >&4
9776         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9777         eval $hasfield
9778         ;;
9779 *)      val="$undef"
9780         set d_tm_tm_zone
9781         eval $setvar
9782         ;;
9783 esac
9784 case "$d_tm_tm_zone" in
9785 "$define")      echo "Yes, it does."   ;;
9786 *)              echo "No, it doesn't." ;;
9787 esac
9788 : see if struct tm knows about tm_gmtoff
9789 case "$i_systime$i_time" in
9790 *$define*) 
9791         echo " "
9792         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9793         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9794         eval $hasfield
9795         ;;
9796 *)      val="$undef"
9797         set d_tm_tm_gmtoff
9798         eval $setvar
9799         ;;
9800 esac
9801 case "$d_tm_tm_gmtoff" in
9802 "$define")      echo "Yes, it does."   ;;
9803 *)              echo "No, it doesn't." ;;
9804 esac
9805
9806 : see if asctime_r exists
9807 set asctime_r d_asctime_r
9808 eval $inlibc
9809 case "$d_asctime_r" in
9810 "$define")
9811         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9812         case "$d_asctime_r_proto:$usethreads" in
9813         ":define")      d_asctime_r_proto=define
9814                 set d_asctime_r_proto asctime_r $hdrs
9815                 eval $hasproto ;;
9816         *)      ;;
9817         esac
9818         case "$d_asctime_r_proto" in
9819         define)
9820         case "$asctime_r_proto" in
9821         ''|0) try='char* asctime_r(const struct tm*, char*);'
9822         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9823         esac
9824         case "$asctime_r_proto" in
9825         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9826         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9827         esac
9828         case "$asctime_r_proto" in
9829         ''|0) try='int asctime_r(const struct tm*, char*);'
9830         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9831         esac
9832         case "$asctime_r_proto" in
9833         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9834         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9835         esac
9836         case "$asctime_r_proto" in
9837         ''|0)   d_asctime_r=undef
9838                 asctime_r_proto=0
9839                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9840         * )     case "$asctime_r_proto" in
9841                 REENTRANT_PROTO*) ;;
9842                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9843                 esac
9844                 echo "Prototype: $try" ;;
9845         esac
9846         ;;
9847         *)      case "$usethreads" in
9848                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9849                 esac
9850                 d_asctime_r=undef
9851                 asctime_r_proto=0
9852                 ;;
9853         esac
9854         ;;
9855 *)      asctime_r_proto=0
9856         ;;
9857 esac
9858
9859 : see if atolf exists
9860 set atolf d_atolf
9861 eval $inlibc
9862
9863 : see if atoll exists
9864 set atoll d_atoll
9865 eval $inlibc
9866
9867 : Look for GNU-cc style attribute checking
9868 case "$d_attribut" in
9869 '')
9870 echo " "
9871 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9872 $cat >attrib.c <<'EOCP'
9873 #include <stdio.h>
9874 void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
9875 EOCP
9876 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9877         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9878                 echo "Your C compiler doesn't fully support __attribute__."
9879                 val="$undef"
9880         else
9881                 echo "Your C compiler supports __attribute__."
9882                 val="$define"
9883         fi
9884 else
9885         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9886         val="$undef"
9887 fi
9888 ;;
9889 *) val="$d_attribut" ;;
9890 esac
9891 set d_attribut
9892 eval $setvar
9893 $rm -f attrib*
9894
9895 : see if bcmp exists
9896 set bcmp d_bcmp
9897 eval $inlibc
9898
9899 : see if bcopy exists
9900 set bcopy d_bcopy
9901 eval $inlibc
9902
9903 : see if this is a unistd.h system
9904 set unistd.h i_unistd
9905 eval $inhdr
9906
9907 : see if getpgrp exists
9908 set getpgrp d_getpgrp
9909 eval $inlibc
9910
9911 case "$d_getpgrp" in
9912 "$define")
9913         echo " "
9914         echo "Checking to see which flavor of getpgrp is in use..."
9915         $cat >try.c <<EOP
9916 #$i_unistd I_UNISTD
9917 #include <sys/types.h>
9918 #ifdef I_UNISTD
9919 #  include <unistd.h>
9920 #endif
9921 #$i_stdlib I_STDLIB
9922 #ifdef I_STDLIB
9923 #include <stdlib.h>
9924 #endif
9925 int main()
9926 {
9927         if (getuid() == 0) {
9928                 printf("(I see you are running Configure as super-user...)\n");
9929                 setuid(1);
9930         }
9931 #ifdef TRY_BSD_PGRP
9932         if (getpgrp(1) == 0)
9933                 exit(0);
9934 #else
9935         if (getpgrp() > 0)
9936                 exit(0);
9937 #endif
9938         exit(1);
9939 }
9940 EOP
9941         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9942                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9943                 val="$define"
9944         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9945                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9946                 val="$undef"
9947         else
9948                 echo "I can't seem to compile and run the test program."
9949                 if ./usg; then
9950                         xxx="a USG one, i.e. you use getpgrp()."
9951                 else
9952                         # SVR4 systems can appear rather BSD-ish.
9953                         case "$i_unistd" in
9954                         $undef)
9955                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9956                                 val="$define"
9957                                 ;;
9958                         $define)
9959                                 xxx="probably a USG one, i.e. you use getpgrp()."
9960                                 val="$undef"
9961                                 ;;
9962                         esac
9963                 fi
9964                 echo "Assuming your getpgrp is $xxx" >&4
9965         fi
9966         ;;
9967 *) val="$undef";;
9968 esac
9969 set d_bsdgetpgrp
9970 eval $setvar
9971 $rm -f try try.*
9972
9973 : see if setpgrp exists
9974 set setpgrp d_setpgrp
9975 eval $inlibc
9976
9977 case "$d_setpgrp" in
9978 "$define")
9979         echo " "
9980         echo "Checking to see which flavor of setpgrp is in use..."
9981         $cat >try.c <<EOP
9982 #$i_unistd I_UNISTD
9983 #include <sys/types.h>
9984 #ifdef I_UNISTD
9985 #  include <unistd.h>
9986 #endif
9987 #$i_stdlib I_STDLIB
9988 #ifdef I_STDLIB
9989 #include <stdlib.h>
9990 #endif
9991 int main()
9992 {
9993         if (getuid() == 0) {
9994                 printf("(I see you are running Configure as super-user...)\n");
9995                 setuid(1);
9996         }
9997 #ifdef TRY_BSD_PGRP
9998         if (-1 == setpgrp(1, 1))
9999                 exit(0);
10000 #else
10001         if (setpgrp() != -1)
10002                 exit(0);
10003 #endif
10004         exit(1);
10005 }
10006 EOP
10007         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10008                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10009                 val="$define"
10010         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10011                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10012                 val="$undef"
10013         else
10014                 echo "(I can't seem to compile and run the test program.)"
10015                 if ./usg; then
10016                         xxx="a USG one, i.e. you use setpgrp()."
10017                 else
10018                         # SVR4 systems can appear rather BSD-ish.
10019                         case "$i_unistd" in
10020                         $undef)
10021                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10022                                 val="$define"
10023                                 ;;
10024                         $define)
10025                                 xxx="probably a USG one, i.e. you use setpgrp()."
10026                                 val="$undef"
10027                                 ;;
10028                         esac
10029                 fi
10030                 echo "Assuming your setpgrp is $xxx" >&4
10031         fi
10032         ;;
10033 *) val="$undef";;
10034 esac
10035 set d_bsdsetpgrp
10036 eval $setvar
10037 $rm -f try try.*
10038 : see if bzero exists
10039 set bzero d_bzero
10040 eval $inlibc
10041
10042 : see if signal is declared as pointer to function returning int or void
10043 echo " "
10044 xxx=`./findhdr signal.h`
10045 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10046 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10047         echo "You have int (*signal())() instead of void." >&4
10048         val="$undef"
10049 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10050         echo "You have void (*signal())()." >&4
10051         val="$define"
10052 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10053         echo "You have int (*signal())() instead of void." >&4
10054         val="$undef"
10055 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10056         echo "You have void (*signal())()." >&4
10057         val="$define"
10058 else
10059         case "$d_voidsig" in
10060         '')
10061         echo "I can't determine whether signal handler returns void or int..." >&4
10062                 dflt=void
10063                 rp="What type does your signal handler return?"
10064                 . ./myread
10065                 case "$ans" in
10066                 v*) val="$define";;
10067                 *) val="$undef";;
10068                 esac;;
10069         "$define")
10070                 echo "As you already told me, signal handler returns void." >&4
10071                 val="$define"
10072                 ;;
10073         *)      echo "As you already told me, signal handler returns int." >&4
10074                 val="$undef"
10075                 ;;
10076         esac
10077 fi
10078 set d_voidsig
10079 eval $setvar
10080 case "$d_voidsig" in
10081 "$define") signal_t="void";;
10082 *) signal_t="int";;
10083 esac
10084 $rm -f $$.tmp
10085
10086 : check for ability to cast large floats to 32-bit ints.
10087 echo " "
10088 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10089 if $test "$intsize" -ge 4; then
10090         xxx=int
10091 else
10092         xxx=long
10093 fi
10094 $cat >try.c <<EOCP
10095 #include <stdio.h>
10096 #$i_stdlib I_STDLIB
10097 #ifdef I_STDLIB
10098 #include <stdlib.h>
10099 #endif
10100 #include <sys/types.h>
10101 #include <signal.h>
10102 $signal_t blech(s) int s; { exit(3); }
10103 int main()
10104 {
10105         $xxx i32;
10106         double f, g;
10107         int result = 0;
10108         char str[16];
10109         signal(SIGFPE, blech);
10110
10111         /* Don't let compiler optimize the test away.  Store the number 
10112            in a writable string for gcc to pass to sscanf under HP/UX.
10113         */
10114         sprintf(str, "2147483647");
10115         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10116         g = 10 * f;
10117         i32  = ($xxx) g;
10118
10119         /* x86 processors will probably give 0x8000 0000, which is a
10120            sign change.  We don't want that.  We want to mimic SPARC
10121            behavior here, which is to preserve the sign and give
10122            back 0x7fff ffff.
10123         */
10124         if (i32 != ($xxx) f)
10125                 result |= 1;
10126         exit(result);
10127 }
10128 EOCP
10129 set try
10130 if eval $compile_ok; then
10131         $run ./try
10132         yyy=$?
10133 else
10134         echo "(I can't seem to compile the test program--assuming it can't)"
10135         yyy=1
10136 fi
10137 case "$yyy" in
10138 0)      val="$define"
10139         echo "Yup, it can."
10140         ;;
10141 *)      val="$undef"
10142         echo "Nope, it can't."
10143         ;;
10144 esac
10145 set d_casti32
10146 eval $setvar
10147 $rm -f try try.*
10148
10149 : check for ability to cast negative floats to unsigned
10150 echo " "
10151 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10152 $cat >try.c <<EOCP
10153 #include <stdio.h>
10154 #$i_stdlib I_STDLIB
10155 #ifdef I_STDLIB
10156 #include <stdlib.h>
10157 #endif
10158 #include <sys/types.h>
10159 #include <signal.h>
10160 $signal_t blech(s) int s; { exit(7); }
10161 $signal_t blech_in_list(s) int s; { exit(4); }
10162 unsigned long dummy_long(p) unsigned long p; { return p; }
10163 unsigned int dummy_int(p) unsigned int p; { return p; }
10164 unsigned short dummy_short(p) unsigned short p; { return p; }
10165 int main()
10166 {
10167         double f;
10168         unsigned long along;
10169         unsigned int aint;
10170         unsigned short ashort;
10171         int result = 0;
10172         char str[16];
10173         
10174         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10175            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10176            optimized the whole file away
10177         */
10178         /* Store the number in a writable string for gcc to pass to 
10179            sscanf under HP/UX.
10180         */
10181         sprintf(str, "-123");
10182         sscanf(str, "%lf", &f);  /* f = -123.; */
10183
10184         signal(SIGFPE, blech);
10185         along = (unsigned long)f;
10186         aint = (unsigned int)f;
10187         ashort = (unsigned short)f;
10188         if (along != (unsigned long)-123)
10189                 result |= 1;
10190         if (aint != (unsigned int)-123)
10191                 result |= 1;
10192         if (ashort != (unsigned short)-123)
10193                 result |= 1;
10194         sprintf(str, "1073741824.");
10195         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10196         f = f + f;
10197         along = 0;
10198         along = (unsigned long)f;
10199         if (along != 0x80000000)
10200                 result |= 2;
10201         f -= 1.;
10202         along = 0;
10203         along = (unsigned long)f;
10204         if (along != 0x7fffffff)
10205                 result |= 1;
10206         f += 2.;
10207         along = 0;
10208         along = (unsigned long)f;
10209         if (along != 0x80000001)
10210                 result |= 2;
10211         if (result)
10212                 exit(result);
10213         signal(SIGFPE, blech_in_list);
10214         sprintf(str, "123.");
10215         sscanf(str, "%lf", &f);  /* f = 123.; */
10216         along = dummy_long((unsigned long)f);
10217         aint = dummy_int((unsigned int)f);
10218         ashort = dummy_short((unsigned short)f);
10219         if (along != (unsigned long)123)
10220                 result |= 4;
10221         if (aint != (unsigned int)123)
10222                 result |= 4;
10223         if (ashort != (unsigned short)123)
10224                 result |= 4;
10225         exit(result);
10226
10227 }
10228 EOCP
10229 set try
10230 if eval $compile_ok; then
10231         $run ./try
10232         castflags=$?
10233 else
10234         echo "(I can't seem to compile the test program--assuming it can't)"
10235         castflags=7
10236 fi
10237 case "$castflags" in
10238 0)      val="$define"
10239         echo "Yup, it can."
10240         ;;
10241 *)      val="$undef"
10242         echo "Nope, it can't."
10243         ;;
10244 esac
10245 set d_castneg
10246 eval $setvar
10247 $rm -f try.*
10248
10249 : see if vprintf exists
10250 echo " "
10251 if set vprintf val -f d_vprintf; eval $csym; $val; then
10252         echo 'vprintf() found.' >&4
10253         val="$define"
10254         $cat >try.c <<EOF
10255 #include <varargs.h>
10256 #$i_stdlib I_STDLIB
10257 #ifdef I_STDLIB
10258 #include <stdlib.h>
10259 #endif
10260
10261 int main() { xxx("foo"); }
10262
10263 xxx(va_alist)
10264 va_dcl
10265 {
10266         va_list args;
10267         char buf[10];
10268
10269         va_start(args);
10270         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10271 }
10272 EOF
10273         set try
10274         if eval $compile && $run ./try; then
10275                 echo "Your vsprintf() returns (int)." >&4
10276                 val2="$undef"
10277         else
10278                 echo "Your vsprintf() returns (char*)." >&4
10279                 val2="$define"
10280         fi
10281 else
10282         echo 'vprintf() NOT found.' >&4
10283                 val="$undef"
10284                 val2="$undef"
10285 fi
10286 $rm -f try try.*
10287 set d_vprintf
10288 eval $setvar
10289 val=$val2
10290 set d_charvspr
10291 eval $setvar
10292
10293 : see if chown exists
10294 set chown d_chown
10295 eval $inlibc
10296
10297 : see if chroot exists
10298 set chroot d_chroot
10299 eval $inlibc
10300
10301 : see if chsize exists
10302 set chsize d_chsize
10303 eval $inlibc
10304
10305 : see if class exists
10306 set class d_class
10307 eval $inlibc
10308
10309 hasstruct='varname=$1; struct=$2; shift; shift;
10310 while $test $# -ge 2; do
10311         case "$1" in
10312         $define) echo "#include <$2>";;
10313         esac ;
10314     shift 2;
10315 done > try.c;
10316 echo "int main () { struct $struct foo; }" >> try.c;
10317 set try;
10318 if eval $compile; then
10319         val="$define";
10320 else
10321         val="$undef";
10322 fi;
10323 set $varname;
10324 eval $setvar;
10325 $rm -f try.c try.o'
10326
10327 socketlib=''
10328 sockethdr=''
10329 : see whether socket exists
10330 echo " "
10331 $echo $n "Hmm... $c" >&4
10332 if set socket val -f d_socket; eval $csym; $val; then
10333         echo "Looks like you have Berkeley networking support." >&4
10334         d_socket="$define"
10335         if set setsockopt val -f; eval $csym; $val; then
10336                 d_oldsock="$undef"
10337         else
10338                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10339                 d_oldsock="$define"
10340         fi
10341 else
10342         if $contains socklib libc.list >/dev/null 2>&1; then
10343                 echo "Looks like you have Berkeley networking support." >&4
10344                 d_socket="$define"
10345                 : we will have to assume that it supports the 4.2 BSD interface
10346                 d_oldsock="$undef"
10347         else
10348                 echo "You don't have Berkeley networking in libc$_a..." >&4
10349                 if test "X$d_socket" = "X$define"; then
10350                    echo "...but you seem to believe that you have sockets." >&4
10351                 else
10352                         for net in net socket
10353                         do
10354                                 if test -f /usr/lib/lib$net$_a; then
10355                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10356                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10357                                         if $contains socket libc.list >/dev/null 2>&1; then
10358                                                 d_socket="$define"
10359                                                 socketlib="-l$net"
10360                                                 case "$net" in
10361                                                 net)
10362                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10363                                                         sockethdr="-I/usr/netinclude"
10364                                                         ;;
10365                                                 esac
10366                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10367                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10368                                                         d_oldsock="$undef"
10369                                                 else
10370                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10371                                                         d_oldsock="$define"
10372                                                 fi
10373                                                 break
10374                                         fi
10375                                 fi
10376                         done
10377                         if test "X$d_socket" != "X$define"; then
10378                            echo "or anywhere else I see." >&4
10379                            d_socket="$undef"
10380                            d_oldsock="$undef"
10381                         fi
10382                 fi
10383         fi
10384 fi
10385
10386 : see if socketpair exists
10387 set socketpair d_sockpair
10388 eval $inlibc
10389
10390
10391 echo " "
10392 echo "Checking the availability of certain socket constants..." >&4
10393 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10394         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10395         $cat >try.c <<EOF
10396 #include <sys/types.h>
10397 #include <sys/socket.h>
10398 int main() {
10399     int i = $ENUM;
10400 }
10401 EOF
10402         val="$undef"
10403         set try; if eval $compile; then
10404                 val="$define"
10405         fi
10406         set d_${enum}; eval $setvar
10407         $rm -f try.c try
10408 done
10409
10410 : see if this is a sys/uio.h system
10411 set sys/uio.h i_sysuio
10412 eval $inhdr
10413
10414
10415 echo " "
10416 echo "Checking to see if your system supports struct cmsghdr..." >&4
10417 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10418 eval $hasstruct
10419 case "$d_cmsghdr_s" in
10420 "$define")      echo "Yes, it does."   ;;
10421 *)              echo "No, it doesn't." ;;
10422 esac
10423
10424
10425 : check for const keyword
10426 echo " "
10427 echo 'Checking to see if your C compiler knows about "const"...' >&4
10428 $cat >const.c <<'EOCP'
10429 typedef struct spug { int drokk; } spug;
10430 int main()
10431 {
10432         const char *foo;
10433         const spug y;
10434 }
10435 EOCP
10436 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10437         val="$define"
10438         echo "Yup, it does."
10439 else
10440         val="$undef"
10441         echo "Nope, it doesn't."
10442 fi
10443 set d_const
10444 eval $setvar
10445
10446 : see if copysignl exists
10447 set copysignl d_copysignl
10448 eval $inlibc
10449
10450 : see if crypt exists
10451 echo " "
10452 set crypt d_crypt
10453 eval $inlibc
10454 case "$d_crypt" in
10455 $define) cryptlib='' ;;
10456 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10457                 echo 'crypt() found.' >&4
10458                 val="$define"
10459                 cryptlib=''
10460         else
10461                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10462                 if $test -z "$cryptlib"; then
10463                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10464                 else
10465                         cryptlib=-lcrypt
10466                 fi
10467                 if $test -z "$cryptlib"; then
10468                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10469                 else
10470                         cryptlib=-lcrypt
10471                 fi
10472                 if $test -z "$cryptlib"; then
10473                         cryptlib=`./loc libcrypt$_a "" $libpth`
10474                 else
10475                         cryptlib=-lcrypt
10476                 fi
10477                 if $test -z "$cryptlib"; then
10478                         echo 'crypt() NOT found.' >&4
10479                         val="$undef"
10480                 else
10481                         val="$define"
10482                 fi
10483         fi
10484         set d_crypt
10485         eval $setvar
10486         ;;
10487 esac
10488
10489 : see if this is a crypt.h system
10490 set crypt.h i_crypt
10491 eval $inhdr
10492
10493 : see if crypt_r exists
10494 set crypt_r d_crypt_r
10495 eval $inlibc
10496 case "$d_crypt_r" in
10497 "$define")
10498         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10499         case "$d_crypt_r_proto:$usethreads" in
10500         ":define")      d_crypt_r_proto=define
10501                 set d_crypt_r_proto crypt_r $hdrs
10502                 eval $hasproto ;;
10503         *)      ;;
10504         esac
10505         case "$d_crypt_r_proto" in
10506         define)
10507         case "$crypt_r_proto" in
10508         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10509         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10510         esac
10511         case "$crypt_r_proto" in
10512         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10513         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10514         esac
10515         case "$crypt_r_proto" in
10516         ''|0)   d_crypt_r=undef
10517                 crypt_r_proto=0
10518                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10519         * )     case "$crypt_r_proto" in
10520                 REENTRANT_PROTO*) ;;
10521                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10522                 esac
10523                 echo "Prototype: $try" ;;
10524         esac
10525         ;;
10526         *)      case "$usethreads" in
10527                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10528                 esac
10529                 d_crypt_r=undef
10530                 crypt_r_proto=0
10531                 ;;
10532         esac
10533         ;;
10534 *)      crypt_r_proto=0
10535         ;;
10536 esac
10537
10538 : get csh whereabouts
10539 case "$csh" in
10540 'csh') val="$undef" ;;
10541 *) val="$define" ;;
10542 esac
10543 set d_csh
10544 eval $setvar
10545 : Respect a hint or command line value for full_csh.
10546 case "$full_csh" in
10547 '') full_csh=$csh ;;
10548 esac
10549
10550 : see if ctermid_r exists
10551 set ctermid_r d_ctermid_r
10552 eval $inlibc
10553 case "$d_ctermid_r" in
10554 "$define")
10555         hdrs="$i_systypes sys/types.h define stdio.h "
10556         case "$d_ctermid_r_proto:$usethreads" in
10557         ":define")      d_ctermid_r_proto=define
10558                 set d_ctermid_r_proto ctermid_r $hdrs
10559                 eval $hasproto ;;
10560         *)      ;;
10561         esac
10562         case "$d_ctermid_r_proto" in
10563         define)
10564         case "$ctermid_r_proto" in
10565         ''|0) try='char* ctermid_r(char*);'
10566         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10567         esac
10568         case "$ctermid_r_proto" in
10569         ''|0)   d_ctermid_r=undef
10570                 ctermid_r_proto=0
10571                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10572         * )     case "$ctermid_r_proto" in
10573                 REENTRANT_PROTO*) ;;
10574                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10575                 esac
10576                 echo "Prototype: $try" ;;
10577         esac
10578         ;;
10579         *)      case "$usethreads" in
10580                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10581                 esac
10582                 d_ctermid_r=undef
10583                 ctermid_r_proto=0
10584                 ;;
10585         esac
10586         ;;
10587 *)      ctermid_r_proto=0
10588         ;;
10589 esac
10590
10591 : see if ctime_r exists
10592 set ctime_r d_ctime_r
10593 eval $inlibc
10594 case "$d_ctime_r" in
10595 "$define")
10596         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10597         case "$d_ctime_r_proto:$usethreads" in
10598         ":define")      d_ctime_r_proto=define
10599                 set d_ctime_r_proto ctime_r $hdrs
10600                 eval $hasproto ;;
10601         *)      ;;
10602         esac
10603         case "$d_ctime_r_proto" in
10604         define)
10605         case "$ctime_r_proto" in
10606         ''|0) try='char* ctime_r(const time_t*, char*);'
10607         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10608         esac
10609         case "$ctime_r_proto" in
10610         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10611         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10612         esac
10613         case "$ctime_r_proto" in
10614         ''|0) try='int ctime_r(const time_t*, char*);'
10615         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10616         esac
10617         case "$ctime_r_proto" in
10618         ''|0) try='int ctime_r(const time_t*, char*, int);'
10619         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10620         esac
10621         case "$ctime_r_proto" in
10622         ''|0)   d_ctime_r=undef
10623                 ctime_r_proto=0
10624                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10625         * )     case "$ctime_r_proto" in
10626                 REENTRANT_PROTO*) ;;
10627                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10628                 esac
10629                 echo "Prototype: $try" ;;
10630         esac
10631         ;;
10632         *)      case "$usethreads" in
10633                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10634                 esac
10635                 d_ctime_r=undef
10636                 ctime_r_proto=0
10637                 ;;
10638         esac
10639         ;;
10640 *)      ctime_r_proto=0
10641         ;;
10642 esac
10643
10644 : see if cuserid exists
10645 set cuserid d_cuserid
10646 eval $inlibc
10647
10648 : see if this is a limits.h system
10649 set limits.h i_limits
10650 eval $inhdr
10651
10652 : see if this is a float.h system
10653 set float.h i_float
10654 eval $inhdr
10655
10656 : See if number of significant digits in a double precision number is known
10657 echo " "
10658 $cat >dbl_dig.c <<EOM
10659 #$i_limits I_LIMITS
10660 #$i_float I_FLOAT
10661 #ifdef I_LIMITS
10662 #include <limits.h>
10663 #endif
10664 #ifdef I_FLOAT
10665 #include <float.h>
10666 #endif
10667 #ifdef DBL_DIG
10668 printf("Contains DBL_DIG");
10669 #endif
10670 EOM
10671 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10672 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10673         echo "DBL_DIG found." >&4
10674         val="$define"
10675 else
10676         echo "DBL_DIG NOT found." >&4
10677         val="$undef"
10678 fi
10679 $rm -f dbl_dig.?
10680 set d_dbl_dig
10681 eval $setvar
10682
10683 : see if dbm.h is available
10684 : see if dbmclose exists
10685 set dbmclose d_dbmclose
10686 eval $inlibc
10687
10688 case "$d_dbmclose" in
10689 $define)
10690         set dbm.h i_dbm
10691         eval $inhdr
10692         case "$i_dbm" in
10693         $define)
10694                 val="$undef"
10695                 set i_rpcsvcdbm
10696                 eval $setvar
10697                 ;;
10698         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10699                 eval $inhdr
10700                 ;;
10701         esac
10702         ;;
10703 *)      echo "We won't be including <dbm.h>"
10704         val="$undef"
10705         set i_dbm
10706         eval $setvar
10707         val="$undef"
10708         set i_rpcsvcdbm
10709         eval $setvar
10710         ;;
10711 esac
10712
10713 : see if prototype for dbminit is available
10714 echo " "
10715 set d_dbminitproto dbminit $i_dbm dbm.h
10716 eval $hasproto
10717
10718 : see if difftime exists
10719 set difftime d_difftime
10720 eval $inlibc
10721
10722 : see if this is a dirent system
10723 echo " "
10724 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10725         val="$define"
10726         echo "<dirent.h> found." >&4
10727 else
10728         val="$undef"
10729         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10730                 echo "<sys/dir.h> found." >&4
10731                 echo " "
10732         else
10733                 xinc=`./findhdr sys/ndir.h`
10734         fi
10735         echo "<dirent.h> NOT found." >&4
10736 fi
10737 set i_dirent
10738 eval $setvar
10739
10740 : Look for type of directory structure.
10741 echo " "
10742 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10743
10744 case "$direntrytype" in
10745 ''|' ')
10746         case "$i_dirent" in
10747         $define) guess1='struct dirent' ;;
10748         *) guess1='struct direct'  ;;
10749         esac
10750         ;;
10751 *)      guess1="$direntrytype"
10752         ;;
10753 esac
10754
10755 case "$guess1" in
10756 'struct dirent') guess2='struct direct' ;;
10757 *) guess2='struct dirent' ;;
10758 esac
10759                 
10760 if $contains "$guess1" try.c >/dev/null 2>&1; then
10761         direntrytype="$guess1"
10762         echo "Your directory entries are $direntrytype." >&4
10763 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10764         direntrytype="$guess2"
10765         echo "Your directory entries seem to be $direntrytype." >&4
10766 else
10767         echo "I don't recognize your system's directory entries." >&4
10768         rp="What type is used for directory entries on this system?"
10769         dflt="$guess1"
10770         . ./myread
10771         direntrytype="$ans"
10772 fi
10773 $rm -f try.c
10774
10775
10776 : see if the directory entry stores field length
10777 echo " "
10778 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10779 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10780         echo "Good, your directory entry keeps length information in d_namlen." >&4
10781         val="$define"
10782 else
10783         echo "Your directory entry does not know about the d_namlen field." >&4
10784         val="$undef"
10785 fi
10786 set d_dirnamlen
10787 eval $setvar
10788 $rm -f try.c
10789
10790 : see if this is an sysdir system
10791 set sys/dir.h i_sysdir
10792 eval $inhdr
10793
10794 : see if this is an sysndir system
10795 set sys/ndir.h i_sysndir
10796 eval $inhdr
10797
10798 : Look for dirfd
10799 echo " "
10800 $cat >dirfd.c <<EOM
10801 #include <stdio.h>
10802 #$i_stdlib I_STDLIB
10803 #ifdef I_STDLIB
10804 #include <stdlib.h>
10805 #endif
10806 #$i_dirent I_DIRENT             /**/
10807 #$i_sysdir I_SYS_DIR            /**/
10808 #$i_sysndir I_SYS_NDIR          /**/
10809 #$i_systypes I_SYS_TYPES        /**/
10810 #if defined(I_SYS_TYPES)
10811 #include <sys/types.h>
10812 #endif
10813 #if defined(I_DIRENT)
10814 #include <dirent.h>
10815 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10816 #include <sys/dir.h>
10817 #endif
10818 #else
10819 #ifdef I_SYS_NDIR
10820 #include <sys/ndir.h>
10821 #else
10822 #ifdef I_SYS_DIR
10823 #ifdef hp9000s500
10824 #include <ndir.h>       /* may be wrong in the future */
10825 #else
10826 #include <sys/dir.h>
10827 #endif
10828 #endif
10829 #endif
10830 #endif 
10831 int main() {
10832         DIR *dirp = opendir(".");
10833         if (dirfd(dirp) >= 0)
10834                 exit(0);
10835         else
10836                 exit(1);
10837 }
10838 EOM
10839 set dirfd
10840 if eval $compile; then
10841         val="$define"
10842 fi
10843 case "$val" in
10844 $define)        echo "dirfd() found." >&4       ;;
10845 *)              echo "dirfd() NOT found." >&4   ;;
10846 esac
10847 set d_dirfd
10848 eval $setvar
10849 $rm -f dirfd*
10850
10851 : see if dlerror exists
10852 xxx_runnm="$runnm"
10853 runnm=false
10854 set dlerror d_dlerror
10855 eval $inlibc
10856 runnm="$xxx_runnm"
10857
10858 : see if dlfcn is available
10859 set dlfcn.h i_dlfcn
10860 eval $inhdr
10861
10862 case "$usedl" in
10863 $define|y|true)
10864         $cat << EOM
10865
10866 On a few systems, the dynamically loaded modules that perl generates and uses
10867 will need a different extension than shared libs. The default will probably
10868 be appropriate.
10869
10870 EOM
10871         case "$dlext" in
10872         '')     dflt="$so" ;;
10873         *)      dflt="$dlext" ;;
10874         esac
10875         rp='What is the extension of dynamically loaded modules'
10876         . ./myread
10877         dlext="$ans"
10878         ;;
10879 *)
10880         dlext="none"
10881         ;;
10882 esac
10883
10884 : Check if dlsym need a leading underscore
10885 echo " "
10886 val="$undef"
10887
10888 case "$dlsrc" in
10889 dl_dlopen.xs)
10890         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10891         $cat >dyna.c <<'EOM'
10892 fred () { }
10893 EOM
10894
10895 $cat >fred.c<<EOM
10896
10897 #include <stdio.h>
10898 #$i_stdlib I_STDLIB
10899 #ifdef I_STDLIB
10900 #include <stdlib.h>
10901 #endif
10902 #$i_dlfcn I_DLFCN
10903 #ifdef I_DLFCN
10904 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10905 #else
10906 #include <sys/types.h>
10907 #include <nlist.h>
10908 #include <link.h>
10909 #endif
10910
10911 extern int fred() ;
10912
10913 int main()
10914 {
10915     void * handle ;
10916     void * symbol ;
10917 #ifndef RTLD_LAZY
10918     int mode = 1 ;
10919 #else
10920     int mode = RTLD_LAZY ;
10921 #endif
10922     handle = dlopen("./dyna.$dlext", mode) ;
10923     if (handle == NULL) {
10924         printf ("1\n") ;
10925         fflush (stdout) ;
10926         exit(0);
10927     }
10928     symbol = dlsym(handle, "fred") ;
10929     if (symbol == NULL) {
10930         /* try putting a leading underscore */
10931         symbol = dlsym(handle, "_fred") ;
10932         if (symbol == NULL) {
10933             printf ("2\n") ;
10934             fflush (stdout) ;
10935             exit(0);
10936         }
10937         printf ("3\n") ;
10938     }
10939     else
10940         printf ("4\n") ;
10941     fflush (stdout) ;
10942     exit(0);
10943 }
10944 EOM
10945         : Call the object file tmp-dyna.o in case dlext=o.
10946         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10947                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10948                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10949                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10950                 xxx=`$run ./fred`
10951                 case $xxx in
10952                 1)      echo "Test program failed using dlopen." >&4
10953                         echo "Perhaps you should not use dynamic loading." >&4;;
10954                 2)      echo "Test program failed using dlsym." >&4
10955                         echo "Perhaps you should not use dynamic loading." >&4;;
10956                 3)      echo "dlsym needs a leading underscore" >&4
10957                         val="$define" ;;
10958                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10959                 esac
10960         else
10961                 echo "I can't compile and run the test program." >&4
10962                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10963         fi
10964         ;;
10965 esac
10966                 
10967 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10968
10969 set d_dlsymun
10970 eval $setvar
10971
10972 : see if drand48_r exists
10973 set drand48_r d_drand48_r
10974 eval $inlibc
10975 case "$d_drand48_r" in
10976 "$define")
10977         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10978         case "$d_drand48_r_proto:$usethreads" in
10979         ":define")      d_drand48_r_proto=define
10980                 set d_drand48_r_proto drand48_r $hdrs
10981                 eval $hasproto ;;
10982         *)      ;;
10983         esac
10984         case "$d_drand48_r_proto" in
10985         define)
10986         case "$drand48_r_proto" in
10987         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10988         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10989         esac
10990         case "$drand48_r_proto" in
10991         ''|0)   d_drand48_r=undef
10992                 drand48_r_proto=0
10993                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10994         * )     case "$drand48_r_proto" in
10995                 REENTRANT_PROTO*) ;;
10996                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10997                 esac
10998                 echo "Prototype: $try" ;;
10999         esac
11000         ;;
11001         *)      case "$usethreads" in
11002                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11003                 esac
11004                 d_drand48_r=undef
11005                 drand48_r_proto=0
11006                 ;;
11007         esac
11008         ;;
11009 *)      drand48_r_proto=0
11010         ;;
11011 esac
11012
11013 : see if prototype for drand48 is available
11014 echo " "
11015 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11016 eval $hasproto
11017
11018 : see if dup2 exists
11019 set dup2 d_dup2
11020 eval $inlibc
11021
11022 : see if eaccess exists
11023 set eaccess d_eaccess
11024 eval $inlibc
11025
11026 : see if endgrent exists
11027 set endgrent d_endgrent
11028 eval $inlibc
11029
11030 : see if this is an grp system
11031 set grp.h i_grp
11032 eval $inhdr
11033
11034 case "$i_grp" in
11035 $define)
11036         xxx=`./findhdr grp.h`
11037         $cppstdin $cppflags $cppminus < $xxx >$$.h
11038
11039         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11040                 val="$define"
11041         else
11042                 val="$undef"
11043         fi
11044         set d_grpasswd
11045         eval $setvar
11046
11047         $rm -f $$.h
11048         ;;
11049 *)
11050         val="$undef";
11051         set d_grpasswd; eval $setvar
11052         ;;
11053 esac
11054
11055 : see if endgrent_r exists
11056 set endgrent_r d_endgrent_r
11057 eval $inlibc
11058 case "$d_endgrent_r" in
11059 "$define")
11060         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11061         case "$d_endgrent_r_proto:$usethreads" in
11062         ":define")      d_endgrent_r_proto=define
11063                 set d_endgrent_r_proto endgrent_r $hdrs
11064                 eval $hasproto ;;
11065         *)      ;;
11066         esac
11067         case "$d_endgrent_r_proto" in
11068         define)
11069         case "$endgrent_r_proto" in
11070         ''|0) try='int endgrent_r(FILE**);'
11071         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11072         esac
11073         case "$endgrent_r_proto" in
11074         ''|0) try='void endgrent_r(FILE**);'
11075         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11076         esac
11077         case "$endgrent_r_proto" in
11078         ''|0)   d_endgrent_r=undef
11079                 endgrent_r_proto=0
11080                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11081         * )     case "$endgrent_r_proto" in
11082                 REENTRANT_PROTO*) ;;
11083                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11084                 esac
11085                 echo "Prototype: $try" ;;
11086         esac
11087         ;;
11088         *)      case "$usethreads" in
11089                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11090                 esac
11091                 d_endgrent_r=undef
11092                 endgrent_r_proto=0
11093                 ;;
11094         esac
11095         ;;
11096 *)      endgrent_r_proto=0
11097         ;;
11098 esac
11099
11100 : see if endhostent exists
11101 set endhostent d_endhent
11102 eval $inlibc
11103
11104 : see if this is a netdb.h system
11105 set netdb.h i_netdb
11106 eval $inhdr
11107
11108 : see if endhostent_r exists
11109 set endhostent_r d_endhostent_r
11110 eval $inlibc
11111 case "$d_endhostent_r" in
11112 "$define")
11113         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11114         case "$d_endhostent_r_proto:$usethreads" in
11115         ":define")      d_endhostent_r_proto=define
11116                 set d_endhostent_r_proto endhostent_r $hdrs
11117                 eval $hasproto ;;
11118         *)      ;;
11119         esac
11120         case "$d_endhostent_r_proto" in
11121         define)
11122         case "$endhostent_r_proto" in
11123         ''|0) try='int endhostent_r(struct hostent_data*);'
11124         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11125         esac
11126         case "$endhostent_r_proto" in
11127         ''|0) try='void endhostent_r(struct hostent_data*);'
11128         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11129         esac
11130         case "$endhostent_r_proto" in
11131         ''|0)   d_endhostent_r=undef
11132                 endhostent_r_proto=0
11133                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11134         * )     case "$endhostent_r_proto" in
11135                 REENTRANT_PROTO*) ;;
11136                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11137                 esac
11138                 echo "Prototype: $try" ;;
11139         esac
11140         ;;
11141         *)      case "$usethreads" in
11142                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11143                 esac
11144                 d_endhostent_r=undef
11145                 endhostent_r_proto=0
11146                 ;;
11147         esac
11148         ;;
11149 *)      endhostent_r_proto=0
11150         ;;
11151 esac
11152
11153 : see if endnetent exists
11154 set endnetent d_endnent
11155 eval $inlibc
11156
11157 : see if endnetent_r exists
11158 set endnetent_r d_endnetent_r
11159 eval $inlibc
11160 case "$d_endnetent_r" in
11161 "$define")
11162         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11163         case "$d_endnetent_r_proto:$usethreads" in
11164         ":define")      d_endnetent_r_proto=define
11165                 set d_endnetent_r_proto endnetent_r $hdrs
11166                 eval $hasproto ;;
11167         *)      ;;
11168         esac
11169         case "$d_endnetent_r_proto" in
11170         define)
11171         case "$endnetent_r_proto" in
11172         ''|0) try='int endnetent_r(struct netent_data*);'
11173         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11174         esac
11175         case "$endnetent_r_proto" in
11176         ''|0) try='void endnetent_r(struct netent_data*);'
11177         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11178         esac
11179         case "$endnetent_r_proto" in
11180         ''|0)   d_endnetent_r=undef
11181                 endnetent_r_proto=0
11182                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11183         * )     case "$endnetent_r_proto" in
11184                 REENTRANT_PROTO*) ;;
11185                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11186                 esac
11187                 echo "Prototype: $try" ;;
11188         esac
11189         ;;
11190         *)      case "$usethreads" in
11191                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11192                 esac
11193                 d_endnetent_r=undef
11194                 endnetent_r_proto=0
11195                 ;;
11196         esac
11197         ;;
11198 *)      endnetent_r_proto=0
11199         ;;
11200 esac
11201
11202 : see if endprotoent exists
11203 set endprotoent d_endpent
11204 eval $inlibc
11205
11206 : see if endprotoent_r exists
11207 set endprotoent_r d_endprotoent_r
11208 eval $inlibc
11209 case "$d_endprotoent_r" in
11210 "$define")
11211         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11212         case "$d_endprotoent_r_proto:$usethreads" in
11213         ":define")      d_endprotoent_r_proto=define
11214                 set d_endprotoent_r_proto endprotoent_r $hdrs
11215                 eval $hasproto ;;
11216         *)      ;;
11217         esac
11218         case "$d_endprotoent_r_proto" in
11219         define)
11220         case "$endprotoent_r_proto" in
11221         ''|0) try='int endprotoent_r(struct protoent_data*);'
11222         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11223         esac
11224         case "$endprotoent_r_proto" in
11225         ''|0) try='void endprotoent_r(struct protoent_data*);'
11226         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11227         esac
11228         case "$endprotoent_r_proto" in
11229         ''|0)   d_endprotoent_r=undef
11230                 endprotoent_r_proto=0
11231                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11232         * )     case "$endprotoent_r_proto" in
11233                 REENTRANT_PROTO*) ;;
11234                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11235                 esac
11236                 echo "Prototype: $try" ;;
11237         esac
11238         ;;
11239         *)      case "$usethreads" in
11240                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11241                 esac
11242                 d_endprotoent_r=undef
11243                 endprotoent_r_proto=0
11244                 ;;
11245         esac
11246         ;;
11247 *)      endprotoent_r_proto=0
11248         ;;
11249 esac
11250
11251 : see if endpwent exists
11252 set endpwent d_endpwent
11253 eval $inlibc
11254
11255 : see if this is a pwd.h system
11256 set pwd.h i_pwd
11257 eval $inhdr
11258
11259 case "$i_pwd" in
11260 $define)
11261         xxx=`./findhdr pwd.h`
11262         $cppstdin $cppflags $cppminus < $xxx >$$.h
11263
11264         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11265                 val="$define"
11266         else
11267                 val="$undef"
11268         fi
11269         set d_pwquota
11270         eval $setvar
11271
11272         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11273                 val="$define"
11274         else
11275                 val="$undef"
11276         fi
11277         set d_pwage
11278         eval $setvar
11279
11280         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11281                 val="$define"
11282         else
11283                 val="$undef"
11284         fi
11285         set d_pwchange
11286         eval $setvar
11287
11288         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11289                 val="$define"
11290         else
11291                 val="$undef"
11292         fi
11293         set d_pwclass
11294         eval $setvar
11295
11296         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11297                 val="$define"
11298         else
11299                 val="$undef"
11300         fi
11301         set d_pwexpire
11302         eval $setvar
11303
11304         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11305                 val="$define"
11306         else
11307                 val="$undef"
11308         fi
11309         set d_pwcomment
11310         eval $setvar
11311
11312         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11313                 val="$define"
11314         else
11315                 val="$undef"
11316         fi
11317         set d_pwgecos
11318         eval $setvar
11319
11320         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11321                 val="$define"
11322         else
11323                 val="$undef"
11324         fi
11325         set d_pwpasswd
11326         eval $setvar
11327
11328         $rm -f $$.h
11329         ;;
11330 *)
11331         val="$undef"; 
11332         set d_pwquota; eval $setvar
11333         set d_pwage; eval $setvar
11334         set d_pwchange; eval $setvar
11335         set d_pwclass; eval $setvar
11336         set d_pwexpire; eval $setvar
11337         set d_pwcomment; eval $setvar
11338         set d_pwgecos; eval $setvar
11339         set d_pwpasswd; eval $setvar
11340         ;;
11341 esac
11342
11343 : see if endpwent_r exists
11344 set endpwent_r d_endpwent_r
11345 eval $inlibc
11346 case "$d_endpwent_r" in
11347 "$define")
11348         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11349         case "$d_endpwent_r_proto:$usethreads" in
11350         ":define")      d_endpwent_r_proto=define
11351                 set d_endpwent_r_proto endpwent_r $hdrs
11352                 eval $hasproto ;;
11353         *)      ;;
11354         esac
11355         case "$d_endpwent_r_proto" in
11356         define)
11357         case "$endpwent_r_proto" in
11358         ''|0) try='int endpwent_r(FILE**);'
11359         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11360         esac
11361         case "$endpwent_r_proto" in
11362         ''|0) try='void endpwent_r(FILE**);'
11363         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11364         esac
11365         case "$endpwent_r_proto" in
11366         ''|0)   d_endpwent_r=undef
11367                 endpwent_r_proto=0
11368                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11369         * )     case "$endpwent_r_proto" in
11370                 REENTRANT_PROTO*) ;;
11371                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11372                 esac
11373                 echo "Prototype: $try" ;;
11374         esac
11375         ;;
11376         *)      case "$usethreads" in
11377                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11378                 esac
11379                 d_endpwent_r=undef
11380                 endpwent_r_proto=0
11381                 ;;
11382         esac
11383         ;;
11384 *)      endpwent_r_proto=0
11385         ;;
11386 esac
11387
11388 : see if endservent exists
11389 set endservent d_endsent
11390 eval $inlibc
11391
11392 : see if endservent_r exists
11393 set endservent_r d_endservent_r
11394 eval $inlibc
11395 case "$d_endservent_r" in
11396 "$define")
11397         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11398         case "$d_endservent_r_proto:$usethreads" in
11399         ":define")      d_endservent_r_proto=define
11400                 set d_endservent_r_proto endservent_r $hdrs
11401                 eval $hasproto ;;
11402         *)      ;;
11403         esac
11404         case "$d_endservent_r_proto" in
11405         define)
11406         case "$endservent_r_proto" in
11407         ''|0) try='int endservent_r(struct servent_data*);'
11408         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11409         esac
11410         case "$endservent_r_proto" in
11411         ''|0) try='void endservent_r(struct servent_data*);'
11412         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11413         esac
11414         case "$endservent_r_proto" in
11415         ''|0)   d_endservent_r=undef
11416                 endservent_r_proto=0
11417                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11418         * )     case "$endservent_r_proto" in
11419                 REENTRANT_PROTO*) ;;
11420                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11421                 esac
11422                 echo "Prototype: $try" ;;
11423         esac
11424         ;;
11425         *)      case "$usethreads" in
11426                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11427                 esac
11428                 d_endservent_r=undef
11429                 endservent_r_proto=0
11430                 ;;
11431         esac
11432         ;;
11433 *)      endservent_r_proto=0
11434         ;;
11435 esac
11436
11437 : Locate the flags for 'open()'
11438 echo " "
11439 $cat >try.c <<EOCP
11440 #include <sys/types.h>
11441 #ifdef I_FCNTL
11442 #include <fcntl.h>
11443 #endif
11444 #ifdef I_SYS_FILE
11445 #include <sys/file.h>
11446 #endif
11447 #$i_stdlib I_STDLIB
11448 #ifdef I_STDLIB
11449 #include <stdlib.h>
11450 #endif
11451 int main() {
11452         if(O_RDONLY);
11453 #ifdef O_TRUNC
11454         exit(0);
11455 #else
11456         exit(1);
11457 #endif
11458 }
11459 EOCP
11460 : check sys/file.h first to get FREAD on Sun
11461 if $test `./findhdr sys/file.h` && \
11462                 set try -DI_SYS_FILE && eval $compile; then
11463         h_sysfile=true;
11464         echo "<sys/file.h> defines the O_* constants..." >&4
11465         if $run ./try; then
11466                 echo "and you have the 3 argument form of open()." >&4
11467                 val="$define"
11468         else
11469                 echo "but not the 3 argument form of open().  Oh, well." >&4
11470                 val="$undef"
11471         fi
11472 elif $test `./findhdr fcntl.h` && \
11473                 set try -DI_FCNTL && eval $compile; then
11474         h_fcntl=true;
11475         echo "<fcntl.h> defines the O_* constants..." >&4
11476         if $run ./try; then
11477                 echo "and you have the 3 argument form of open()." >&4
11478                 val="$define"
11479         else
11480                 echo "but not the 3 argument form of open().  Oh, well." >&4
11481                 val="$undef"
11482         fi
11483 else
11484         val="$undef"
11485         echo "I can't find the O_* constant definitions!  You got problems." >&4
11486 fi
11487 set d_open3
11488 eval $setvar
11489 $rm -f try try.*
11490
11491 : see which of string.h or strings.h is needed
11492 echo " "
11493 strings=`./findhdr string.h`
11494 if $test "$strings" && $test -r "$strings"; then
11495         echo "Using <string.h> instead of <strings.h>." >&4
11496         val="$define"
11497 else
11498         val="$undef"
11499         strings=`./findhdr strings.h`
11500         if $test "$strings" && $test -r "$strings"; then
11501                 echo "Using <strings.h> instead of <string.h>." >&4
11502         else
11503                 echo "No string header found -- You'll surely have problems." >&4
11504         fi
11505 fi
11506 set i_string
11507 eval $setvar
11508 case "$i_string" in
11509 "$undef") strings=`./findhdr strings.h`;;
11510 *)        strings=`./findhdr string.h`;;
11511 esac
11512
11513 : see if this is a sys/file.h system
11514 val=''
11515 set sys/file.h val
11516 eval $inhdr
11517
11518 : do we need to include sys/file.h ?
11519 case "$val" in
11520 "$define")
11521         echo " "
11522         if $h_sysfile; then
11523                 val="$define"
11524                 echo "We'll be including <sys/file.h>." >&4
11525         else
11526                 val="$undef"
11527                 echo "We won't be including <sys/file.h>." >&4
11528         fi
11529         ;;
11530 *)
11531         h_sysfile=false
11532         ;;
11533 esac
11534 set i_sysfile
11535 eval $setvar
11536
11537 : see if fcntl.h is there
11538 val=''
11539 set fcntl.h val
11540 eval $inhdr
11541
11542 : see if we can include fcntl.h
11543 case "$val" in
11544 "$define")
11545         echo " "
11546         if $h_fcntl; then
11547                 val="$define"
11548                 echo "We'll be including <fcntl.h>." >&4
11549         else
11550                 val="$undef"
11551                 if $h_sysfile; then
11552         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11553                 else
11554                         echo "We won't be including <fcntl.h>." >&4
11555                 fi
11556         fi
11557         ;;
11558 *)
11559         h_fcntl=false
11560         val="$undef"
11561         ;;
11562 esac
11563 set i_fcntl
11564 eval $setvar
11565
11566 : check for non-blocking I/O stuff
11567 case "$h_sysfile" in
11568 true) echo "#include <sys/file.h>" > head.c;;
11569 *)
11570        case "$h_fcntl" in
11571        true) echo "#include <fcntl.h>" > head.c;;
11572        *) echo "#include <sys/fcntl.h>" > head.c;;
11573        esac
11574        ;;
11575 esac
11576 echo " "
11577 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11578 case "$o_nonblock" in
11579 '')
11580         $cat head.c > try.c
11581         $cat >>try.c <<EOCP
11582 #include <stdio.h>
11583 #$i_stdlib I_STDLIB
11584 #ifdef I_STDLIB
11585 #include <stdlib.h>
11586 #endif
11587 #$i_fcntl I_FCNTL
11588 #ifdef I_FCNTL
11589 #include <fcntl.h>
11590 #endif
11591 int main() {
11592 #ifdef O_NONBLOCK
11593         printf("O_NONBLOCK\n");
11594         exit(0);
11595 #endif
11596 #ifdef O_NDELAY
11597         printf("O_NDELAY\n");
11598         exit(0);
11599 #endif
11600 #ifdef FNDELAY
11601         printf("FNDELAY\n");
11602         exit(0);
11603 #endif
11604         exit(0);
11605 }
11606 EOCP
11607         set try
11608         if eval $compile_ok; then
11609                 o_nonblock=`$run ./try`
11610                 case "$o_nonblock" in
11611                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11612                 *) echo "Seems like we can use $o_nonblock.";;
11613                 esac
11614         else
11615                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11616         fi
11617         ;;
11618 *) echo "Using $hint value $o_nonblock.";;
11619 esac
11620 $rm -f try try.* .out core
11621
11622 echo " "
11623 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11624 case "$eagain" in
11625 '')
11626         $cat head.c > try.c
11627         $cat >>try.c <<EOCP
11628 #include <errno.h>
11629 #include <sys/types.h>
11630 #include <signal.h>
11631 #include <stdio.h> 
11632 #$i_stdlib I_STDLIB
11633 #ifdef I_STDLIB
11634 #include <stdlib.h>
11635 #endif
11636 #$i_fcntl I_FCNTL
11637 #ifdef I_FCNTL
11638 #include <fcntl.h>
11639 #endif
11640 #define MY_O_NONBLOCK $o_nonblock
11641 #ifndef errno  /* XXX need better Configure test */
11642 extern int errno;
11643 #endif
11644 #$i_unistd I_UNISTD
11645 #ifdef I_UNISTD
11646 #include <unistd.h>
11647 #endif
11648 #$i_string I_STRING
11649 #ifdef I_STRING
11650 #include <string.h>
11651 #else
11652 #include <strings.h>
11653 #endif
11654 $signal_t blech(x) int x; { exit(3); }
11655 EOCP
11656         $cat >> try.c <<'EOCP'
11657 int main()
11658 {
11659         int pd[2];
11660         int pu[2];
11661         char buf[1];
11662         char string[100];
11663
11664         pipe(pd);       /* Down: child -> parent */
11665         pipe(pu);       /* Up: parent -> child */
11666         if (0 != fork()) {
11667                 int ret;
11668                 close(pd[1]);   /* Parent reads from pd[0] */
11669                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11670 #ifdef F_SETFL
11671                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11672                         exit(1);
11673 #else
11674                 exit(4);
11675 #endif
11676                 signal(SIGALRM, blech);
11677                 alarm(5);
11678                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11679                         exit(2);
11680                 sprintf(string, "%d\n", ret);
11681                 write(2, string, strlen(string));
11682                 alarm(0);
11683 #ifdef EAGAIN
11684                 if (errno == EAGAIN) {
11685                         printf("EAGAIN\n");
11686                         goto ok;
11687                 }
11688 #endif
11689 #ifdef EWOULDBLOCK
11690                 if (errno == EWOULDBLOCK)
11691                         printf("EWOULDBLOCK\n");
11692 #endif
11693         ok:
11694                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11695                 sleep(2);                               /* Give it time to close our pipe */
11696                 alarm(5);
11697                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11698                 alarm(0);
11699                 sprintf(string, "%d\n", ret);
11700                 write(4, string, strlen(string));
11701                 exit(0);
11702         }
11703
11704         close(pd[0]);                   /* We write to pd[1] */
11705         close(pu[1]);                   /* We read from pu[0] */
11706         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11707         close(pd[1]);                   /* Pipe pd is now fully closed! */
11708         exit(0);                                /* Bye bye, thank you for playing! */
11709 }
11710 EOCP
11711         set try
11712         if eval $compile_ok; then
11713                 echo "$startsh" >mtry
11714                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11715                 chmod +x mtry
11716                 ./mtry >/dev/null 2>&1
11717                 case $? in
11718                 0) eagain=`$cat try.out`;;
11719                 1) echo "Could not perform non-blocking setting!";;
11720                 2) echo "I did a successful read() for something that was not there!";;
11721                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11722                 4) echo "Could not find F_SETFL!";;
11723                 *) echo "Something terribly wrong happened during testing.";;
11724                 esac
11725                 rd_nodata=`$cat try.ret`
11726                 echo "A read() system call with no data present returns $rd_nodata."
11727                 case "$rd_nodata" in
11728                 0|-1) ;;
11729                 *)
11730                         echo "(That's peculiar, fixing that to be -1.)"
11731                         rd_nodata=-1
11732                         ;;
11733                 esac
11734                 case "$eagain" in
11735                 '')
11736                         echo "Forcing errno EAGAIN on read() with no data available."
11737                         eagain=EAGAIN
11738                         ;;
11739                 *)
11740                         echo "Your read() sets errno to $eagain when no data is available."
11741                         ;;
11742                 esac
11743                 status=`$cat try.err`
11744                 case "$status" in
11745                 0) echo "And it correctly returns 0 to signal EOF.";;
11746                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11747                 *) echo "However, your read() returns '$status' on EOF??";;
11748                 esac
11749                 val="$define"
11750                 if test "$status" = "$rd_nodata"; then
11751                         echo "WARNING: you can't distinguish between EOF and no data!"
11752                         val="$undef"
11753                 fi
11754         else
11755                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11756                 eagain=EAGAIN
11757         fi
11758         set d_eofnblk
11759         eval $setvar
11760         ;;
11761 *)
11762         echo "Using $hint value $eagain."
11763         echo "Your read() returns $rd_nodata when no data is present."
11764         case "$d_eofnblk" in
11765         "$define") echo "And you can see EOF because read() returns 0.";;
11766         "$undef") echo "But you can't see EOF status from read() returned value.";;
11767         *)
11768                 echo "(Assuming you can't see EOF status from read anyway.)"
11769                 d_eofnblk=$undef
11770                 ;;
11771         esac
11772         ;;
11773 esac
11774 $rm -f try try.* .out core head.c mtry
11775
11776 : see if _ptr and _cnt from stdio act std
11777 echo " "
11778
11779 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11780         echo "(Looks like you have stdio.h from BSD.)"
11781         case "$stdio_ptr" in
11782         '') stdio_ptr='((fp)->_p)'
11783                 ptr_lval=$define
11784                 ;;
11785         *)      ptr_lval=$d_stdio_ptr_lval;;
11786         esac
11787         case "$stdio_cnt" in
11788         '') stdio_cnt='((fp)->_r)'
11789                 cnt_lval=$define
11790                 ;;
11791         *)      cnt_lval=$d_stdio_cnt_lval;;
11792         esac
11793         case "$stdio_base" in
11794         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11795         esac
11796         case "$stdio_bufsiz" in
11797         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11798         esac
11799 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11800         echo "(Looks like you have stdio.h from Linux.)"
11801         case "$stdio_ptr" in
11802         '') stdio_ptr='((fp)->_IO_read_ptr)'
11803                 ptr_lval=$define
11804                 ;;
11805         *)      ptr_lval=$d_stdio_ptr_lval;;
11806         esac
11807         case "$stdio_cnt" in
11808         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11809                 cnt_lval=$undef
11810                 ;;
11811         *)      cnt_lval=$d_stdio_cnt_lval;;
11812         esac
11813         case "$stdio_base" in
11814         '') stdio_base='((fp)->_IO_read_base)';;
11815         esac
11816         case "$stdio_bufsiz" in
11817         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11818         esac
11819 else
11820         case "$stdio_ptr" in
11821         '') stdio_ptr='((fp)->_ptr)'
11822                 ptr_lval=$define
11823                 ;;
11824         *)      ptr_lval=$d_stdio_ptr_lval;;
11825         esac
11826         case "$stdio_cnt" in
11827         '') stdio_cnt='((fp)->_cnt)'
11828                 cnt_lval=$define
11829                 ;;
11830         *)      cnt_lval=$d_stdio_cnt_lval;;
11831         esac
11832         case "$stdio_base" in
11833         '') stdio_base='((fp)->_base)';;
11834         esac
11835         case "$stdio_bufsiz" in
11836         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11837         esac
11838 fi
11839
11840 : test whether _ptr and _cnt really work
11841 echo "Checking how std your stdio is..." >&4
11842 $cat >try.c <<EOP
11843 #include <stdio.h>
11844 #$i_stdlib I_STDLIB
11845 #ifdef I_STDLIB
11846 #include <stdlib.h>
11847 #endif
11848 #define FILE_ptr(fp)    $stdio_ptr
11849 #define FILE_cnt(fp)    $stdio_cnt
11850 int main() {
11851         FILE *fp = fopen("try.c", "r");
11852         char c = getc(fp);
11853         if (
11854                 18 <= FILE_cnt(fp) &&
11855                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11856         )
11857                 exit(0);
11858         exit(1);
11859 }
11860 EOP
11861 val="$undef"
11862 set try
11863 if eval $compile && $to try.c; then
11864         if $run ./try; then
11865                 echo "Your stdio acts pretty std."
11866                 val="$define"
11867         else
11868                 echo "Your stdio isn't very std."
11869         fi
11870 else
11871         echo "Your stdio doesn't appear very std."
11872 fi
11873 $rm -f try.c try
11874
11875 # glibc 2.2.90 and above apparently change stdio streams so Perl's
11876 # direct buffer manipulation no longer works.  The Configure tests
11877 # should be changed to correctly detect this, but until then,
11878 # the following check should at least let perl compile and run.
11879 # (This quick fix should be updated before 5.8.1.)
11880 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
11881 # A. Dougherty, June 3, 2002.
11882 case "$d_gnulibc" in
11883 $define)
11884         case "$gnulibc_version" in
11885         2.[01]*)  ;;
11886         2.2) ;;
11887         2.2.[0-9]) ;;
11888         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11889                 val="$undef"
11890                 ;;
11891         esac
11892         ;;
11893 esac
11894 set d_stdstdio
11895 eval $setvar
11896
11897 : Can _ptr be used as an lvalue?
11898 case "$d_stdstdio$ptr_lval" in
11899 $define$define) val=$define ;;
11900 *) val=$undef ;;
11901 esac
11902 set d_stdio_ptr_lval
11903 eval $setvar
11904
11905 : Can _cnt be used as an lvalue?
11906 case "$d_stdstdio$cnt_lval" in
11907 $define$define) val=$define ;;
11908 *) val=$undef ;;
11909 esac
11910 set d_stdio_cnt_lval
11911 eval $setvar
11912
11913
11914 : test whether setting _ptr sets _cnt as a side effect
11915 d_stdio_ptr_lval_sets_cnt="$undef"
11916 d_stdio_ptr_lval_nochange_cnt="$undef"
11917 case "$d_stdio_ptr_lval$d_stdstdio" in
11918 $define$define)
11919         echo "Checking to see what happens if we set the stdio ptr..." >&4
11920 $cat >try.c <<EOP
11921 #include <stdio.h>
11922 /* Can we scream? */
11923 /* Eat dust sed :-) */
11924 /* In the buffer space, no one can hear you scream. */
11925 #$i_stdlib I_STDLIB
11926 #ifdef I_STDLIB
11927 #include <stdlib.h>
11928 #endif
11929 #define FILE_ptr(fp)    $stdio_ptr
11930 #define FILE_cnt(fp)    $stdio_cnt
11931 #include <sys/types.h>
11932 int main() {
11933         FILE *fp = fopen("try.c", "r");
11934         int c;
11935         char *ptr;
11936         size_t cnt;
11937         if (!fp) {
11938             puts("Fail even to read");
11939             exit(1);
11940         }
11941         c = getc(fp); /* Read away the first # */
11942         if (c == EOF) {
11943             puts("Fail even to read");
11944             exit(1);
11945         }
11946         if (!(
11947                 18 <= FILE_cnt(fp) &&
11948                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11949         )) {
11950                 puts("Fail even to read");
11951                 exit (1);
11952         }
11953         ptr = (char*) FILE_ptr(fp);
11954         cnt = (size_t)FILE_cnt(fp);
11955
11956         FILE_ptr(fp) += 42;
11957
11958         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11959                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11960                 exit (1);
11961         }
11962         if (FILE_cnt(fp) <= 20) {
11963                 printf ("Fail (<20 chars to test)");
11964                 exit (1);
11965         }
11966         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11967                 puts("Fail compare");
11968                 exit (1);
11969         }
11970         if (cnt == FILE_cnt(fp)) {
11971                 puts("Pass_unchanged");
11972                 exit (0);
11973         }       
11974         if (FILE_cnt(fp) == (cnt - 42)) {
11975                 puts("Pass_changed");
11976                 exit (0);
11977         }
11978         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11979         return 1;
11980
11981 }
11982 EOP
11983         set try
11984         if eval $compile && $to try.c; then
11985                 case `$run ./try` in
11986                 Pass_changed)
11987                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11988                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11989                 Pass_unchanged)
11990                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11991                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11992                 Fail*)
11993                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11994                 *)
11995                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11996         esac
11997         else
11998                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11999         fi
12000         $rm -f try.c try
12001         ;;
12002 esac
12003
12004 : see if _base is also standard
12005 val="$undef"
12006 case "$d_stdstdio" in
12007 $define)
12008         $cat >try.c <<EOP
12009 #include <stdio.h>
12010 #$i_stdlib I_STDLIB
12011 #ifdef I_STDLIB
12012 #include <stdlib.h>
12013 #endif
12014 #define FILE_base(fp)   $stdio_base
12015 #define FILE_bufsiz(fp) $stdio_bufsiz
12016 int main() {
12017         FILE *fp = fopen("try.c", "r");
12018         char c = getc(fp);
12019         if (
12020                 19 <= FILE_bufsiz(fp) &&
12021                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12022         )
12023                 exit(0);
12024         exit(1);
12025 }
12026 EOP
12027         set try
12028         if eval $compile && $to try.c; then
12029                 if $run ./try; then
12030                         echo "And its _base field acts std."
12031                         val="$define"
12032                 else
12033                         echo "But its _base field isn't std."
12034                 fi
12035         else
12036                 echo "However, it seems to be lacking the _base field."
12037         fi
12038         $rm -f try.c try
12039         ;;
12040 esac
12041 set d_stdiobase
12042 eval $setvar
12043
12044 : see if fast_stdio exists
12045 val="$undef"
12046 case "$d_stdstdio:$d_stdio_ptr_lval" in
12047 "$define:$define")
12048         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12049         *$define*)
12050                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12051                 val="$define"
12052                 ;;
12053         esac
12054         ;;
12055 esac
12056 set d_faststdio
12057 eval $setvar
12058
12059
12060
12061 : see if fchdir exists
12062 set fchdir d_fchdir
12063 eval $inlibc
12064
12065 : see if fchmod exists
12066 set fchmod d_fchmod
12067 eval $inlibc
12068
12069 : see if fchown exists
12070 set fchown d_fchown
12071 eval $inlibc
12072
12073 : see if this is an fcntl system
12074 set fcntl d_fcntl
12075 eval $inlibc
12076
12077 echo " "
12078 : See if fcntl-based locking works.
12079 $cat >try.c <<EOCP
12080 #$i_stdlib I_STDLIB
12081 #ifdef I_STDLIB
12082 #include <stdlib.h>
12083 #endif
12084 #include <unistd.h>
12085 #include <fcntl.h>
12086 #include <signal.h>
12087 $signal_t blech(x) int x; { exit(3); }
12088 int main() {
12089 #if defined(F_SETLK) && defined(F_SETLKW)
12090      struct flock flock;
12091      int retval, fd;
12092      fd = open("try.c", O_RDONLY);
12093      flock.l_type = F_RDLCK;
12094      flock.l_whence = SEEK_SET;
12095      flock.l_start = flock.l_len = 0;
12096      signal(SIGALRM, blech);
12097      alarm(10);
12098      retval = fcntl(fd, F_SETLK, &flock);
12099      close(fd);
12100      (retval < 0 ? exit(2) : exit(0));
12101 #else
12102      exit(2);
12103 #endif
12104 }
12105 EOCP
12106 echo "Checking if fcntl-based file locking works... "
12107 case "$d_fcntl" in
12108 "$define")
12109         set try
12110         if eval $compile_ok; then
12111                 if $run ./try; then
12112                         echo "Yes, it seems to work."
12113                         val="$define"
12114                 else
12115                         echo "Nope, it didn't work."
12116                         val="$undef"
12117                         case "$?" in
12118                         3) $cat >&4 <<EOM
12119 ***
12120 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12121 *** This is (almost) impossible.
12122 *** If your NFS lock daemons are not feeling well, something like
12123 *** this may happen, please investigate.  Cannot continue, aborting.
12124 ***
12125 EOM
12126                                 exit 1
12127                                 ;;
12128                         esac
12129                 fi
12130         else
12131                 echo "I'm unable to compile the test program, so I'll assume not."
12132                 val="$undef"
12133         fi
12134         ;;
12135 *) val="$undef";
12136         echo "Nope, since you don't even have fcntl()."
12137         ;;
12138 esac
12139 set d_fcntl_can_lock
12140 eval $setvar
12141 $rm -f try*
12142
12143
12144 : check for fd_set items
12145 $cat <<EOM
12146
12147 Checking to see how well your C compiler handles fd_set and friends ...
12148 EOM
12149 $cat >try.c <<EOCP
12150 #$i_stdlib I_STDLIB
12151 #ifdef I_STDLIB
12152 #include <stdlib.h>
12153 #endif
12154 #$i_systime I_SYS_TIME
12155 #$i_sysselct I_SYS_SELECT
12156 #$d_socket HAS_SOCKET
12157 #include <sys/types.h>
12158 #ifdef HAS_SOCKET
12159 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12160 #endif
12161 #ifdef I_SYS_TIME
12162 #include <sys/time.h>
12163 #endif
12164 #ifdef I_SYS_SELECT
12165 #include <sys/select.h>
12166 #endif
12167 int main() {
12168         fd_set fds;
12169
12170 #ifdef TRYBITS
12171         if(fds.fds_bits);
12172 #endif
12173
12174 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12175         exit(0);
12176 #else
12177         exit(1);
12178 #endif
12179 }
12180 EOCP
12181 set try -DTRYBITS
12182 if eval $compile; then
12183         d_fds_bits="$define"
12184         d_fd_set="$define"
12185         echo "Well, your system knows about the normal fd_set typedef..." >&4
12186         if $run ./try; then
12187                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12188                 d_fd_macros="$define"
12189         else
12190                 $cat >&4 <<'EOM'
12191 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12192 EOM
12193                 d_fd_macros="$undef"
12194         fi
12195 else
12196         $cat <<'EOM'
12197 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12198 EOM
12199         set try
12200         if eval $compile; then
12201                 d_fds_bits="$undef"
12202                 d_fd_set="$define"
12203                 echo "Well, your system has some sort of fd_set available..." >&4
12204                 if $run ./try; then
12205                         echo "and you have the normal fd_set macros." >&4
12206                         d_fd_macros="$define"
12207                 else
12208                         $cat <<'EOM'
12209 but not the normal fd_set macros!  Gross!  More work for me...
12210 EOM
12211                         d_fd_macros="$undef"
12212                 fi
12213         else
12214         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12215                 d_fd_set="$undef"
12216                 d_fds_bits="$undef"
12217                 d_fd_macros="$undef"
12218         fi
12219 fi
12220 $rm -f try try.*
12221
12222 : see if fgetpos exists
12223 set fgetpos d_fgetpos
12224 eval $inlibc
12225
12226 : see if finite exists
12227 set finite d_finite
12228 eval $inlibc
12229
12230 : see if finitel exists
12231 set finitel d_finitel
12232 eval $inlibc
12233
12234 : see if flock exists
12235 set flock d_flock
12236 eval $inlibc
12237
12238 : see if prototype for flock is available
12239 echo " "
12240 set d_flockproto flock $i_sysfile sys/file.h
12241 eval $hasproto
12242
12243 : see if fork exists
12244 set fork d_fork
12245 eval $inlibc
12246
12247 : see if fp_class exists
12248 set fp_class d_fp_class
12249 eval $inlibc
12250
12251 : see if pathconf exists
12252 set pathconf d_pathconf
12253 eval $inlibc
12254
12255 : see if fpathconf exists
12256 set fpathconf d_fpathconf
12257 eval $inlibc
12258
12259 : see if fpclass exists
12260 set fpclass d_fpclass
12261 eval $inlibc
12262
12263 : see if fpclassify exists
12264 set fpclassify d_fpclassify
12265 eval $inlibc
12266
12267 : see if fpclassl exists
12268 set fpclassl d_fpclassl
12269 eval $inlibc
12270
12271
12272 : check for fpos64_t
12273 echo " "
12274 echo "Checking to see if you have fpos64_t..." >&4
12275 $cat >try.c <<EOCP
12276 #include <stdio.h>
12277 int main() { fpos64_t x = 7; }
12278 EOCP
12279 set try
12280 if eval $compile; then
12281         val="$define"
12282         echo "You have fpos64_t."
12283 else
12284         val="$undef"
12285         echo "You do not have fpos64_t."
12286         case "$fpossize" in
12287         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12288         esac
12289 fi
12290 $rm -f try.* try
12291 set d_fpos64_t
12292 eval $setvar
12293
12294 : see if frexpl exists
12295 set frexpl d_frexpl
12296 eval $inlibc
12297
12298 : see if this is a sys/param system
12299 set sys/param.h i_sysparam
12300 eval $inhdr
12301
12302 : see if this is a sys/mount.h system
12303 set sys/mount.h i_sysmount
12304 eval $inhdr
12305
12306
12307 echo " "
12308 echo "Checking to see if your system supports struct fs_data..." >&4
12309 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12310 eval $hasstruct
12311 case "$d_fs_data_s" in
12312 "$define")      echo "Yes, it does."   ;;
12313 *)              echo "No, it doesn't." ;;
12314 esac
12315
12316 : see if fseeko exists
12317 set fseeko d_fseeko
12318 eval $inlibc
12319 case "$longsize" in
12320 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12321 esac
12322
12323 : see if fsetpos exists
12324 set fsetpos d_fsetpos
12325 eval $inlibc
12326
12327
12328 : see if fstatfs exists
12329 set fstatfs d_fstatfs
12330 eval $inlibc
12331
12332
12333 : see if statvfs exists
12334 set statvfs d_statvfs
12335 eval $inlibc
12336
12337 : see if fstatvfs exists
12338 set fstatvfs d_fstatvfs
12339 eval $inlibc
12340
12341
12342 : see if fsync exists
12343 set fsync d_fsync
12344 eval $inlibc
12345
12346 : see if ftello exists
12347 set ftello d_ftello
12348 eval $inlibc
12349 case "$longsize" in
12350 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12351 esac
12352
12353 : see if getcwd exists
12354 set getcwd d_getcwd
12355 eval $inlibc
12356
12357 : see if getespwnam exists
12358 set getespwnam d_getespwnam
12359 eval $inlibc
12360
12361
12362 : see if getfsstat exists
12363 set getfsstat d_getfsstat
12364 eval $inlibc
12365
12366 : see if getgrent exists
12367 set getgrent d_getgrent
12368 eval $inlibc
12369
12370 : see if getgrent_r exists
12371 set getgrent_r d_getgrent_r
12372 eval $inlibc
12373 case "$d_getgrent_r" in
12374 "$define")
12375         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12376         case "$d_getgrent_r_proto:$usethreads" in
12377         ":define")      d_getgrent_r_proto=define
12378                 set d_getgrent_r_proto getgrent_r $hdrs
12379                 eval $hasproto ;;
12380         *)      ;;
12381         esac
12382         case "$d_getgrent_r_proto" in
12383         define)
12384         case "$getgrent_r_proto" in
12385         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12386         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12387         esac
12388         case "$getgrent_r_proto" in
12389         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12390         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12391         esac
12392         case "$getgrent_r_proto" in
12393         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12394         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12395         esac
12396         case "$getgrent_r_proto" in
12397         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12398         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12399         esac
12400         case "$getgrent_r_proto" in
12401         ''|0) try='int getgrent_r(struct group*, char*, int);'
12402         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12403         esac
12404         case "$getgrent_r_proto" in
12405         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12406         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12407         esac
12408         case "$getgrent_r_proto" in
12409         ''|0)   d_getgrent_r=undef
12410                 getgrent_r_proto=0
12411                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12412         * )     case "$getgrent_r_proto" in
12413                 REENTRANT_PROTO*) ;;
12414                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12415                 esac
12416                 echo "Prototype: $try" ;;
12417         esac
12418         ;;
12419         *)      case "$usethreads" in
12420                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12421                 esac
12422                 d_getgrent_r=undef
12423                 getgrent_r_proto=0
12424                 ;;
12425         esac
12426         ;;
12427 *)      getgrent_r_proto=0
12428         ;;
12429 esac
12430
12431 : see if getgrgid_r exists
12432 set getgrgid_r d_getgrgid_r
12433 eval $inlibc
12434 case "$d_getgrgid_r" in
12435 "$define")
12436         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12437         case "$d_getgrgid_r_proto:$usethreads" in
12438         ":define")      d_getgrgid_r_proto=define
12439                 set d_getgrgid_r_proto getgrgid_r $hdrs
12440                 eval $hasproto ;;
12441         *)      ;;
12442         esac
12443         case "$d_getgrgid_r_proto" in
12444         define)
12445         case "$getgrgid_r_proto" in
12446         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12447         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12448         esac
12449         case "$getgrgid_r_proto" in
12450         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12451         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12452         esac
12453         case "$getgrgid_r_proto" in
12454         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12455         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12456         esac
12457         case "$getgrgid_r_proto" in
12458         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12459         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12460         esac
12461         case "$getgrgid_r_proto" in
12462         ''|0)   d_getgrgid_r=undef
12463                 getgrgid_r_proto=0
12464                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12465         * )     case "$getgrgid_r_proto" in
12466                 REENTRANT_PROTO*) ;;
12467                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12468                 esac
12469                 echo "Prototype: $try" ;;
12470         esac
12471         ;;
12472         *)      case "$usethreads" in
12473                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12474                 esac
12475                 d_getgrgid_r=undef
12476                 getgrgid_r_proto=0
12477                 ;;
12478         esac
12479         ;;
12480 *)      getgrgid_r_proto=0
12481         ;;
12482 esac
12483
12484 : see if getgrnam_r exists
12485 set getgrnam_r d_getgrnam_r
12486 eval $inlibc
12487 case "$d_getgrnam_r" in
12488 "$define")
12489         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12490         case "$d_getgrnam_r_proto:$usethreads" in
12491         ":define")      d_getgrnam_r_proto=define
12492                 set d_getgrnam_r_proto getgrnam_r $hdrs
12493                 eval $hasproto ;;
12494         *)      ;;
12495         esac
12496         case "$d_getgrnam_r_proto" in
12497         define)
12498         case "$getgrnam_r_proto" in
12499         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12500         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12501         esac
12502         case "$getgrnam_r_proto" in
12503         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12504         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12505         esac
12506         case "$getgrnam_r_proto" in
12507         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12508         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12509         esac
12510         case "$getgrnam_r_proto" in
12511         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12512         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12513         esac
12514         case "$getgrnam_r_proto" in
12515         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12516         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12517         esac
12518         case "$getgrnam_r_proto" in
12519         ''|0)   d_getgrnam_r=undef
12520                 getgrnam_r_proto=0
12521                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12522         * )     case "$getgrnam_r_proto" in
12523                 REENTRANT_PROTO*) ;;
12524                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12525                 esac
12526                 echo "Prototype: $try" ;;
12527         esac
12528         ;;
12529         *)      case "$usethreads" in
12530                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12531                 esac
12532                 d_getgrnam_r=undef
12533                 getgrnam_r_proto=0
12534                 ;;
12535         esac
12536         ;;
12537 *)      getgrnam_r_proto=0
12538         ;;
12539 esac
12540
12541 : see if gethostbyaddr exists
12542 set gethostbyaddr d_gethbyaddr
12543 eval $inlibc
12544
12545 : see if gethostbyname exists
12546 set gethostbyname d_gethbyname
12547 eval $inlibc
12548
12549 : see if gethostent exists
12550 set gethostent d_gethent
12551 eval $inlibc
12552
12553 : see how we will look up host name
12554 echo " "
12555 call=''
12556 if set gethostname val -f d_gethname; eval $csym; $val; then
12557         echo 'gethostname() found.' >&4
12558         d_gethname="$define"
12559         call=gethostname
12560 fi
12561 if set uname val -f d_uname; eval $csym; $val; then
12562         if ./xenix; then
12563                 $cat <<'EOM'
12564 uname() was found, but you're running xenix, and older versions of xenix
12565 have a broken uname(). If you don't really know whether your xenix is old
12566 enough to have a broken system call, use the default answer.
12567
12568 EOM
12569                 dflt=y
12570                 case "$d_uname" in
12571                 "$define") dflt=n;;
12572                 esac
12573                 rp='Is your uname() broken?'
12574                 . ./myread
12575                 case "$ans" in
12576                 n*) d_uname="$define"; call=uname;;
12577                 esac
12578         else
12579                 echo 'uname() found.' >&4
12580                 d_uname="$define"
12581                 case "$call" in
12582                 '') call=uname ;;
12583                 esac
12584         fi
12585 fi
12586 case "$d_gethname" in
12587 '') d_gethname="$undef";;
12588 esac
12589 case "$d_uname" in
12590 '') d_uname="$undef";;
12591 esac
12592 case "$d_uname$d_gethname" in
12593 *define*)
12594         dflt=n
12595         cat <<EOM
12596  
12597 Every now and then someone has a $call() that lies about the hostname
12598 but can't be fixed for political or economic reasons.  If you wish, I can
12599 pretend $call() isn't there and maybe compute hostname at run-time
12600 thanks to the '$phostname' command.
12601
12602 EOM
12603         rp="Shall I ignore $call() from now on?"
12604         . ./myread
12605         case "$ans" in
12606         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12607         esac;;
12608 esac
12609 case "$phostname" in
12610 '') aphostname='';;
12611 *) case "$aphostname" in
12612         /*) ;;
12613         *) set X $phostname
12614                 shift
12615                 file=$1
12616                 shift
12617                 file=`./loc $file $file $pth`
12618                 aphostname=`echo $file $*`
12619                 ;;
12620         esac
12621         ;;
12622 esac
12623 case "$d_uname$d_gethname" in
12624 *define*) ;;
12625 *)
12626         case "$phostname" in
12627         '')
12628                 echo "There will be no way for $package to get your hostname." >&4;;
12629         *)
12630         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12631                 ;;
12632         esac;;
12633 esac
12634 case "$d_phostname" in
12635 '') d_phostname="$undef";;
12636 esac
12637
12638 : see if gethostbyaddr_r exists
12639 set gethostbyaddr_r d_gethostbyaddr_r
12640 eval $inlibc
12641 case "$d_gethostbyaddr_r" in
12642 "$define")
12643         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12644         case "$d_gethostbyaddr_r_proto:$usethreads" in
12645         ":define")      d_gethostbyaddr_r_proto=define
12646                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12647                 eval $hasproto ;;
12648         *)      ;;
12649         esac
12650         case "$d_gethostbyaddr_r_proto" in
12651         define)
12652         case "$gethostbyaddr_r_proto" in
12653         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12654         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12655         esac
12656         case "$gethostbyaddr_r_proto" in
12657         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12658         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12659         esac
12660         case "$gethostbyaddr_r_proto" in
12661         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12662         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12663         esac
12664         case "$gethostbyaddr_r_proto" in
12665         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12666         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12667         esac
12668         case "$gethostbyaddr_r_proto" in
12669         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12670         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12671         esac
12672         case "$gethostbyaddr_r_proto" in
12673         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12674         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12675         esac
12676         case "$gethostbyaddr_r_proto" in
12677         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12678         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12679         esac
12680         case "$gethostbyaddr_r_proto" in
12681         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12682         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12683         esac
12684         case "$gethostbyaddr_r_proto" in
12685         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12686         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12687         esac
12688         case "$gethostbyaddr_r_proto" in
12689         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12690         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12691         esac
12692         case "$gethostbyaddr_r_proto" in
12693         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12694         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12695         esac
12696         case "$gethostbyaddr_r_proto" in
12697         ''|0)   d_gethostbyaddr_r=undef
12698                 gethostbyaddr_r_proto=0
12699                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12700         * )     case "$gethostbyaddr_r_proto" in
12701                 REENTRANT_PROTO*) ;;
12702                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12703                 esac
12704                 echo "Prototype: $try" ;;
12705         esac
12706         ;;
12707         *)      case "$usethreads" in
12708                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12709                 esac
12710                 d_gethostbyaddr_r=undef
12711                 gethostbyaddr_r_proto=0
12712                 ;;
12713         esac
12714         ;;
12715 *)      gethostbyaddr_r_proto=0
12716         ;;
12717 esac
12718
12719 : see if gethostbyname_r exists
12720 set gethostbyname_r d_gethostbyname_r
12721 eval $inlibc
12722 case "$d_gethostbyname_r" in
12723 "$define")
12724         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12725         case "$d_gethostbyname_r_proto:$usethreads" in
12726         ":define")      d_gethostbyname_r_proto=define
12727                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12728                 eval $hasproto ;;
12729         *)      ;;
12730         esac
12731         case "$d_gethostbyname_r_proto" in
12732         define)
12733         case "$gethostbyname_r_proto" in
12734         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12735         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12736         esac
12737         case "$gethostbyname_r_proto" in
12738         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12739         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12740         esac
12741         case "$gethostbyname_r_proto" in
12742         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12743         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12744         esac
12745         case "$gethostbyname_r_proto" in
12746         ''|0)   d_gethostbyname_r=undef
12747                 gethostbyname_r_proto=0
12748                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12749         * )     case "$gethostbyname_r_proto" in
12750                 REENTRANT_PROTO*) ;;
12751                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12752                 esac
12753                 echo "Prototype: $try" ;;
12754         esac
12755         ;;
12756         *)      case "$usethreads" in
12757                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12758                 esac
12759                 d_gethostbyname_r=undef
12760                 gethostbyname_r_proto=0
12761                 ;;
12762         esac
12763         ;;
12764 *)      gethostbyname_r_proto=0
12765         ;;
12766 esac
12767
12768 : see if gethostent_r exists
12769 set gethostent_r d_gethostent_r
12770 eval $inlibc
12771 case "$d_gethostent_r" in
12772 "$define")
12773         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12774         case "$d_gethostent_r_proto:$usethreads" in
12775         ":define")      d_gethostent_r_proto=define
12776                 set d_gethostent_r_proto gethostent_r $hdrs
12777                 eval $hasproto ;;
12778         *)      ;;
12779         esac
12780         case "$d_gethostent_r_proto" in
12781         define)
12782         case "$gethostent_r_proto" in
12783         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12784         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12785         esac
12786         case "$gethostent_r_proto" in
12787         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12788         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12789         esac
12790         case "$gethostent_r_proto" in
12791         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12792         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12793         esac
12794         case "$gethostent_r_proto" in
12795         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12796         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12797         esac
12798         case "$gethostent_r_proto" in
12799         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12800         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12801         esac
12802         case "$gethostent_r_proto" in
12803         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12804         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12805         esac
12806         case "$gethostent_r_proto" in
12807         ''|0)   d_gethostent_r=undef
12808                 gethostent_r_proto=0
12809                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12810         * )     case "$gethostent_r_proto" in
12811                 REENTRANT_PROTO*) ;;
12812                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12813                 esac
12814                 echo "Prototype: $try" ;;
12815         esac
12816         ;;
12817         *)      case "$usethreads" in
12818                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12819                 esac
12820                 d_gethostent_r=undef
12821                 gethostent_r_proto=0
12822                 ;;
12823         esac
12824         ;;
12825 *)      gethostent_r_proto=0
12826         ;;
12827 esac
12828
12829 : see if prototypes for various gethostxxx netdb.h functions are available
12830 echo " "
12831 set d_gethostprotos gethostent $i_netdb netdb.h
12832 eval $hasproto
12833
12834 : see if getitimer exists
12835 set getitimer d_getitimer
12836 eval $inlibc
12837
12838 : see if getlogin exists
12839 set getlogin d_getlogin
12840 eval $inlibc
12841
12842 : see if getlogin_r exists
12843 set getlogin_r d_getlogin_r
12844 eval $inlibc
12845 case "$d_getlogin_r" in
12846 "$define")
12847         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12848         case "$d_getlogin_r_proto:$usethreads" in
12849         ":define")      d_getlogin_r_proto=define
12850                 set d_getlogin_r_proto getlogin_r $hdrs
12851                 eval $hasproto ;;
12852         *)      ;;
12853         esac
12854         case "$d_getlogin_r_proto" in
12855         define)
12856         case "$getlogin_r_proto" in
12857         ''|0) try='int getlogin_r(char*, size_t);'
12858         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12859         esac
12860         case "$getlogin_r_proto" in
12861         ''|0) try='int getlogin_r(char*, int);'
12862         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12863         esac
12864         case "$getlogin_r_proto" in
12865         ''|0) try='char* getlogin_r(char*, size_t);'
12866         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12867         esac
12868         case "$getlogin_r_proto" in
12869         ''|0) try='char* getlogin_r(char*, int);'
12870         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12871         esac
12872         case "$getlogin_r_proto" in
12873         ''|0)   d_getlogin_r=undef
12874                 getlogin_r_proto=0
12875                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12876         * )     case "$getlogin_r_proto" in
12877                 REENTRANT_PROTO*) ;;
12878                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12879                 esac
12880                 echo "Prototype: $try" ;;
12881         esac
12882         ;;
12883         *)      case "$usethreads" in
12884                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12885                 esac
12886                 d_getlogin_r=undef
12887                 getlogin_r_proto=0
12888                 ;;
12889         esac
12890         ;;
12891 *)      getlogin_r_proto=0
12892         ;;
12893 esac
12894
12895 : see if getmnt exists
12896 set getmnt d_getmnt
12897 eval $inlibc
12898
12899 : see if getmntent exists
12900 set getmntent d_getmntent
12901 eval $inlibc
12902
12903 : see if getnetbyaddr exists
12904 set getnetbyaddr d_getnbyaddr
12905 eval $inlibc
12906
12907 : see if getnetbyname exists
12908 set getnetbyname d_getnbyname
12909 eval $inlibc
12910
12911 : see if getnetent exists
12912 set getnetent d_getnent
12913 eval $inlibc
12914
12915 : see if getnetbyaddr_r exists
12916 set getnetbyaddr_r d_getnetbyaddr_r
12917 eval $inlibc
12918 case "$d_getnetbyaddr_r" in
12919 "$define")
12920         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12921         case "$d_getnetbyaddr_r_proto:$usethreads" in
12922         ":define")      d_getnetbyaddr_r_proto=define
12923                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12924                 eval $hasproto ;;
12925         *)      ;;
12926         esac
12927         case "$d_getnetbyaddr_r_proto" in
12928         define)
12929         case "$getnetbyaddr_r_proto" in
12930         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12931         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12932         esac
12933         case "$getnetbyaddr_r_proto" in
12934         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12935         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12936         esac
12937         case "$getnetbyaddr_r_proto" in
12938         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12939         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12940         esac
12941         case "$getnetbyaddr_r_proto" in
12942         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12943         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12944         esac
12945         case "$getnetbyaddr_r_proto" in
12946         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12947         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12948         esac
12949         case "$getnetbyaddr_r_proto" in
12950         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12951         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12952         esac
12953         case "$getnetbyaddr_r_proto" in
12954         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12955         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12956         esac
12957         case "$getnetbyaddr_r_proto" in
12958         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12959         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12960         esac
12961         case "$getnetbyaddr_r_proto" in
12962         ''|0)   d_getnetbyaddr_r=undef
12963                 getnetbyaddr_r_proto=0
12964                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12965         * )     case "$getnetbyaddr_r_proto" in
12966                 REENTRANT_PROTO*) ;;
12967                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12968                 esac
12969                 echo "Prototype: $try" ;;
12970         esac
12971         ;;
12972         *)      case "$usethreads" in
12973                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12974                 esac
12975                 d_getnetbyaddr_r=undef
12976                 getnetbyaddr_r_proto=0
12977                 ;;
12978         esac
12979         ;;
12980 *)      getnetbyaddr_r_proto=0
12981         ;;
12982 esac
12983
12984 : see if getnetbyname_r exists
12985 set getnetbyname_r d_getnetbyname_r
12986 eval $inlibc
12987 case "$d_getnetbyname_r" in
12988 "$define")
12989         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12990         case "$d_getnetbyname_r_proto:$usethreads" in
12991         ":define")      d_getnetbyname_r_proto=define
12992                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12993                 eval $hasproto ;;
12994         *)      ;;
12995         esac
12996         case "$d_getnetbyname_r_proto" in
12997         define)
12998         case "$getnetbyname_r_proto" in
12999         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
13000         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
13001         esac
13002         case "$getnetbyname_r_proto" in
13003         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13004         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13005         esac
13006         case "$getnetbyname_r_proto" in
13007         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13008         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13009         esac
13010         case "$getnetbyname_r_proto" in
13011         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13012         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13013         esac
13014         case "$getnetbyname_r_proto" in
13015         ''|0)   d_getnetbyname_r=undef
13016                 getnetbyname_r_proto=0
13017                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13018         * )     case "$getnetbyname_r_proto" in
13019                 REENTRANT_PROTO*) ;;
13020                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13021                 esac
13022                 echo "Prototype: $try" ;;
13023         esac
13024         ;;
13025         *)      case "$usethreads" in
13026                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13027                 esac
13028                 d_getnetbyname_r=undef
13029                 getnetbyname_r_proto=0
13030                 ;;
13031         esac
13032         ;;
13033 *)      getnetbyname_r_proto=0
13034         ;;
13035 esac
13036
13037 : see if getnetent_r exists
13038 set getnetent_r d_getnetent_r
13039 eval $inlibc
13040 case "$d_getnetent_r" in
13041 "$define")
13042         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13043         case "$d_getnetent_r_proto:$usethreads" in
13044         ":define")      d_getnetent_r_proto=define
13045                 set d_getnetent_r_proto getnetent_r $hdrs
13046                 eval $hasproto ;;
13047         *)      ;;
13048         esac
13049         case "$d_getnetent_r_proto" in
13050         define)
13051         case "$getnetent_r_proto" in
13052         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13053         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13054         esac
13055         case "$getnetent_r_proto" in
13056         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13057         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13058         esac
13059         case "$getnetent_r_proto" in
13060         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13061         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13062         esac
13063         case "$getnetent_r_proto" in
13064         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13065         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13066         esac
13067         case "$getnetent_r_proto" in
13068         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13069         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13070         esac
13071         case "$getnetent_r_proto" in
13072         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13073         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13074         esac
13075         case "$getnetent_r_proto" in
13076         ''|0)   d_getnetent_r=undef
13077                 getnetent_r_proto=0
13078                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13079         * )     case "$getnetent_r_proto" in
13080                 REENTRANT_PROTO*) ;;
13081                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13082                 esac
13083                 echo "Prototype: $try" ;;
13084         esac
13085         ;;
13086         *)      case "$usethreads" in
13087                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13088                 esac
13089                 d_getnetent_r=undef
13090                 getnetent_r_proto=0
13091                 ;;
13092         esac
13093         ;;
13094 *)      getnetent_r_proto=0
13095         ;;
13096 esac
13097
13098 : see if prototypes for various getnetxxx netdb.h functions are available
13099 echo " "
13100 set d_getnetprotos getnetent $i_netdb netdb.h
13101 eval $hasproto
13102
13103 : see if getpagesize exists
13104 set getpagesize d_getpagsz
13105 eval $inlibc
13106
13107
13108 : see if getprotobyname exists
13109 set getprotobyname d_getpbyname
13110 eval $inlibc
13111
13112 : see if getprotobynumber exists
13113 set getprotobynumber d_getpbynumber
13114 eval $inlibc
13115
13116 : see if getprotoent exists
13117 set getprotoent d_getpent
13118 eval $inlibc
13119
13120 : see if getpgid exists
13121 set getpgid d_getpgid
13122 eval $inlibc
13123
13124 : see if getpgrp2 exists
13125 set getpgrp2 d_getpgrp2
13126 eval $inlibc
13127
13128 : see if getppid exists
13129 set getppid d_getppid
13130 eval $inlibc
13131
13132 : see if getpriority exists
13133 set getpriority d_getprior
13134 eval $inlibc
13135
13136 : see if getprotobyname_r exists
13137 set getprotobyname_r d_getprotobyname_r
13138 eval $inlibc
13139 case "$d_getprotobyname_r" in
13140 "$define")
13141         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13142         case "$d_getprotobyname_r_proto:$usethreads" in
13143         ":define")      d_getprotobyname_r_proto=define
13144                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13145                 eval $hasproto ;;
13146         *)      ;;
13147         esac
13148         case "$d_getprotobyname_r_proto" in
13149         define)
13150         case "$getprotobyname_r_proto" in
13151         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13152         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13153         esac
13154         case "$getprotobyname_r_proto" in
13155         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13156         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13157         esac
13158         case "$getprotobyname_r_proto" in
13159         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13160         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13161         esac
13162         case "$getprotobyname_r_proto" in
13163         ''|0)   d_getprotobyname_r=undef
13164                 getprotobyname_r_proto=0
13165                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13166         * )     case "$getprotobyname_r_proto" in
13167                 REENTRANT_PROTO*) ;;
13168                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13169                 esac
13170                 echo "Prototype: $try" ;;
13171         esac
13172         ;;
13173         *)      case "$usethreads" in
13174                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13175                 esac
13176                 d_getprotobyname_r=undef
13177                 getprotobyname_r_proto=0
13178                 ;;
13179         esac
13180         ;;
13181 *)      getprotobyname_r_proto=0
13182         ;;
13183 esac
13184
13185 : see if getprotobynumber_r exists
13186 set getprotobynumber_r d_getprotobynumber_r
13187 eval $inlibc
13188 case "$d_getprotobynumber_r" in
13189 "$define")
13190         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13191         case "$d_getprotobynumber_r_proto:$usethreads" in
13192         ":define")      d_getprotobynumber_r_proto=define
13193                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13194                 eval $hasproto ;;
13195         *)      ;;
13196         esac
13197         case "$d_getprotobynumber_r_proto" in
13198         define)
13199         case "$getprotobynumber_r_proto" in
13200         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13201         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13202         esac
13203         case "$getprotobynumber_r_proto" in
13204         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13205         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13206         esac
13207         case "$getprotobynumber_r_proto" in
13208         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13209         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13210         esac
13211         case "$getprotobynumber_r_proto" in
13212         ''|0)   d_getprotobynumber_r=undef
13213                 getprotobynumber_r_proto=0
13214                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13215         * )     case "$getprotobynumber_r_proto" in
13216                 REENTRANT_PROTO*) ;;
13217                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13218                 esac
13219                 echo "Prototype: $try" ;;
13220         esac
13221         ;;
13222         *)      case "$usethreads" in
13223                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13224                 esac
13225                 d_getprotobynumber_r=undef
13226                 getprotobynumber_r_proto=0
13227                 ;;
13228         esac
13229         ;;
13230 *)      getprotobynumber_r_proto=0
13231         ;;
13232 esac
13233
13234 : see if getprotoent_r exists
13235 set getprotoent_r d_getprotoent_r
13236 eval $inlibc
13237 case "$d_getprotoent_r" in
13238 "$define")
13239         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13240         case "$d_getprotoent_r_proto:$usethreads" in
13241         ":define")      d_getprotoent_r_proto=define
13242                 set d_getprotoent_r_proto getprotoent_r $hdrs
13243                 eval $hasproto ;;
13244         *)      ;;
13245         esac
13246         case "$d_getprotoent_r_proto" in
13247         define)
13248         case "$getprotoent_r_proto" in
13249         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13250         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13251         esac
13252         case "$getprotoent_r_proto" in
13253         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13254         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13255         esac
13256         case "$getprotoent_r_proto" in
13257         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13258         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13259         esac
13260         case "$getprotoent_r_proto" in
13261         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13262         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13263         esac
13264         case "$getprotoent_r_proto" in
13265         ''|0)   d_getprotoent_r=undef
13266                 getprotoent_r_proto=0
13267                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13268         * )     case "$getprotoent_r_proto" in
13269                 REENTRANT_PROTO*) ;;
13270                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13271                 esac
13272                 echo "Prototype: $try" ;;
13273         esac
13274         ;;
13275         *)      case "$usethreads" in
13276                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13277                 esac
13278                 d_getprotoent_r=undef
13279                 getprotoent_r_proto=0
13280                 ;;
13281         esac
13282         ;;
13283 *)      getprotoent_r_proto=0
13284         ;;
13285 esac
13286
13287 : see if prototypes for various getprotoxxx netdb.h functions are available
13288 echo " "
13289 set d_getprotoprotos getprotoent $i_netdb netdb.h
13290 eval $hasproto
13291
13292 : see if getprpwnam exists
13293 set getprpwnam d_getprpwnam
13294 eval $inlibc
13295
13296 : see if getpwent exists
13297 set getpwent d_getpwent
13298 eval $inlibc
13299
13300 : see if getpwent_r exists
13301 set getpwent_r d_getpwent_r
13302 eval $inlibc
13303 case "$d_getpwent_r" in
13304 "$define")
13305         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13306         case "$d_getpwent_r_proto:$usethreads" in
13307         ":define")      d_getpwent_r_proto=define
13308                 set d_getpwent_r_proto getpwent_r $hdrs
13309                 eval $hasproto ;;
13310         *)      ;;
13311         esac
13312         case "$d_getpwent_r_proto" in
13313         define)
13314         case "$getpwent_r_proto" in
13315         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13316         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13317         esac
13318         case "$getpwent_r_proto" in
13319         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13320         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13321         esac
13322         case "$getpwent_r_proto" in
13323         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13324         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13325         esac
13326         case "$getpwent_r_proto" in
13327         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13328         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13329         esac
13330         case "$getpwent_r_proto" in
13331         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13332         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13333         esac
13334         case "$getpwent_r_proto" in
13335         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13336         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13337         esac
13338         case "$getpwent_r_proto" in
13339         ''|0)   d_getpwent_r=undef
13340                 getpwent_r_proto=0
13341                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13342         * )     case "$getpwent_r_proto" in
13343                 REENTRANT_PROTO*) ;;
13344                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13345                 esac
13346                 echo "Prototype: $try" ;;
13347         esac
13348         ;;
13349         *)      case "$usethreads" in
13350                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13351                 esac
13352                 d_getpwent_r=undef
13353                 getpwent_r_proto=0
13354                 ;;
13355         esac
13356         ;;
13357 *)      getpwent_r_proto=0
13358         ;;
13359 esac
13360
13361 : see if getpwnam_r exists
13362 set getpwnam_r d_getpwnam_r
13363 eval $inlibc
13364 case "$d_getpwnam_r" in
13365 "$define")
13366         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13367         case "$d_getpwnam_r_proto:$usethreads" in
13368         ":define")      d_getpwnam_r_proto=define
13369                 set d_getpwnam_r_proto getpwnam_r $hdrs
13370                 eval $hasproto ;;
13371         *)      ;;
13372         esac
13373         case "$d_getpwnam_r_proto" in
13374         define)
13375         case "$getpwnam_r_proto" in
13376         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13377         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13378         esac
13379         case "$getpwnam_r_proto" in
13380         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13381         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13382         esac
13383         case "$getpwnam_r_proto" in
13384         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13385         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13386         esac
13387         case "$getpwnam_r_proto" in
13388         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13389         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13390         esac
13391         case "$getpwnam_r_proto" in
13392         ''|0)   d_getpwnam_r=undef
13393                 getpwnam_r_proto=0
13394                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13395         * )     case "$getpwnam_r_proto" in
13396                 REENTRANT_PROTO*) ;;
13397                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13398                 esac
13399                 echo "Prototype: $try" ;;
13400         esac
13401         ;;
13402         *)      case "$usethreads" in
13403                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13404                 esac
13405                 d_getpwnam_r=undef
13406                 getpwnam_r_proto=0
13407                 ;;
13408         esac
13409         ;;
13410 *)      getpwnam_r_proto=0
13411         ;;
13412 esac
13413
13414 : see if getpwuid_r exists
13415 set getpwuid_r d_getpwuid_r
13416 eval $inlibc
13417 case "$d_getpwuid_r" in
13418 "$define")
13419         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13420         case "$d_getpwuid_r_proto:$usethreads" in
13421         ":define")      d_getpwuid_r_proto=define
13422                 set d_getpwuid_r_proto getpwuid_r $hdrs
13423                 eval $hasproto ;;
13424         *)      ;;
13425         esac
13426         case "$d_getpwuid_r_proto" in
13427         define)
13428         case "$getpwuid_r_proto" in
13429         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13430         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13431         esac
13432         case "$getpwuid_r_proto" in
13433         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13434         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13435         esac
13436         case "$getpwuid_r_proto" in
13437         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13438         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13439         esac
13440         case "$getpwuid_r_proto" in
13441         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13442         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13443         esac
13444         case "$getpwuid_r_proto" in
13445         ''|0)   d_getpwuid_r=undef
13446                 getpwuid_r_proto=0
13447                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13448         * )     case "$getpwuid_r_proto" in
13449                 REENTRANT_PROTO*) ;;
13450                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13451                 esac
13452                 echo "Prototype: $try" ;;
13453         esac
13454         ;;
13455         *)      case "$usethreads" in
13456                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13457                 esac
13458                 d_getpwuid_r=undef
13459                 getpwuid_r_proto=0
13460                 ;;
13461         esac
13462         ;;
13463 *)      getpwuid_r_proto=0
13464         ;;
13465 esac
13466
13467
13468 : see if getservbyname exists
13469 set getservbyname d_getsbyname
13470 eval $inlibc
13471
13472 : see if getservbyport exists
13473 set getservbyport d_getsbyport
13474 eval $inlibc
13475
13476 : see if getservent exists
13477 set getservent d_getsent
13478 eval $inlibc
13479
13480 : see if getservbyname_r exists
13481 set getservbyname_r d_getservbyname_r
13482 eval $inlibc
13483 case "$d_getservbyname_r" in
13484 "$define")
13485         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13486         case "$d_getservbyname_r_proto:$usethreads" in
13487         ":define")      d_getservbyname_r_proto=define
13488                 set d_getservbyname_r_proto getservbyname_r $hdrs
13489                 eval $hasproto ;;
13490         *)      ;;
13491         esac
13492         case "$d_getservbyname_r_proto" in
13493         define)
13494         case "$getservbyname_r_proto" in
13495         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13496         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13497         esac
13498         case "$getservbyname_r_proto" in
13499         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13500         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13501         esac
13502         case "$getservbyname_r_proto" in
13503         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13504         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13505         esac
13506         case "$getservbyname_r_proto" in
13507         ''|0)   d_getservbyname_r=undef
13508                 getservbyname_r_proto=0
13509                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13510         * )     case "$getservbyname_r_proto" in
13511                 REENTRANT_PROTO*) ;;
13512                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13513                 esac
13514                 echo "Prototype: $try" ;;
13515         esac
13516         ;;
13517         *)      case "$usethreads" in
13518                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13519                 esac
13520                 d_getservbyname_r=undef
13521                 getservbyname_r_proto=0
13522                 ;;
13523         esac
13524         ;;
13525 *)      getservbyname_r_proto=0
13526         ;;
13527 esac
13528
13529 : see if getservbyport_r exists
13530 set getservbyport_r d_getservbyport_r
13531 eval $inlibc
13532 case "$d_getservbyport_r" in
13533 "$define")
13534         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13535         case "$d_getservbyport_r_proto:$usethreads" in
13536         ":define")      d_getservbyport_r_proto=define
13537                 set d_getservbyport_r_proto getservbyport_r $hdrs
13538                 eval $hasproto ;;
13539         *)      ;;
13540         esac
13541         case "$d_getservbyport_r_proto" in
13542         define)
13543         case "$getservbyport_r_proto" in
13544         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13545         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13546         esac
13547         case "$getservbyport_r_proto" in
13548         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13549         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13550         esac
13551         case "$getservbyport_r_proto" in
13552         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13553         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13554         esac
13555         case "$getservbyport_r_proto" in
13556         ''|0)   d_getservbyport_r=undef
13557                 getservbyport_r_proto=0
13558                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13559         * )     case "$getservbyport_r_proto" in
13560                 REENTRANT_PROTO*) ;;
13561                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13562                 esac
13563                 echo "Prototype: $try" ;;
13564         esac
13565         ;;
13566         *)      case "$usethreads" in
13567                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13568                 esac
13569                 d_getservbyport_r=undef
13570                 getservbyport_r_proto=0
13571                 ;;
13572         esac
13573         ;;
13574 *)      getservbyport_r_proto=0
13575         ;;
13576 esac
13577
13578 : see if getservent_r exists
13579 set getservent_r d_getservent_r
13580 eval $inlibc
13581 case "$d_getservent_r" in
13582 "$define")
13583         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13584         case "$d_getservent_r_proto:$usethreads" in
13585         ":define")      d_getservent_r_proto=define
13586                 set d_getservent_r_proto getservent_r $hdrs
13587                 eval $hasproto ;;
13588         *)      ;;
13589         esac
13590         case "$d_getservent_r_proto" in
13591         define)
13592         case "$getservent_r_proto" in
13593         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13594         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13595         esac
13596         case "$getservent_r_proto" in
13597         ''|0) try='int getservent_r(struct servent*, char*, int);'
13598         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13599         esac
13600         case "$getservent_r_proto" in
13601         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13602         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13603         esac
13604         case "$getservent_r_proto" in
13605         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13606         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13607         esac
13608         case "$getservent_r_proto" in
13609         ''|0)   d_getservent_r=undef
13610                 getservent_r_proto=0
13611                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13612         * )     case "$getservent_r_proto" in
13613                 REENTRANT_PROTO*) ;;
13614                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13615                 esac
13616                 echo "Prototype: $try" ;;
13617         esac
13618         ;;
13619         *)      case "$usethreads" in
13620                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13621                 esac
13622                 d_getservent_r=undef
13623                 getservent_r_proto=0
13624                 ;;
13625         esac
13626         ;;
13627 *)      getservent_r_proto=0
13628         ;;
13629 esac
13630
13631 : see if prototypes for various getservxxx netdb.h functions are available
13632 echo " "
13633 set d_getservprotos getservent $i_netdb netdb.h
13634 eval $hasproto
13635
13636 : see if getspnam exists
13637 set getspnam d_getspnam
13638 eval $inlibc
13639
13640 : see if this is a shadow.h system
13641 set shadow.h i_shadow
13642 eval $inhdr
13643
13644 : see if getspnam_r exists
13645 set getspnam_r d_getspnam_r
13646 eval $inlibc
13647 case "$d_getspnam_r" in
13648 "$define")
13649         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13650         case "$d_getspnam_r_proto:$usethreads" in
13651         ":define")      d_getspnam_r_proto=define
13652                 set d_getspnam_r_proto getspnam_r $hdrs
13653                 eval $hasproto ;;
13654         *)      ;;
13655         esac
13656         case "$d_getspnam_r_proto" in
13657         define)
13658         case "$getspnam_r_proto" in
13659         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13660         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13661         esac
13662         case "$getspnam_r_proto" in
13663         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13664         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13665         esac
13666         case "$getspnam_r_proto" in
13667         ''|0)   d_getspnam_r=undef
13668                 getspnam_r_proto=0
13669                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13670         * )     case "$getspnam_r_proto" in
13671                 REENTRANT_PROTO*) ;;
13672                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13673                 esac
13674                 echo "Prototype: $try" ;;
13675         esac
13676         ;;
13677         *)      case "$usethreads" in
13678                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13679                 esac
13680                 d_getspnam_r=undef
13681                 getspnam_r_proto=0
13682                 ;;
13683         esac
13684         ;;
13685 *)      getspnam_r_proto=0
13686         ;;
13687 esac
13688
13689 : see if gettimeofday or ftime exists
13690 set gettimeofday d_gettimeod
13691 eval $inlibc
13692 case "$d_gettimeod" in
13693 "$undef")
13694         set ftime d_ftime 
13695         eval $inlibc
13696         ;;
13697 *)
13698         val="$undef"; set d_ftime; eval $setvar
13699         ;;
13700 esac
13701 case "$d_gettimeod$d_ftime" in
13702 "$undef$undef")
13703         echo " "
13704         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13705         ;;
13706 esac
13707
13708 : see if gmtime_r exists
13709 set gmtime_r d_gmtime_r
13710 eval $inlibc
13711 case "$d_gmtime_r" in
13712 "$define")
13713         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13714         case "$d_gmtime_r_proto:$usethreads" in
13715         ":define")      d_gmtime_r_proto=define
13716                 set d_gmtime_r_proto gmtime_r $hdrs
13717                 eval $hasproto ;;
13718         *)      ;;
13719         esac
13720         case "$d_gmtime_r_proto" in
13721         define)
13722         case "$gmtime_r_proto" in
13723         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13724         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13725         esac
13726         case "$gmtime_r_proto" in
13727         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13728         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13729         esac
13730         case "$gmtime_r_proto" in
13731         ''|0)   d_gmtime_r=undef
13732                 gmtime_r_proto=0
13733                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13734         * )     case "$gmtime_r_proto" in
13735                 REENTRANT_PROTO*) ;;
13736                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13737                 esac
13738                 echo "Prototype: $try" ;;
13739         esac
13740         ;;
13741         *)      case "$usethreads" in
13742                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13743                 esac
13744                 d_gmtime_r=undef
13745                 gmtime_r_proto=0
13746                 ;;
13747         esac
13748         ;;
13749 *)      gmtime_r_proto=0
13750         ;;
13751 esac
13752
13753 : see if hasmntopt exists
13754 set hasmntopt d_hasmntopt
13755 eval $inlibc
13756
13757 : see if this is a netinet/in.h or sys/in.h system
13758 set netinet/in.h i_niin sys/in.h i_sysin
13759 eval $inhdr
13760
13761 : see if arpa/inet.h has to be included
13762 set arpa/inet.h i_arpainet
13763 eval $inhdr
13764
13765 : see if htonl --and friends-- exists
13766 val=''
13767 set htonl val
13768 eval $inlibc
13769
13770 : Maybe they are macros.
13771 case "$val" in
13772 $undef)
13773         $cat >htonl.c <<EOM
13774 #include <stdio.h>
13775 #include <sys/types.h>
13776 #$i_niin I_NETINET_IN
13777 #$i_sysin I_SYS_IN
13778 #$i_arpainet I_ARPA_INET
13779 #ifdef I_NETINET_IN
13780 #include <netinet/in.h>
13781 #endif
13782 #ifdef I_SYS_IN
13783 #include <sys/in.h>
13784 #endif
13785 #ifdef I_ARPA_INET
13786 #include <arpa/inet.h>
13787 #endif
13788 #ifdef htonl
13789 printf("Defined as a macro.");
13790 #endif
13791 EOM
13792         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13793         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13794                 val="$define"
13795                 echo "But it seems to be defined as a macro." >&4
13796         fi
13797         $rm -f htonl.?
13798         ;;
13799 esac
13800 set d_htonl
13801 eval $setvar
13802
13803 : see if ilogbl exists
13804 set ilogbl d_ilogbl
13805 eval $inlibc
13806
13807 : index or strchr
13808 echo " "
13809 if set index val -f; eval $csym; $val; then
13810         if set strchr val -f d_strchr; eval $csym; $val; then
13811                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13812                         val="$define"
13813                         vali="$undef"
13814                         echo "strchr() found." >&4
13815                 else
13816                         val="$undef"
13817                         vali="$define"
13818                         echo "index() found." >&4
13819                 fi
13820         else
13821                 val="$undef"
13822                 vali="$define"
13823                 echo "index() found." >&4
13824         fi
13825 else
13826         if set strchr val -f d_strchr; eval $csym; $val; then
13827                 val="$define"
13828                 vali="$undef"
13829                 echo "strchr() found." >&4
13830         else
13831                 echo "No index() or strchr() found!" >&4
13832                 val="$undef"
13833                 vali="$undef"
13834         fi
13835 fi
13836 set d_strchr; eval $setvar
13837 val="$vali"
13838 set d_index; eval $setvar
13839
13840 : check whether inet_aton exists
13841 set inet_aton d_inetaton
13842 eval $inlibc
13843
13844 : Look for isascii
13845 echo " "
13846 $cat >isascii.c <<EOCP
13847 #include <stdio.h>
13848 #include <ctype.h>
13849 #$i_stdlib I_STDLIB
13850 #ifdef I_STDLIB
13851 #include <stdlib.h>
13852 #endif
13853 int main() {
13854         int c = 'A';
13855         if (isascii(c))
13856                 exit(0);
13857         else
13858                 exit(1);
13859 }
13860 EOCP
13861 set isascii
13862 if eval $compile; then
13863         echo "isascii() found." >&4
13864         val="$define"
13865 else
13866         echo "isascii() NOT found." >&4
13867         val="$undef"
13868 fi
13869 set d_isascii
13870 eval $setvar
13871 $rm -f isascii*
13872
13873 : see if isfinite exists
13874 set isfinite d_isfinite
13875 eval $inlibc
13876
13877 : see if isinf exists
13878 set isinf d_isinf
13879 eval $inlibc
13880
13881 : see if isnan exists
13882 set isnan d_isnan
13883 eval $inlibc
13884
13885 : see if isnanl exists
13886 set isnanl d_isnanl
13887 eval $inlibc
13888
13889 : see if killpg exists
13890 set killpg d_killpg
13891 eval $inlibc
13892
13893 : see if lchown exists
13894 echo " "
13895 $cat > try.c <<'EOCP'
13896 /* System header to define __stub macros and hopefully few prototypes,
13897     which can conflict with char lchown(); below.  */
13898 #include <assert.h>
13899 /* Override any gcc2 internal prototype to avoid an error.  */
13900 /* We use char because int might match the return type of a gcc2
13901    builtin and then its argument prototype would still apply.  */
13902 char lchown();
13903 int main() {
13904     /*  The GNU C library defines this for functions which it implements
13905         to always fail with ENOSYS.  Some functions are actually named
13906         something starting with __ and the normal name is an alias.  */
13907 #if defined (__stub_lchown) || defined (__stub___lchown)
13908 choke me
13909 #else
13910 lchown();
13911 #endif
13912 ; return 0; }
13913 EOCP
13914 set try
13915 if eval $compile; then
13916     $echo "lchown() found." >&4
13917     val="$define"
13918 else
13919     $echo "lchown() NOT found." >&4
13920     val="$undef"
13921 fi
13922 set d_lchown
13923 eval $setvar
13924
13925 : See if number of significant digits in a double precision number is known
13926 echo " "
13927 $cat >ldbl_dig.c <<EOM
13928 #$i_limits I_LIMITS
13929 #$i_float I_FLOAT
13930 #ifdef I_LIMITS
13931 #include <limits.h>
13932 #endif
13933 #ifdef I_FLOAT
13934 #include <float.h>
13935 #endif
13936 #ifdef LDBL_DIG
13937 printf("Contains LDBL_DIG");
13938 #endif
13939 EOM
13940 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13941 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13942         echo "LDBL_DIG found." >&4
13943         val="$define"
13944 else
13945         echo "LDBL_DIG NOT found." >&4
13946         val="$undef"
13947 fi
13948 $rm -f ldbl_dig.?
13949 set d_ldbl_dig
13950 eval $setvar
13951
13952 : see if link exists
13953 set link d_link
13954 eval $inlibc
13955
13956 : see if localtime_r exists
13957 set localtime_r d_localtime_r
13958 eval $inlibc
13959 case "$d_localtime_r" in
13960 "$define")
13961         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13962         case "$d_localtime_r_proto:$usethreads" in
13963         ":define")      d_localtime_r_proto=define
13964                 set d_localtime_r_proto localtime_r $hdrs
13965                 eval $hasproto ;;
13966         *)      ;;
13967         esac
13968         case "$d_localtime_r_proto" in
13969         define)
13970         case "$localtime_r_proto" in
13971         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13972         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13973         esac
13974         case "$localtime_r_proto" in
13975         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13976         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13977         esac
13978         case "$localtime_r_proto" in
13979         ''|0)   d_localtime_r=undef
13980                 localtime_r_proto=0
13981                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13982         * )     case "$localtime_r_proto" in
13983                 REENTRANT_PROTO*) ;;
13984                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13985                 esac
13986                 echo "Prototype: $try" ;;
13987         esac
13988         ;;
13989         *)      case "$usethreads" in
13990                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13991                 esac
13992                 d_localtime_r=undef
13993                 localtime_r_proto=0
13994                 ;;
13995         esac
13996         ;;
13997 *)      localtime_r_proto=0
13998         ;;
13999 esac
14000
14001 : see if localeconv exists
14002 set localeconv d_locconv
14003 eval $inlibc
14004
14005 : see if lockf exists
14006 set lockf d_lockf
14007 eval $inlibc
14008
14009 : see if prototype for lseek is available
14010 echo " "
14011 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
14012 eval $hasproto
14013
14014 : see if lstat exists
14015 set lstat d_lstat
14016 eval $inlibc
14017
14018 : see if madvise exists
14019 set madvise d_madvise
14020 eval $inlibc
14021
14022 : see if mblen exists
14023 set mblen d_mblen
14024 eval $inlibc
14025
14026 : see if mbstowcs exists
14027 set mbstowcs d_mbstowcs
14028 eval $inlibc
14029
14030 : see if mbtowc exists
14031 set mbtowc d_mbtowc
14032 eval $inlibc
14033
14034 : see if memchr exists
14035 set memchr d_memchr
14036 eval $inlibc
14037
14038 : see if memcmp exists
14039 set memcmp d_memcmp
14040 eval $inlibc
14041
14042 : see if memcpy exists
14043 set memcpy d_memcpy
14044 eval $inlibc
14045
14046 : see if memmove exists
14047 set memmove d_memmove
14048 eval $inlibc
14049
14050 : see if memset exists
14051 set memset d_memset
14052 eval $inlibc
14053
14054 : see if mkdir exists
14055 set mkdir d_mkdir
14056 eval $inlibc
14057
14058 : see if mkdtemp exists
14059 set mkdtemp d_mkdtemp
14060 eval $inlibc
14061
14062 : see if mkfifo exists
14063 set mkfifo d_mkfifo
14064 eval $inlibc
14065
14066 : see if mkstemp exists
14067 set mkstemp d_mkstemp
14068 eval $inlibc
14069
14070 : see if mkstemps exists
14071 set mkstemps d_mkstemps
14072 eval $inlibc
14073
14074 : see if mktime exists
14075 set mktime d_mktime
14076 eval $inlibc
14077
14078 : see if this is a sys/mman.h system
14079 set sys/mman.h i_sysmman
14080 eval $inhdr
14081
14082 : see if mmap exists
14083 set mmap d_mmap
14084 eval $inlibc
14085 : see what shmat returns
14086 : default to something harmless
14087 mmaptype='void *'
14088 case "$i_sysmman$d_mmap" in
14089 "$define$define")
14090         $cat >mmap.c <<'END'
14091 #include <sys/mman.h>
14092 void *mmap();
14093 END
14094         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14095                 mmaptype='void *'
14096         else
14097                 mmaptype='caddr_t'
14098         fi
14099         echo "and it returns ($mmaptype)." >&4
14100         ;;
14101 esac
14102
14103
14104
14105 : see if sqrtl exists
14106 set sqrtl d_sqrtl
14107 eval $inlibc
14108
14109 : see if scalbnl exists
14110 set scalbnl d_scalbnl
14111 eval $inlibc
14112
14113 : see if modfl exists
14114 set modfl d_modfl
14115 eval $inlibc
14116
14117 : see if prototype for modfl is available
14118 echo " "
14119 set d_modflproto modfl math.h
14120 eval $hasproto
14121
14122 d_modfl_pow32_bug="$undef"
14123
14124 case "$d_longdbl$d_modfl" in
14125 $define$define)
14126         $cat <<EOM
14127 Checking to see whether your modfl() is okay for large values...
14128 EOM
14129 $cat >try.c <<EOCP
14130 #include <math.h> 
14131 #include <stdio.h>
14132 EOCP
14133 if $test "X$d_modflproto" != "X$define"; then
14134         $cat >>try.c <<EOCP
14135 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
14136 long double modfl (long double, long double *);
14137 EOCP
14138 fi
14139 $cat >>try.c <<EOCP
14140 int main() {
14141     long double nv = 4294967303.15;
14142     long double v, w;
14143     v = modfl(nv, &w);         
14144 #ifdef __GLIBC__
14145     printf("glibc");
14146 #endif
14147     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14148     return 0;
14149 }
14150 EOCP
14151         case "$osname:$gccversion" in
14152         aix:)   saveccflags="$ccflags"
14153                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14154         esac
14155         set try
14156         if eval $compile; then
14157                 foo=`$run ./try`
14158                 case "$foo" in
14159                 *" 4294967303.150000 1.150000 4294967302.000000")
14160                         echo >&4 "Your modfl() is broken for large values."
14161                         d_modfl_pow32_bug="$define"
14162                         case "$foo" in
14163                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14164                         ;;
14165                         esac
14166                         ;;
14167                 *" 4294967303.150000 0.150000 4294967303.000000")
14168                         echo >&4 "Your modfl() seems okay for large values."
14169                         ;;
14170                 *)      echo >&4 "I don't understand your modfl() at all."
14171                         d_modfl="$undef"
14172                         ;;
14173                 esac
14174                 $rm -f try.* try core core.try.*
14175         else
14176                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14177                 d_modfl="$undef"
14178         fi
14179         case "$osname:$gccversion" in
14180         aix:)   ccflags="$saveccflags" ;; # restore
14181         esac
14182         ;;
14183 esac
14184
14185 if $test "$uselongdouble" = "$define"; then
14186     message=""
14187     if $test "$d_sqrtl" != "$define"; then
14188         message="$message sqrtl"
14189     fi
14190     if $test "$d_modfl" != "$define"; then
14191         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14192             echo "You have both aintl and copysignl, so I can emulate modfl."
14193         else
14194             message="$message modfl"
14195         fi
14196     fi
14197     if $test "$d_frexpl" != "$define"; then
14198         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14199             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14200         else
14201             message="$message frexpl"
14202         fi
14203     fi
14204
14205     if $test "$message" != ""; then
14206         $cat <<EOM >&4
14207
14208 *** You requested the use of long doubles but you do not seem to have
14209 *** the following mathematical functions needed for long double support:
14210 ***    $message
14211 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14212 *** Cannot continue, aborting.
14213
14214 EOM
14215
14216         exit 1
14217     fi
14218 fi
14219
14220 : see if mprotect exists
14221 set mprotect d_mprotect
14222 eval $inlibc
14223
14224 : see if msgctl exists
14225 set msgctl d_msgctl
14226 eval $inlibc
14227
14228 : see if msgget exists
14229 set msgget d_msgget
14230 eval $inlibc
14231
14232 : see if msgsnd exists
14233 set msgsnd d_msgsnd
14234 eval $inlibc
14235
14236 : see if msgrcv exists
14237 set msgrcv d_msgrcv
14238 eval $inlibc
14239
14240 : see how much of the 'msg*(2)' library is present.
14241 h_msg=true
14242 echo " "
14243 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14244 *"$undef"*) h_msg=false;;
14245 esac
14246 case "$osname" in
14247 freebsd)
14248     case "`ipcs 2>&1`" in
14249     "SVID messages"*"not configured"*)
14250         echo "Your $osname does not have the msg*(2) configured." >&4
14251         h_msg=false
14252         val="$undef"
14253         set msgctl d_msgctl
14254         eval $setvar
14255         set msgget d_msgget
14256         eval $setvar
14257         set msgsnd d_msgsnd
14258         eval $setvar
14259         set msgrcv d_msgrcv
14260         eval $setvar
14261         ;;
14262     esac
14263     ;;
14264 esac
14265 : we could also check for sys/ipc.h ...
14266 if $h_msg && $test `./findhdr sys/msg.h`; then
14267         echo "You have the full msg*(2) library." >&4
14268         val="$define"
14269 else
14270         echo "You don't have the full msg*(2) library." >&4
14271         val="$undef"
14272 fi
14273 set d_msg
14274 eval $setvar
14275
14276
14277 echo " "
14278 echo "Checking to see if your system supports struct msghdr..." >&4
14279 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14280 eval $hasstruct
14281 case "$d_msghdr_s" in
14282 "$define")      echo "Yes, it does."   ;;
14283 *)              echo "No, it doesn't." ;;
14284 esac
14285
14286
14287 : see if msync exists
14288 set msync d_msync
14289 eval $inlibc
14290
14291 : see if munmap exists
14292 set munmap d_munmap
14293 eval $inlibc
14294
14295 : see if nice exists
14296 set nice d_nice
14297 eval $inlibc
14298
14299 : see if this is a langinfo.h system
14300 set langinfo.h i_langinfo
14301 eval $inhdr
14302
14303 : see if nl_langinfo exists
14304 set nl_langinfo d_nl_langinfo
14305 eval $inlibc
14306
14307 : check for length of character
14308 echo " "
14309 case "$charsize" in
14310 '')
14311         echo "Checking to see how big your characters are (hey, you never know)..." >&4
14312         $cat >try.c <<EOCP
14313 #include <stdio.h>
14314 #$i_stdlib I_STDLIB
14315 #ifdef I_STDLIB
14316 #include <stdlib.h>
14317 #endif
14318 int main()
14319 {
14320     printf("%d\n", (int)sizeof(char));
14321     exit(0);
14322 }
14323 EOCP
14324         set try
14325         if eval $compile_ok; then
14326                 dflt=`$run ./try`
14327         else
14328                 dflt='1'
14329                 echo "(I can't seem to compile the test program.  Guessing...)"
14330         fi
14331         ;;
14332 *)
14333         dflt="$charsize"
14334         ;;
14335 esac
14336 rp="What is the size of a character (in bytes)?"
14337 . ./myread
14338 charsize="$ans"
14339 $rm -f try.c try
14340
14341 : check for volatile keyword
14342 echo " "
14343 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14344 $cat >try.c <<'EOCP'
14345 int main()
14346 {
14347         typedef struct _goo_struct goo_struct;
14348         goo_struct * volatile goo = ((goo_struct *)0);
14349         struct _goo_struct {
14350                 long long_int;
14351                 int reg_int;
14352                 char char_var;
14353         };
14354         typedef unsigned short foo_t;
14355         char *volatile foo;
14356         volatile int bar;
14357         volatile foo_t blech;
14358         foo = foo;
14359 }
14360 EOCP
14361 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14362         val="$define"
14363         echo "Yup, it does."
14364 else
14365         val="$undef"
14366         echo "Nope, it doesn't."
14367 fi
14368 set d_volatile
14369 eval $setvar
14370 $rm -f try.*
14371
14372
14373 echo " "
14374 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14375
14376 case "$use64bitint:$d_quad:$quadtype" in
14377 define:define:?*)
14378         ivtype="$quadtype"
14379         uvtype="$uquadtype"
14380         ivsize=8
14381         uvsize=8
14382         ;;
14383 *)      ivtype="long"
14384         uvtype="unsigned long"
14385         ivsize=$longsize
14386         uvsize=$longsize
14387         ;;
14388 esac
14389
14390 case "$uselongdouble:$d_longdbl" in
14391 define:define)
14392         nvtype="long double"
14393         nvsize=$longdblsize
14394         ;;
14395 *)      nvtype=double
14396         nvsize=$doublesize
14397         ;;
14398 esac
14399
14400 $echo "(IV will be "$ivtype", $ivsize bytes)"
14401 $echo "(UV will be "$uvtype", $uvsize bytes)"
14402 $echo "(NV will be "$nvtype", $nvsize bytes)"
14403
14404 $cat >try.c <<EOCP
14405 #$i_inttypes I_INTTYPES
14406 #ifdef I_INTTYPES
14407 #include <inttypes.h>
14408 #endif
14409 #include <stdio.h>
14410 int main() {
14411 #ifdef INT8
14412    int8_t i =  INT8_MAX;
14413   uint8_t u = UINT8_MAX;
14414   printf("int8_t\n");
14415 #endif
14416 #ifdef INT16
14417    int16_t i =  INT16_MAX;
14418   uint16_t i = UINT16_MAX;
14419   printf("int16_t\n");
14420 #endif
14421 #ifdef INT32
14422    int32_t i =  INT32_MAX;
14423   uint32_t u = UINT32_MAX;
14424   printf("int32_t\n");
14425 #endif
14426 }
14427 EOCP
14428
14429 case "$i8type" in
14430 '')     case "$charsize" in
14431         1)      i8type=char
14432                 u8type="unsigned char"
14433                 i8size=$charsize
14434                 u8size=$charsize
14435                 ;;
14436         esac
14437         ;;
14438 esac
14439 case "$i8type" in
14440 '')     set try -DINT8
14441         if eval $compile; then
14442                 case "`$run ./try`" in
14443                 int8_t) i8type=int8_t
14444                         u8type=uint8_t
14445                         i8size=1
14446                         u8size=1
14447                         ;;
14448                 esac
14449         fi
14450         ;;
14451 esac
14452 case "$i8type" in
14453 '')     if $test $charsize -ge 1; then
14454                 i8type=char
14455                 u8type="unsigned char"
14456                 i8size=$charsize
14457                 u8size=$charsize
14458         fi
14459         ;;
14460 esac
14461
14462 case "$i16type" in
14463 '')     case "$shortsize" in
14464         2)      i16type=short
14465                 u16type="unsigned short"
14466                 i16size=$shortsize
14467                 u16size=$shortsize
14468                 ;;
14469         esac
14470         ;;
14471 esac
14472 case "$i16type" in
14473 '')     set try -DINT16
14474         if eval $compile; then
14475                 case "`$run ./try`" in
14476                 int16_t)
14477                         i16type=int16_t
14478                         u16type=uint16_t
14479                         i16size=2
14480                         u16size=2
14481                         ;;
14482                 esac
14483         fi
14484         ;;
14485 esac
14486 case "$i16type" in
14487 '')     if $test $shortsize -ge 2; then
14488                 i16type=short
14489                 u16type="unsigned short"
14490                 i16size=$shortsize
14491                 u16size=$shortsize
14492         fi
14493         ;;
14494 esac
14495
14496 case "$i32type" in
14497 '')     case "$longsize" in
14498         4)      i32type=long
14499                 u32type="unsigned long"
14500                 i32size=$longsize
14501                 u32size=$longsize
14502                 ;;
14503         *)      case "$intsize" in
14504                 4)      i32type=int
14505                         u32type="unsigned int"
14506                         i32size=$intsize
14507                         u32size=$intsize
14508                         ;;
14509                 esac
14510                 ;;
14511         esac
14512         ;;
14513 esac
14514 case "$i32type" in
14515 '')     set try -DINT32
14516         if eval $compile; then
14517                 case "`$run ./try`" in
14518                 int32_t)
14519                         i32type=int32_t
14520                         u32type=uint32_t
14521                         i32size=4
14522                         u32size=4
14523                         ;;
14524                 esac
14525         fi
14526         ;;
14527 esac
14528 case "$i32type" in
14529 '')     if $test $intsize -ge 4; then
14530                 i32type=int
14531                 u32type="unsigned int"
14532                 i32size=$intsize
14533                 u32size=$intsize
14534         fi
14535         ;;
14536 esac
14537
14538 case "$i64type" in
14539 '')     case "$d_quad:$quadtype" in
14540         define:?*)
14541                 i64type="$quadtype"
14542                 u64type="$uquadtype"
14543                 i64size=8
14544                 u64size=8
14545                 ;;
14546         esac
14547         ;;
14548 esac
14549
14550 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14551 : volatile so that the compiler has to store it out to memory.
14552 if test X"$d_volatile" = X"$define"; then
14553         volatile=volatile
14554 fi
14555 $cat <<EOP >try.c
14556 #include <stdio.h>
14557 #$i_stdlib I_STDLIB
14558 #ifdef I_STDLIB
14559 #include <stdlib.h>
14560 #endif
14561 #include <sys/types.h>
14562 #include <signal.h>
14563 #ifdef SIGFPE
14564 $volatile int bletched = 0;
14565 $signal_t blech(s) int s; { bletched = 1; }
14566 #endif
14567 int main() {
14568     $uvtype u = 0;
14569     $nvtype d;
14570     int     n = 8 * $uvsize;
14571     int     i;
14572 #ifdef SIGFPE
14573     signal(SIGFPE, blech);
14574 #endif
14575
14576     for (i = 0; i < n; i++) {
14577       u = u << 1 | ($uvtype)1;
14578       d = ($nvtype)u;
14579       if (($uvtype)d != u)
14580         break;
14581       if (d <= 0)
14582         break;
14583       d = ($nvtype)(u - 1);
14584       if (($uvtype)d != (u - 1))
14585         break;
14586 #ifdef SIGFPE
14587       if (bletched) {
14588         break;
14589 #endif
14590       } 
14591     }
14592     printf("%d\n", ((i == n) ? -n : i));
14593     exit(0);
14594 }
14595 EOP
14596 set try
14597
14598 d_nv_preserves_uv="$undef"
14599 if eval $compile; then
14600         nv_preserves_uv_bits="`$run ./try`"
14601 fi
14602 case "$nv_preserves_uv_bits" in
14603 \-[1-9]*)       
14604         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14605         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14606         d_nv_preserves_uv="$define"
14607         ;;
14608 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14609         d_nv_preserves_uv="$undef" ;;
14610 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14611         nv_preserves_uv_bits="$undef" ;;
14612 esac
14613
14614 $rm -f try.* try
14615
14616
14617 : check for off64_t
14618 echo " "
14619 echo "Checking to see if you have off64_t..." >&4
14620 $cat >try.c <<EOCP
14621 #include <sys/types.h>
14622 #include <unistd.h>
14623 int main() { off64_t x = 7; }
14624 EOCP
14625 set try
14626 if eval $compile; then
14627         val="$define"
14628         echo "You have off64_t."
14629 else
14630         val="$undef"
14631         echo "You do not have off64_t."
14632         case "$lseeksize" in
14633         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14634         esac
14635 fi
14636 $rm -f try.* try
14637 set d_off64_t
14638 eval $setvar
14639
14640 : how to create joinable pthreads
14641 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14642         echo " "
14643         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14644         $cat >try.c <<'EOCP'
14645 #include <pthread.h>
14646 int main() {
14647     int detachstate = JOINABLE;
14648 }
14649 EOCP
14650         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14651         if eval $compile; then
14652                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14653                 val="$undef" # Yes, undef.
14654                 set d_old_pthread_create_joinable
14655                 eval $setvar
14656                 val=""
14657                 set old_pthread_create_joinable
14658                 eval $setvar
14659         else
14660                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14661                 if eval $compile; then
14662                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14663                         val="$define"
14664                         set d_old_pthread_create_joinable
14665                         eval $setvar
14666                         val=PTHREAD_CREATE_UNDETACHED
14667                         set old_pthread_create_joinable
14668                         eval $setvar
14669                 else            
14670                         set try -DJOINABLE=__UNDETACHED
14671                         if eval $compile; then
14672                                 echo "You seem to use __UNDETACHED." >&4
14673                                 val="$define"
14674                                 set d_old_pthread_create_joinable
14675                                 eval $setvar
14676                                 val=__UNDETACHED
14677                                 set old_pthread_create_joinable
14678                                 eval $setvar
14679                         else
14680                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14681                                 val="$define"
14682                                 set d_old_pthread_create_joinable
14683                                 eval $setvar
14684                                 val=0
14685                                 set old_pthread_create_joinable
14686                                 eval $setvar
14687                         fi
14688                 fi
14689         fi
14690         $rm -f try try.*
14691 else
14692     d_old_pthread_create_joinable="$undef"
14693     old_pthread_create_joinable=""
14694 fi
14695
14696 : see if pause exists
14697 set pause d_pause
14698 eval $inlibc
14699
14700 : see if pipe exists
14701 set pipe d_pipe
14702 eval $inlibc
14703
14704 : see if poll exists
14705 set poll d_poll
14706 eval $inlibc
14707
14708 : see if readlink exists
14709 set readlink d_readlink
14710 eval $inlibc
14711
14712 echo " "
14713 procselfexe=''
14714 val="$undef"
14715 case "$d_readlink" in
14716 "$define")
14717         if $issymlink /proc/self/exe ; then
14718                 $ls -l /proc/self/exe > reflect
14719                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14720                         echo "You have Linux-like /proc/self/exe."
14721                         procselfexe='"/proc/self/exe"'
14722                         val="$define"
14723                 fi
14724         fi
14725         if $issymlink /proc/curproc/file ; then
14726                 $ls -l /proc/curproc/file > reflect
14727                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14728                         echo "You have BSD-like /proc/curproc/file."
14729                         procselfexe='"/proc/curproc/file"'
14730                         val="$define"
14731                 fi
14732         fi
14733         ;;
14734 esac
14735 $rm -f reflect
14736 set d_procselfexe
14737 eval $setvar
14738
14739 : see whether the pthread_atfork exists
14740 $cat >try.c <<EOP
14741 #include <pthread.h>
14742 #include <stdio.h>
14743 int main() {
14744 #ifdef  PTHREAD_ATFORK
14745         pthread_atfork(NULL,NULL,NULL);
14746 #endif
14747 }
14748 EOP
14749
14750 : see if pthread_atfork exists
14751 set try -DPTHREAD_ATFORK
14752 if eval $compile; then
14753     val="$define"
14754 else
14755     val="$undef"
14756 fi
14757 case "$usethreads" in
14758 $define)
14759         case "$val" in
14760         $define) echo 'pthread_atfork found.' >&4        ;;
14761         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14762         esac
14763 esac
14764 set d_pthread_atfork
14765 eval $setvar
14766
14767 : see if pthread_attr_setscope exists
14768 set pthread_attr_setscope d_pthread_attr_setscope
14769 eval $inlibc
14770
14771
14772 : see whether the various POSIXish _yields exist
14773 $cat >try.c <<EOP
14774 #include <pthread.h>
14775 #include <stdio.h>
14776 int main() {
14777 #ifdef SCHED_YIELD
14778         sched_yield();
14779 #else
14780 #ifdef PTHREAD_YIELD
14781         pthread_yield();
14782 #else
14783 #ifdef PTHREAD_YIELD_NULL
14784         pthread_yield(NULL);
14785 #endif
14786 #endif
14787 #endif
14788 }
14789 EOP
14790 : see if sched_yield exists
14791 set try -DSCHED_YIELD
14792 if eval $compile; then
14793     val="$define"
14794     sched_yield='sched_yield()'
14795 else
14796     val="$undef"
14797 fi
14798 case "$usethreads" in
14799 $define)
14800         case "$val" in
14801         $define) echo 'sched_yield() found.' >&4        ;;
14802         *)       echo 'sched_yield() NOT found.' >&4    ;;
14803         esac
14804 esac
14805 set d_sched_yield
14806 eval $setvar
14807
14808 : see if pthread_yield exists
14809 set try -DPTHREAD_YIELD
14810 if eval $compile; then
14811     val="$define"
14812     case "$sched_yield" in
14813     '') sched_yield='pthread_yield()' ;;
14814     esac
14815 else
14816     set try -DPTHREAD_YIELD_NULL
14817     if eval $compile; then
14818         val="$define"
14819         case "$sched_yield" in
14820         '') sched_yield='pthread_yield(NULL)' ;;
14821         esac
14822     else
14823         val="$undef"
14824     fi
14825 fi
14826 case "$usethreads" in
14827 $define)
14828         case "$val" in
14829         $define) echo 'pthread_yield() found.' >&4      ;;
14830         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14831         esac
14832         ;;
14833 esac
14834 set d_pthread_yield
14835 eval $setvar
14836
14837 case "$sched_yield" in
14838 '') sched_yield=undef ;;
14839 esac
14840
14841 $rm -f try try.*
14842
14843 : see if random_r exists
14844 set random_r d_random_r
14845 eval $inlibc
14846 case "$d_random_r" in
14847 "$define")
14848         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14849         case "$d_random_r_proto:$usethreads" in
14850         ":define")      d_random_r_proto=define
14851                 set d_random_r_proto random_r $hdrs
14852                 eval $hasproto ;;
14853         *)      ;;
14854         esac
14855         case "$d_random_r_proto" in
14856         define)
14857         case "$random_r_proto" in
14858         ''|0) try='int random_r(int*, struct random_data*);'
14859         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14860         esac
14861         case "$random_r_proto" in
14862         ''|0) try='int random_r(long*, struct random_data*);'
14863         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14864         esac
14865         case "$random_r_proto" in
14866         ''|0) try='int random_r(struct random_data*, int32_t*);'
14867         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14868         esac
14869         case "$random_r_proto" in
14870         ''|0)   d_random_r=undef
14871                 random_r_proto=0
14872                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14873         * )     case "$random_r_proto" in
14874                 REENTRANT_PROTO*) ;;
14875                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14876                 esac
14877                 echo "Prototype: $try" ;;
14878         esac
14879         ;;
14880         *)      case "$usethreads" in
14881                 define) echo "random_r has no prototype, not using it." >&4 ;;
14882                 esac
14883                 d_random_r=undef
14884                 random_r_proto=0
14885                 ;;
14886         esac
14887         ;;
14888 *)      random_r_proto=0
14889         ;;
14890 esac
14891
14892 : see if readdir and friends exist
14893 set readdir d_readdir
14894 eval $inlibc
14895 set seekdir d_seekdir
14896 eval $inlibc
14897 set telldir d_telldir
14898 eval $inlibc
14899 set rewinddir d_rewinddir
14900 eval $inlibc
14901
14902 : see if readdir64_r exists
14903 set readdir64_r d_readdir64_r
14904 eval $inlibc
14905 case "$d_readdir64_r" in
14906 "$define")
14907         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14908         case "$d_readdir64_r_proto:$usethreads" in
14909         ":define")      d_readdir64_r_proto=define
14910                 set d_readdir64_r_proto readdir64_r $hdrs
14911                 eval $hasproto ;;
14912         *)      ;;
14913         esac
14914         case "$d_readdir64_r_proto" in
14915         define)
14916         case "$readdir64_r_proto" in
14917         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14918         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14919         esac
14920         case "$readdir64_r_proto" in
14921         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14922         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14923         esac
14924         case "$readdir64_r_proto" in
14925         ''|0)   d_readdir64_r=undef
14926                 readdir64_r_proto=0
14927                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14928         * )     case "$readdir64_r_proto" in
14929                 REENTRANT_PROTO*) ;;
14930                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14931                 esac
14932                 echo "Prototype: $try" ;;
14933         esac
14934         ;;
14935         *)      case "$usethreads" in
14936                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14937                 esac
14938                 d_readdir64_r=undef
14939                 readdir64_r_proto=0
14940                 ;;
14941         esac
14942         ;;
14943 *)      readdir64_r_proto=0
14944         ;;
14945 esac
14946
14947 : see if readdir_r exists
14948 set readdir_r d_readdir_r
14949 eval $inlibc
14950 case "$d_readdir_r" in
14951 "$define")
14952         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14953         case "$d_readdir_r_proto:$usethreads" in
14954         ":define")      d_readdir_r_proto=define
14955                 set d_readdir_r_proto readdir_r $hdrs
14956                 eval $hasproto ;;
14957         *)      ;;
14958         esac
14959         case "$d_readdir_r_proto" in
14960         define)
14961         case "$readdir_r_proto" in
14962         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14963         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14964         esac
14965         case "$readdir_r_proto" in
14966         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14967         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14968         esac
14969         case "$readdir_r_proto" in
14970         ''|0)   d_readdir_r=undef
14971                 readdir_r_proto=0
14972                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14973         * )     case "$readdir_r_proto" in
14974                 REENTRANT_PROTO*) ;;
14975                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14976                 esac
14977                 echo "Prototype: $try" ;;
14978         esac
14979         ;;
14980         *)      case "$usethreads" in
14981                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14982                 esac
14983                 d_readdir_r=undef
14984                 readdir_r_proto=0
14985                 ;;
14986         esac
14987         ;;
14988 *)      readdir_r_proto=0
14989         ;;
14990 esac
14991
14992 : see if readv exists
14993 set readv d_readv
14994 eval $inlibc
14995
14996 : see if recvmsg exists
14997 set recvmsg d_recvmsg
14998 eval $inlibc
14999
15000 : see if rename exists
15001 set rename d_rename
15002 eval $inlibc
15003
15004 : see if rmdir exists
15005 set rmdir d_rmdir
15006 eval $inlibc
15007
15008 : see if memory.h is available.
15009 val=''
15010 set memory.h val
15011 eval $inhdr
15012
15013 : See if it conflicts with string.h
15014 case "$val" in
15015 $define)
15016         case "$strings" in
15017         '') ;;
15018         *)
15019                 $cppstdin $cppflags $cppminus < $strings > mem.h
15020                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
15021                         echo " "
15022                         echo "We won't be including <memory.h>."
15023                         val="$undef"
15024                 fi
15025                 $rm -f mem.h
15026                 ;;
15027         esac
15028 esac
15029 set i_memory
15030 eval $setvar
15031
15032 : can bcopy handle overlapping blocks?
15033 echo " "
15034 val="$undef"
15035 case "$d_memmove" in
15036 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
15037 *)      case "$d_bcopy" in
15038         "$define")
15039                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15040                 $cat >try.c <<EOCP
15041 #$i_memory I_MEMORY
15042 #$i_stdlib I_STDLIB
15043 #$i_string I_STRING
15044 #$i_unistd I_UNISTD
15045 EOCP
15046         $cat >>try.c <<'EOCP'
15047 #include <stdio.h>
15048 #ifdef I_MEMORY
15049 #  include <memory.h>
15050 #endif
15051 #ifdef I_STDLIB
15052 #  include <stdlib.h>
15053 #endif
15054 #ifdef I_STRING
15055 #  include <string.h>
15056 #else
15057 #  include <strings.h>
15058 #endif
15059 #ifdef I_UNISTD
15060 #  include <unistd.h>  /* Needed for NetBSD */
15061 #endif
15062 int main()
15063 {
15064 char buf[128], abc[128];
15065 char *b;
15066 int len;
15067 int off;
15068 int align;
15069
15070 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15071    try to store the string in read-only memory. */
15072 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15073
15074 for (align = 7; align >= 0; align--) {
15075         for (len = 36; len; len--) {
15076                 b = buf+align;
15077                 bcopy(abc, b, len);
15078                 for (off = 1; off <= len; off++) {
15079                         bcopy(b, b+off, len);
15080                         bcopy(b+off, b, len);
15081                         if (bcmp(b, abc, len))
15082                                 exit(1);
15083                 }
15084         }
15085 }
15086 exit(0);
15087 }
15088 EOCP
15089                 set try
15090                 if eval $compile_ok; then
15091                         if ./try 2>/dev/null; then
15092                                 echo "Yes, it can."
15093                                 val="$define"
15094                         else
15095                                 echo "It can't, sorry."
15096                         fi
15097                 else
15098                         echo "(I can't compile the test program, so we'll assume not...)"
15099                 fi
15100                 ;;
15101         esac
15102         $rm -f try.* try core
15103         ;;
15104 esac
15105 set d_safebcpy
15106 eval $setvar
15107
15108 : can memcpy handle overlapping blocks?
15109 echo " "
15110 val="$undef"
15111 case "$d_memmove" in
15112 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15113 *)      case "$d_memcpy" in
15114         "$define")
15115                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15116                 $cat >try.c <<EOCP
15117 #$i_memory I_MEMORY
15118 #$i_stdlib I_STDLIB
15119 #$i_string I_STRING
15120 #$i_unistd I_UNISTD
15121 EOCP
15122         $cat >>try.c <<'EOCP'
15123 #include <stdio.h>
15124 #ifdef I_MEMORY
15125 #  include <memory.h>
15126 #endif
15127 #ifdef I_STDLIB
15128 #  include <stdlib.h>
15129 #endif
15130 #ifdef I_STRING
15131 #  include <string.h>
15132 #else
15133 #  include <strings.h>
15134 #endif
15135 #ifdef I_UNISTD
15136 #  include <unistd.h>  /* Needed for NetBSD */
15137 #endif
15138 int main()
15139 {
15140 char buf[128], abc[128];
15141 char *b;
15142 int len;
15143 int off;
15144 int align;
15145
15146 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15147    try to store the string in read-only memory. */
15148 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15149
15150 for (align = 7; align >= 0; align--) {
15151         for (len = 36; len; len--) {
15152                 b = buf+align;
15153                 memcpy(b, abc, len);
15154                 for (off = 1; off <= len; off++) {
15155                         memcpy(b+off, b, len);
15156                         memcpy(b, b+off, len);
15157                         if (memcmp(b, abc, len))
15158                                 exit(1);
15159                 }
15160         }
15161 }
15162 exit(0);
15163 }
15164 EOCP
15165                 set try
15166                 if eval $compile_ok; then
15167                         if ./try 2>/dev/null; then
15168                                 echo "Yes, it can."
15169                                 val="$define"
15170                         else
15171                                 echo "It can't, sorry."
15172                         fi
15173                 else
15174                         echo "(I can't compile the test program, so we'll assume not...)"
15175                 fi
15176                 ;;
15177         esac
15178         $rm -f try.* try core
15179         ;;
15180 esac
15181 set d_safemcpy
15182 eval $setvar
15183
15184 : can memcmp be trusted to compare relative magnitude?
15185 val="$undef"
15186 case "$d_memcmp" in
15187 "$define")
15188         echo " "
15189         echo "Checking if your memcmp() can compare relative magnitude..." >&4
15190         $cat >try.c <<EOCP
15191 #$i_memory I_MEMORY
15192 #$i_stdlib I_STDLIB
15193 #$i_string I_STRING
15194 #$i_unistd I_UNISTD
15195 EOCP
15196         $cat >>try.c <<'EOCP'
15197 #include <stdio.h>
15198 #ifdef I_MEMORY
15199 #  include <memory.h>
15200 #endif
15201 #ifdef I_STDLIB
15202 #  include <stdlib.h>
15203 #endif
15204 #ifdef I_STRING
15205 #  include <string.h>
15206 #else
15207 #  include <strings.h>
15208 #endif
15209 #ifdef I_UNISTD
15210 #  include <unistd.h>  /* Needed for NetBSD */
15211 #endif
15212 int main()
15213 {
15214 char a = -1;
15215 char b = 0;
15216 if ((a < b) && memcmp(&a, &b, 1) < 0)
15217         exit(1);
15218 exit(0);
15219 }
15220 EOCP
15221         set try
15222         if eval $compile_ok; then
15223                 if $run ./try 2>/dev/null; then
15224                         echo "Yes, it can."
15225                         val="$define"
15226                 else
15227                         echo "No, it can't (it uses signed chars)."
15228                 fi
15229         else
15230                 echo "(I can't compile the test program, so we'll assume not...)"
15231         fi
15232         ;;
15233 esac
15234 $rm -f try.* try core
15235 set d_sanemcmp
15236 eval $setvar
15237
15238 : see if prototype for sbrk is available
15239 echo " "
15240 set d_sbrkproto sbrk $i_unistd unistd.h
15241 eval $hasproto
15242
15243 : see if select exists
15244 set select d_select
15245 eval $inlibc
15246
15247 : see if semctl exists
15248 set semctl d_semctl
15249 eval $inlibc
15250
15251 : see if semget exists
15252 set semget d_semget
15253 eval $inlibc
15254
15255 : see if semop exists
15256 set semop d_semop
15257 eval $inlibc
15258
15259 : see how much of the 'sem*(2)' library is present.
15260 h_sem=true
15261 echo " "
15262 case "$d_semctl$d_semget$d_semop" in
15263 *"$undef"*) h_sem=false;;
15264 esac
15265 case "$osname" in
15266 freebsd)
15267     case "`ipcs 2>&1`" in
15268     "SVID messages"*"not configured"*)
15269         echo "Your $osname does not have the sem*(2) configured." >&4
15270         h_sem=false
15271         val="$undef"
15272         set semctl d_semctl
15273         eval $setvar
15274         set semget d_semget
15275         eval $setvar
15276         set semop d_semop
15277         eval $setvar
15278         ;;
15279     esac
15280     ;;
15281 esac
15282 : we could also check for sys/ipc.h ...
15283 if $h_sem && $test `./findhdr sys/sem.h`; then
15284         echo "You have the full sem*(2) library." >&4
15285         val="$define"
15286 else
15287         echo "You don't have the full sem*(2) library." >&4
15288         val="$undef"
15289 fi
15290 set d_sem
15291 eval $setvar
15292
15293 : see whether sys/sem.h defines union semun
15294 echo " "
15295 $cat > try.c <<'END'
15296 #include <sys/types.h>
15297 #include <sys/ipc.h>
15298 #include <sys/sem.h>
15299 int main () { union semun semun; semun.buf = 0; }
15300 END
15301 set try
15302 if eval $compile; then
15303     echo "You have union semun in <sys/sem.h>." >&4
15304     val="$define"
15305 else
15306     echo "You do not have union semun in <sys/sem.h>." >&4
15307     val="$undef"
15308 fi
15309 $rm -f try try.c
15310 set d_union_semun
15311 eval $setvar
15312
15313 : see how to do semctl IPC_STAT
15314 case "$d_sem" in
15315 $define)
15316     echo " "
15317     $cat > try.h <<END
15318 #ifndef S_IRUSR
15319 #   ifdef S_IREAD
15320 #       define S_IRUSR S_IREAD
15321 #       define S_IWUSR S_IWRITE
15322 #       define S_IXUSR S_IEXEC
15323 #   else
15324 #       define S_IRUSR 0400
15325 #       define S_IWUSR 0200
15326 #       define S_IXUSR 0100
15327 #   endif
15328 #   define S_IRGRP (S_IRUSR>>3)
15329 #   define S_IWGRP (S_IWUSR>>3)
15330 #   define S_IXGRP (S_IXUSR>>3)
15331 #   define S_IROTH (S_IRUSR>>6)
15332 #   define S_IWOTH (S_IWUSR>>6)
15333 #   define S_IXOTH (S_IXUSR>>6)
15334 #endif
15335 #ifndef S_IRWXU
15336 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15337 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15338 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15339 #endif
15340 END
15341     : see whether semctl IPC_STAT can use union semun
15342     val="$undef"
15343     case "$d_semctl_semun" in
15344     '')
15345       $cat > try.c <<END
15346 #include <sys/types.h>
15347 #include <sys/ipc.h>
15348 #include <sys/sem.h>
15349 #include <sys/stat.h>
15350 #include <stdio.h>
15351 #include <errno.h>
15352 #include "try.h"
15353 #ifndef errno
15354 extern int errno;
15355 #endif
15356 #$d_union_semun HAS_UNION_SEMUN
15357 int main() {
15358     union semun
15359 #ifndef HAS_UNION_SEMUN
15360     {
15361         int val;
15362         struct semid_ds *buf;
15363         unsigned short *array;
15364     }
15365 #endif
15366     arg;
15367     int sem, st;
15368
15369 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15370     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15371     if (sem > -1) {
15372         struct semid_ds argbuf;
15373         arg.buf = &argbuf;
15374 #       ifdef IPC_STAT
15375         st = semctl(sem, 0, IPC_STAT, arg);
15376         if (st == 0)
15377             printf("semun\n");
15378         else
15379 #       endif /* IPC_STAT */
15380             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15381 #       ifdef IPC_RMID
15382         if (semctl(sem, 0, IPC_RMID, arg) != 0)
15383 #       endif /* IPC_RMID */
15384             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15385     } else
15386 #endif /* IPC_PRIVATE && ... */
15387         printf("semget failed: errno = %d\n", errno);
15388   return 0;
15389 }
15390 END
15391       set try
15392       if eval $compile; then
15393           xxx=`$run ./try`
15394           case "$xxx" in
15395           semun) val="$define" ;;
15396           esac
15397       fi
15398       $rm -f try try.c
15399       ;;
15400     esac
15401     set d_semctl_semun
15402     eval $setvar
15403     case "$d_semctl_semun" in
15404     $define)
15405         echo "You can use union semun for semctl IPC_STAT." >&4
15406         also='also'
15407         ;;
15408     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15409         also=''
15410         ;;
15411     esac
15412
15413     : see whether semctl IPC_STAT can use struct semid_ds pointer
15414     val="$undef"
15415     case "$d_semctl_semid_ds" in
15416     '')
15417       $cat > try.c <<'END'
15418 #include <sys/types.h>
15419 #include <sys/ipc.h>
15420 #include <sys/sem.h>
15421 #include <sys/stat.h>
15422 #include "try.h"
15423 #include <stdio.h>
15424 #include <errno.h>
15425 #ifndef errno
15426 extern int errno;
15427 #endif
15428 int main() {
15429     struct semid_ds arg;
15430     int sem, st;
15431
15432 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15433     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15434     if (sem > -1) {
15435 #       ifdef IPC_STAT
15436         st = semctl(sem, 0, IPC_STAT, &arg);
15437         if (st == 0)
15438             printf("semid_ds\n");
15439         else
15440 #       endif /* IPC_STAT */
15441             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15442 #       ifdef IPC_RMID
15443         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15444 #       endif /* IPC_RMID */
15445             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15446     } else
15447 #endif /* IPC_PRIVATE && ... */
15448         printf("semget failed: errno = %d\n", errno);
15449
15450     return 0;
15451 }
15452 END
15453       set try
15454       if eval $compile; then
15455           xxx=`$run ./try`
15456           case "$xxx" in
15457           semid_ds) val="$define" ;;
15458           esac
15459       fi
15460       $rm -f try try.c
15461       ;;
15462     esac
15463     set d_semctl_semid_ds
15464     eval $setvar
15465     case "$d_semctl_semid_ds" in
15466     $define)
15467         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15468         ;;
15469     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15470         ;;
15471     esac
15472     $rm -f try.h
15473     ;;
15474 *)  val="$undef"
15475
15476     # We do not have the full sem*(2) library, so assume we can not
15477     # use either.
15478
15479     set d_semctl_semun
15480     eval $setvar
15481
15482     set d_semctl_semid_ds
15483     eval $setvar
15484     ;;
15485 esac
15486
15487 : see if sendmsg exists
15488 set sendmsg d_sendmsg
15489 eval $inlibc
15490
15491 : see if setegid exists
15492 set setegid d_setegid
15493 eval $inlibc
15494
15495 : see if seteuid exists
15496 set seteuid d_seteuid
15497 eval $inlibc
15498
15499 : see if setgrent exists
15500 set setgrent d_setgrent
15501 eval $inlibc
15502
15503 : see if setgrent_r exists
15504 set setgrent_r d_setgrent_r
15505 eval $inlibc
15506 case "$d_setgrent_r" in
15507 "$define")
15508         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15509         case "$d_setgrent_r_proto:$usethreads" in
15510         ":define")      d_setgrent_r_proto=define
15511                 set d_setgrent_r_proto setgrent_r $hdrs
15512                 eval $hasproto ;;
15513         *)      ;;
15514         esac
15515         case "$d_setgrent_r_proto" in
15516         define)
15517         case "$setgrent_r_proto" in
15518         ''|0) try='int setgrent_r(FILE**);'
15519         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15520         esac
15521         case "$setgrent_r_proto" in
15522         ''|0) try='void setgrent_r(FILE**);'
15523         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15524         esac
15525         case "$setgrent_r_proto" in
15526         ''|0)   d_setgrent_r=undef
15527                 setgrent_r_proto=0
15528                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15529         * )     case "$setgrent_r_proto" in
15530                 REENTRANT_PROTO*) ;;
15531                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15532                 esac
15533                 echo "Prototype: $try" ;;
15534         esac
15535         ;;
15536         *)      case "$usethreads" in
15537                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15538                 esac
15539                 d_setgrent_r=undef
15540                 setgrent_r_proto=0
15541                 ;;
15542         esac
15543         ;;
15544 *)      setgrent_r_proto=0
15545         ;;
15546 esac
15547
15548 : see if sethostent exists
15549 set sethostent d_sethent
15550 eval $inlibc
15551
15552 : see if sethostent_r exists
15553 set sethostent_r d_sethostent_r
15554 eval $inlibc
15555 case "$d_sethostent_r" in
15556 "$define")
15557         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15558         case "$d_sethostent_r_proto:$usethreads" in
15559         ":define")      d_sethostent_r_proto=define
15560                 set d_sethostent_r_proto sethostent_r $hdrs
15561                 eval $hasproto ;;
15562         *)      ;;
15563         esac
15564         case "$d_sethostent_r_proto" in
15565         define)
15566         case "$sethostent_r_proto" in
15567         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15568         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15569         esac
15570         case "$sethostent_r_proto" in
15571         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15572         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15573         esac
15574         case "$sethostent_r_proto" in
15575         ''|0)   d_sethostent_r=undef
15576                 sethostent_r_proto=0
15577                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15578         * )     case "$sethostent_r_proto" in
15579                 REENTRANT_PROTO*) ;;
15580                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15581                 esac
15582                 echo "Prototype: $try" ;;
15583         esac
15584         ;;
15585         *)      case "$usethreads" in
15586                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15587                 esac
15588                 d_sethostent_r=undef
15589                 sethostent_r_proto=0
15590                 ;;
15591         esac
15592         ;;
15593 *)      sethostent_r_proto=0
15594         ;;
15595 esac
15596
15597 : see if setitimer exists
15598 set setitimer d_setitimer
15599 eval $inlibc
15600
15601 : see if setlinebuf exists
15602 set setlinebuf d_setlinebuf
15603 eval $inlibc
15604
15605 : see if setlocale exists
15606 set setlocale d_setlocale
15607 eval $inlibc
15608
15609 : see if locale.h is available
15610 set locale.h i_locale
15611 eval $inhdr
15612
15613 : see if setlocale_r exists
15614 set setlocale_r d_setlocale_r
15615 eval $inlibc
15616 case "$d_setlocale_r" in
15617 "$define")
15618         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15619         case "$d_setlocale_r_proto:$usethreads" in
15620         ":define")      d_setlocale_r_proto=define
15621                 set d_setlocale_r_proto setlocale_r $hdrs
15622                 eval $hasproto ;;
15623         *)      ;;
15624         esac
15625         case "$d_setlocale_r_proto" in
15626         define)
15627         case "$setlocale_r_proto" in
15628         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15629         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15630         esac
15631         case "$setlocale_r_proto" in
15632         ''|0)   d_setlocale_r=undef
15633                 setlocale_r_proto=0
15634                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15635         * )     case "$setlocale_r_proto" in
15636                 REENTRANT_PROTO*) ;;
15637                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15638                 esac
15639                 echo "Prototype: $try" ;;
15640         esac
15641         ;;
15642         *)      case "$usethreads" in
15643                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15644                 esac
15645                 d_setlocale_r=undef
15646                 setlocale_r_proto=0
15647                 ;;
15648         esac
15649         ;;
15650 *)      setlocale_r_proto=0
15651         ;;
15652 esac
15653
15654 : see if setnetent exists
15655 set setnetent d_setnent
15656 eval $inlibc
15657
15658 : see if setnetent_r exists
15659 set setnetent_r d_setnetent_r
15660 eval $inlibc
15661 case "$d_setnetent_r" in
15662 "$define")
15663         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15664         case "$d_setnetent_r_proto:$usethreads" in
15665         ":define")      d_setnetent_r_proto=define
15666                 set d_setnetent_r_proto setnetent_r $hdrs
15667                 eval $hasproto ;;
15668         *)      ;;
15669         esac
15670         case "$d_setnetent_r_proto" in
15671         define)
15672         case "$setnetent_r_proto" in
15673         ''|0) try='int setnetent_r(int, struct netent_data*);'
15674         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15675         esac
15676         case "$setnetent_r_proto" in
15677         ''|0) try='void setnetent_r(int, struct netent_data*);'
15678         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15679         esac
15680         case "$setnetent_r_proto" in
15681         ''|0)   d_setnetent_r=undef
15682                 setnetent_r_proto=0
15683                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15684         * )     case "$setnetent_r_proto" in
15685                 REENTRANT_PROTO*) ;;
15686                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15687                 esac
15688                 echo "Prototype: $try" ;;
15689         esac
15690         ;;
15691         *)      case "$usethreads" in
15692                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15693                 esac
15694                 d_setnetent_r=undef
15695                 setnetent_r_proto=0
15696                 ;;
15697         esac
15698         ;;
15699 *)      setnetent_r_proto=0
15700         ;;
15701 esac
15702
15703 : see if setprotoent exists
15704 set setprotoent d_setpent
15705 eval $inlibc
15706
15707 : see if setpgid exists
15708 set setpgid d_setpgid
15709 eval $inlibc
15710
15711 : see if setpgrp2 exists
15712 set setpgrp2 d_setpgrp2
15713 eval $inlibc
15714
15715 : see if setpriority exists
15716 set setpriority d_setprior
15717 eval $inlibc
15718
15719 : see if setproctitle exists
15720 set setproctitle d_setproctitle
15721 eval $inlibc
15722
15723 : see if setprotoent_r exists
15724 set setprotoent_r d_setprotoent_r
15725 eval $inlibc
15726 case "$d_setprotoent_r" in
15727 "$define")
15728         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15729         case "$d_setprotoent_r_proto:$usethreads" in
15730         ":define")      d_setprotoent_r_proto=define
15731                 set d_setprotoent_r_proto setprotoent_r $hdrs
15732                 eval $hasproto ;;
15733         *)      ;;
15734         esac
15735         case "$d_setprotoent_r_proto" in
15736         define)
15737         case "$setprotoent_r_proto" in
15738         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15739         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15740         esac
15741         case "$setprotoent_r_proto" in
15742         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15743         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15744         esac
15745         case "$setprotoent_r_proto" in
15746         ''|0)   d_setprotoent_r=undef
15747                 setprotoent_r_proto=0
15748                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15749         * )     case "$setprotoent_r_proto" in
15750                 REENTRANT_PROTO*) ;;
15751                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15752                 esac
15753                 echo "Prototype: $try" ;;
15754         esac
15755         ;;
15756         *)      case "$usethreads" in
15757                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15758                 esac
15759                 d_setprotoent_r=undef
15760                 setprotoent_r_proto=0
15761                 ;;
15762         esac
15763         ;;
15764 *)      setprotoent_r_proto=0
15765         ;;
15766 esac
15767
15768 : see if setpwent exists
15769 set setpwent d_setpwent
15770 eval $inlibc
15771
15772 : see if setpwent_r exists
15773 set setpwent_r d_setpwent_r
15774 eval $inlibc
15775 case "$d_setpwent_r" in
15776 "$define")
15777         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15778         case "$d_setpwent_r_proto:$usethreads" in
15779         ":define")      d_setpwent_r_proto=define
15780                 set d_setpwent_r_proto setpwent_r $hdrs
15781                 eval $hasproto ;;
15782         *)      ;;
15783         esac
15784         case "$d_setpwent_r_proto" in
15785         define)
15786         case "$setpwent_r_proto" in
15787         ''|0) try='int setpwent_r(FILE**);'
15788         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15789         esac
15790         case "$setpwent_r_proto" in
15791         ''|0) try='void setpwent_r(FILE**);'
15792         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15793         esac
15794         case "$setpwent_r_proto" in
15795         ''|0)   d_setpwent_r=undef
15796                 setpwent_r_proto=0
15797                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15798         * )     case "$setpwent_r_proto" in
15799                 REENTRANT_PROTO*) ;;
15800                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15801                 esac
15802                 echo "Prototype: $try" ;;
15803         esac
15804         ;;
15805         *)      case "$usethreads" in
15806                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15807                 esac
15808                 d_setpwent_r=undef
15809                 setpwent_r_proto=0
15810                 ;;
15811         esac
15812         ;;
15813 *)      setpwent_r_proto=0
15814         ;;
15815 esac
15816
15817 : see if setregid exists
15818 set setregid d_setregid
15819 eval $inlibc
15820 set setresgid d_setresgid
15821 eval $inlibc
15822
15823 : see if setreuid exists
15824 set setreuid d_setreuid
15825 eval $inlibc
15826 set setresuid d_setresuid
15827 eval $inlibc
15828
15829 : see if setrgid exists
15830 set setrgid d_setrgid
15831 eval $inlibc
15832
15833 : see if setruid exists
15834 set setruid d_setruid
15835 eval $inlibc
15836
15837 : see if setservent exists
15838 set setservent d_setsent
15839 eval $inlibc
15840
15841 : see if setservent_r exists
15842 set setservent_r d_setservent_r
15843 eval $inlibc
15844 case "$d_setservent_r" in
15845 "$define")
15846         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15847         case "$d_setservent_r_proto:$usethreads" in
15848         ":define")      d_setservent_r_proto=define
15849                 set d_setservent_r_proto setservent_r $hdrs
15850                 eval $hasproto ;;
15851         *)      ;;
15852         esac
15853         case "$d_setservent_r_proto" in
15854         define)
15855         case "$setservent_r_proto" in
15856         ''|0) try='int setservent_r(int, struct servent_data*);'
15857         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15858         esac
15859         case "$setservent_r_proto" in
15860         ''|0) try='void setservent_r(int, struct servent_data*);'
15861         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15862         esac
15863         case "$setservent_r_proto" in
15864         ''|0)   d_setservent_r=undef
15865                 setservent_r_proto=0
15866                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15867         * )     case "$setservent_r_proto" in
15868                 REENTRANT_PROTO*) ;;
15869                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15870                 esac
15871                 echo "Prototype: $try" ;;
15872         esac
15873         ;;
15874         *)      case "$usethreads" in
15875                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15876                 esac
15877                 d_setservent_r=undef
15878                 setservent_r_proto=0
15879                 ;;
15880         esac
15881         ;;
15882 *)      setservent_r_proto=0
15883         ;;
15884 esac
15885
15886 : see if setsid exists
15887 set setsid d_setsid
15888 eval $inlibc
15889
15890 : see if setvbuf exists
15891 set setvbuf d_setvbuf
15892 eval $inlibc
15893
15894 : see if sfio.h is available
15895 set sfio.h i_sfio
15896 eval $inhdr
15897
15898
15899 : see if sfio library is available
15900 case "$i_sfio" in
15901 $define)
15902         val=''
15903         set sfreserve val
15904         eval $inlibc
15905         ;;
15906 *)
15907         val="$undef"
15908         ;;
15909 esac
15910 : Ok, but do we want to use it.
15911 case "$val" in
15912 $define)
15913         case "$usesfio" in
15914         true|$define|[yY]*) dflt='y';;
15915         *) dflt='n';;
15916         esac
15917         echo "$package can use the sfio library, but it is experimental."
15918         case "$useperlio" in
15919         "$undef")
15920             echo "For sfio also the PerlIO abstraction layer is needed."
15921             echo "Earlier you said you wouldn't want that."
15922             ;;
15923         esac
15924         rp="You seem to have sfio available, do you want to try using it?"
15925         . ./myread
15926         case "$ans" in
15927         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15928                 useperlio="$define"
15929                 val="$define"
15930                 ;;
15931         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15932                 val="$undef"
15933                 ;;
15934         esac
15935         ;;
15936 *)      case "$usesfio" in
15937         true|$define|[yY]*)
15938                 echo "Sorry, cannot find sfio on this machine." >&4
15939                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15940                 val="$undef"
15941                 ;;
15942         esac
15943         ;;
15944 esac
15945 set d_sfio
15946 eval $setvar
15947 case "$d_sfio" in
15948 $define) usesfio='true';;
15949 *) usesfio='false';;
15950 esac
15951 case "$d_sfio" in
15952 $define) ;;
15953 *)      : Remove sfio from list of libraries to use
15954         case "$libs" in
15955         *-lsfio*)
15956                 echo "Removing unneeded -lsfio from library list" >&4
15957                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15958                 shift
15959                 libs="$*"
15960                 echo "libs = $libs" >&4
15961                 ;;
15962         esac
15963 ;;
15964 esac
15965
15966
15967 : see if shmctl exists
15968 set shmctl d_shmctl
15969 eval $inlibc
15970
15971 : see if shmget exists
15972 set shmget d_shmget
15973 eval $inlibc
15974
15975 : see if shmat exists
15976 set shmat d_shmat
15977 eval $inlibc
15978 : see what shmat returns
15979 case "$d_shmat" in
15980 "$define")
15981         $cat >shmat.c <<'END'
15982 #include <sys/shm.h>
15983 void *shmat();
15984 END
15985         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15986                 shmattype='void *'
15987         else
15988                 shmattype='char *'
15989         fi
15990         echo "and it returns ($shmattype)." >&4
15991         : see if a prototype for shmat is available
15992         xxx=`./findhdr sys/shm.h`
15993         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15994         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15995                 val="$define"
15996         else
15997                 val="$undef"
15998         fi
15999         $rm -f shmat.[co]
16000         ;;
16001 *)
16002         val="$undef"
16003         ;;
16004 esac
16005 set d_shmatprototype
16006 eval $setvar
16007
16008 : see if shmdt exists
16009 set shmdt d_shmdt
16010 eval $inlibc
16011
16012 : see how much of the 'shm*(2)' library is present.
16013 h_shm=true
16014 echo " "
16015 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
16016 *"$undef"*) h_shm=false;;
16017 esac
16018 case "$osname" in
16019 freebsd)
16020     case "`ipcs 2>&1`" in
16021     "SVID shared memory"*"not configured"*)
16022         echo "Your $osname does not have the shm*(2) configured." >&4
16023         h_shm=false
16024         val="$undef"
16025         set shmctl d_shmctl
16026         evat $setvar
16027         set shmget d_shmget
16028         evat $setvar
16029         set shmat d_shmat
16030         evat $setvar
16031         set shmdt d_shmdt
16032         evat $setvar
16033         ;;
16034     esac
16035     ;;
16036 esac
16037 : we could also check for sys/ipc.h ...
16038 if $h_shm && $test `./findhdr sys/shm.h`; then
16039         echo "You have the full shm*(2) library." >&4
16040         val="$define"
16041 else
16042         echo "You don't have the full shm*(2) library." >&4
16043         val="$undef"
16044 fi
16045 set d_shm
16046 eval $setvar
16047
16048 echo " "
16049 : see if we have sigaction
16050 if set sigaction val -f d_sigaction; eval $csym; $val; then
16051         echo 'sigaction() found.' >&4
16052         $cat > try.c <<EOP
16053 #include <stdio.h>
16054 #include <sys/types.h>
16055 #include <signal.h>
16056 #$i_stdlib I_STDLIB
16057 #ifdef I_STDLIB
16058 #include <stdlib.h>
16059 #endif
16060 int main()
16061 {
16062     struct sigaction act, oact;
16063     act.sa_flags = 0;
16064     oact.sa_handler = 0;
16065     /* so that act and oact are used */
16066     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16067 }
16068 EOP
16069         set try
16070         if eval $compile_ok; then
16071                 val="$define"
16072         else
16073                 echo "But you don't seem to have a useable struct sigaction." >&4
16074                 val="$undef"
16075         fi
16076 else
16077         echo 'sigaction NOT found.' >&4
16078         val="$undef"
16079 fi
16080 set d_sigaction; eval $setvar
16081 $rm -f try try$_o try.c
16082
16083 : see if sigprocmask exists
16084 set sigprocmask d_sigprocmask
16085 eval $inlibc
16086
16087 : see if sigsetjmp exists
16088 echo " "
16089 case "$d_sigsetjmp" in
16090 '')
16091         $cat >try.c <<EOP
16092 #include <setjmp.h>
16093 #$i_stdlib I_STDLIB
16094 #ifdef I_STDLIB
16095 #include <stdlib.h>
16096 #endif
16097 sigjmp_buf env;
16098 int set = 1;
16099 int main()
16100 {
16101         if (sigsetjmp(env,1))
16102                 exit(set);
16103         set = 0;
16104         siglongjmp(env, 1);
16105         exit(1);
16106 }
16107 EOP
16108         set try
16109         if eval $compile; then
16110                 if $run ./try >/dev/null 2>&1; then
16111                         echo "POSIX sigsetjmp found." >&4
16112                         val="$define"
16113                 else
16114                         $cat >&4 <<EOM
16115 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16116 I'll ignore them.
16117 EOM
16118                         val="$undef"
16119                 fi
16120         else
16121                 echo "sigsetjmp not found." >&4
16122                 val="$undef"
16123         fi
16124         ;;
16125 *) val="$d_sigsetjmp"
16126         case "$d_sigsetjmp" in
16127         $define) echo "POSIX sigsetjmp found." >&4;;
16128         $undef) echo "sigsetjmp not found." >&4;;
16129         esac
16130         ;;
16131 esac
16132 set d_sigsetjmp
16133 eval $setvar
16134 $rm -f try.c try
16135
16136
16137 d_sitecustomize="$undef"
16138 case "$usesitecustomize" in
16139     $define|true|[Yy]*)
16140         usesitecustomize="$define"
16141         d_sitecustomize="$define"
16142         ;;
16143     *)
16144         usesitecustomize="$undef"
16145     esac
16146
16147 : see if sockatmark exists
16148 set sockatmark d_sockatmark
16149 eval $inlibc
16150
16151 : see if prototype for sockatmark is available
16152 echo " "
16153 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16154 eval $hasproto
16155
16156 : see if socks5_init exists
16157 set socks5_init d_socks5_init
16158 eval $inlibc
16159
16160 : see if srand48_r exists
16161 set srand48_r d_srand48_r
16162 eval $inlibc
16163 case "$d_srand48_r" in
16164 "$define")
16165         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16166         case "$d_srand48_r_proto:$usethreads" in
16167         ":define")      d_srand48_r_proto=define
16168                 set d_srand48_r_proto srand48_r $hdrs
16169                 eval $hasproto ;;
16170         *)      ;;
16171         esac
16172         case "$d_srand48_r_proto" in
16173         define)
16174         case "$srand48_r_proto" in
16175         ''|0) try='int srand48_r(long, struct drand48_data*);'
16176         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16177         esac
16178         case "$srand48_r_proto" in
16179         ''|0)   d_srand48_r=undef
16180                 srand48_r_proto=0
16181                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16182         * )     case "$srand48_r_proto" in
16183                 REENTRANT_PROTO*) ;;
16184                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16185                 esac
16186                 echo "Prototype: $try" ;;
16187         esac
16188         ;;
16189         *)      case "$usethreads" in
16190                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16191                 esac
16192                 d_srand48_r=undef
16193                 srand48_r_proto=0
16194                 ;;
16195         esac
16196         ;;
16197 *)      srand48_r_proto=0
16198         ;;
16199 esac
16200
16201 : see if srandom_r exists
16202 set srandom_r d_srandom_r
16203 eval $inlibc
16204 case "$d_srandom_r" in
16205 "$define")
16206         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16207         case "$d_srandom_r_proto:$usethreads" in
16208         ":define")      d_srandom_r_proto=define
16209                 set d_srandom_r_proto srandom_r $hdrs
16210                 eval $hasproto ;;
16211         *)      ;;
16212         esac
16213         case "$d_srandom_r_proto" in
16214         define)
16215         case "$srandom_r_proto" in
16216         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16217         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16218         esac
16219         case "$srandom_r_proto" in
16220         ''|0)   d_srandom_r=undef
16221                 srandom_r_proto=0
16222                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16223         * )     case "$srandom_r_proto" in
16224                 REENTRANT_PROTO*) ;;
16225                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16226                 esac
16227                 echo "Prototype: $try" ;;
16228         esac
16229         ;;
16230         *)      case "$usethreads" in
16231                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16232                 esac
16233                 d_srandom_r=undef
16234                 srandom_r_proto=0
16235                 ;;
16236         esac
16237         ;;
16238 *)      srandom_r_proto=0
16239         ;;
16240 esac
16241
16242 : see if prototype for setresgid is available
16243 echo " "
16244 set d_sresgproto setresgid $i_unistd unistd.h
16245 eval $hasproto
16246
16247 : see if prototype for setresuid is available
16248 echo " "
16249 set d_sresuproto setresuid $i_unistd unistd.h
16250 eval $hasproto
16251
16252 : see if sys/stat.h is available
16253 set sys/stat.h i_sysstat
16254 eval $inhdr
16255
16256
16257 : see if stat knows about block sizes
16258 echo " "
16259 echo "Checking to see if your struct stat has st_blocks field..." >&4
16260 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16261 eval $hasfield
16262
16263
16264 : see if this is a sys/vfs.h system
16265 set sys/vfs.h i_sysvfs
16266 eval $inhdr
16267
16268
16269 : see if this is a sys/statfs.h system
16270 set sys/statfs.h i_sysstatfs
16271 eval $inhdr
16272
16273
16274 echo " "
16275 echo "Checking to see if your system supports struct statfs..." >&4
16276 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
16277 eval $hasstruct
16278 case "$d_statfs_s" in
16279 "$define")      echo "Yes, it does."   ;;
16280 *)              echo "No, it doesn't." ;;
16281 esac
16282
16283
16284
16285 : see if struct statfs knows about f_flags
16286 case "$d_statfs_s" in
16287 define) 
16288         echo " "
16289         echo "Checking to see if your struct statfs has f_flags field..." >&4
16290         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
16291         eval $hasfield
16292         ;;
16293 *)      val="$undef"
16294         set d_statfs_f_flags
16295         eval $setvar
16296         ;;
16297 esac
16298 case "$d_statfs_f_flags" in
16299 "$define")      echo "Yes, it does."   ;;
16300 *)              echo "No, it doesn't." ;;
16301 esac
16302
16303 $cat >&4 <<EOM
16304 Checking how to access stdio streams by file descriptor number...
16305 EOM
16306 case "$stdio_stream_array" in
16307 '')     $cat >try.c <<EOCP
16308 #include <stdio.h>
16309 int main() {
16310   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16311     printf("yes\n");
16312 }
16313 EOCP
16314         for s in _iob __iob __sF
16315         do
16316                 set try -DSTDIO_STREAM_ARRAY=$s
16317                 if eval $compile; then
16318                         case "`$run ./try`" in
16319                         yes)    stdio_stream_array=$s; break ;;
16320                         esac
16321                 fi
16322         done
16323         $rm -f try.* try$exe_ext
16324 esac
16325 case "$stdio_stream_array" in
16326 '')     $cat >&4 <<EOM
16327 I can't figure out how to access stdio streams by file descriptor number.
16328 EOM
16329         d_stdio_stream_array="$undef"
16330         ;;
16331 *)      $cat >&4 <<EOM
16332 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16333 EOM
16334         d_stdio_stream_array="$define"
16335         ;;
16336 esac
16337
16338 : see if strcoll exists
16339 set strcoll d_strcoll
16340 eval $inlibc
16341
16342 : check for structure copying
16343 echo " "
16344 echo "Checking to see if your C compiler can copy structs..." >&4
16345 $cat >try.c <<'EOCP'
16346 int main()
16347 {
16348         struct blurfl {
16349                 int dyick;
16350         } foo, bar;
16351
16352         foo = bar;
16353 }
16354 EOCP
16355 if $cc -c try.c >/dev/null 2>&1 ; then
16356         val="$define"
16357         echo "Yup, it can."
16358 else
16359         val="$undef"
16360         echo "Nope, it can't."
16361 fi
16362 set d_strctcpy
16363 eval $setvar
16364 $rm -f try.*
16365
16366 : see if strerror and/or sys_errlist[] exist
16367 echo " "
16368 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16369     if set strerror val -f d_strerror; eval $csym; $val; then
16370                 echo 'strerror() found.' >&4
16371                 d_strerror="$define"
16372                 d_strerrm='strerror(e)'
16373                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16374                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16375                         d_syserrlst="$define"
16376                 else
16377                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16378                         d_syserrlst="$undef"
16379                 fi
16380     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16381                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16382                 echo 'strerror() found in string header.' >&4
16383                 d_strerror="$define"
16384                 d_strerrm='strerror(e)'
16385                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16386                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16387                                 d_syserrlst="$define"
16388                 else
16389                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16390                         d_syserrlst="$undef"
16391                 fi
16392     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16393                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16394                 d_strerror="$undef"
16395                 d_syserrlst="$define"
16396                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16397     else
16398                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16399                 d_strerror="$undef"
16400                 d_syserrlst="$undef"
16401                 d_strerrm='"unknown"'
16402     fi
16403 fi
16404
16405 : see if strerror_r exists
16406 set strerror_r d_strerror_r
16407 eval $inlibc
16408 case "$d_strerror_r" in
16409 "$define")
16410         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16411         case "$d_strerror_r_proto:$usethreads" in
16412         ":define")      d_strerror_r_proto=define
16413                 set d_strerror_r_proto strerror_r $hdrs
16414                 eval $hasproto ;;
16415         *)      ;;
16416         esac
16417         case "$d_strerror_r_proto" in
16418         define)
16419         case "$strerror_r_proto" in
16420         ''|0) try='int strerror_r(int, char*, size_t);'
16421         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16422         esac
16423         case "$strerror_r_proto" in
16424         ''|0) try='int strerror_r(int, char*, int);'
16425         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16426         esac
16427         case "$strerror_r_proto" in
16428         ''|0) try='char* strerror_r(int, char*, size_t);'
16429         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16430         esac
16431         case "$strerror_r_proto" in
16432         ''|0)   d_strerror_r=undef
16433                 strerror_r_proto=0
16434                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16435         * )     case "$strerror_r_proto" in
16436                 REENTRANT_PROTO*) ;;
16437                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16438                 esac
16439                 echo "Prototype: $try" ;;
16440         esac
16441         ;;
16442         *)      case "$usethreads" in
16443                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16444                 esac
16445                 d_strerror_r=undef
16446                 strerror_r_proto=0
16447                 ;;
16448         esac
16449         ;;
16450 *)      strerror_r_proto=0
16451         ;;
16452 esac
16453
16454 : see if strftime exists
16455 set strftime d_strftime
16456 eval $inlibc
16457
16458 : see if strlcat exists
16459 set strlcat d_strlcat
16460 eval $inlibc
16461
16462 : see if strlcpy exists
16463 set strlcpy d_strlcpy
16464 eval $inlibc
16465
16466 : see if strtod exists
16467 set strtod d_strtod
16468 eval $inlibc
16469
16470 : see if strtol exists
16471 set strtol d_strtol
16472 eval $inlibc
16473
16474 : see if strtold exists
16475 set strtold d_strtold
16476 eval $inlibc
16477
16478 : see if strtoll exists
16479 set strtoll d_strtoll
16480 eval $inlibc
16481
16482 case "$d_longlong-$d_strtoll" in
16483 "$define-$define")
16484         $cat <<EOM
16485 Checking whether your strtoll() works okay...
16486 EOM
16487         $cat >try.c <<'EOCP'
16488 #include <errno.h>
16489 #ifdef __hpux
16490 #define strtoll __strtoll
16491 #endif
16492 #ifdef __EMX__
16493 #define strtoll _strtoll
16494 #endif
16495 #include <stdio.h>
16496 extern long long int strtoll(char *s, char **, int); 
16497 static int bad = 0;
16498 int check(char *s, long long ell, int een) {
16499         long long gll;
16500         errno = 0;
16501         gll = strtoll(s, 0, 10);
16502         if (!((gll == ell) && (errno == een)))
16503                 bad++;
16504 }
16505 int main() {
16506         check(" 1",                                      1LL, 0);
16507         check(" 0",                                      0LL, 0);
16508         check("-1",                                     -1LL, 0);
16509         check("-9223372036854775808", -9223372036854775808LL, 0);
16510         check("-9223372036854775808", -9223372036854775808LL, 0);
16511         check(" 9223372036854775807",  9223372036854775807LL, 0);
16512         check("-9223372036854775808", -9223372036854775808LL, 0);
16513         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16514         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16515         if (!bad)
16516                 printf("ok\n");
16517 }
16518 EOCP
16519         set try
16520         if eval $compile; then
16521                 yyy=`$run ./try`
16522                 case "$yyy" in
16523                 ok) echo "Your strtoll() seems to be working okay." ;;
16524                 *) cat <<EOM >&4
16525 Your strtoll() doesn't seem to be working okay.
16526 EOM
16527                    d_strtoll="$undef"
16528                    ;;
16529                 esac
16530         else
16531                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16532                 d_strtoll="$undef"
16533         fi
16534         ;;
16535 esac
16536
16537 : see if strtoq exists
16538 set strtoq d_strtoq
16539 eval $inlibc
16540
16541 : see if strtoul exists
16542 set strtoul d_strtoul
16543 eval $inlibc
16544
16545 case "$d_strtoul" in
16546 "$define")
16547         $cat <<EOM
16548 Checking whether your strtoul() works okay...
16549 EOM
16550         $cat >try.c <<'EOCP'
16551 #include <errno.h>
16552 #include <stdio.h>
16553 extern unsigned long int strtoul(char *s, char **, int); 
16554 static int bad = 0;
16555 void check(char *s, unsigned long eul, int een) {
16556         unsigned long gul;
16557         errno = 0;
16558         gul = strtoul(s, 0, 10);
16559         if (!((gul == eul) && (errno == een)))
16560                 bad++;
16561 }
16562 int main() {
16563         check(" 1", 1L, 0);
16564         check(" 0", 0L, 0);
16565 EOCP
16566         case "$longsize" in
16567         8)
16568             $cat >>try.c <<'EOCP'
16569         check("18446744073709551615", 18446744073709551615UL, 0);
16570         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16571 #if 0 /* strtoul() for /^-/ strings is undefined. */
16572         check("-1", 18446744073709551615UL, 0);
16573         check("-18446744073709551614", 2, 0);
16574         check("-18446744073709551615", 1, 0);
16575         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16576         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16577 #endif
16578 EOCP
16579                 ;;
16580         4)
16581                     $cat >>try.c <<'EOCP'
16582         check("4294967295", 4294967295UL, 0);
16583         check("4294967296", 4294967295UL, ERANGE);
16584 #if 0 /* strtoul() for /^-/ strings is undefined. */
16585         check("-1", 4294967295UL, 0);
16586         check("-4294967294", 2, 0);
16587         check("-4294967295", 1, 0);
16588         check("-4294967296", 4294967295UL, ERANGE);
16589         check("-4294967297", 4294967295UL, ERANGE);
16590 #endif
16591 EOCP
16592                 ;;
16593         *)
16594 : Should we write these tests to be more portable by sprintf-ing
16595 : ~0 and then manipulating that char string as input for strtol?
16596                 ;;
16597         esac
16598         $cat >>try.c <<'EOCP'
16599         if (!bad)
16600                 printf("ok\n");
16601         return 0;
16602 }
16603 EOCP
16604         set try
16605         if eval $compile; then
16606                 case "`$run ./try`" in
16607                 ok) echo "Your strtoul() seems to be working okay." ;;
16608                 *) cat <<EOM >&4
16609 Your strtoul() doesn't seem to be working okay.
16610 EOM
16611                    d_strtoul="$undef"
16612                    ;;
16613                 esac
16614         fi
16615         ;;
16616 esac
16617
16618 : see if strtoull exists
16619 set strtoull d_strtoull
16620 eval $inlibc
16621
16622 case "$d_longlong-$d_strtoull" in
16623 "$define-$define")
16624         $cat <<EOM
16625 Checking whether your strtoull() works okay...
16626 EOM
16627         $cat >try.c <<'EOCP'
16628 #include <errno.h>
16629 #ifdef __hpux
16630 #define strtoull __strtoull
16631 #endif
16632 #include <stdio.h>
16633 extern unsigned long long int strtoull(char *s, char **, int); 
16634 static int bad = 0;
16635 int check(char *s, long long eull, int een) {
16636         long long gull;
16637         errno = 0;
16638         gull = strtoull(s, 0, 10);
16639         if (!((gull == eull) && (errno == een)))
16640                 bad++;
16641 }
16642 int main() {
16643         check(" 1",                                        1LL, 0);
16644         check(" 0",                                        0LL, 0);
16645         check("18446744073709551615",  18446744073709551615ULL, 0);
16646         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16647 #if 0 /* strtoull() for /^-/ strings is undefined. */
16648         check("-1",                    18446744073709551615ULL, 0);
16649         check("-18446744073709551614",                     2LL, 0);
16650         check("-18446744073709551615",                     1LL, 0);
16651         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16652         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16653 #endif
16654         if (!bad)
16655                 printf("ok\n");
16656 }
16657 EOCP
16658         set try
16659         if eval $compile; then
16660                 case "`$run ./try`" in
16661                 ok) echo "Your strtoull() seems to be working okay." ;;
16662                 *) cat <<EOM >&4
16663 Your strtoull() doesn't seem to be working okay.
16664 EOM
16665                    d_strtoull="$undef"
16666                    ;;
16667                 esac
16668         fi
16669         ;;
16670 esac
16671
16672 : see if strtouq exists
16673 set strtouq d_strtouq
16674 eval $inlibc
16675
16676 case "$d_strtouq" in
16677 "$define")
16678         $cat <<EOM
16679 Checking whether your strtouq() works okay...
16680 EOM
16681         $cat >try.c <<'EOCP'
16682 #include <errno.h>
16683 #include <stdio.h>
16684 extern unsigned long long int strtouq(char *s, char **, int); 
16685 static int bad = 0;
16686 void check(char *s, unsigned long long eull, int een) {
16687         unsigned long long gull;
16688         errno = 0;
16689         gull = strtouq(s, 0, 10);
16690         if (!((gull == eull) && (errno == een)))
16691                 bad++;
16692 }
16693 int main() {
16694         check(" 1",                                        1LL, 0);
16695         check(" 0",                                        0LL, 0);
16696         check("18446744073709551615",  18446744073709551615ULL, 0);
16697         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16698 #if 0 /* strtouq() for /^-/ strings is undefined. */
16699         check("-1",                    18446744073709551615ULL, 0);
16700         check("-18446744073709551614",                     2LL, 0);
16701         check("-18446744073709551615",                     1LL, 0);
16702         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16703         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16704 #endif
16705         if (!bad)
16706                 printf("ok\n");
16707         return 0;
16708 }
16709 EOCP
16710         set try
16711         if eval $compile; then
16712                 case "`$run ./try`" in
16713                 ok) echo "Your strtouq() seems to be working okay." ;;
16714                 *) cat <<EOM >&4
16715 Your strtouq() doesn't seem to be working okay.
16716 EOM
16717                    d_strtouq="$undef"
16718                    ;;
16719                 esac
16720         fi
16721         ;;
16722 esac
16723
16724 : see if strxfrm exists
16725 set strxfrm d_strxfrm
16726 eval $inlibc
16727
16728 : see if symlink exists
16729 set symlink d_symlink
16730 eval $inlibc
16731
16732 : see if syscall exists
16733 set syscall d_syscall
16734 eval $inlibc
16735
16736 : see if prototype for syscall is available
16737 echo " "
16738 set d_syscallproto syscall $i_unistd unistd.h
16739 eval $hasproto
16740
16741 : see if sysconf exists
16742 set sysconf d_sysconf
16743 eval $inlibc
16744
16745 : see if system exists
16746 set system d_system
16747 eval $inlibc
16748
16749 : see if tcgetpgrp exists
16750 set tcgetpgrp d_tcgetpgrp
16751 eval $inlibc
16752
16753 : see if tcsetpgrp exists
16754 set tcsetpgrp d_tcsetpgrp
16755 eval $inlibc
16756
16757 : see if prototype for telldir is available
16758 echo " "
16759 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16760 eval $hasproto
16761
16762 : see if time exists
16763 echo " "
16764 if test "X$d_time" = X -o X"$timetype" = X; then
16765     if set time val -f d_time; eval $csym; $val; then
16766                 echo 'time() found.' >&4
16767                 val="$define"
16768                 rp="What is the type returned by time() on this system?"
16769                 set time_t timetype long stdio.h sys/types.h
16770                 eval $typedef_ask
16771     else
16772                 echo 'time() not found, hope that will do.' >&4
16773                 val="$undef"
16774                 timetype='int';
16775     fi
16776     set d_time
16777     eval $setvar
16778 fi
16779
16780 : see if this is a sys/times.h system
16781 set sys/times.h i_systimes
16782 eval $inhdr
16783
16784 : see if times exists
16785 echo " "
16786 if set times val -f d_times; eval $csym; $val; then
16787         echo 'times() found.' >&4
16788         d_times="$define"
16789         inc=''
16790         case "$i_systimes" in
16791         "$define") inc='sys/times.h';;
16792         esac
16793         rp="What is the type returned by times() on this system?"
16794         set clock_t clocktype long stdio.h sys/types.h $inc
16795         eval $typedef_ask
16796 else
16797         echo 'times() NOT found, hope that will do.' >&4
16798         d_times="$undef"
16799         clocktype='int'
16800 fi
16801
16802 : see if tmpnam_r exists
16803 set tmpnam_r d_tmpnam_r
16804 eval $inlibc
16805 case "$d_tmpnam_r" in
16806 "$define")
16807         hdrs="$i_systypes sys/types.h define stdio.h "
16808         case "$d_tmpnam_r_proto:$usethreads" in
16809         ":define")      d_tmpnam_r_proto=define
16810                 set d_tmpnam_r_proto tmpnam_r $hdrs
16811                 eval $hasproto ;;
16812         *)      ;;
16813         esac
16814         case "$d_tmpnam_r_proto" in
16815         define)
16816         case "$tmpnam_r_proto" in
16817         ''|0) try='char* tmpnam_r(char*);'
16818         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16819         esac
16820         case "$tmpnam_r_proto" in
16821         ''|0)   d_tmpnam_r=undef
16822                 tmpnam_r_proto=0
16823                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16824         * )     case "$tmpnam_r_proto" in
16825                 REENTRANT_PROTO*) ;;
16826                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16827                 esac
16828                 echo "Prototype: $try" ;;
16829         esac
16830         ;;
16831         *)      case "$usethreads" in
16832                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16833                 esac
16834                 d_tmpnam_r=undef
16835                 tmpnam_r_proto=0
16836                 ;;
16837         esac
16838         ;;
16839 *)      tmpnam_r_proto=0
16840         ;;
16841 esac
16842
16843 : see if truncate exists
16844 set truncate d_truncate
16845 eval $inlibc
16846
16847 : see if ttyname_r exists
16848 set ttyname_r d_ttyname_r
16849 eval $inlibc
16850 case "$d_ttyname_r" in
16851 "$define")
16852         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16853         case "$d_ttyname_r_proto:$usethreads" in
16854         ":define")      d_ttyname_r_proto=define
16855                 set d_ttyname_r_proto ttyname_r $hdrs
16856                 eval $hasproto ;;
16857         *)      ;;
16858         esac
16859         case "$d_ttyname_r_proto" in
16860         define)
16861         case "$ttyname_r_proto" in
16862         ''|0) try='int ttyname_r(int, char*, size_t);'
16863         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16864         esac
16865         case "$ttyname_r_proto" in
16866         ''|0) try='int ttyname_r(int, char*, int);'
16867         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16868         esac
16869         case "$ttyname_r_proto" in
16870         ''|0) try='char* ttyname_r(int, char*, int);'
16871         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16872         esac
16873         case "$ttyname_r_proto" in
16874         ''|0)   d_ttyname_r=undef
16875                 ttyname_r_proto=0
16876                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16877         * )     case "$ttyname_r_proto" in
16878                 REENTRANT_PROTO*) ;;
16879                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16880                 esac
16881                 echo "Prototype: $try" ;;
16882         esac
16883         ;;
16884         *)      case "$usethreads" in
16885                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16886                 esac
16887                 d_ttyname_r=undef
16888                 ttyname_r_proto=0
16889                 ;;
16890         esac
16891         ;;
16892 *)      ttyname_r_proto=0
16893         ;;
16894 esac
16895
16896 : see if tzname[] exists
16897 echo " "
16898 if set tzname val -a d_tzname; eval $csym; $val; then
16899         val="$define"
16900         echo 'tzname[] found.' >&4
16901 else
16902         val="$undef"
16903         echo 'tzname[] NOT found.' >&4
16904 fi
16905 set d_tzname
16906 eval $setvar
16907
16908 case "$osname" in
16909 next|rhapsody|darwin) multiarch="$define" ;;
16910 esac
16911 case "$multiarch" in
16912 ''|[nN]*) multiarch="$undef" ;;
16913 esac
16914
16915 : check for ordering of bytes in a UV
16916 echo " "
16917 case "$usecrosscompile$multiarch" in
16918 *$define*)
16919         $cat <<EOM
16920 You seem to be either cross-compiling or doing a multiarchitecture build,
16921 skipping the byteorder check.
16922
16923 EOM
16924         byteorder='ffff'
16925         ;;
16926 *)
16927         case "$byteorder" in
16928         '')
16929                 $cat <<'EOM'
16930 In the following, larger digits indicate more significance.  A big-endian
16931 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16932 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16933 machines may have weird orders like 3412.  A Cray will report 87654321,
16934 an Alpha will report 12345678. If the test program works the default is
16935 probably right.
16936 I'm now running the test program...
16937 EOM
16938                 $cat >try.c <<EOCP
16939 #include <stdio.h>
16940 #$i_stdlib I_STDLIB
16941 #ifdef I_STDLIB
16942 #include <stdlib.h>
16943 #endif
16944 #include <sys/types.h>
16945 typedef $uvtype UV;
16946 int main()
16947 {
16948         int i;
16949         union {
16950                 UV l;
16951                 char c[$uvsize];
16952         } u;
16953
16954         if ($uvsize > 4)
16955                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16956         else
16957                 u.l = (UV)0x04030201;
16958         for (i = 0; i < $uvsize; i++)
16959                 printf("%c", u.c[i]+'0');
16960         printf("\n");
16961         exit(0);
16962 }
16963 EOCP
16964                 xxx_prompt=y
16965                 set try
16966                 if eval $compile && ./try > /dev/null; then
16967                         dflt=`$run ./try`
16968                         case "$dflt" in
16969                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16970                                 echo "(The test program ran ok.)"
16971                                 echo "byteorder=$dflt"
16972                                 xxx_prompt=n
16973                         ;;
16974                         ????|????????) echo "(The test program ran ok.)" ;;
16975                         *) echo "(The test program didn't run right for some reason.)" ;;
16976                         esac
16977                 else
16978                         dflt='4321'
16979                         cat <<'EOM'
16980 (I can't seem to compile the test program.  Guessing big-endian...)
16981 EOM
16982                 fi
16983                 case "$xxx_prompt" in
16984                 y)
16985                         rp="What is the order of bytes in $uvtype?"
16986                         . ./myread
16987                         byteorder="$ans"
16988                         ;;
16989                 *)      byteorder=$dflt
16990                         ;;
16991                 esac
16992                 ;;
16993         esac
16994         $rm -f try.c try
16995         ;;
16996 esac
16997
16998
16999 $cat <<EOM
17000
17001 Checking to see whether you can access character data unalignedly...
17002 EOM
17003 case "$d_u32align" in
17004 '')   $cat >try.c <<EOCP
17005 #include <stdio.h>
17006 #$i_stdlib I_STDLIB
17007 #ifdef I_STDLIB
17008 #include <stdlib.h>
17009 #endif
17010 #define U32 $u32type
17011 #define BYTEORDER 0x$byteorder
17012 #define U8 $u8type
17013 #include <signal.h>
17014 #ifdef SIGBUS
17015 $signal_t bletch(s) int s; { exit(4); }
17016 #endif
17017 int main() {
17018 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
17019     U8 buf[8];
17020     U32 *up;
17021     int i;
17022
17023     if (sizeof(U32) != 4) {
17024         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
17025         exit(1);
17026     }
17027
17028     fflush(stdout);
17029
17030 #ifdef SIGBUS
17031     signal(SIGBUS, bletch);
17032 #endif
17033
17034     buf[0] = 0;
17035     buf[1] = 0;
17036     buf[2] = 0;
17037     buf[3] = 1;
17038     buf[4] = 0;
17039     buf[5] = 0;
17040     buf[6] = 0;
17041     buf[7] = 1;
17042
17043     for (i = 0; i < 4; i++) {
17044         up = (U32*)(buf + i);
17045         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
17046                (*up == 1 << (8*(3-i)))  /* little-endian */
17047               )
17048            )
17049         {
17050             printf("read failed (%x)\n", *up);
17051             exit(2);
17052         }
17053     }
17054
17055     /* write test */
17056     for (i = 0; i < 4; i++) {
17057         up = (U32*)(buf + i);
17058         *up = 0xBeef;
17059         if (*up != 0xBeef) {
17060             printf("write failed (%x)\n", *up);
17061             exit(3);
17062         }
17063     }
17064
17065     exit(0);
17066 #else
17067     printf("1\n");
17068     exit(1);
17069 #endif
17070     return 0;
17071 }
17072 EOCP
17073 set try
17074 if eval $compile_ok; then
17075         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
17076         $run ./try 2>&1 >/dev/null
17077         case "$?" in
17078         0)      cat >&4 <<EOM
17079 You can access character data pretty unalignedly.
17080 EOM
17081                 d_u32align="$undef"
17082                 ;;
17083         *)      cat >&4 <<EOM
17084 It seems that you must access character data in an aligned manner.
17085 EOM
17086                 d_u32align="$define"
17087                 ;;
17088         esac
17089 else
17090         rp='Can you access character data at unaligned addresses?'
17091         dflt='n'
17092         . ./myread
17093         case "$ans" in
17094         [yY]*)  d_u32align="$undef"  ;;
17095         *)      d_u32align="$define" ;;
17096         esac
17097 fi
17098 $rm -f core core.try.* try.core
17099 ;;
17100 esac
17101
17102 : see if ualarm exists
17103 set ualarm d_ualarm
17104 eval $inlibc
17105
17106 : see if umask exists
17107 set umask d_umask
17108 eval $inlibc
17109
17110 : see if unordered exists
17111 set unordered d_unordered
17112 eval $inlibc
17113
17114 : see if usleep exists
17115 set usleep d_usleep
17116 eval $inlibc
17117
17118 : see if prototype for usleep is available
17119 echo " "
17120 set d_usleepproto usleep $i_unistd unistd.h
17121 eval $hasproto
17122
17123 : see if ustat exists
17124 set ustat d_ustat
17125 eval $inlibc
17126
17127 : backward compatibility for d_hvfork
17128 if test X$d_hvfork != X; then
17129         d_vfork="$d_hvfork"
17130         d_hvfork=''
17131 fi
17132 : see if there is a vfork
17133 val=''
17134 set vfork val
17135 eval $inlibc
17136
17137 : Ok, but do we want to use it. vfork is reportedly unreliable in 
17138 : perl on Solaris 2.x, and probably elsewhere.
17139 case "$val" in
17140 $define)
17141         echo " "
17142         case "$usevfork" in
17143         false) dflt='n';;
17144         *) dflt='y';;
17145         esac
17146         cat <<'EOM'
17147  
17148 Perl can only use a vfork() that doesn't suffer from strict
17149 restrictions on calling functions or modifying global data in
17150 the child.  For example, glibc-2.1 contains such a vfork()
17151 that is unsuitable.  If your system provides a proper fork()
17152 call, chances are that you do NOT want perl to use vfork().
17153
17154 EOM
17155         rp="Do you still want to use vfork()?"
17156         . ./myread
17157         case "$ans" in
17158         y|Y) ;;
17159         *)
17160                 echo "Ok, we won't use vfork()."
17161                 val="$undef"
17162                 ;;
17163         esac
17164         ;;
17165 esac
17166 set d_vfork
17167 eval $setvar
17168 case "$d_vfork" in
17169 $define) usevfork='true';;
17170 *) usevfork='false';;
17171 esac
17172
17173 : see if closedir exists
17174 set closedir d_closedir
17175 eval $inlibc
17176
17177 case "$d_closedir" in
17178 "$define")
17179         echo " "
17180         echo "Checking whether closedir() returns a status..." >&4
17181         cat > try.c <<EOM
17182 #$i_dirent I_DIRENT             /**/
17183 #$i_sysdir I_SYS_DIR            /**/
17184 #$i_sysndir I_SYS_NDIR          /**/
17185 #$i_systypes I_SYS_TYPES        /**/
17186
17187 #if defined(I_SYS_TYPES)
17188 #include <sys/types.h>
17189 #endif
17190 #if defined(I_DIRENT)
17191 #include <dirent.h>
17192 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17193 #include <sys/dir.h>
17194 #endif
17195 #else
17196 #ifdef I_SYS_NDIR
17197 #include <sys/ndir.h>
17198 #else
17199 #ifdef I_SYS_DIR
17200 #ifdef hp9000s500
17201 #include <ndir.h>       /* may be wrong in the future */
17202 #else
17203 #include <sys/dir.h>
17204 #endif
17205 #endif
17206 #endif
17207 #endif 
17208 int main() { return closedir(opendir(".")); }
17209 EOM
17210         set try
17211         if eval $compile_ok; then
17212                 if $run ./try > /dev/null 2>&1 ; then
17213                         echo "Yes, it does."
17214                         val="$undef"
17215                 else
17216                         echo "No, it doesn't."
17217                         val="$define"
17218                 fi
17219         else
17220                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17221                 val="$define"
17222         fi
17223         ;;
17224 *)
17225         val="$undef";
17226         ;;
17227 esac
17228 set d_void_closedir
17229 eval $setvar
17230 $rm -f try try.*
17231 : see if there is a wait4
17232 set wait4 d_wait4
17233 eval $inlibc
17234
17235 : see if waitpid exists
17236 set waitpid d_waitpid
17237 eval $inlibc
17238
17239 : see if wcstombs exists
17240 set wcstombs d_wcstombs
17241 eval $inlibc
17242
17243 : see if wctomb exists
17244 set wctomb d_wctomb
17245 eval $inlibc
17246
17247 : see if writev exists
17248 set writev d_writev
17249 eval $inlibc
17250
17251 : preserve RCS keywords in files with variable substitution, grrr
17252 Date='$Date'
17253 Id='$Id'
17254 Log='$Log'
17255 RCSfile='$RCSfile'
17256 Revision='$Revision'
17257
17258 : check for alignment requirements
17259 echo " "
17260 case "$usecrosscompile$multiarch" in
17261 *$define*)
17262         $cat <<EOM
17263 You seem to be either cross-compiling or doing a multiarchitecture build,
17264 skipping the memory alignment check.
17265
17266 EOM
17267         case "$alignbytes" in
17268         '') alignbytes=8 ;;
17269         esac
17270         ;;
17271 *)
17272         case "$alignbytes" in
17273         '') echo "Checking alignment constraints..." >&4
17274                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17275                         $cat >try.c <<'EOCP'
17276 typedef long double NV;
17277 EOCP
17278                 else
17279                         $cat >try.c <<'EOCP'
17280 typedef double NV;
17281 EOCP
17282                 fi
17283                 $cat >>try.c <<'EOCP'
17284 #include <stdio.h>
17285 struct foobar {
17286         char foo;
17287         NV bar;
17288 } try_algn;
17289 int main()
17290 {
17291     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17292     return(0);
17293 }
17294 EOCP
17295                 set try
17296                 if eval $compile_ok; then
17297                         dflt=`$run ./try`
17298                 else
17299                         dflt='8'
17300                         echo "(I can't seem to compile the test program...)"
17301                 fi
17302                 ;;
17303         *) dflt="$alignbytes"
17304                 ;;
17305         esac
17306         rp="Doubles must be aligned on a how-many-byte boundary?"
17307         . ./myread
17308         alignbytes="$ans"
17309         $rm -f try.c try
17310         ;;
17311 esac
17312
17313
17314 : set the base revision
17315 baserev=5.0
17316
17317 : how do we concatenate cpp tokens here?
17318 echo " "
17319 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
17320 $cat >cpp_stuff.c <<'EOCP'
17321 #define RCAT(a,b)a/**/b
17322 #define ACAT(a,b)a ## b
17323 RCAT(Rei,ser)
17324 ACAT(Cir,cus)
17325 EOCP
17326 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17327 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17328         echo "Oh!  Smells like ANSI's been here." >&4
17329         echo "We can catify or stringify, separately or together!"
17330         cpp_stuff=42
17331 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17332         echo "Ah, yes!  The good old days!" >&4
17333         echo "However, in the good old days we don't know how to stringify and"
17334         echo "catify at the same time."
17335         cpp_stuff=1
17336 else
17337         $cat >&4 <<EOM
17338 Hmm, I don't seem to be able to concatenate tokens with your cpp.
17339 You're going to have to edit the values of CAT[2-5] in config.h...
17340 EOM
17341         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17342 fi
17343 $rm -f cpp_stuff.*
17344
17345 : see if this is a db.h system
17346 set db.h i_db
17347 eval $inhdr
17348
17349 case "$i_db" in
17350 $define)
17351         : Check db version.
17352         echo " "
17353         echo "Checking Berkeley DB version ..." >&4
17354         $cat >try.c <<EOCP
17355 #$d_const HASCONST
17356 #ifndef HASCONST
17357 #define const
17358 #endif
17359 #include <sys/types.h>
17360 #include <stdio.h>
17361 #$i_stdlib I_STDLIB
17362 #ifdef I_STDLIB
17363 #include <stdlib.h>
17364 #endif
17365 #include <db.h>
17366 int main(int argc, char *argv[])
17367 {
17368 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17369     int Major, Minor, Patch ;
17370     unsigned long Version ;
17371     (void)db_version(&Major, &Minor, &Patch) ;
17372     if (argc == 2) {
17373         printf("%d %d %d %d %d %d\n",
17374                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17375                Major, Minor, Patch);
17376         exit(0);
17377     }
17378     printf("You have Berkeley DB Version 2 or greater.\n");
17379
17380     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17381                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17382     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17383                 Major, Minor, Patch) ;
17384
17385     /* check that db.h & libdb are compatible */
17386     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17387         printf("db.h and libdb are incompatible.\n") ;
17388         exit(3);        
17389     }
17390
17391     printf("db.h and libdb are compatible.\n") ;
17392
17393     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17394                 + DB_VERSION_PATCH ;
17395
17396     /* needs to be >= 2.3.4 */
17397     if (Version < 2003004) {
17398     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17399         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17400         exit(2);        
17401     }
17402
17403     exit(0);
17404 #else
17405 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17406     if (argc == 2) {
17407         printf("1 0 0\n");
17408         exit(0);
17409     }
17410     printf("You have Berkeley DB Version 1.\n");
17411     exit(0);    /* DB version < 2: the coast is clear. */
17412 #else
17413     exit(1);    /* <db.h> not Berkeley DB? */
17414 #endif
17415 #endif
17416 }
17417 EOCP
17418         set try
17419         if eval $compile_ok && $run ./try; then
17420                 echo 'Looks OK.' >&4
17421                 set `$run ./try 1`
17422                 db_version_major=$1
17423                 db_version_minor=$2
17424                 db_version_patch=$3
17425         else
17426                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17427                 i_db=$undef
17428                 case " $libs " in
17429                 *"-ldb "*)
17430                         : Remove db from list of libraries to use
17431                         echo "Removing unusable -ldb from library list" >&4
17432                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17433                         shift
17434                         libs="$*"
17435                         echo "libs = $libs" >&4
17436                         ;;
17437                 esac
17438         fi
17439         $rm -f try.*
17440         ;;
17441 esac
17442
17443 case "$i_db" in
17444 define)
17445         : Check the return type needed for hash 
17446         echo " "
17447         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17448         $cat >try.c <<EOCP
17449 #$d_const HASCONST
17450 #ifndef HASCONST
17451 #define const
17452 #endif
17453 #include <sys/types.h>
17454 #include <db.h>
17455
17456 #ifndef DB_VERSION_MAJOR
17457 u_int32_t hash_cb (ptr, size)
17458 const void *ptr;
17459 size_t size;
17460 {
17461 }
17462 HASHINFO info;
17463 int main()
17464 {
17465         info.hash = hash_cb;
17466 }
17467 #endif
17468 EOCP
17469         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17470                 if $contains warning try.out >>/dev/null 2>&1 ; then
17471                         db_hashtype='int'
17472                 else
17473                         db_hashtype='u_int32_t'
17474                 fi
17475         else
17476                 : XXX Maybe we should just give up here.
17477                 db_hashtype=u_int32_t
17478                 $cat try.out >&4
17479                 echo "Help:  I can't seem to compile the db test program." >&4
17480                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17481         fi
17482         $rm -f try.*
17483         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17484         ;;
17485 *)      db_hashtype=u_int32_t
17486         ;;
17487 esac
17488 case "$i_db" in
17489 define)
17490         : Check the return type needed for prefix 
17491         echo " "
17492         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17493         cat >try.c <<EOCP
17494 #$d_const HASCONST
17495 #ifndef HASCONST
17496 #define const
17497 #endif
17498 #include <sys/types.h>
17499 #include <db.h>
17500
17501 #ifndef DB_VERSION_MAJOR
17502 size_t prefix_cb (key1, key2)
17503 const DBT *key1;
17504 const DBT *key2;
17505 {
17506 }
17507 BTREEINFO info;
17508 int main()
17509 {
17510         info.prefix = prefix_cb;
17511 }
17512 #endif
17513 EOCP
17514         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17515                 if $contains warning try.out >>/dev/null 2>&1 ; then
17516                         db_prefixtype='int'
17517                 else
17518                         db_prefixtype='size_t'
17519                 fi
17520         else
17521                 db_prefixtype='size_t'
17522                 : XXX Maybe we should just give up here.
17523                 $cat try.out >&4
17524                 echo "Help:  I can't seem to compile the db test program." >&4
17525                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17526         fi
17527         $rm -f try.*
17528         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17529         ;;
17530 *)      db_prefixtype='size_t'
17531         ;;
17532 esac
17533
17534
17535 : How can we generate normalized random numbers ?
17536 echo " "
17537 echo "Looking for a random number function..." >&4
17538 case "$randfunc" in
17539 '')
17540         if set drand48 val -f; eval $csym; $val; then
17541                 dflt="drand48"
17542                 echo "Good, found drand48()." >&4
17543         elif set random val -f; eval $csym; $val; then
17544                 dflt="random"
17545                 echo "OK, found random()." >&4
17546         else
17547                 dflt="rand"
17548                 echo "Yick, looks like I have to use rand()." >&4
17549         fi
17550         echo " "
17551         ;;
17552 *)
17553         dflt="$randfunc"
17554         ;;
17555 esac
17556 cont=true
17557
17558 case "$ccflags" in
17559 *-Dmy_rand=*|*-Dmy_srand=*)
17560         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17561         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17562         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17563         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17564         ;;
17565 esac
17566
17567 while $test "$cont"; do
17568         rp="Use which function to generate random numbers?"
17569         . ./myread
17570         if $test "$ans" = "$dflt"; then
17571                 : null
17572         else
17573                 randbits=''
17574         fi
17575         randfunc="$ans"
17576         if set $ans val -f; eval $csym; $val; then
17577                 cont=''
17578         else
17579                 dflt=y
17580                 rp="I cannot find function $ans. Use that name anyway?"
17581                 . ./myread
17582                 dflt=rand
17583                 case "$ans" in
17584                         [yY]*) cont='';;
17585                 esac
17586         fi
17587         case "$cont" in
17588         '')
17589                 case "$randfunc" in
17590                 drand48)
17591                         drand01="drand48()"
17592                         seedfunc="srand48"
17593                         randbits=48
17594                         randseedtype=long
17595                         ;;
17596                 rand|random)
17597                         case "$randbits" in
17598                         '')
17599 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17600                                 $cat >try.c <<EOCP
17601 #$i_unistd I_UNISTD
17602 #$i_stdlib I_STDLIB
17603 #include <stdio.h>
17604 #ifdef I_UNISTD
17605 #  include <unistd.h>
17606 #endif
17607 #ifdef I_STDLIB
17608 #  include <stdlib.h>
17609 #endif
17610 int main()
17611 {
17612         register int i;
17613         register unsigned long tmp;
17614         register unsigned long max = 0L;
17615
17616         for (i = 1000; i; i--) {
17617                 tmp = (unsigned long) $randfunc();
17618                 if (tmp > max) max = tmp;
17619         }
17620         for (i = 0; max; i++)
17621                 max /= 2;
17622         printf("%d\n",i);
17623 }
17624 EOCP
17625                                 set try
17626                                 if eval $compile_ok; then
17627                                         dflt=`try`
17628                                 else
17629                                         dflt='?'
17630                                         echo "(I can't seem to compile the test program...)"
17631                                 fi
17632                                 ;;
17633                         *)
17634                                 dflt="$randbits"
17635                                 ;;
17636                         esac
17637                         rp="How many bits does your $randfunc() function produce?"
17638                         . ./myread
17639                         randbits="$ans"
17640                         $rm -f try.c try
17641                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17642                         seedfunc="s$randfunc"
17643                         randseedtype=unsigned
17644                         ;;
17645                 *)
17646                         dflt="31"
17647                         rp="How many bits does your $randfunc() function produce?"
17648                         . ./myread
17649                         randbits="$ans"
17650                         seedfunc="s$randfunc"
17651                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17652                         if set $seedfunc val -f; eval $csym; $val; then
17653                                 echo "(Using $seedfunc() to seed random generator)"
17654                         else
17655                                 echo "(Warning: no $seedfunc() to seed random generator)"
17656                                 seedfunc=rand
17657                         fi
17658                         randseedtype=unsigned
17659                         ;;
17660                 esac
17661                 ;;
17662         esac
17663 done
17664
17665 echo " "
17666 echo "Determining whether or not we are on an EBCDIC system..." >&4
17667 $cat >try.c <<'EOM'
17668 int main()
17669 {
17670   if ('M'==0xd4) return 0;
17671   return 1;
17672 }
17673 EOM
17674
17675 val=$undef
17676 set try
17677 if eval $compile_ok; then
17678         if $run ./try; then
17679                 echo "You seem to speak EBCDIC." >&4
17680                 val="$define"
17681         else
17682                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17683         fi
17684 else
17685         echo "I'm unable to compile the test program." >&4
17686         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17687 fi
17688 $rm -f try try.*
17689 set ebcdic
17690 eval $setvar
17691
17692 echo " "
17693 $cat >&4 <<EOM
17694 Checking how to flush all pending stdio output...
17695 EOM
17696 # I only know how to find the first 32 possibly open files on SunOS.
17697 # See also hints/sunos_4_1.sh and util.c  --AD
17698 case "$osname" in
17699 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17700 esac
17701 $cat >>try.c <<EOCP
17702 #include <stdio.h>
17703 #$i_stdlib I_STDLIB
17704 #ifdef I_STDLIB
17705 #include <stdlib.h>
17706 #endif
17707 #$i_unistd I_UNISTD
17708 #ifdef I_UNISTD
17709 # include <unistd.h>
17710 #endif
17711 #$d_sysconf HAS_SYSCONF
17712 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17713 #ifdef HAS_STDIO_STREAM_ARRAY
17714 # define STDIO_STREAM_ARRAY $stdio_stream_array
17715 #endif
17716 int main() {
17717   FILE* p;
17718   unlink("try.out");
17719   p = fopen("try.out", "w");
17720 #ifdef TRY_FPUTC
17721   fputc('x', p);
17722 #else
17723 # ifdef TRY_FPRINTF
17724   fprintf(p, "x");
17725 # endif
17726 #endif
17727 #ifdef TRY_FFLUSH_NULL
17728   fflush(NULL);
17729 #endif
17730 #ifdef TRY_FFLUSH_ALL
17731   {
17732     long open_max = -1;
17733 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17734     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17735 # else
17736 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17737     open_max = sysconf(_SC_OPEN_MAX);
17738 #  else
17739 #   ifdef FOPEN_MAX
17740     open_max = FOPEN_MAX;
17741 #   else
17742 #    ifdef OPEN_MAX
17743     open_max = OPEN_MAX;
17744 #    else
17745 #     ifdef _NFILE
17746     open_max = _NFILE;
17747 #     endif
17748 #    endif
17749 #   endif
17750 #  endif
17751 # endif 
17752 # ifdef HAS_STDIO_STREAM_ARRAY
17753     if (open_max > 0) {
17754       long i;
17755       for (i = 0; i < open_max; i++)
17756             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17757                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17758                 STDIO_STREAM_ARRAY[i]._flag)
17759                 fflush(&STDIO_STREAM_ARRAY[i]);
17760     }   
17761   }
17762 # endif
17763 #endif
17764   _exit(42);
17765 }
17766 EOCP
17767 : first we have to find out how _not_ to flush
17768 $to try.c
17769 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17770     output=''
17771     set try -DTRY_FPUTC
17772     if eval $compile; then
17773             $run ./try 2>/dev/null
17774             code="$?"
17775             $from try.out
17776             if $test ! -s try.out -a "X$code" = X42; then
17777                 output=-DTRY_FPUTC
17778             fi
17779     fi
17780     case "$output" in
17781     '')
17782             set try -DTRY_FPRINTF
17783             if eval $compile; then
17784                     $run ./try 2>/dev/null
17785                     code="$?"
17786                     $from try.out
17787                     if $test ! -s try.out -a "X$code" = X42; then
17788                         output=-DTRY_FPRINTF
17789                     fi
17790             fi
17791         ;;
17792     esac
17793 fi
17794 : check for fflush NULL behaviour
17795 case "$fflushNULL" in
17796 '')     set try -DTRY_FFLUSH_NULL $output
17797         if eval $compile; then
17798                 $run ./try 2>/dev/null
17799                 code="$?"
17800                 $from try.out
17801                 if $test -s try.out -a "X$code" = X42; then
17802                         fflushNULL="`$cat try.out`"
17803                 else
17804                         if $test "X$code" != X42; then
17805                                 $cat >&4 <<EOM
17806 (If this test failed, don't worry, we'll try another method shortly.)
17807 EOM
17808                         fi
17809                 fi
17810         fi
17811         $rm -f core try.core core.try.*
17812         case "$fflushNULL" in
17813         x)      $cat >&4 <<EOM
17814 Your fflush(NULL) works okay for output streams.
17815 Let's see if it clobbers input pipes...
17816 EOM
17817 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17818 # bug that improperly flushes the input end of pipes.  So we avoid the
17819 # autoflush on fork/system/exec support for now. :-(
17820 $cat >tryp.c <<EOCP
17821 #include <stdio.h>
17822 int
17823 main(int argc, char **argv)
17824 {
17825     char buf[1024];
17826     int i;
17827     char *bp = buf;
17828     while (1) {
17829         while ((i = getc(stdin)) != -1
17830                && (*bp++ = i) != '\n'
17831                && bp < &buf[1024])
17832         /* DO NOTHING */ ;
17833         *bp = '\0';
17834         fprintf(stdout, "%s", buf);
17835         fflush(NULL);
17836         if (i == -1)
17837             return 0;
17838         bp = buf;
17839     }
17840 }
17841 EOCP
17842                 fflushNULL="$define"
17843                 set tryp
17844                 if eval $compile; then
17845                     $rm -f tryp.out
17846                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17847                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17848                        $cat >&4 <<EOM
17849 fflush(NULL) seems to behave okay with input streams.
17850 EOM
17851                         fflushNULL="$define"
17852                     else
17853                         $cat >&4 <<EOM
17854 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17855 EOM
17856                         fflushNULL="$undef"
17857                     fi
17858                 fi
17859                 $rm -f core tryp.c tryp.core core.tryp.*
17860                 ;;
17861         '')     $cat >&4 <<EOM
17862 Your fflush(NULL) isn't working (contrary to ANSI C).
17863 EOM
17864                 fflushNULL="$undef"
17865                 ;;
17866         *)      $cat >&4 <<EOM
17867 Cannot figure out whether your fflush(NULL) works or not.
17868 I'm assuming it doesn't (contrary to ANSI C).
17869 EOM
17870                 fflushNULL="$undef"
17871                 ;;
17872         esac
17873         ;;
17874 $define|true|[yY]*)
17875         fflushNULL="$define"
17876         ;;
17877 *)
17878         fflushNULL="$undef"
17879         ;;
17880 esac
17881 : check explicit looping only if NULL did not work, and if the pipe
17882 : bug does not show up on an explicit flush too
17883 case "$fflushNULL" in
17884 "$undef")
17885         $cat >tryp.c <<EOCP
17886 #include <stdio.h>
17887 int
17888 main(int argc, char **argv)
17889 {
17890     char buf[1024];
17891     int i;
17892     char *bp = buf;
17893     while (1) {
17894         while ((i = getc(stdin)) != -1
17895                && (*bp++ = i) != '\n'
17896                && bp < &buf[1024])
17897         /* DO NOTHING */ ;
17898         *bp = '\0';
17899         fprintf(stdout, "%s", buf);
17900         fflush(stdin);
17901         if (i == -1)
17902             return 0;
17903         bp = buf;
17904     }
17905 }
17906 EOCP
17907         set tryp
17908         if eval $compile; then
17909             $rm -f tryp.out
17910             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17911             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17912                $cat >&4 <<EOM
17913 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17914 EOM
17915                 : now check for fflushall behaviour
17916                 case "$fflushall" in
17917                 '')     set try -DTRY_FFLUSH_ALL $output
17918                         if eval $compile; then
17919                                 $cat >&4 <<EOM
17920 (Now testing the other method--but note that this also may fail.)
17921 EOM
17922                                 $run ./try 2>/dev/null
17923                                 code=$?
17924                                 $from try.out
17925                                 if $test -s try.out -a "X$code" = X42; then
17926                                         fflushall="`$cat try.out`"
17927                                 fi
17928                         fi
17929                         $rm -f core try.core core.try.*
17930                         case "$fflushall" in
17931                         x)      $cat >&4 <<EOM
17932 Whew. Flushing explicitly all the stdio streams works.
17933 EOM
17934                                 fflushall="$define"
17935                                 ;;
17936                         '')     $cat >&4 <<EOM
17937 Sigh. Flushing explicitly all the stdio streams doesn't work.
17938 EOM
17939                                 fflushall="$undef"
17940                                 ;;
17941                         *)      $cat >&4 <<EOM
17942 Cannot figure out whether flushing stdio streams explicitly works or not.
17943 I'm assuming it doesn't.
17944 EOM
17945                                 fflushall="$undef"
17946                                 ;;
17947                         esac
17948                         ;;
17949                 "$define"|true|[yY]*)
17950                         fflushall="$define"
17951                         ;;
17952                 *)
17953                         fflushall="$undef"
17954                         ;;
17955                 esac
17956             else
17957                 $cat >&4 <<EOM
17958 All is futile.  Even fflush(stdin) clobbers input pipes!
17959 EOM
17960                 fflushall="$undef"
17961             fi
17962         else
17963             fflushall="$undef"
17964         fi
17965         $rm -f core tryp.c tryp.core core.tryp.*
17966         ;;
17967 *)      fflushall="$undef"
17968         ;;
17969 esac
17970
17971 case "$fflushNULL$fflushall" in
17972 undefundef)
17973         $cat <<EOM
17974 OK, I give up.  I cannot figure out how to flush pending stdio output.
17975 We won't be flushing handles at all before fork/exec/popen.
17976 EOM
17977         ;;
17978 esac
17979 $rm -f try.* try$exe_ext
17980
17981 : Store the full pathname to the ar program for use in the C program
17982 : Respect a hint or command line value for full_ar.
17983 case "$full_ar" in
17984 '') full_ar=$ar ;;
17985 esac
17986
17987 : Store the full pathname to the sed program for use in the C program
17988 full_sed=$sed
17989
17990 : see what type gids are declared as in the kernel
17991 echo " "
17992 echo "Looking for the type for group ids returned by getgid()."
17993 set gid_t gidtype xxx stdio.h sys/types.h
17994 eval $typedef
17995 case "$gidtype" in
17996 xxx)
17997         xxx=`./findhdr sys/user.h`
17998         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17999         case $1 in
18000         unsigned) dflt="$1 $2" ;;
18001         *) dflt="$1" ;;
18002         esac
18003         ;;
18004 *) dflt="$gidtype";;
18005 esac
18006 case "$gidtype" in
18007 gid_t) echo "gid_t found." ;;
18008 *)      rp="What is the type for group ids returned by getgid()?"
18009         . ./myread
18010         gidtype="$ans"
18011         ;;
18012 esac
18013
18014 echo " "
18015 case "$gidtype" in
18016 *_t) zzz="$gidtype"     ;;
18017 *)   zzz="gid"          ;;
18018 esac
18019 echo "Checking the size of $zzz..." >&4 
18020 cat > try.c <<EOCP
18021 #include <sys/types.h>
18022 #include <stdio.h>
18023 #$i_stdlib I_STDLIB
18024 #ifdef I_STDLIB
18025 #include <stdlib.h>
18026 #endif
18027 int main() {
18028     printf("%d\n", (int)sizeof($gidtype));
18029     exit(0);
18030 }
18031 EOCP
18032 set try
18033 if eval $compile_ok; then
18034         yyy=`$run ./try`
18035         case "$yyy" in
18036         '')     gidsize=4
18037                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
18038                 ;;
18039         *)      gidsize=$yyy
18040                 echo "Your $zzz is $gidsize bytes long."
18041                 ;;
18042         esac
18043 else
18044         gidsize=4
18045         echo "(I can't compile the test program--guessing $gidsize.)" >&4
18046 fi
18047
18048
18049 echo " "
18050 case "$gidtype" in
18051 *_t) zzz="$gidtype"     ;;
18052 *)   zzz="gid"          ;;
18053 esac
18054 echo "Checking the sign of $zzz..." >&4 
18055 cat > try.c <<EOCP
18056 #include <sys/types.h>
18057 #include <stdio.h>
18058 int main() {
18059         $gidtype foo = -1;
18060         if (foo < 0)
18061                 printf("-1\n");
18062         else
18063                 printf("1\n");
18064 }
18065 EOCP
18066 set try
18067 if eval $compile; then
18068         yyy=`$run ./try`
18069         case "$yyy" in
18070         '')     gidsign=1
18071                 echo "(I can't execute the test program--guessing unsigned.)" >&4
18072                 ;;
18073         *)      gidsign=$yyy
18074                 case "$gidsign" in
18075                  1) echo "Your $zzz is unsigned." ;;
18076                 -1) echo "Your $zzz is signed."   ;;
18077                 esac
18078                 ;;
18079         esac
18080 else
18081         gidsign=1
18082         echo "(I can't compile the test program--guessing unsigned.)" >&4
18083 fi
18084
18085
18086 echo " "
18087
18088 if $test X"$quadtype" != X; then
18089
18090 echo "Checking how to print 64-bit integers..." >&4
18091
18092 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18093         $cat >try.c <<'EOCP'
18094 #include <sys/types.h>
18095 #include <stdio.h>
18096 int main() {
18097   int q = 12345678901;
18098   printf("%ld\n", q);
18099 }
18100 EOCP
18101         set try
18102         if eval $compile; then
18103                 yyy=`$run ./try`
18104                 case "$yyy" in
18105                 12345678901)
18106                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18107                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18108                         echo "We will use %d."
18109                         ;;
18110                 esac
18111         fi
18112 fi
18113
18114 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18115         $cat >try.c <<'EOCP'
18116 #include <sys/types.h>
18117 #include <stdio.h>
18118 int main() {
18119   long q = 12345678901;
18120   printf("%ld\n", q);
18121 }
18122 EOCP
18123         set try
18124         if eval $compile; then
18125                 yyy=`$run ./try`
18126                 case "$yyy" in
18127                 12345678901)
18128                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18129                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18130                         echo "We will use %ld."
18131                         ;;
18132                 esac
18133         fi
18134 fi
18135
18136 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18137         $cat >try.c <<'EOCP'
18138 #include <sys/types.h>
18139 #include <inttypes.h>
18140 #include <stdio.h>
18141 int main() {
18142   int64_t q = 12345678901;
18143   printf("%" PRId64 "\n", q);
18144 }
18145 EOCP
18146         set try
18147         if eval $compile; then
18148                 yyy=`$run ./try`
18149                 case "$yyy" in
18150                 12345678901)
18151                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18152                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18153                         echo "We will use the C9X style."
18154                         ;;
18155                 esac
18156         fi
18157 fi
18158
18159 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18160         $cat >try.c <<EOCP
18161 #include <sys/types.h>
18162 #include <stdio.h>
18163 int main() {
18164   $quadtype q = 12345678901;
18165   printf("%Ld\n", q);
18166 }
18167 EOCP
18168         set try
18169         if eval $compile; then
18170                 yyy=`$run ./try`
18171                 case "$yyy" in
18172                 12345678901)
18173                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18174                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18175                         echo "We will use %Ld."
18176                         ;;
18177                 esac
18178         fi
18179 fi
18180
18181 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18182         $cat >try.c <<'EOCP'
18183 #include <sys/types.h>
18184 #include <stdio.h>
18185 int main() {
18186   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18187   printf("%lld\n", q);
18188 }
18189 EOCP
18190         set try
18191         if eval $compile; then
18192                 yyy=`$run ./try`
18193                 case "$yyy" in
18194                 12345678901)
18195                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18196                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18197                         echo "We will use the %lld style."
18198                         ;;
18199                 esac
18200         fi
18201 fi
18202
18203 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18204         $cat >try.c <<EOCP
18205 #include <sys/types.h>
18206 #include <stdio.h>
18207 int main() {
18208   $quadtype q = 12345678901;
18209   printf("%qd\n", q);
18210 }
18211 EOCP
18212         set try
18213         if eval $compile; then
18214                 yyy=`$run ./try`
18215                 case "$yyy" in
18216                 12345678901)
18217                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18218                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18219                         echo "We will use %qd."
18220                         ;;
18221                 esac
18222         fi
18223 fi
18224
18225 if $test X"$sPRId64" = X; then
18226         echo "Cannot figure out how to print 64-bit integers." >&4
18227 fi
18228
18229 $rm -f try try.*
18230
18231 fi
18232
18233 case "$sPRId64" in
18234 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18235         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18236         ;;
18237 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18238         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18239         ;;
18240 esac
18241
18242
18243 echo " "
18244 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18245
18246 if $test X"$ivsize" = X8; then
18247         ivdformat="$sPRId64"
18248         uvuformat="$sPRIu64"
18249         uvoformat="$sPRIo64"
18250         uvxformat="$sPRIx64"
18251         uvXUformat="$sPRIXU64"
18252 else
18253         if $test X"$ivsize" = X"$longsize"; then
18254                 ivdformat='"ld"'
18255                 uvuformat='"lu"'
18256                 uvoformat='"lo"'
18257                 uvxformat='"lx"'
18258                 uvXUformat='"lX"'
18259         else
18260                 if $test X"$ivsize" = X"$intsize"; then
18261                         ivdformat='"d"'
18262                         uvuformat='"u"'
18263                         uvoformat='"o"'
18264                         uvxformat='"x"'
18265                         uvXUformat='"X"'
18266                 else
18267                         : far out
18268                         if $test X"$ivsize" = X"$shortsize"; then
18269                                 ivdformat='"hd"'
18270                                 uvuformat='"hu"'
18271                                 uvoformat='"ho"'
18272                                 uvxformat='"hx"'
18273                                 uvXUformat='"hX"'
18274                         fi
18275                 fi
18276         fi
18277 fi
18278
18279 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18280         nveformat="$sPRIeldbl"
18281         nvfformat="$sPRIfldbl"
18282         nvgformat="$sPRIgldbl"
18283         nvEUformat="$sPRIEUldbl"
18284         nvFUformat="$sPRIFUldbl"
18285         nvGUformat="$sPRIGUldbl"
18286 else
18287         nveformat='"e"'
18288         nvfformat='"f"'
18289         nvgformat='"g"'
18290         nvEUformat='"E"'
18291         nvFUformat='"F"'
18292         nvGUformat='"G"'
18293 fi
18294
18295 case "$ivdformat" in
18296 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18297     exit 1
18298     ;;
18299 esac
18300
18301
18302 echo " "
18303 $echo "Checking the format string to be used for gids..." >&4
18304
18305 case "$gidsign" in
18306 -1)     if $test X"$gidsize" = X"$ivsize"; then
18307                 gidformat="$ivdformat"
18308         else
18309                 if $test X"$gidsize" = X"$longsize"; then
18310                         gidformat='"ld"'
18311                 else
18312                         if $test X"$gidsize" = X"$intsize"; then
18313                                 gidformat='"d"'
18314                         else
18315                                 if $test X"$gidsize" = X"$shortsize"; then
18316                                         gidformat='"hd"'
18317                                 fi
18318                         fi
18319                 fi
18320         fi
18321         ;;
18322 *)      if $test X"$gidsize" = X"$uvsize"; then
18323                 gidformat="$uvuformat"
18324         else
18325                 if $test X"$gidsize" = X"$longsize"; then
18326                         gidformat='"lu"'
18327                 else
18328                         if $test X"$gidsize" = X"$intsize"; then
18329                                 gidformat='"u"'
18330                         else
18331                                 if $test X"$gidsize" = X"$shortsize"; then
18332                                         gidformat='"hu"'
18333                                 fi
18334                         fi
18335                 fi
18336         fi
18337         ;;
18338 esac
18339
18340 : see if getgroups exists
18341 set getgroups d_getgrps
18342 eval $inlibc
18343
18344 : see if setgroups exists
18345 set setgroups d_setgrps
18346 eval $inlibc
18347
18348
18349 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18350 echo " "
18351 case "$d_getgrps$d_setgrps" in
18352 *define*)
18353         case "$groupstype" in
18354         '') dflt="$gidtype" ;;
18355         *)  dflt="$groupstype" ;;
18356         esac
18357         $cat <<EOM
18358 What type of pointer is the second argument to getgroups() and setgroups()?
18359 Usually this is the same as group ids, $gidtype, but not always.
18360
18361 EOM
18362         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18363         . ./myread
18364         groupstype="$ans"
18365         ;;
18366 *)  groupstype="$gidtype";;
18367 esac
18368
18369 echo " "
18370 echo "Checking if your $make program sets \$(MAKE)..." >&4
18371 case "$make_set_make" in
18372 '')
18373         $sed 's/^X //' > testmake.mak << 'EOF'
18374 Xall:
18375 X       @echo 'maketemp="$(MAKE)"'
18376 EOF
18377         case "`$make -f testmake.mak 2>/dev/null`" in
18378         *maketemp=*) make_set_make='#' ;;
18379         *)      make_set_make="MAKE=$make" ;;
18380         esac
18381         $rm -f testmake.mak
18382         ;;
18383 esac
18384 case "$make_set_make" in
18385 '#') echo "Yup, it does.";;
18386 *) echo "Nope, it doesn't.";;
18387 esac
18388
18389 : see what type is used for mode_t
18390 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18391 set mode_t modetype int stdio.h sys/types.h
18392 eval $typedef_ask
18393
18394 : see if stdarg is available
18395 echo " "
18396 if $test `./findhdr stdarg.h`; then
18397         echo "<stdarg.h> found." >&4
18398         valstd="$define"
18399 else
18400         echo "<stdarg.h> NOT found." >&4
18401         valstd="$undef"
18402 fi
18403
18404 : see if varags is available
18405 echo " "
18406 if $test `./findhdr varargs.h`; then
18407         echo "<varargs.h> found." >&4
18408 else
18409         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18410 fi
18411
18412 : set up the varargs testing programs
18413 $cat > varargs.c <<EOP
18414 #ifdef I_STDARG
18415 #include <stdarg.h>
18416 #endif
18417 #ifdef I_VARARGS
18418 #include <varargs.h>
18419 #endif
18420
18421 #ifdef I_STDARG
18422 int f(char *p, ...)
18423 #else
18424 int f(va_alist)
18425 va_dcl
18426 #endif
18427 {
18428         va_list ap;
18429 #ifndef I_STDARG
18430         char *p;
18431 #endif
18432 #ifdef I_STDARG
18433         va_start(ap,p);
18434 #else
18435         va_start(ap);
18436         p = va_arg(ap, char *);
18437 #endif
18438         va_end(ap);
18439 }
18440 EOP
18441 $cat > varargs <<EOP
18442 $startsh
18443 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18444         echo "true"
18445 else
18446         echo "false"
18447 fi
18448 $rm -f varargs$_o
18449 EOP
18450 chmod +x varargs
18451
18452 : now check which varargs header should be included
18453 echo " "
18454 i_varhdr=''
18455 case "$valstd" in
18456 "$define")
18457         if `./varargs I_STDARG`; then
18458                 val='stdarg.h'
18459         elif `./varargs I_VARARGS`; then
18460                 val='varargs.h'
18461         fi
18462         ;;
18463 *)
18464         if `./varargs I_VARARGS`; then
18465                 val='varargs.h'
18466         fi
18467         ;;
18468 esac
18469 case "$val" in
18470 '')
18471 echo "I could not find the definition for va_dcl... You have problems..." >&4
18472         val="$undef"; set i_stdarg; eval $setvar
18473         val="$undef"; set i_varargs; eval $setvar
18474         ;;
18475 *) 
18476         set i_varhdr
18477         eval $setvar
18478         case "$i_varhdr" in
18479         stdarg.h)
18480                 val="$define"; set i_stdarg; eval $setvar
18481                 val="$undef"; set i_varargs; eval $setvar
18482                 ;;
18483         varargs.h)
18484                 val="$undef"; set i_stdarg; eval $setvar
18485                 val="$define"; set i_varargs; eval $setvar
18486                 ;;
18487         esac
18488         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18489 esac
18490 $rm -f varargs*
18491
18492 : see if we need va_copy
18493 echo " "
18494 case "$i_stdarg" in
18495 "$define")
18496         $cat >try.c <<EOCP
18497 #include <stdarg.h>
18498 #include <stdio.h>
18499 #$i_stdlib I_STDLIB
18500 #ifdef I_STDLIB
18501 #include <stdlib.h>
18502 #endif
18503 #include <signal.h>
18504
18505 int
18506 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18507 {
18508   return vfprintf(f, fmt, *valp);
18509 }
18510  
18511 int    
18512 myvfprintf(FILE *f, const  char *fmt, va_list val)
18513 {
18514   return ivfprintf(f, fmt, &val);
18515 }
18516       
18517 int
18518 myprintf(char *fmt, ...) 
18519 {
18520   va_list val;
18521   va_start(val, fmt);
18522   return myvfprintf(stdout, fmt, val); 
18523 }         
18524
18525 int
18526 main(int ac, char **av)
18527 {
18528   signal(SIGSEGV, exit);
18529
18530   myprintf("%s%cs all right, then\n", "that", '\'');                            
18531   exit(0);      
18532 }
18533 EOCP
18534         set try
18535         if eval $compile && $run ./try 2>&1 >/dev/null; then
18536                 case "`$run ./try`" in
18537                 "that's all right, then")
18538                         okay=yes
18539                         ;;
18540                 esac
18541         fi
18542         case "$okay" in
18543         yes)    echo "It seems that you don't need va_copy()." >&4
18544                 need_va_copy="$undef"
18545                 ;;
18546         *)      echo "It seems that va_copy() or similar will be needed." >&4
18547                 need_va_copy="$define"
18548                 ;;
18549         esac
18550         $rm -f try.* core core.* *.core *.core.*
18551         ;;
18552 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18553         ;;
18554 esac
18555
18556 : see what type is used for size_t
18557 rp="What is the type used for the length parameter for string functions?"
18558 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18559 eval $typedef_ask
18560
18561 : check for type of arguments to gethostbyaddr. 
18562 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18563         case "$d_gethbyaddr" in
18564         $define)
18565                 $cat <<EOM
18566
18567 Checking to see what type of arguments are accepted by gethostbyaddr().
18568 EOM
18569                 hdrs="$define sys/types.h
18570                         $d_socket sys/socket.h 
18571                         $i_niin netinet/in.h 
18572                         $i_netdb netdb.h
18573                         $i_unistd unistd.h"
18574                 : The first arg can 'char *' or 'void *'
18575                 : The second arg is some of integral type
18576                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18577                         for yyy in size_t long int; do
18578                                 case "$netdb_host_type" in
18579                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18580                                         if ./protochk "$try" $hdrs; then
18581                                                 echo "Your system accepts $xxx for the first arg."
18582                                                 echo "...and $yyy for the second arg."
18583                                                 netdb_host_type="$xxx"
18584                                                 netdb_hlen_type="$yyy"
18585                                         fi
18586                                         ;;
18587                                 esac
18588                         done
18589                 done
18590                 : In case none of those worked, prompt the user.
18591                 case "$netdb_host_type" in
18592                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18593                         dflt='char *'
18594                         . ./myread
18595                         netdb_host_type=$ans
18596                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18597                         dflt="$sizetype"
18598                         . ./myread
18599                         netdb_hlen_type=$ans
18600                         ;;
18601                 esac
18602                 ;;
18603         *)      : no gethostbyaddr, so pick harmless defaults
18604                 netdb_host_type='char *'
18605                 netdb_hlen_type="$sizetype"
18606                 ;;
18607         esac
18608         # Remove the "const" if needed. -- but then we'll have a 
18609         # prototype clash!
18610         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18611 fi
18612
18613 : check for type of argument to gethostbyname. 
18614 if test "X$netdb_name_type" = X ; then
18615         case "$d_gethbyname" in
18616         $define)
18617                 $cat <<EOM
18618
18619 Checking to see what type of argument is accepted by gethostbyname().
18620 EOM
18621                 hdrs="$define sys/types.h
18622                         $d_socket sys/socket.h 
18623                         $i_niin netinet/in.h 
18624                         $i_netdb netdb.h
18625                         $i_unistd unistd.h"
18626                 for xxx in "const char *" "char *"; do
18627                         case "$netdb_name_type" in
18628                         '')     try="extern struct hostent *gethostbyname($xxx);"
18629                                 if ./protochk "$try" $hdrs; then
18630                                         echo "Your system accepts $xxx."
18631                                         netdb_name_type="$xxx"
18632                                 fi
18633                                 ;;
18634                         esac
18635                 done
18636                 : In case none of those worked, prompt the user.
18637                 case "$netdb_name_type" in
18638                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18639                         dflt='char *'
18640                         . ./myread
18641                         netdb_name_type=$ans
18642                         ;;
18643                 esac
18644                 ;;
18645         *)      : no gethostbyname, so pick harmless default
18646                 netdb_name_type='char *'
18647                 ;;
18648         esac
18649 fi
18650
18651 : check for type of 1st argument to getnetbyaddr. 
18652 if test "X$netdb_net_type" = X ; then
18653         case "$d_getnbyaddr" in
18654         $define)
18655                 $cat <<EOM
18656
18657 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18658 EOM
18659                 hdrs="$define sys/types.h
18660                         $d_socket sys/socket.h 
18661                         $i_niin netinet/in.h 
18662                         $i_netdb netdb.h
18663                         $i_unistd unistd.h"
18664                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18665                         case "$netdb_net_type" in
18666                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18667                                 if ./protochk "$try" $hdrs; then
18668                                         echo "Your system accepts $xxx."
18669                                         netdb_net_type="$xxx"
18670                                 fi
18671                                 ;;
18672                         esac
18673                 done
18674                 : In case none of those worked, prompt the user.
18675                 case "$netdb_net_type" in
18676                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18677                         dflt='long'
18678                         . ./myread
18679                         netdb_net_type=$ans
18680                         ;;
18681                 esac
18682                 ;;
18683         *)      : no getnetbyaddr, so pick harmless default
18684                 netdb_net_type='long'
18685                 ;;
18686         esac
18687 fi
18688 : locate the preferred pager for this system
18689 fn=f/
18690 case "$pager" in
18691 '')
18692         dflt=''
18693         case "$pg" in
18694         /*) dflt=$pg;;
18695         [a-zA-Z]:/*) dflt=$pg;;
18696         esac
18697         case "$more" in
18698         /*) dflt=$more;;
18699         [a-zA-Z]:/*) dflt=$more;;
18700         esac
18701         case "$less" in
18702         /*) dflt=$less;;
18703         [a-zA-Z]:/*) dflt=$less;;
18704         esac
18705         case "$dflt" in
18706         '') dflt=/usr/ucb/more;;
18707         esac
18708         ;;
18709 *)      dflt="$pager"
18710         : Instruct ./getfile to trust the hinted or previous pager value,
18711         : even if it does not begin with a slash.  For example, on os2,
18712         : pager might be cmd /c more.  See comments in UU/getfile.
18713         fn="f/($pager)"
18714         ;;
18715 esac
18716 echo " "
18717 rp='What pager is used on your system?'
18718 . ./getfile
18719 pager="$ans"
18720
18721 : see what type pids are declared as in the kernel
18722 rp="What is the type of process ids on this system?"
18723 set pid_t pidtype int stdio.h sys/types.h
18724 eval $typedef_ask
18725
18726 : see if ar generates random libraries by itself
18727 echo " "
18728 echo "Checking how to generate random libraries on your machine..." >&4
18729 echo 'int bar1() { return bar2(); }' > bar1.c
18730 echo 'int bar2() { return 2; }' > bar2.c
18731 $cat > foo.c <<EOP
18732 #$i_stdlib I_STDLIB
18733 #ifdef I_STDLIB
18734 #include <stdlib.h>
18735 #endif
18736 int main() { printf("%d\n", bar1()); exit(0); }
18737 EOP
18738 $cc $ccflags -c bar1.c >/dev/null 2>&1
18739 $cc $ccflags -c bar2.c >/dev/null 2>&1
18740 $cc $ccflags -c foo.c >/dev/null 2>&1
18741 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18742 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18743         $run ./foobar >/dev/null 2>&1; then
18744         echo "$ar appears to generate random libraries itself."
18745         orderlib=false
18746         ranlib=":"
18747 elif $ar ts bar$_a >/dev/null 2>&1 &&
18748         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18749         $run ./foobar >/dev/null 2>&1; then
18750                 echo "a table of contents needs to be added with '$ar ts'."
18751                 orderlib=false
18752                 ranlib="$ar ts"
18753 else
18754         case "$ranlib" in
18755         :) ranlib='';;
18756         '')
18757                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18758                 $test -f $ranlib || ranlib=''
18759                 ;;
18760         esac
18761         if $test -n "$ranlib"; then
18762                 echo "your system has '$ranlib'; we'll use that."
18763                 orderlib=false
18764         else
18765                 echo "your system doesn't seem to support random libraries"
18766                 echo "so we'll use lorder and tsort to order the libraries."
18767                 orderlib=true
18768                 ranlib=":"
18769         fi
18770 fi
18771 $rm -f foo* bar* 
18772
18773 : check for type of arguments to select. 
18774 case "$selecttype" in
18775 '') case "$d_select" in
18776         $define)
18777                 echo " "
18778                 $cat <<EOM
18779 Checking to see what type of arguments are accepted by select().
18780 EOM
18781                 hdrs="$define sys/types.h
18782                         $i_systime sys/time.h 
18783                         $i_sysselct sys/select.h
18784                         $d_socket sys/socket.h"
18785                 : The first arg can be int, unsigned, or size_t
18786                 : The last arg may or may not be 'const'
18787                 val=''
18788                 : void pointer has been seen but using that
18789                 : breaks the selectminbits test
18790                 for xxx in 'fd_set *' 'int *'; do
18791                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18792                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18793                                         case "$val" in
18794                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18795                                                 if ./protochk "$try" $hdrs; then
18796                                                         echo "Your system accepts $xxx."
18797                                                         val="$xxx"
18798                                                 fi
18799                                                 ;;
18800                                         esac
18801                                 done
18802                         done
18803                 done
18804                 case "$val" in
18805                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18806                         case "$d_fd_set" in
18807                                 $define) dflt="fd_set *" ;;
18808                                 *)              dflt="int *" ;;
18809                         esac
18810                         . ./myread
18811                         val=$ans
18812                         ;;
18813                 esac
18814                 selecttype="$val"
18815                 ;;
18816         *)      : no select, so pick a harmless default
18817                 selecttype='int *'
18818                 ;;
18819         esac
18820         ;;
18821 esac
18822
18823 : check for the select 'width'
18824 case "$selectminbits" in
18825 '') safebits=`expr $ptrsize \* 8`
18826     case "$d_select" in
18827         $define)
18828                 $cat <<EOM
18829
18830 Checking to see on how many bits at a time your select() operates...
18831 EOM
18832                 $cat >try.c <<EOCP
18833 #include <sys/types.h>
18834 #$i_time I_TIME
18835 #$i_systime I_SYS_TIME
18836 #$i_systimek I_SYS_TIME_KERNEL
18837 #ifdef I_TIME
18838 #   include <time.h>
18839 #endif
18840 #ifdef I_SYS_TIME
18841 #   ifdef I_SYS_TIME_KERNEL
18842 #       define KERNEL
18843 #   endif
18844 #   include <sys/time.h>
18845 #   ifdef I_SYS_TIME_KERNEL
18846 #       undef KERNEL
18847 #   endif
18848 #endif
18849 #$i_sysselct I_SYS_SELECT
18850 #ifdef I_SYS_SELECT
18851 #include <sys/select.h>
18852 #endif
18853 #$d_socket HAS_SOCKET
18854 #ifdef HAS_SOCKET
18855 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18856 #endif
18857 #include <stdio.h>
18858 #$i_stdlib I_STDLIB
18859 #ifdef I_STDLIB
18860 #include <stdlib.h>
18861 #endif
18862 $selecttype b;
18863 #define S sizeof(*(b))
18864 #define MINBITS 64
18865 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18866 #define NBITS  (NBYTES * 8)
18867 int main() {
18868     char *s = malloc(NBYTES);
18869     struct timeval t;
18870     int i;
18871     FILE* fp;
18872     int fd;
18873
18874     if (!s)
18875         exit(1);
18876     fclose(stdin);
18877     fp = fopen("try.c", "r");
18878     if (fp == 0)
18879       exit(2);
18880     fd = fileno(fp);
18881     if (fd < 0)
18882       exit(3);
18883     b = ($selecttype)s;
18884     for (i = 0; i < NBITS; i++)
18885         FD_SET(i, b);
18886     t.tv_sec  = 0;
18887     t.tv_usec = 0;
18888     select(fd + 1, b, 0, 0, &t);
18889     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18890     free(s);
18891     printf("%d\n", i + 1);
18892     return 0;
18893 }
18894 EOCP
18895                 set try
18896                 if eval $compile_ok; then
18897                         selectminbits=`$run ./try`
18898                         case "$selectminbits" in
18899                         '')     cat >&4 <<EOM
18900 Cannot figure out on how many bits at a time your select() operates.
18901 I'll play safe and guess it is $safebits bits.
18902 EOM
18903                                 selectminbits=$safebits
18904                                 bits="$safebits bits"
18905                                 ;;
18906                         1)      bits="1 bit" ;;
18907                         *)      bits="$selectminbits bits" ;;
18908                         esac
18909                         echo "Your select() operates on $bits at a time." >&4
18910                 else
18911                         rp='What is the minimum number of bits your select() operates on?'
18912                         case "$byteorder" in
18913                         12345678)       dflt=64 ;;
18914                         1234)           dflt=32 ;;
18915                         *)              dflt=1  ;;
18916                         esac
18917                         . ./myread
18918                         val=$ans
18919                         selectminbits="$val"
18920                 fi
18921                 $rm -f try.* try
18922                 ;;
18923         *)      : no select, so pick a harmless default
18924                 selectminbits=$safebits
18925                 ;;
18926         esac
18927         ;;
18928 esac
18929
18930 : Trace out the files included by signal.h, then look for SIGxxx names.
18931 : Remove SIGARRAYSIZE used by HPUX.
18932 : Remove SIGSTKSIZE used by Linux.
18933 : Remove SIGSTKSZ used by Posix.
18934 : Remove SIGTYP void lines used by OS2.
18935 : Some cpps, like os390, dont give the file name anywhere
18936 if [ "X$fieldn" = X ]; then
18937         : Just make some guesses.  We check them later.
18938         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18939 else
18940         xxx=`echo '#include <signal.h>' |
18941         $cppstdin $cppminus $cppflags 2>/dev/null |
18942         $grep '^[       ]*#.*include' | 
18943         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18944 fi
18945 : Check this list of files to be sure we have parsed the cpp output ok.
18946 : This will also avoid potentially non-existent files, such 
18947 : as ../foo/bar.h
18948 xxxfiles=''
18949 for xx in $xxx /dev/null ; do
18950         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18951 done
18952 : If we have found no files, at least try signal.h
18953 case "$xxxfiles" in
18954 '')     xxxfiles=`./findhdr signal.h` ;;
18955 esac
18956 xxx=`awk '
18957 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18958         print substr($2, 4, 20)
18959 }
18960 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18961         print substr($3, 4, 20)
18962 }' $xxxfiles`
18963 : Append some common names just in case the awk scan failed.
18964 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18965 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18966 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18967 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18968 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18969
18970 : generate a few handy files for later
18971 $cat > signal.c <<EOCP
18972 #include <sys/types.h>
18973 #include <signal.h>
18974 #$i_stdlib I_STDLIB
18975 #ifdef I_STDLIB
18976 #include <stdlib.h>
18977 #endif
18978 #include <stdio.h>
18979 int main() {
18980
18981 /* Strange style to avoid deeply-nested #if/#else/#endif */
18982 #ifndef NSIG
18983 #  ifdef _NSIG
18984 #    define NSIG (_NSIG)
18985 #  endif
18986 #endif
18987
18988 #ifndef NSIG
18989 #  ifdef SIGMAX
18990 #    define NSIG (SIGMAX+1)
18991 #  endif
18992 #endif
18993
18994 #ifndef NSIG
18995 #  ifdef SIG_MAX
18996 #    define NSIG (SIG_MAX+1)
18997 #  endif
18998 #endif
18999
19000 #ifndef NSIG
19001 #  ifdef MAXSIG
19002 #    define NSIG (MAXSIG+1)
19003 #  endif
19004 #endif
19005
19006 #ifndef NSIG
19007 #  ifdef MAX_SIG
19008 #    define NSIG (MAX_SIG+1)
19009 #  endif
19010 #endif
19011
19012 #ifndef NSIG
19013 #  ifdef SIGARRAYSIZE
19014 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
19015 #  endif
19016 #endif
19017
19018 #ifndef NSIG
19019 #  ifdef _sys_nsig
19020 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
19021 #  endif
19022 #endif
19023
19024 /* Default to some arbitrary number that's big enough to get most
19025    of the common signals.
19026 */
19027 #ifndef NSIG
19028 #    define NSIG 50
19029 #endif
19030
19031 printf("NSIG %d\n", NSIG);
19032
19033 #ifndef JUST_NSIG
19034
19035 EOCP
19036
19037 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
19038 {
19039         printf "#ifdef SIG"; printf $1; printf "\n"
19040         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
19041         printf $1; printf ");\n"
19042         printf "#endif\n"
19043 }
19044 END {
19045         printf "#endif /* JUST_NSIG */\n";
19046         printf "exit(0);\n}\n";
19047 }
19048 ' >>signal.c
19049 $cat >signal.awk <<'EOP'
19050 BEGIN { ndups = 0 }
19051 $1 ~ /^NSIG$/ { nsig = $2 }
19052 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
19053     if ($2 > maxsig) { maxsig = $2 }
19054     if (sig_name[$2]) {
19055         dup_name[ndups] = $1
19056         dup_num[ndups] = $2
19057         ndups++ 
19058     }
19059     else {
19060         sig_name[$2] = $1
19061         sig_num[$2] = $2
19062     }
19063 }
19064 END { 
19065     if (nsig == 0) {
19066         nsig = maxsig + 1
19067     }
19068     printf("NSIG %d\n", nsig);
19069     for (n = 1; n < nsig; n++) {
19070         if (sig_name[n]) {
19071             printf("%s %d\n", sig_name[n], sig_num[n])
19072         }
19073         else {
19074             printf("NUM%d %d\n", n, n) 
19075         }
19076     }
19077     for (n = 0; n < ndups; n++) {
19078         printf("%s %d\n", dup_name[n], dup_num[n])
19079     }
19080 }
19081 EOP
19082 $cat >signal_cmd <<EOS
19083 $startsh
19084 if $test -s signal.lst; then
19085     echo "Using your existing signal.lst file"
19086         exit 0
19087 fi
19088 xxx="$xxx"
19089 EOS
19090 $cat >>signal_cmd <<'EOS'
19091
19092 set signal
19093 if eval $compile_ok; then
19094         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19095 else
19096         echo "(I can't seem be able to compile the whole test program)" >&4
19097         echo "(I'll try it in little pieces.)" >&4
19098         set signal -DJUST_NSIG
19099         if eval $compile_ok; then
19100                 $run ./signal$_exe > signal.nsg
19101                 $cat signal.nsg
19102         else
19103                 echo "I can't seem to figure out how many signals you have." >&4
19104                 echo "Guessing 50." >&4
19105                 echo 'NSIG 50' > signal.nsg
19106         fi
19107         : Now look at all the signal names, one at a time.
19108         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19109                 $cat > signal.c <<EOCP
19110 #include <sys/types.h>
19111 #include <signal.h>
19112 #include <stdio.h>
19113 int main() {
19114 printf("$xx %d\n", SIG${xx});
19115 return 0;
19116 }
19117 EOCP
19118                 set signal
19119                 if eval $compile; then
19120                         echo "SIG${xx} found."
19121                         $run ./signal$_exe  >> signal.ls1
19122                 else
19123                         echo "SIG${xx} NOT found."
19124                 fi
19125         done
19126         if $test -s signal.ls1; then
19127                 $cat signal.nsg signal.ls1 |
19128                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
19129         fi
19130
19131 fi
19132 if $test -s signal.lst; then
19133         :
19134 else
19135         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19136         echo 'kill -l' >signal
19137         set X `csh -f <signal`
19138         $rm -f signal
19139         shift
19140         case $# in
19141         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19142         esac
19143         echo $@ | $tr ' ' $trnl | \
19144             $awk '{ printf "%s %d\n", $1, ++s; }
19145                   END { printf "NSIG %d\n", ++s }' >signal.lst
19146 fi
19147 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19148 EOS
19149 chmod a+x signal_cmd
19150 $eunicefix signal_cmd
19151
19152 : generate list of signal names
19153 echo " "
19154 case "$sig_name_init" in
19155 '') doinit=yes ;;
19156 *)  case "$sig_num_init" in
19157     ''|*,*) doinit=yes ;;
19158     esac ;;
19159 esac
19160 case "$doinit" in
19161 yes)
19162         echo "Generating a list of signal names and numbers..." >&4
19163         . ./signal_cmd
19164         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19165         sig_name=`$awk 'BEGIN { printf "ZERO " }
19166                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19167         sig_num=`$awk  'BEGIN { printf "0 " }
19168                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19169         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19170                              !/^NSIG/   { printf "\"%s\", ", $1 }
19171                              END        { printf "0\n" }' signal.lst`
19172         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19173                              !/^NSIG/   { printf "%d, ", $2}
19174                              END        { printf "0\n"}' signal.lst`
19175         ;;
19176 esac
19177 echo "The following $sig_count signals are available:"
19178 echo " "
19179 echo $sig_name | $awk \
19180 'BEGIN { linelen = 0 }
19181 {
19182         for (i = 1; i <= NF; i++) {
19183                 name = "SIG" $i " "
19184                 linelen = linelen + length(name)
19185                 if (linelen > 70) {
19186                         printf "\n"
19187                         linelen = length(name)
19188                 }
19189                 printf "%s", name
19190         }
19191         printf "\n"
19192 }'
19193 sig_size=`echo $sig_name | awk '{print NF}'`
19194 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19195
19196 echo " "
19197 case "$sizetype" in
19198 *_t) zzz="$sizetype"    ;;
19199 *)   zzz="filesize"     ;;
19200 esac
19201 echo "Checking the size of $zzz..." >&4 
19202 cat > try.c <<EOCP
19203 #include <sys/types.h>
19204 #include <stdio.h>
19205 #$i_stdlib I_STDLIB
19206 #ifdef I_STDLIB
19207 #include <stdlib.h>
19208 #endif
19209 int main() {
19210     printf("%d\n", (int)sizeof($sizetype));
19211     exit(0);
19212 }
19213 EOCP
19214 set try
19215 if eval $compile_ok; then
19216         yyy=`$run ./try`
19217         case "$yyy" in
19218         '')     sizesize=4
19219                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19220                 ;;
19221         *)      sizesize=$yyy
19222                 echo "Your $zzz size is $sizesize bytes."
19223                 ;;
19224         esac
19225 else
19226         sizesize=4
19227         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19228 fi
19229
19230
19231 : check for socklen_t
19232 echo " "
19233 echo "Checking to see if you have socklen_t..." >&4
19234 $cat >try.c <<EOCP
19235 #include <sys/types.h>
19236 #$d_socket HAS_SOCKET
19237 #ifdef HAS_SOCKET
19238 #include <sys/socket.h>
19239 #endif
19240 int main() { socklen_t x = 16; }
19241 EOCP
19242 set try
19243 if eval $compile; then
19244         val="$define"
19245         echo "You have socklen_t."
19246 else
19247         val="$undef"
19248         echo "You do not have socklen_t."
19249         case "$sizetype" in
19250         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19251         esac
19252 fi
19253 $rm -f try try.*
19254 set d_socklen_t
19255 eval $setvar
19256
19257 : see if this is a socks.h system
19258 set socks.h i_socks
19259 eval $inhdr
19260
19261 : check for type of the size argument to socket calls
19262 case "$d_socket" in
19263 "$define")
19264         $cat <<EOM
19265
19266 Checking to see what type is the last argument of accept().
19267 EOM
19268         yyy=''
19269         case "$d_socklen_t" in
19270         "$define") yyy="$yyy socklen_t"
19271         esac
19272         yyy="$yyy $sizetype int long unsigned"
19273         for xxx in $yyy; do
19274                 case "$socksizetype" in
19275                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19276                         case "$usesocks" in
19277                         "$define")
19278                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19279                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19280                                         socksizetype="$xxx"
19281                                 fi
19282                                 ;;
19283                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19284                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19285                                         socksizetype="$xxx"
19286                                 fi
19287                                 ;;
19288                         esac
19289                         ;;
19290                 esac
19291         done
19292 : In case none of those worked, prompt the user.
19293         case "$socksizetype" in
19294         '')     rp='What is the type for socket address structure sizes?'
19295                 dflt='int'
19296                 . ./myread
19297                 socksizetype=$ans
19298                 ;;
19299         esac
19300         ;;
19301 *)      : no sockets, so pick relatively harmless default
19302         socksizetype='int'
19303         ;;
19304 esac
19305
19306 : see what type is used for signed size_t
19307 set ssize_t ssizetype int stdio.h sys/types.h
19308 eval $typedef
19309 dflt="$ssizetype"
19310 $cat > try.c <<EOM
19311 #include <stdio.h>
19312 #$i_stdlib I_STDLIB
19313 #ifdef I_STDLIB
19314 #include <stdlib.h>
19315 #endif
19316 #include <sys/types.h>
19317 #define Size_t $sizetype
19318 #define SSize_t $dflt
19319 int main()
19320 {
19321         if (sizeof(Size_t) == sizeof(SSize_t))
19322                 printf("$dflt\n");
19323         else if (sizeof(Size_t) == sizeof(int))
19324                 printf("int\n");
19325         else 
19326                 printf("long\n");
19327         exit(0);
19328 }
19329 EOM
19330 echo " "
19331 set try
19332 if eval $compile_ok && $run ./try > /dev/null; then
19333         ssizetype=`$run ./try`
19334         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19335 else
19336         $cat >&4 <<EOM
19337 Help! I can't compile and run the ssize_t test program: please enlighten me!
19338 (This is probably a misconfiguration in your system or libraries, and
19339 you really ought to fix it.  Still, I'll try anyway.)
19340
19341 I need a type that is the same size as $sizetype, but is guaranteed to
19342 be signed.  Common values are ssize_t, int and long.
19343
19344 EOM
19345         rp="What signed type is the same size as $sizetype?"
19346         . ./myread
19347         ssizetype="$ans"
19348 fi
19349 $rm -f try try.*
19350
19351 : see what type of char stdio uses.
19352 echo " "
19353 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19354 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19355         echo "Your stdio uses unsigned chars." >&4
19356         stdchar="unsigned char"
19357 else
19358         echo "Your stdio uses signed chars." >&4
19359         stdchar="char"
19360 fi
19361 $rm -f stdioh
19362
19363
19364
19365 : see what type uids are declared as in the kernel
19366 echo " "
19367 echo "Looking for the type for user ids returned by getuid()."
19368 set uid_t uidtype xxx stdio.h sys/types.h
19369 eval $typedef
19370 case "$uidtype" in
19371 xxx)
19372         xxx=`./findhdr sys/user.h`
19373         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19374         case $1 in
19375         unsigned) dflt="$1 $2" ;;
19376         *) dflt="$1" ;;
19377         esac
19378         ;;
19379 *) dflt="$uidtype";;
19380 esac
19381 case "$uidtype" in
19382 uid_t)  echo "uid_t found." ;;
19383 *)      rp="What is the type for user ids returned by getuid()?"
19384         . ./myread
19385         uidtype="$ans"
19386         ;;
19387 esac
19388
19389 echo " "
19390 case "$uidtype" in
19391 *_t) zzz="$uidtype"     ;;
19392 *)   zzz="uid"          ;;
19393 esac
19394 echo "Checking the size of $zzz..." >&4 
19395 cat > try.c <<EOCP
19396 #include <sys/types.h>
19397 #include <stdio.h>
19398 #$i_stdlib I_STDLIB
19399 #ifdef I_STDLIB
19400 #include <stdlib.h>
19401 #endif
19402 int main() {
19403     printf("%d\n", (int)sizeof($uidtype));
19404     exit(0);
19405 }
19406 EOCP
19407 set try
19408 if eval $compile_ok; then
19409         yyy=`$run ./try`
19410         case "$yyy" in
19411         '')     uidsize=4
19412                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19413                 ;;
19414         *)      uidsize=$yyy
19415                 echo "Your $zzz is $uidsize bytes long."
19416                 ;;
19417         esac
19418 else
19419         uidsize=4
19420         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19421 fi
19422
19423 echo " "
19424 case "$uidtype" in
19425 *_t) zzz="$uidtype"     ;;
19426 *)   zzz="uid"          ;;
19427 esac
19428 echo "Checking the sign of $zzz..." >&4
19429 cat > try.c <<EOCP
19430 #include <sys/types.h>
19431 #include <stdio.h>
19432 int main() {
19433         $uidtype foo = -1;
19434         if (foo < 0)
19435                 printf("-1\n");
19436         else
19437                 printf("1\n");
19438 }
19439 EOCP
19440 set try
19441 if eval $compile; then
19442         yyy=`$run ./try`
19443         case "$yyy" in
19444         '')     uidsign=1
19445                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19446                 ;;
19447         *)      uidsign=$yyy
19448                 case "$uidsign" in
19449                  1) echo "Your $zzz is unsigned." ;;
19450                 -1) echo "Your $zzz is signed."   ;;
19451                 esac
19452                 ;;
19453         esac
19454 else
19455         uidsign=1
19456         echo "(I can't compile the test program--guessing unsigned.)" >&4
19457 fi
19458
19459
19460
19461 echo " "
19462 $echo "Checking the format string to be used for uids..." >&4
19463
19464 case "$uidsign" in
19465 -1)     if $test X"$uidsize" = X"$ivsize"; then
19466                 uidformat="$ivdformat"
19467         else
19468                 if $test X"$uidsize" = X"$longsize"; then
19469                         uidformat='"ld"'
19470                 else
19471                         if $test X"$uidsize" = X"$intsize"; then
19472                                 uidformat='"d"'
19473                         else
19474                                 if $test X"$uidsize" = X"$shortsize"; then
19475                                         uidformat='"hd"'
19476                                 fi
19477                         fi
19478                 fi
19479         fi
19480         ;;
19481 *)      if $test X"$uidsize" = X"$uvsize"; then
19482                 uidformat="$uvuformat"
19483         else
19484                 if $test X"$uidsize" = X"$longsize"; then
19485                         uidformat='"lu"'
19486                 else
19487                         if $test X"$uidsize" = X"$intsize"; then
19488                                 uidformat='"u"'
19489                         else
19490                                 if $test X"$uidsize" = X"$shortsize"; then
19491                                         uidformat='"hu"'
19492                                 fi
19493                         fi
19494                 fi
19495         fi
19496         ;;
19497 esac
19498
19499 : determine compiler compiler
19500 case "$yacc" in
19501 '')
19502         dflt=yacc;;
19503 *)
19504         dflt="$yacc";;
19505 esac
19506 echo " "
19507 comp='yacc'
19508 if $test -f "$byacc$_exe"; then
19509         dflt="$byacc"
19510         comp="byacc or $comp"
19511 fi
19512 if $test -f "$bison$_exe"; then
19513         comp="$comp or bison -y"
19514 fi
19515 rp="Which compiler compiler ($comp) shall I use?"
19516 . ./myread
19517 yacc="$ans"
19518 case "$yacc" in
19519 *bis*)
19520         case "$yacc" in
19521         *-y*) ;;
19522         *)
19523                 yacc="$yacc -y"
19524                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19525                 ;;
19526         esac
19527         ;;
19528 esac
19529
19530 : see if this is a fp.h system
19531 set fp.h i_fp
19532 eval $inhdr
19533
19534 : see if this is a fp_class.h system
19535 set fp_class.h i_fp_class
19536 eval $inhdr
19537
19538 : see if this is a ieeefp.h system
19539 case "$i_ieeefp" in
19540 '' ) set ieeefp.h i_ieeefp
19541      eval $inhdr
19542      ;;
19543 esac
19544
19545 : see if this is a libutil.h system
19546 set libutil.h i_libutil
19547 eval $inhdr
19548
19549 : see if mach cthreads are available
19550 if test "X$usethreads" = "X$define"; then
19551         set mach/cthreads.h i_machcthr
19552         eval $inhdr
19553 else
19554         i_machcthr="$undef"
19555 fi
19556
19557
19558
19559 : see if this is a math.h system
19560 set math.h i_math
19561 eval $inhdr
19562
19563 : see if this is a mntent.h system
19564 set mntent.h i_mntent
19565 eval $inhdr
19566
19567 : see if ndbm.h is available
19568 set ndbm.h t_ndbm
19569 eval $inhdr
19570
19571 case "$t_ndbm" in
19572 $undef)
19573     # Some Linux distributions such as RedHat 7.1 put the
19574     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19575     if $test -f /usr/include/gdbm/ndbm.h; then
19576         echo '<gdbm/ndbm.h> found.'
19577         ccflags="$ccflags -I/usr/include/gdbm"
19578         cppflags="$cppflags -I/usr/include/gdbm"
19579         t_ndbm=$define
19580     fi
19581     ;;
19582 esac
19583
19584 case "$t_ndbm" in
19585 $define)
19586         : see if dbm_open exists
19587         set dbm_open d_dbm_open
19588         eval $inlibc
19589         case "$d_dbm_open" in
19590         $undef)
19591                 t_ndbm="$undef"
19592                 echo "We won't be including <ndbm.h>"
19593                 ;;
19594         esac
19595         ;;
19596 esac
19597 val="$t_ndbm"
19598 set i_ndbm
19599 eval $setvar
19600
19601 : see if net/errno.h is available
19602 val=''
19603 set net/errno.h val
19604 eval $inhdr
19605
19606 : Unfortunately, it causes problems on some systems.  Arrgh.
19607 case "$val" in
19608 $define)
19609         cat > try.c <<'EOM'
19610 #include <stdio.h>
19611 #include <errno.h>
19612 #include <net/errno.h>
19613 int func()
19614 {
19615         return ENOTSOCK;
19616 }
19617 EOM
19618         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19619                 echo "We'll be including <net/errno.h>." >&4
19620         else
19621                 echo "We won't be including <net/errno.h>." >&4
19622                 val="$undef"
19623         fi
19624         $rm -f try.* try
19625         ;;
19626 esac
19627 set i_neterrno
19628 eval $setvar
19629
19630 : see if netinet/tcp.h is available
19631 set netinet/tcp.h i_netinettcp
19632 eval $inhdr
19633
19634 : see if this is a poll.h system
19635 set poll.h i_poll
19636 eval $inhdr
19637
19638 : see if this is a prot.h system
19639 set prot.h i_prot
19640 eval $inhdr
19641
19642 echo " "
19643 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19644 $cat <<'EOSH' > Cppsym.know
19645 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19646 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19647 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19648 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19649 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19650 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19651 bull c cadmus clipper CMU COFF COMPILER_VERSION
19652 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19653 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19654 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19655 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19656 GLIBC GLIBC_MINOR
19657 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19658 H3050R H3050RX hbullx20 hcx host_mips
19659 hp200 hp300 hp700 HP700 hp800 hp9000
19660 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19661 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19662 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19663 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19664 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19665 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19666 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19667 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19668 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19669 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19670 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19671 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19672 MATH_HAS_NO_SIDE_EFFECTS
19673 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19674 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19675 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19676 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19677 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19678 NetBSD news1500 news1700 news1800 news1900 news3700
19679 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19680 ns32016 ns32332 ns32k nsc32000
19681 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19682 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19683 pc532 pdp11 PGC PIC plexus PORTAR posix
19684 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19685 POSIX_C_SOURCE POSIX_SOURCE POWER
19686 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19687 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19688 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19689 sony sony_news sonyrisc sparc sparclite spectrum
19690 stardent stdc STDC_EXT stratos sun sun3 sun386
19691 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19692 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19693 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19694 sysV68 sysV88 Tek4132 Tek4300 titan
19695 TM3200 TM5400 TM5600
19696 tower tower32 tower32_200 tower32_600 tower32_700
19697 tower32_800 tower32_850 tss
19698 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19699 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19700 unix UNIX95 UNIX99 unixpc unos
19701 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19702 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19703 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19704 USGr4 USGr4_2
19705 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19706 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19707 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19708 z8000
19709 EOSH
19710 # Maybe put other stuff here too.
19711 cat <<EOSH >>Cppsym.know
19712 $osname
19713 EOSH
19714 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19715 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19716 $cat Cppsym.know > Cppsym.c
19717 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19718 $rm -f Cppsym.a Cppsym.b Cppsym.c
19719 cat <<EOSH > Cppsym
19720 $startsh
19721 if $test \$# -gt 0; then
19722     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19723     if $test -s Cppsym.got; then
19724         $rm -f Cppsym.got
19725         exit 0
19726     fi
19727     $rm -f Cppsym.got
19728     exit 1
19729 else
19730     $tr " " "$trnl" | ./Cppsym.try
19731     exit 0
19732 fi
19733 EOSH
19734 chmod +x Cppsym
19735 $eunicefix Cppsym
19736 cat <<EOSH > Cppsym.try
19737 $startsh
19738 cat <<'EOCP' > try.c
19739 #include <stdio.h>
19740 int main() {
19741 EOCP
19742 $awk \\
19743 EOSH
19744 cat <<'EOSH' >> Cppsym.try
19745 'length($1) > 0 {
19746     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
19747     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
19748     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
19749     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
19750 }'       >> try.c
19751 echo 'return 0;}' >> try.c
19752 EOSH
19753 cat <<EOSH >> Cppsym.try
19754 ccflags="$ccflags"
19755 case "$osname-$gccversion" in
19756 irix-) ccflags="\$ccflags -woff 1178" ;;
19757 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19758 esac
19759 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19760 EOSH
19761 chmod +x Cppsym.try
19762 $eunicefix Cppsym.try
19763 ./Cppsym < Cppsym.know > Cppsym.true
19764 : now check the C compiler for additional symbols
19765 postprocess_cc_v=''
19766 case "$osname" in
19767 aix) postprocess_cc_v="|$tr , ' '" ;;
19768 esac
19769 $cat >ccsym <<EOS
19770 $startsh
19771 $cat >tmp.c <<EOF
19772 extern int foo;
19773 EOF
19774 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19775 do
19776         case "\$i" in
19777         -D*) echo "\$i" | $sed 's/^-D//';;
19778         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19779         esac
19780 done
19781 $rm -f try.c
19782 EOS
19783 postprocess_cc_v=''
19784 chmod +x ccsym
19785 $eunicefix ccsym
19786 ./ccsym > ccsym1.raw
19787 if $test -s ccsym1.raw; then
19788        $sort ccsym1.raw | $uniq >ccsym.raw
19789 else
19790        mv ccsym1.raw ccsym.raw
19791 fi
19792
19793 $awk '/\=/ { print $0; next }
19794         { print $0"=1" }' ccsym.raw >ccsym.list
19795 $awk '/\=/ { print $0; next }
19796         { print $0"=1" }' Cppsym.true >ccsym.true
19797 $comm -13 ccsym.true ccsym.list >ccsym.own
19798 $comm -12 ccsym.true ccsym.list >ccsym.com
19799 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19800 also=''
19801 if $test -z ccsym.raw; then
19802         echo "Your C compiler doesn't seem to define any symbols!" >&4
19803         echo " "
19804         echo "However, your C preprocessor defines the following symbols:"
19805         $cat Cppsym.true
19806         ccsymbols=''
19807         cppsymbols=`$cat Cppsym.true`
19808         cppsymbols=`echo $cppsymbols`
19809         cppccsymbols="$cppsymbols"
19810 else
19811         if $test -s ccsym.com; then
19812                 echo "Your C compiler and pre-processor define these symbols:"
19813                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19814                 also='also '
19815                 symbols='ones'
19816                 cppccsymbols=`$cat ccsym.com`
19817                 cppccsymbols=`echo $cppccsymbols`
19818                 $test "$silent" || sleep 1
19819         fi
19820         if $test -s ccsym.cpp; then
19821                 $test "$also" && echo " "
19822                 echo "Your C pre-processor ${also}defines the following symbols:"
19823                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19824                 also='further '
19825                 cppsymbols=`$cat ccsym.cpp`
19826                 cppsymbols=`echo $cppsymbols`
19827                 $test "$silent" || sleep 1
19828         fi
19829         if $test -s ccsym.own; then
19830                 $test "$also" && echo " "
19831                 echo "Your C compiler ${also}defines the following cpp symbols:"
19832                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19833                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19834                 ccsymbols=`$cat ccsym.own`
19835                 ccsymbols=`echo $ccsymbols`
19836                 $test "$silent" || sleep 1
19837         fi
19838 fi
19839
19840 : see if this is a termio system
19841 val="$undef"
19842 val2="$undef"
19843 val3="$undef"
19844 if $test `./findhdr termios.h`; then
19845         set tcsetattr i_termios
19846         eval $inlibc
19847         val3="$i_termios"
19848 fi
19849 echo " "
19850 case "$val3" in
19851 "$define") echo "You have POSIX termios.h... good!" >&4;;
19852 *) if ./Cppsym pyr; then
19853                 case "`/bin/universe`" in
19854                 ucb) if $test `./findhdr sgtty.h`; then
19855                                 val2="$define"
19856                                 echo "<sgtty.h> found." >&4
19857                         else
19858                                 echo "System is pyramid with BSD universe."
19859                                 echo "<sgtty.h> not found--you could have problems." >&4
19860                         fi;;
19861                 *) if $test `./findhdr termio.h`; then
19862                                 val="$define"
19863                                 echo "<termio.h> found." >&4
19864                         else
19865                                 echo "System is pyramid with USG universe."
19866                                 echo "<termio.h> not found--you could have problems." >&4
19867                         fi;;
19868                 esac
19869         elif ./usg; then
19870                 if $test `./findhdr termio.h`; then
19871                         echo "<termio.h> found." >&4
19872                         val="$define"
19873                 elif $test `./findhdr sgtty.h`; then
19874                         echo "<sgtty.h> found." >&4
19875                         val2="$define"
19876                 else
19877 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19878                 fi
19879         else
19880                 if $test `./findhdr sgtty.h`; then
19881                         echo "<sgtty.h> found." >&4
19882                         val2="$define"
19883                 elif $test `./findhdr termio.h`; then
19884                         echo "<termio.h> found." >&4
19885                         val="$define"
19886                 else
19887 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19888                 fi
19889         fi;;
19890 esac
19891 set i_termio; eval $setvar
19892 val=$val2; set i_sgtty; eval $setvar
19893 val=$val3; set i_termios; eval $setvar
19894
19895 : see if stddef is available
19896 set stddef.h i_stddef
19897 eval $inhdr
19898
19899 : see if this is a sunmath.h system
19900 set sunmath.h i_sunmath
19901 eval $inhdr
19902
19903 : see if sys/access.h is available
19904 set sys/access.h i_sysaccess
19905 eval $inhdr
19906
19907 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19908 set sys/filio.h i_sysfilio
19909 eval $inhdr
19910 echo " "
19911 if $test `./findhdr sys/ioctl.h`; then
19912         val="$define"
19913         echo '<sys/ioctl.h> found.' >&4
19914 else
19915         val="$undef"
19916         if $test $i_sysfilio = "$define"; then
19917             echo '<sys/ioctl.h> NOT found.' >&4
19918         else
19919                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19920                 $test $i_termio = "$define" && xxx="termio.h"
19921                 $test $i_termios = "$define" && xxx="termios.h"
19922 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19923         fi
19924 fi
19925 set i_sysioctl
19926 eval $setvar
19927
19928 : see if socket ioctl defs are in sys/sockio.h
19929 echo " "
19930 xxx=`./findhdr sys/sockio.h`
19931 if $test "$xxx"; then
19932         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19933                 val="$define"
19934                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19935         else
19936                 val="$undef"
19937                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19938         fi
19939 else
19940         val="$undef"
19941         $cat <<EOM
19942 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19943 EOM
19944 fi
19945 set i_syssockio
19946 eval $setvar
19947
19948
19949 : see if this is a syslog.h system
19950 set syslog.h i_syslog
19951 eval $inhdr
19952
19953
19954 : see if this is a sys/mode.h system
19955 set sys/mode.h i_sysmode
19956 eval $inhdr
19957
19958 : see if sys/resource.h has to be included
19959 set sys/resource.h i_sysresrc
19960 eval $inhdr
19961
19962 : see if sys/security.h is available
19963 set sys/security.h i_syssecrt
19964 eval $inhdr
19965
19966 : see if this is a sys/statvfs.h system
19967 set sys/statvfs.h i_sysstatvfs
19968 eval $inhdr
19969
19970 : see if this is a sys/un.h system
19971 set sys/un.h i_sysun
19972 eval $inhdr
19973
19974
19975 : see if this is a sys/utsname.h system
19976 set sys/utsname.h i_sysutsname
19977 eval $inhdr
19978
19979 : see if this is a syswait system
19980 set sys/wait.h i_syswait
19981 eval $inhdr
19982
19983 : see if this is a ustat.h system
19984 set ustat.h i_ustat
19985 eval $inhdr
19986
19987 : see if this is an utime system
19988 set utime.h i_utime
19989 eval $inhdr
19990
19991 : see if this is a values.h system
19992 set values.h i_values
19993 eval $inhdr
19994
19995 : see if this is a vfork system
19996 case "$d_vfork" in
19997 "$define")
19998         set vfork.h i_vfork
19999         eval $inhdr
20000         ;;
20001 *)
20002         i_vfork="$undef"
20003         ;;
20004 esac
20005
20006 : see if gdbm.h is available
20007 set gdbm.h t_gdbm
20008 eval $inhdr
20009 case "$t_gdbm" in
20010 $define)
20011         : see if gdbm_open exists
20012         set gdbm_open d_gdbm_open
20013         eval $inlibc
20014         case "$d_gdbm_open" in
20015         $undef)
20016                 t_gdbm="$undef"
20017                 echo "We won't be including <gdbm.h>"
20018                 ;;
20019         esac
20020         ;;
20021 esac
20022 val="$t_gdbm"
20023 set i_gdbm
20024 eval $setvar
20025
20026 echo " "
20027 echo "Looking for extensions..." >&4
20028 : If we are using the old config.sh, known_extensions may contain
20029 : old or inaccurate or duplicate values.
20030 known_extensions=''
20031 nonxs_extensions=''
20032 : We do not use find because it might not be available.
20033 : We do not just use MANIFEST because the user may have dropped
20034 : some additional extensions into the source tree and expect them
20035 : to be built.
20036
20037 : Function to recursively find available extensions, ignoring DynaLoader
20038 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
20039 find_extensions='
20040     for xxx in *; do
20041        case "$xxx" in
20042            DynaLoader|dynaload) ;;
20043            *)
20044            if $test -f $xxx/$xxx.xs; then
20045                known_extensions="$known_extensions $1$xxx";
20046            elif $test -f $xxx/Makefile.PL; then
20047                nonxs_extensions="$nonxs_extensions $1$xxx";
20048            else
20049                if $test -d $xxx -a $# -lt 10; then
20050                    set $1$xxx/ $*;
20051                    cd "$xxx";
20052                    eval $find_extensions;
20053                    cd ..;
20054                    shift;
20055                fi;
20056            fi
20057            ;;
20058        esac;
20059     done'
20060 tdir=`pwd`
20061 cd "$rsrc/ext"
20062 set X
20063 shift
20064 eval $find_extensions
20065 # Special case:  Add in threads/shared since it is not picked up by the
20066 # recursive find above (and adding in general recursive finding breaks
20067 # SDBM_File/sdbm).  A.D.  10/25/2001.
20068 known_extensions="$known_extensions threads/shared"
20069 set X $nonxs_extensions
20070 shift
20071 nonxs_extensions="$*"
20072 set X $known_extensions
20073 shift
20074 known_extensions="$*"
20075 cd "$tdir"
20076
20077 : Now see which are supported on this system.
20078 avail_ext=''
20079 for xxx in $known_extensions ; do
20080         case "$xxx" in
20081         DB_File|db_file)
20082                 case "$i_db" in
20083                 $define) avail_ext="$avail_ext $xxx" ;;
20084                 esac
20085                 ;;
20086         GDBM_File|gdbm_fil)
20087                 case "$i_gdbm" in 
20088                 $define) avail_ext="$avail_ext $xxx" ;;
20089                 esac
20090                 ;;
20091         I18N/Langinfo|i18n_lan)
20092                 case "$i_langinfo$d_nl_langinfo" in 
20093                 $define$define) avail_ext="$avail_ext $xxx" ;;
20094                 esac
20095                 ;;
20096         NDBM_File|ndbm_fil)
20097                 case "$i_ndbm" in
20098                 $define)
20099                     case "$osname-$use64bitint" in
20100                     hpux-define)
20101                         case "$libs" in
20102                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20103                         esac
20104                         ;;
20105                     *) avail_ext="$avail_ext $xxx" ;;
20106                     esac
20107                     ;;
20108                 esac
20109                 ;;
20110         ODBM_File|odbm_fil) 
20111                 case "${i_dbm}${i_rpcsvcdbm}" in
20112                 *"${define}"*)
20113                     case "$osname-$use64bitint" in
20114                     hpux-define)
20115                         case "$libs" in
20116                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20117                         esac
20118                         ;;
20119                     *) avail_ext="$avail_ext $xxx" ;;
20120                     esac
20121                     ;;
20122                 esac
20123                 ;;
20124         POSIX|posix)
20125                 case "$useposix" in
20126                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20127                 esac
20128                 ;;
20129         Opcode|opcode)
20130                 case "$useopcode" in
20131                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20132                 esac
20133                 ;;
20134         Socket|socket)
20135                 case "$d_socket" in 
20136                 true|$define|y)
20137                     case "$osname" in
20138                     beos) ;; # not unless BONE
20139                     *) avail_ext="$avail_ext $xxx" ;;
20140                     esac
20141                     ;;
20142                 esac
20143                 ;;
20144         Sys/Syslog|sys/syslog)
20145                 : XXX syslog requires socket
20146                 case "$d_socket" in 
20147                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20148                 esac
20149                 ;;
20150         Thread|thread)
20151                 case "$usethreads" in
20152                 true|$define|y)
20153                         case "$useithreads" in
20154                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20155                         esac
20156                 esac
20157                 ;;
20158         XS/APItest|xs/apitest)
20159                 # This is just for testing.  Skip it unless we have dynamic loading.
20160
20161                 case "$usedl" in
20162                 $define) avail_ext="$avail_ext $xxx" ;;
20163                 esac
20164                 ;;
20165         XS/Typemap|xs/typemap)
20166                 # This is just for testing.  Skip it unless we have dynamic loading.
20167                 case "$usedl" in
20168                 $define) avail_ext="$avail_ext $xxx" ;;
20169                 esac
20170                 ;;
20171         threads|threads/shared)
20172                 # threads and threads::shared are special cases.
20173                 # To stop people from asking "Perl 5.8.0 was supposed
20174                 # to have this new fancy threads implementation but my
20175                 # perl doesn't have it" and from people trying to
20176                 # (re)install the threads module using CPAN.pm and
20177                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20178                 # the threads.pm and threads/shared.pm will always be
20179                 # there, croaking informatively ("you need to rebuild
20180                 # all of Perl with threads, sorry") when threads haven't
20181                 # been compiled in.
20182                 # --jhi
20183                 avail_ext="$avail_ext $xxx"
20184                 ;;
20185         IPC/SysV|ipc/sysv)
20186                 : XXX Do we need a useipcsysv variable here
20187                 case "${d_msg}${d_sem}${d_shm}" in 
20188                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20189                 esac
20190                 ;;
20191         *)      avail_ext="$avail_ext $xxx"
20192                 ;;
20193         esac
20194 done
20195
20196 set X $avail_ext
20197 shift
20198 avail_ext="$*"
20199
20200 case "$onlyextensions" in
20201 '') ;;
20202 *)  keepextensions=''
20203     echo "You have requested that only certains extensions be included..." >&4
20204     for i in $onlyextensions; do
20205         case " $avail_ext " in
20206         *" $i "*)
20207             echo "Keeping extension $i."
20208             keepextensions="$keepextensions $i"
20209             ;;
20210         *) echo "Ignoring extension $i." ;;
20211         esac
20212     done
20213     avail_ext="$keepextensions"
20214     ;;
20215 esac
20216
20217 case "$noextensions" in
20218 '') ;;
20219 *)  keepextensions=''
20220     echo "You have requested that certain extensions be ignored..." >&4
20221     for i in $avail_ext; do
20222         case " $noextensions " in
20223         *" $i "*) echo "Ignoring extension $i." ;;
20224         *) echo "Keeping extension $i.";
20225            keepextensions="$keepextensions $i"
20226            ;;
20227         esac
20228     done
20229     avail_ext="$keepextensions"
20230     ;;
20231 esac
20232
20233 : Now see which nonxs extensions are supported on this system.
20234 : For now assume all are.
20235 nonxs_ext=''
20236 for xxx in $nonxs_extensions ; do
20237         case "$xxx" in
20238         *)      nonxs_ext="$nonxs_ext $xxx"
20239                 ;;
20240         esac
20241 done
20242
20243 set X $nonxs_ext
20244 shift
20245 nonxs_ext="$*"
20246
20247 case $usedl in
20248 $define)
20249         $cat <<EOM
20250 A number of extensions are supplied with $package.  You may choose to
20251 compile these extensions for dynamic loading (the default), compile
20252 them into the $package executable (static loading), or not include
20253 them at all.  Answer "none" to include no extensions.
20254 Note that DynaLoader is always built and need not be mentioned here.
20255
20256 EOM
20257         case "$dynamic_ext" in
20258         '')
20259                 : Exclude those listed in static_ext
20260                 dflt=''
20261                 for xxx in $avail_ext; do
20262                         case " $static_ext " in
20263                         *" $xxx "*) ;;
20264                         *) dflt="$dflt $xxx" ;;
20265                         esac
20266                 done
20267                 set X $dflt
20268                 shift
20269                 dflt="$*"
20270                 ;;
20271         *)      dflt="$dynamic_ext"
20272                 # Perhaps we are reusing an old out-of-date config.sh.
20273                 case "$hint" in
20274                 previous)
20275                         if test X"$dynamic_ext" != X"$avail_ext"; then
20276                                 $cat <<EOM
20277 NOTICE:  Your previous config.sh list may be incorrect. 
20278 The extensions now available to you are 
20279         ${avail_ext}
20280 but the default list from your previous config.sh is
20281         ${dynamic_ext} 
20282
20283 EOM
20284                         fi
20285                         ;;
20286                 esac
20287                 ;;
20288         esac
20289         case "$dflt" in
20290         '')     dflt=none;;
20291         esac
20292         rp="What extensions do you wish to load dynamically?"
20293         . ./myread
20294         case "$ans" in
20295         none) dynamic_ext=' ' ;;
20296         *) dynamic_ext="$ans" ;;
20297         esac
20298
20299         case "$static_ext" in
20300         '')
20301                 : Exclude those already listed in dynamic linking
20302                 dflt=''
20303                 for xxx in $avail_ext; do
20304                         case " $dynamic_ext " in
20305                         *" $xxx "*) ;;
20306                         *) dflt="$dflt $xxx" ;;
20307                         esac
20308                 done
20309                 set X $dflt
20310                 shift
20311                 dflt="$*"
20312                 ;;
20313         *)  dflt="$static_ext" 
20314                 ;;
20315         esac
20316
20317         case "$dflt" in
20318         '')     dflt=none;;
20319         esac
20320         rp="What extensions do you wish to load statically?"
20321         . ./myread
20322         case "$ans" in
20323         none) static_ext=' ' ;;
20324         *) static_ext="$ans" ;;
20325         esac
20326         ;;
20327 *)
20328         $cat <<EOM
20329 A number of extensions are supplied with $package.  Answer "none" 
20330 to include no extensions. 
20331 Note that DynaLoader is always built and need not be mentioned here.
20332
20333 EOM
20334         case "$static_ext" in
20335         '') dflt="$avail_ext" ;;
20336         *)      dflt="$static_ext"
20337                 # Perhaps we are reusing an old out-of-date config.sh.
20338                 case "$hint" in
20339                 previous)
20340                         if test X"$static_ext" != X"$avail_ext"; then
20341                                 $cat <<EOM
20342 NOTICE:  Your previous config.sh list may be incorrect. 
20343 The extensions now available to you are 
20344         ${avail_ext}
20345 but the default list from your previous config.sh is
20346         ${static_ext} 
20347
20348 EOM
20349                         fi
20350                         ;;
20351                 esac
20352                 ;;
20353         esac
20354         : Exclude those that are not xs extensions
20355         case "$dflt" in
20356         '')     dflt=none;;
20357         esac
20358         rp="What extensions do you wish to include?"
20359         . ./myread
20360         case "$ans" in
20361         none) static_ext=' ' ;;
20362         *) static_ext="$ans" ;;
20363         esac
20364         ;;
20365 esac
20366 #        
20367 # Encode is a special case.  If we are building Encode as a static
20368 # extension, we need to explicitly list its subextensions as well.
20369 # For other nested extensions, this is handled automatically by
20370 # the appropriate Makefile.PL.
20371 case " $static_ext " in
20372         *" Encode "*) # Add the subextensions of Encode
20373         cd "$rsrc/ext"
20374         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20375                 static_ext="$static_ext Encode/$xxx"
20376         done
20377         cd "$tdir"
20378         ;;
20379 esac
20380
20381 set X $dynamic_ext $static_ext $nonxs_ext
20382 shift
20383 extensions="$*"
20384
20385 # Sanity check:  We require an extension suitable for use with
20386 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
20387 # should show up as failures in the test suite, but it's helpful to
20388 # catch them now.) The 'extensions' list is normally sorted
20389 # alphabetically, so we need to accept either
20390 #    DB_File ... Fcntl ... IO  ....
20391 # or something like
20392 #    Fcntl ... NDBM_File ... IO  ....
20393 case " $extensions"  in
20394 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
20395 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20396 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
20397 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20398    echo "WARNING: The Perl you are building will be quite crippled." >& 4
20399    ;;
20400 esac
20401
20402 : Remove libraries needed only for extensions
20403 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20404 : The exception is SunOS 4.x, which needs them.
20405 case "${osname}X${osvers}" in
20406 sunos*X4*)
20407     perllibs="$libs"
20408     ;;
20409 *) case "$usedl" in
20410     $define|true|[yY]*)
20411             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20412             shift
20413             perllibs="$*"
20414             ;;
20415     *)  perllibs="$libs"
20416             ;;
20417     esac
20418     ;;
20419 esac
20420
20421 : Remove build directory name from cppstdin so it can be used from
20422 : either the present location or the final installed location.
20423 echo " "
20424 : Get out of the UU directory to get correct path name.
20425 cd ..
20426 case "$cppstdin" in
20427 `pwd`/cppstdin)
20428         echo "Stripping down cppstdin path name"
20429         cppstdin=cppstdin
20430         ;;
20431 esac
20432 cd UU
20433
20434 : end of configuration questions
20435 echo " "
20436 echo "End of configuration questions."
20437 echo " "
20438
20439 : back to where it started
20440 if test -d ../UU; then
20441         cd ..
20442 fi
20443
20444 : configuration may be patched via a 'config.arch' file
20445 if $test -f config.arch; then
20446         echo "I see a config.arch file, loading it."
20447         . ./config.arch
20448 fi
20449
20450 : configuration may be patched via a 'config.over' file
20451 if $test -f config.over; then
20452         echo " "
20453         dflt=y
20454         rp='I see a config.over file.  Do you wish to load it?'
20455         . UU/myread
20456         case "$ans" in
20457         n*) echo "OK, I'll ignore it.";;
20458         *)      . ./config.over
20459                 echo "Configuration override changes have been loaded."
20460                 ;;
20461         esac
20462 fi
20463
20464 : in case they want portability, strip down executable paths
20465 case "$d_portable" in
20466 "$define")
20467         echo " "
20468         echo "Stripping down executable paths..." >&4
20469         for file in $loclist $trylist; do
20470                 eval temp=\$$file
20471                 eval $file=`basename $temp`
20472         done
20473         ;;
20474 esac
20475
20476 : create config.sh file
20477 echo " "
20478 echo "Creating config.sh..." >&4
20479 $spitshell <<EOT >config.sh
20480 $startsh
20481 #
20482 # This file was produced by running the Configure script. It holds all the
20483 # definitions figured out by Configure. Should you modify one of these values,
20484 # do not forget to propagate your changes by running "Configure -der". You may
20485 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20486 #
20487
20488 # Package name      : $package
20489 # Source directory  : $src
20490 # Configuration time: $cf_time
20491 # Configured by     : $cf_by
20492 # Target system     : $myuname
20493
20494 Author='$Author'
20495 Date='$Date'
20496 Header='$Header'
20497 Id='$Id'
20498 Locker='$Locker'
20499 Log='$Log'
20500 Mcc='$Mcc'
20501 RCSfile='$RCSfile'
20502 Revision='$Revision'
20503 Source='$Source'
20504 State='$State'
20505 _a='$_a'
20506 _exe='$_exe'
20507 _o='$_o'
20508 afs='$afs'
20509 afsroot='$afsroot'
20510 alignbytes='$alignbytes'
20511 ansi2knr='$ansi2knr'
20512 aphostname='$aphostname'
20513 api_revision='$api_revision'
20514 api_subversion='$api_subversion'
20515 api_version='$api_version'
20516 api_versionstring='$api_versionstring'
20517 ar='$ar'
20518 archlib='$archlib'
20519 archlibexp='$archlibexp'
20520 archname64='$archname64'
20521 archname='$archname'
20522 archobjs='$archobjs'
20523 asctime_r_proto='$asctime_r_proto'
20524 awk='$awk'
20525 baserev='$baserev'
20526 bash='$bash'
20527 bin='$bin'
20528 binexp='$binexp'
20529 bison='$bison'
20530 byacc='$byacc'
20531 byteorder='$byteorder'
20532 c='$c'
20533 castflags='$castflags'
20534 cat='$cat'
20535 cc='$cc'
20536 cccdlflags='$cccdlflags'
20537 ccdlflags='$ccdlflags'
20538 ccflags='$ccflags'
20539 ccflags_uselargefiles='$ccflags_uselargefiles'
20540 ccname='$ccname'
20541 ccsymbols='$ccsymbols'
20542 ccversion='$ccversion'
20543 cf_by='$cf_by'
20544 cf_email='$cf_email'
20545 cf_time='$cf_time'
20546 charsize='$charsize'
20547 chgrp='$chgrp'
20548 chmod='$chmod'
20549 chown='$chown'
20550 clocktype='$clocktype'
20551 comm='$comm'
20552 compress='$compress'
20553 contains='$contains'
20554 cp='$cp'
20555 cpio='$cpio'
20556 cpp='$cpp'
20557 cpp_stuff='$cpp_stuff'
20558 cppccsymbols='$cppccsymbols'
20559 cppflags='$cppflags'
20560 cpplast='$cpplast'
20561 cppminus='$cppminus'
20562 cpprun='$cpprun'
20563 cppstdin='$cppstdin'
20564 cppsymbols='$cppsymbols'
20565 crypt_r_proto='$crypt_r_proto'
20566 cryptlib='$cryptlib'
20567 csh='$csh'
20568 ctermid_r_proto='$ctermid_r_proto'
20569 ctime_r_proto='$ctime_r_proto'
20570 d_Gconvert='$d_Gconvert'
20571 d_PRIEUldbl='$d_PRIEUldbl'
20572 d_PRIFUldbl='$d_PRIFUldbl'
20573 d_PRIGUldbl='$d_PRIGUldbl'
20574 d_PRIXU64='$d_PRIXU64'
20575 d_PRId64='$d_PRId64'
20576 d_PRIeldbl='$d_PRIeldbl'
20577 d_PRIfldbl='$d_PRIfldbl'
20578 d_PRIgldbl='$d_PRIgldbl'
20579 d_PRIi64='$d_PRIi64'
20580 d_PRIo64='$d_PRIo64'
20581 d_PRIu64='$d_PRIu64'
20582 d_PRIx64='$d_PRIx64'
20583 d_SCNfldbl='$d_SCNfldbl'
20584 d__fwalk='$d__fwalk'
20585 d_access='$d_access'
20586 d_accessx='$d_accessx'
20587 d_aintl='$d_aintl'
20588 d_alarm='$d_alarm'
20589 d_archlib='$d_archlib'
20590 d_asctime_r='$d_asctime_r'
20591 d_atolf='$d_atolf'
20592 d_atoll='$d_atoll'
20593 d_attribut='$d_attribut'
20594 d_bcmp='$d_bcmp'
20595 d_bcopy='$d_bcopy'
20596 d_bsd='$d_bsd'
20597 d_bsdgetpgrp='$d_bsdgetpgrp'
20598 d_bsdsetpgrp='$d_bsdsetpgrp'
20599 d_bzero='$d_bzero'
20600 d_casti32='$d_casti32'
20601 d_castneg='$d_castneg'
20602 d_charvspr='$d_charvspr'
20603 d_chown='$d_chown'
20604 d_chroot='$d_chroot'
20605 d_chsize='$d_chsize'
20606 d_class='$d_class'
20607 d_closedir='$d_closedir'
20608 d_cmsghdr_s='$d_cmsghdr_s'
20609 d_const='$d_const'
20610 d_copysignl='$d_copysignl'
20611 d_crypt='$d_crypt'
20612 d_crypt_r='$d_crypt_r'
20613 d_csh='$d_csh'
20614 d_ctermid_r='$d_ctermid_r'
20615 d_ctime_r='$d_ctime_r'
20616 d_cuserid='$d_cuserid'
20617 d_dbl_dig='$d_dbl_dig'
20618 d_dbminitproto='$d_dbminitproto'
20619 d_difftime='$d_difftime'
20620 d_dirfd='$d_dirfd'
20621 d_dirnamlen='$d_dirnamlen'
20622 d_dlerror='$d_dlerror'
20623 d_dlopen='$d_dlopen'
20624 d_dlsymun='$d_dlsymun'
20625 d_dosuid='$d_dosuid'
20626 d_drand48_r='$d_drand48_r'
20627 d_drand48proto='$d_drand48proto'
20628 d_dup2='$d_dup2'
20629 d_eaccess='$d_eaccess'
20630 d_endgrent='$d_endgrent'
20631 d_endgrent_r='$d_endgrent_r'
20632 d_endhent='$d_endhent'
20633 d_endhostent_r='$d_endhostent_r'
20634 d_endnent='$d_endnent'
20635 d_endnetent_r='$d_endnetent_r'
20636 d_endpent='$d_endpent'
20637 d_endprotoent_r='$d_endprotoent_r'
20638 d_endpwent='$d_endpwent'
20639 d_endpwent_r='$d_endpwent_r'
20640 d_endsent='$d_endsent'
20641 d_endservent_r='$d_endservent_r'
20642 d_eofnblk='$d_eofnblk'
20643 d_eunice='$d_eunice'
20644 d_faststdio='$d_faststdio'
20645 d_fchdir='$d_fchdir'
20646 d_fchmod='$d_fchmod'
20647 d_fchown='$d_fchown'
20648 d_fcntl='$d_fcntl'
20649 d_fcntl_can_lock='$d_fcntl_can_lock'
20650 d_fd_macros='$d_fd_macros'
20651 d_fd_set='$d_fd_set'
20652 d_fds_bits='$d_fds_bits'
20653 d_fgetpos='$d_fgetpos'
20654 d_finite='$d_finite'
20655 d_finitel='$d_finitel'
20656 d_flexfnam='$d_flexfnam'
20657 d_flock='$d_flock'
20658 d_flockproto='$d_flockproto'
20659 d_fork='$d_fork'
20660 d_fp_class='$d_fp_class'
20661 d_fpathconf='$d_fpathconf'
20662 d_fpclass='$d_fpclass'
20663 d_fpclassify='$d_fpclassify'
20664 d_fpclassl='$d_fpclassl'
20665 d_fpos64_t='$d_fpos64_t'
20666 d_frexpl='$d_frexpl'
20667 d_fs_data_s='$d_fs_data_s'
20668 d_fseeko='$d_fseeko'
20669 d_fsetpos='$d_fsetpos'
20670 d_fstatfs='$d_fstatfs'
20671 d_fstatvfs='$d_fstatvfs'
20672 d_fsync='$d_fsync'
20673 d_ftello='$d_ftello'
20674 d_ftime='$d_ftime'
20675 d_getcwd='$d_getcwd'
20676 d_getespwnam='$d_getespwnam'
20677 d_getfsstat='$d_getfsstat'
20678 d_getgrent='$d_getgrent'
20679 d_getgrent_r='$d_getgrent_r'
20680 d_getgrgid_r='$d_getgrgid_r'
20681 d_getgrnam_r='$d_getgrnam_r'
20682 d_getgrps='$d_getgrps'
20683 d_gethbyaddr='$d_gethbyaddr'
20684 d_gethbyname='$d_gethbyname'
20685 d_gethent='$d_gethent'
20686 d_gethname='$d_gethname'
20687 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20688 d_gethostbyname_r='$d_gethostbyname_r'
20689 d_gethostent_r='$d_gethostent_r'
20690 d_gethostprotos='$d_gethostprotos'
20691 d_getitimer='$d_getitimer'
20692 d_getlogin='$d_getlogin'
20693 d_getlogin_r='$d_getlogin_r'
20694 d_getmnt='$d_getmnt'
20695 d_getmntent='$d_getmntent'
20696 d_getnbyaddr='$d_getnbyaddr'
20697 d_getnbyname='$d_getnbyname'
20698 d_getnent='$d_getnent'
20699 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20700 d_getnetbyname_r='$d_getnetbyname_r'
20701 d_getnetent_r='$d_getnetent_r'
20702 d_getnetprotos='$d_getnetprotos'
20703 d_getpagsz='$d_getpagsz'
20704 d_getpbyname='$d_getpbyname'
20705 d_getpbynumber='$d_getpbynumber'
20706 d_getpent='$d_getpent'
20707 d_getpgid='$d_getpgid'
20708 d_getpgrp2='$d_getpgrp2'
20709 d_getpgrp='$d_getpgrp'
20710 d_getppid='$d_getppid'
20711 d_getprior='$d_getprior'
20712 d_getprotobyname_r='$d_getprotobyname_r'
20713 d_getprotobynumber_r='$d_getprotobynumber_r'
20714 d_getprotoent_r='$d_getprotoent_r'
20715 d_getprotoprotos='$d_getprotoprotos'
20716 d_getprpwnam='$d_getprpwnam'
20717 d_getpwent='$d_getpwent'
20718 d_getpwent_r='$d_getpwent_r'
20719 d_getpwnam_r='$d_getpwnam_r'
20720 d_getpwuid_r='$d_getpwuid_r'
20721 d_getsbyname='$d_getsbyname'
20722 d_getsbyport='$d_getsbyport'
20723 d_getsent='$d_getsent'
20724 d_getservbyname_r='$d_getservbyname_r'
20725 d_getservbyport_r='$d_getservbyport_r'
20726 d_getservent_r='$d_getservent_r'
20727 d_getservprotos='$d_getservprotos'
20728 d_getspnam='$d_getspnam'
20729 d_getspnam_r='$d_getspnam_r'
20730 d_gettimeod='$d_gettimeod'
20731 d_gmtime_r='$d_gmtime_r'
20732 d_gnulibc='$d_gnulibc'
20733 d_grpasswd='$d_grpasswd'
20734 d_hasmntopt='$d_hasmntopt'
20735 d_htonl='$d_htonl'
20736 d_ilogbl='$d_ilogbl'
20737 d_index='$d_index'
20738 d_inetaton='$d_inetaton'
20739 d_int64_t='$d_int64_t'
20740 d_isascii='$d_isascii'
20741 d_isfinite='$d_isfinite'
20742 d_isinf='$d_isinf'
20743 d_isnan='$d_isnan'
20744 d_isnanl='$d_isnanl'
20745 d_killpg='$d_killpg'
20746 d_lchown='$d_lchown'
20747 d_ldbl_dig='$d_ldbl_dig'
20748 d_link='$d_link'
20749 d_localtime_r='$d_localtime_r'
20750 d_locconv='$d_locconv'
20751 d_lockf='$d_lockf'
20752 d_longdbl='$d_longdbl'
20753 d_longlong='$d_longlong'
20754 d_lseekproto='$d_lseekproto'
20755 d_lstat='$d_lstat'
20756 d_madvise='$d_madvise'
20757 d_mblen='$d_mblen'
20758 d_mbstowcs='$d_mbstowcs'
20759 d_mbtowc='$d_mbtowc'
20760 d_memchr='$d_memchr'
20761 d_memcmp='$d_memcmp'
20762 d_memcpy='$d_memcpy'
20763 d_memmove='$d_memmove'
20764 d_memset='$d_memset'
20765 d_mkdir='$d_mkdir'
20766 d_mkdtemp='$d_mkdtemp'
20767 d_mkfifo='$d_mkfifo'
20768 d_mkstemp='$d_mkstemp'
20769 d_mkstemps='$d_mkstemps'
20770 d_mktime='$d_mktime'
20771 d_mmap='$d_mmap'
20772 d_modfl='$d_modfl'
20773 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20774 d_modflproto='$d_modflproto'
20775 d_mprotect='$d_mprotect'
20776 d_msg='$d_msg'
20777 d_msg_ctrunc='$d_msg_ctrunc'
20778 d_msg_dontroute='$d_msg_dontroute'
20779 d_msg_oob='$d_msg_oob'
20780 d_msg_peek='$d_msg_peek'
20781 d_msg_proxy='$d_msg_proxy'
20782 d_msgctl='$d_msgctl'
20783 d_msgget='$d_msgget'
20784 d_msghdr_s='$d_msghdr_s'
20785 d_msgrcv='$d_msgrcv'
20786 d_msgsnd='$d_msgsnd'
20787 d_msync='$d_msync'
20788 d_munmap='$d_munmap'
20789 d_mymalloc='$d_mymalloc'
20790 d_nice='$d_nice'
20791 d_nl_langinfo='$d_nl_langinfo'
20792 d_nv_preserves_uv='$d_nv_preserves_uv'
20793 d_off64_t='$d_off64_t'
20794 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20795 d_oldpthreads='$d_oldpthreads'
20796 d_oldsock='$d_oldsock'
20797 d_open3='$d_open3'
20798 d_pathconf='$d_pathconf'
20799 d_pause='$d_pause'
20800 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20801 d_phostname='$d_phostname'
20802 d_pipe='$d_pipe'
20803 d_poll='$d_poll'
20804 d_portable='$d_portable'
20805 d_procselfexe='$d_procselfexe'
20806 d_pthread_atfork='$d_pthread_atfork'
20807 d_pthread_attr_setscope='$d_pthread_attr_setscope'
20808 d_pthread_yield='$d_pthread_yield'
20809 d_pwage='$d_pwage'
20810 d_pwchange='$d_pwchange'
20811 d_pwclass='$d_pwclass'
20812 d_pwcomment='$d_pwcomment'
20813 d_pwexpire='$d_pwexpire'
20814 d_pwgecos='$d_pwgecos'
20815 d_pwpasswd='$d_pwpasswd'
20816 d_pwquota='$d_pwquota'
20817 d_qgcvt='$d_qgcvt'
20818 d_quad='$d_quad'
20819 d_random_r='$d_random_r'
20820 d_readdir64_r='$d_readdir64_r'
20821 d_readdir='$d_readdir'
20822 d_readdir_r='$d_readdir_r'
20823 d_readlink='$d_readlink'
20824 d_readv='$d_readv'
20825 d_recvmsg='$d_recvmsg'
20826 d_rename='$d_rename'
20827 d_rewinddir='$d_rewinddir'
20828 d_rmdir='$d_rmdir'
20829 d_safebcpy='$d_safebcpy'
20830 d_safemcpy='$d_safemcpy'
20831 d_sanemcmp='$d_sanemcmp'
20832 d_sbrkproto='$d_sbrkproto'
20833 d_scalbnl='$d_scalbnl'
20834 d_sched_yield='$d_sched_yield'
20835 d_scm_rights='$d_scm_rights'
20836 d_seekdir='$d_seekdir'
20837 d_select='$d_select'
20838 d_sem='$d_sem'
20839 d_semctl='$d_semctl'
20840 d_semctl_semid_ds='$d_semctl_semid_ds'
20841 d_semctl_semun='$d_semctl_semun'
20842 d_semget='$d_semget'
20843 d_semop='$d_semop'
20844 d_sendmsg='$d_sendmsg'
20845 d_setegid='$d_setegid'
20846 d_seteuid='$d_seteuid'
20847 d_setgrent='$d_setgrent'
20848 d_setgrent_r='$d_setgrent_r'
20849 d_setgrps='$d_setgrps'
20850 d_sethent='$d_sethent'
20851 d_sethostent_r='$d_sethostent_r'
20852 d_setitimer='$d_setitimer'
20853 d_setlinebuf='$d_setlinebuf'
20854 d_setlocale='$d_setlocale'
20855 d_setlocale_r='$d_setlocale_r'
20856 d_setnent='$d_setnent'
20857 d_setnetent_r='$d_setnetent_r'
20858 d_setpent='$d_setpent'
20859 d_setpgid='$d_setpgid'
20860 d_setpgrp2='$d_setpgrp2'
20861 d_setpgrp='$d_setpgrp'
20862 d_setprior='$d_setprior'
20863 d_setproctitle='$d_setproctitle'
20864 d_setprotoent_r='$d_setprotoent_r'
20865 d_setpwent='$d_setpwent'
20866 d_setpwent_r='$d_setpwent_r'
20867 d_setregid='$d_setregid'
20868 d_setresgid='$d_setresgid'
20869 d_setresuid='$d_setresuid'
20870 d_setreuid='$d_setreuid'
20871 d_setrgid='$d_setrgid'
20872 d_setruid='$d_setruid'
20873 d_setsent='$d_setsent'
20874 d_setservent_r='$d_setservent_r'
20875 d_setsid='$d_setsid'
20876 d_setvbuf='$d_setvbuf'
20877 d_sfio='$d_sfio'
20878 d_shm='$d_shm'
20879 d_shmat='$d_shmat'
20880 d_shmatprototype='$d_shmatprototype'
20881 d_shmctl='$d_shmctl'
20882 d_shmdt='$d_shmdt'
20883 d_shmget='$d_shmget'
20884 d_sigaction='$d_sigaction'
20885 d_sigprocmask='$d_sigprocmask'
20886 d_sigsetjmp='$d_sigsetjmp'
20887 d_sitecustomize='$d_sitecustomize'
20888 d_sockatmark='$d_sockatmark'
20889 d_sockatmarkproto='$d_sockatmarkproto'
20890 d_socket='$d_socket'
20891 d_socklen_t='$d_socklen_t'
20892 d_sockpair='$d_sockpair'
20893 d_socks5_init='$d_socks5_init'
20894 d_sqrtl='$d_sqrtl'
20895 d_srand48_r='$d_srand48_r'
20896 d_srandom_r='$d_srandom_r'
20897 d_sresgproto='$d_sresgproto'
20898 d_sresuproto='$d_sresuproto'
20899 d_statblks='$d_statblks'
20900 d_statfs_f_flags='$d_statfs_f_flags'
20901 d_statfs_s='$d_statfs_s'
20902 d_statvfs='$d_statvfs'
20903 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20904 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20905 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20906 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20907 d_stdio_stream_array='$d_stdio_stream_array'
20908 d_stdiobase='$d_stdiobase'
20909 d_stdstdio='$d_stdstdio'
20910 d_strchr='$d_strchr'
20911 d_strcoll='$d_strcoll'
20912 d_strctcpy='$d_strctcpy'
20913 d_strerrm='$d_strerrm'
20914 d_strerror='$d_strerror'
20915 d_strerror_r='$d_strerror_r'
20916 d_strftime='$d_strftime'
20917 d_strlcat='$d_strlcat'
20918 d_strlcpy='$d_strlcpy'
20919 d_strtod='$d_strtod'
20920 d_strtol='$d_strtol'
20921 d_strtold='$d_strtold'
20922 d_strtoll='$d_strtoll'
20923 d_strtoq='$d_strtoq'
20924 d_strtoul='$d_strtoul'
20925 d_strtoull='$d_strtoull'
20926 d_strtouq='$d_strtouq'
20927 d_strxfrm='$d_strxfrm'
20928 d_suidsafe='$d_suidsafe'
20929 d_symlink='$d_symlink'
20930 d_syscall='$d_syscall'
20931 d_syscallproto='$d_syscallproto'
20932 d_sysconf='$d_sysconf'
20933 d_sysernlst='$d_sysernlst'
20934 d_syserrlst='$d_syserrlst'
20935 d_system='$d_system'
20936 d_tcgetpgrp='$d_tcgetpgrp'
20937 d_tcsetpgrp='$d_tcsetpgrp'
20938 d_telldir='$d_telldir'
20939 d_telldirproto='$d_telldirproto'
20940 d_time='$d_time'
20941 d_times='$d_times'
20942 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20943 d_tm_tm_zone='$d_tm_tm_zone'
20944 d_tmpnam_r='$d_tmpnam_r'
20945 d_truncate='$d_truncate'
20946 d_ttyname_r='$d_ttyname_r'
20947 d_tzname='$d_tzname'
20948 d_u32align='$d_u32align'
20949 d_ualarm='$d_ualarm'
20950 d_umask='$d_umask'
20951 d_uname='$d_uname'
20952 d_union_semun='$d_union_semun'
20953 d_unordered='$d_unordered'
20954 d_usleep='$d_usleep'
20955 d_usleepproto='$d_usleepproto'
20956 d_ustat='$d_ustat'
20957 d_vendorarch='$d_vendorarch'
20958 d_vendorbin='$d_vendorbin'
20959 d_vendorlib='$d_vendorlib'
20960 d_vendorscript='$d_vendorscript'
20961 d_vfork='$d_vfork'
20962 d_void_closedir='$d_void_closedir'
20963 d_voidsig='$d_voidsig'
20964 d_voidtty='$d_voidtty'
20965 d_volatile='$d_volatile'
20966 d_vprintf='$d_vprintf'
20967 d_wait4='$d_wait4'
20968 d_waitpid='$d_waitpid'
20969 d_wcstombs='$d_wcstombs'
20970 d_wctomb='$d_wctomb'
20971 d_writev='$d_writev'
20972 d_xenix='$d_xenix'
20973 date='$date'
20974 db_hashtype='$db_hashtype'
20975 db_prefixtype='$db_prefixtype'
20976 db_version_major='$db_version_major'
20977 db_version_minor='$db_version_minor'
20978 db_version_patch='$db_version_patch'
20979 defvoidused='$defvoidused'
20980 direntrytype='$direntrytype'
20981 dlext='$dlext'
20982 dlsrc='$dlsrc'
20983 doublesize='$doublesize'
20984 drand01='$drand01'
20985 drand48_r_proto='$drand48_r_proto'
20986 dynamic_ext='$dynamic_ext'
20987 eagain='$eagain'
20988 ebcdic='$ebcdic'
20989 echo='$echo'
20990 egrep='$egrep'
20991 emacs='$emacs'
20992 endgrent_r_proto='$endgrent_r_proto'
20993 endhostent_r_proto='$endhostent_r_proto'
20994 endnetent_r_proto='$endnetent_r_proto'
20995 endprotoent_r_proto='$endprotoent_r_proto'
20996 endpwent_r_proto='$endpwent_r_proto'
20997 endservent_r_proto='$endservent_r_proto'
20998 eunicefix='$eunicefix'
20999 exe_ext='$exe_ext'
21000 expr='$expr'
21001 extensions='$extensions'
21002 extras='$extras'
21003 fflushNULL='$fflushNULL'
21004 fflushall='$fflushall'
21005 find='$find'
21006 firstmakefile='$firstmakefile'
21007 flex='$flex'
21008 fpossize='$fpossize'
21009 fpostype='$fpostype'
21010 freetype='$freetype'
21011 from='$from'
21012 full_ar='$full_ar'
21013 full_csh='$full_csh'
21014 full_sed='$full_sed'
21015 gccansipedantic='$gccansipedantic'
21016 gccosandvers='$gccosandvers'
21017 gccversion='$gccversion'
21018 getgrent_r_proto='$getgrent_r_proto'
21019 getgrgid_r_proto='$getgrgid_r_proto'
21020 getgrnam_r_proto='$getgrnam_r_proto'
21021 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
21022 gethostbyname_r_proto='$gethostbyname_r_proto'
21023 gethostent_r_proto='$gethostent_r_proto'
21024 getlogin_r_proto='$getlogin_r_proto'
21025 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
21026 getnetbyname_r_proto='$getnetbyname_r_proto'
21027 getnetent_r_proto='$getnetent_r_proto'
21028 getprotobyname_r_proto='$getprotobyname_r_proto'
21029 getprotobynumber_r_proto='$getprotobynumber_r_proto'
21030 getprotoent_r_proto='$getprotoent_r_proto'
21031 getpwent_r_proto='$getpwent_r_proto'
21032 getpwnam_r_proto='$getpwnam_r_proto'
21033 getpwuid_r_proto='$getpwuid_r_proto'
21034 getservbyname_r_proto='$getservbyname_r_proto'
21035 getservbyport_r_proto='$getservbyport_r_proto'
21036 getservent_r_proto='$getservent_r_proto'
21037 getspnam_r_proto='$getspnam_r_proto'
21038 gidformat='$gidformat'
21039 gidsign='$gidsign'
21040 gidsize='$gidsize'
21041 gidtype='$gidtype'
21042 glibpth='$glibpth'
21043 gmake='$gmake'
21044 gmtime_r_proto='$gmtime_r_proto'
21045 gnulibc_version='$gnulibc_version'
21046 grep='$grep'
21047 groupcat='$groupcat'
21048 groupstype='$groupstype'
21049 gzip='$gzip'
21050 h_fcntl='$h_fcntl'
21051 h_sysfile='$h_sysfile'
21052 hint='$hint'
21053 hostcat='$hostcat'
21054 html1dir='$html1dir'
21055 html1direxp='$html1direxp'
21056 html3dir='$html3dir'
21057 html3direxp='$html3direxp'
21058 i16size='$i16size'
21059 i16type='$i16type'
21060 i32size='$i32size'
21061 i32type='$i32type'
21062 i64size='$i64size'
21063 i64type='$i64type'
21064 i8size='$i8size'
21065 i8type='$i8type'
21066 i_arpainet='$i_arpainet'
21067 i_bsdioctl='$i_bsdioctl'
21068 i_crypt='$i_crypt'
21069 i_db='$i_db'
21070 i_dbm='$i_dbm'
21071 i_dirent='$i_dirent'
21072 i_dld='$i_dld'
21073 i_dlfcn='$i_dlfcn'
21074 i_fcntl='$i_fcntl'
21075 i_float='$i_float'
21076 i_fp='$i_fp'
21077 i_fp_class='$i_fp_class'
21078 i_gdbm='$i_gdbm'
21079 i_grp='$i_grp'
21080 i_ieeefp='$i_ieeefp'
21081 i_inttypes='$i_inttypes'
21082 i_langinfo='$i_langinfo'
21083 i_libutil='$i_libutil'
21084 i_limits='$i_limits'
21085 i_locale='$i_locale'
21086 i_machcthr='$i_machcthr'
21087 i_malloc='$i_malloc'
21088 i_math='$i_math'
21089 i_memory='$i_memory'
21090 i_mntent='$i_mntent'
21091 i_ndbm='$i_ndbm'
21092 i_netdb='$i_netdb'
21093 i_neterrno='$i_neterrno'
21094 i_netinettcp='$i_netinettcp'
21095 i_niin='$i_niin'
21096 i_poll='$i_poll'
21097 i_prot='$i_prot'
21098 i_pthread='$i_pthread'
21099 i_pwd='$i_pwd'
21100 i_rpcsvcdbm='$i_rpcsvcdbm'
21101 i_sfio='$i_sfio'
21102 i_sgtty='$i_sgtty'
21103 i_shadow='$i_shadow'
21104 i_socks='$i_socks'
21105 i_stdarg='$i_stdarg'
21106 i_stddef='$i_stddef'
21107 i_stdlib='$i_stdlib'
21108 i_string='$i_string'
21109 i_sunmath='$i_sunmath'
21110 i_sysaccess='$i_sysaccess'
21111 i_sysdir='$i_sysdir'
21112 i_sysfile='$i_sysfile'
21113 i_sysfilio='$i_sysfilio'
21114 i_sysin='$i_sysin'
21115 i_sysioctl='$i_sysioctl'
21116 i_syslog='$i_syslog'
21117 i_sysmman='$i_sysmman'
21118 i_sysmode='$i_sysmode'
21119 i_sysmount='$i_sysmount'
21120 i_sysndir='$i_sysndir'
21121 i_sysparam='$i_sysparam'
21122 i_sysresrc='$i_sysresrc'
21123 i_syssecrt='$i_syssecrt'
21124 i_sysselct='$i_sysselct'
21125 i_syssockio='$i_syssockio'
21126 i_sysstat='$i_sysstat'
21127 i_sysstatfs='$i_sysstatfs'
21128 i_sysstatvfs='$i_sysstatvfs'
21129 i_systime='$i_systime'
21130 i_systimek='$i_systimek'
21131 i_systimes='$i_systimes'
21132 i_systypes='$i_systypes'
21133 i_sysuio='$i_sysuio'
21134 i_sysun='$i_sysun'
21135 i_sysutsname='$i_sysutsname'
21136 i_sysvfs='$i_sysvfs'
21137 i_syswait='$i_syswait'
21138 i_termio='$i_termio'
21139 i_termios='$i_termios'
21140 i_time='$i_time'
21141 i_unistd='$i_unistd'
21142 i_ustat='$i_ustat'
21143 i_utime='$i_utime'
21144 i_values='$i_values'
21145 i_varargs='$i_varargs'
21146 i_varhdr='$i_varhdr'
21147 i_vfork='$i_vfork'
21148 ignore_versioned_solibs='$ignore_versioned_solibs'
21149 inc_version_list='$inc_version_list'
21150 inc_version_list_init='$inc_version_list_init'
21151 incpath='$incpath'
21152 inews='$inews'
21153 installarchlib='$installarchlib'
21154 installbin='$installbin'
21155 installhtml1dir='$installhtml1dir'
21156 installhtml3dir='$installhtml3dir'
21157 installman1dir='$installman1dir'
21158 installman3dir='$installman3dir'
21159 installprefix='$installprefix'
21160 installprefixexp='$installprefixexp'
21161 installprivlib='$installprivlib'
21162 installscript='$installscript'
21163 installsitearch='$installsitearch'
21164 installsitebin='$installsitebin'
21165 installsitehtml1dir='$installsitehtml1dir'
21166 installsitehtml3dir='$installsitehtml3dir'
21167 installsitelib='$installsitelib'
21168 installsiteman1dir='$installsiteman1dir'
21169 installsiteman3dir='$installsiteman3dir'
21170 installsitescript='$installsitescript'
21171 installstyle='$installstyle'
21172 installusrbinperl='$installusrbinperl'
21173 installvendorarch='$installvendorarch'
21174 installvendorbin='$installvendorbin'
21175 installvendorhtml1dir='$installvendorhtml1dir'
21176 installvendorhtml3dir='$installvendorhtml3dir'
21177 installvendorlib='$installvendorlib'
21178 installvendorman1dir='$installvendorman1dir'
21179 installvendorman3dir='$installvendorman3dir'
21180 installvendorscript='$installvendorscript'
21181 intsize='$intsize'
21182 issymlink='$issymlink'
21183 ivdformat='$ivdformat'
21184 ivsize='$ivsize'
21185 ivtype='$ivtype'
21186 known_extensions='$known_extensions'
21187 ksh='$ksh'
21188 ld='$ld'
21189 lddlflags='$lddlflags'
21190 ldflags='$ldflags'
21191 ldflags_uselargefiles='$ldflags_uselargefiles'
21192 ldlibpthname='$ldlibpthname'
21193 less='$less'
21194 lib_ext='$lib_ext'
21195 libc='$libc'
21196 libperl='$libperl'
21197 libpth='$libpth'
21198 libs='$libs'
21199 libsdirs='$libsdirs'
21200 libsfiles='$libsfiles'
21201 libsfound='$libsfound'
21202 libspath='$libspath'
21203 libswanted='$libswanted'
21204 libswanted_uselargefiles='$libswanted_uselargefiles'
21205 line='$line'
21206 lint='$lint'
21207 lkflags='$lkflags'
21208 ln='$ln'
21209 lns='$lns'
21210 localtime_r_proto='$localtime_r_proto'
21211 locincpth='$locincpth'
21212 loclibpth='$loclibpth'
21213 longdblsize='$longdblsize'
21214 longlongsize='$longlongsize'
21215 longsize='$longsize'
21216 lp='$lp'
21217 lpr='$lpr'
21218 ls='$ls'
21219 lseeksize='$lseeksize'
21220 lseektype='$lseektype'
21221 mail='$mail'
21222 mailx='$mailx'
21223 make='$make'
21224 make_set_make='$make_set_make'
21225 mallocobj='$mallocobj'
21226 mallocsrc='$mallocsrc'
21227 malloctype='$malloctype'
21228 man1dir='$man1dir'
21229 man1direxp='$man1direxp'
21230 man1ext='$man1ext'
21231 man3dir='$man3dir'
21232 man3direxp='$man3direxp'
21233 man3ext='$man3ext'
21234 mips_type='$mips_type'
21235 mistrustnm='$mistrustnm'
21236 mkdir='$mkdir'
21237 mmaptype='$mmaptype'
21238 modetype='$modetype'
21239 more='$more'
21240 multiarch='$multiarch'
21241 mv='$mv'
21242 myarchname='$myarchname'
21243 mydomain='$mydomain'
21244 myhostname='$myhostname'
21245 myuname='$myuname'
21246 n='$n'
21247 need_va_copy='$need_va_copy'
21248 netdb_hlen_type='$netdb_hlen_type'
21249 netdb_host_type='$netdb_host_type'
21250 netdb_name_type='$netdb_name_type'
21251 netdb_net_type='$netdb_net_type'
21252 nm='$nm'
21253 nm_opt='$nm_opt'
21254 nm_so_opt='$nm_so_opt'
21255 nonxs_ext='$nonxs_ext'
21256 nroff='$nroff'
21257 nvEUformat='$nvEUformat'
21258 nvFUformat='$nvFUformat'
21259 nvGUformat='$nvGUformat'
21260 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21261 nveformat='$nveformat'
21262 nvfformat='$nvfformat'
21263 nvgformat='$nvgformat'
21264 nvsize='$nvsize'
21265 nvtype='$nvtype'
21266 o_nonblock='$o_nonblock'
21267 obj_ext='$obj_ext'
21268 old_pthread_create_joinable='$old_pthread_create_joinable'
21269 optimize='$optimize'
21270 orderlib='$orderlib'
21271 osname='$osname'
21272 osvers='$osvers'
21273 otherlibdirs='$otherlibdirs'
21274 package='$package'
21275 pager='$pager'
21276 passcat='$passcat'
21277 patchlevel='$patchlevel'
21278 path_sep='$path_sep'
21279 perl5='$perl5'
21280 perl='$perl'
21281 perl_patchlevel='$perl_patchlevel'
21282 perladmin='$perladmin'
21283 perllibs='$perllibs'
21284 perlpath='$perlpath'
21285 pg='$pg'
21286 phostname='$phostname'
21287 pidtype='$pidtype'
21288 plibpth='$plibpth'
21289 pmake='$pmake'
21290 pr='$pr'
21291 prefix='$prefix'
21292 prefixexp='$prefixexp'
21293 privlib='$privlib'
21294 privlibexp='$privlibexp'
21295 procselfexe='$procselfexe'
21296 prototype='$prototype'
21297 ptrsize='$ptrsize'
21298 quadkind='$quadkind'
21299 quadtype='$quadtype'
21300 randbits='$randbits'
21301 randfunc='$randfunc'
21302 random_r_proto='$random_r_proto'
21303 randseedtype='$randseedtype'
21304 ranlib='$ranlib'
21305 rd_nodata='$rd_nodata'
21306 readdir64_r_proto='$readdir64_r_proto'
21307 readdir_r_proto='$readdir_r_proto'
21308 revision='$revision'
21309 rm='$rm'
21310 rmail='$rmail'
21311 run='$run'
21312 runnm='$runnm'
21313 sPRIEUldbl='$sPRIEUldbl'
21314 sPRIFUldbl='$sPRIFUldbl'
21315 sPRIGUldbl='$sPRIGUldbl'
21316 sPRIXU64='$sPRIXU64'
21317 sPRId64='$sPRId64'
21318 sPRIeldbl='$sPRIeldbl'
21319 sPRIfldbl='$sPRIfldbl'
21320 sPRIgldbl='$sPRIgldbl'
21321 sPRIi64='$sPRIi64'
21322 sPRIo64='$sPRIo64'
21323 sPRIu64='$sPRIu64'
21324 sPRIx64='$sPRIx64'
21325 sSCNfldbl='$sSCNfldbl'
21326 sched_yield='$sched_yield'
21327 scriptdir='$scriptdir'
21328 scriptdirexp='$scriptdirexp'
21329 sed='$sed'
21330 seedfunc='$seedfunc'
21331 selectminbits='$selectminbits'
21332 selecttype='$selecttype'
21333 sendmail='$sendmail'
21334 setgrent_r_proto='$setgrent_r_proto'
21335 sethostent_r_proto='$sethostent_r_proto'
21336 setlocale_r_proto='$setlocale_r_proto'
21337 setnetent_r_proto='$setnetent_r_proto'
21338 setprotoent_r_proto='$setprotoent_r_proto'
21339 setpwent_r_proto='$setpwent_r_proto'
21340 setservent_r_proto='$setservent_r_proto'
21341 sh='$sh'
21342 shar='$shar'
21343 sharpbang='$sharpbang'
21344 shmattype='$shmattype'
21345 shortsize='$shortsize'
21346 shrpenv='$shrpenv'
21347 shsharp='$shsharp'
21348 sig_count='$sig_count'
21349 sig_name='$sig_name'
21350 sig_name_init='$sig_name_init'
21351 sig_num='$sig_num'
21352 sig_num_init='$sig_num_init'
21353 sig_size='$sig_size'
21354 signal_t='$signal_t'
21355 sitearch='$sitearch'
21356 sitearchexp='$sitearchexp'
21357 sitebin='$sitebin'
21358 sitebinexp='$sitebinexp'
21359 sitehtml1dir='$sitehtml1dir'
21360 sitehtml1direxp='$sitehtml1direxp'
21361 sitehtml3dir='$sitehtml3dir'
21362 sitehtml3direxp='$sitehtml3direxp'
21363 sitelib='$sitelib'
21364 sitelib_stem='$sitelib_stem'
21365 sitelibexp='$sitelibexp'
21366 siteman1dir='$siteman1dir'
21367 siteman1direxp='$siteman1direxp'
21368 siteman3dir='$siteman3dir'
21369 siteman3direxp='$siteman3direxp'
21370 siteprefix='$siteprefix'
21371 siteprefixexp='$siteprefixexp'
21372 sitescript='$sitescript'
21373 sitescriptexp='$sitescriptexp'
21374 sizesize='$sizesize'
21375 sizetype='$sizetype'
21376 sleep='$sleep'
21377 smail='$smail'
21378 so='$so'
21379 sockethdr='$sockethdr'
21380 socketlib='$socketlib'
21381 socksizetype='$socksizetype'
21382 sort='$sort'
21383 spackage='$spackage'
21384 spitshell='$spitshell'
21385 srand48_r_proto='$srand48_r_proto'
21386 srandom_r_proto='$srandom_r_proto'
21387 src='$src'
21388 ssizetype='$ssizetype'
21389 startperl='$startperl'
21390 startsh='$startsh'
21391 static_ext='$static_ext'
21392 stdchar='$stdchar'
21393 stdio_base='$stdio_base'
21394 stdio_bufsiz='$stdio_bufsiz'
21395 stdio_cnt='$stdio_cnt'
21396 stdio_filbuf='$stdio_filbuf'
21397 stdio_ptr='$stdio_ptr'
21398 stdio_stream_array='$stdio_stream_array'
21399 strerror_r_proto='$strerror_r_proto'
21400 strings='$strings'
21401 submit='$submit'
21402 subversion='$subversion'
21403 sysman='$sysman'
21404 tail='$tail'
21405 tar='$tar'
21406 targetarch='$targetarch'
21407 tbl='$tbl'
21408 tee='$tee'
21409 test='$test'
21410 timeincl='$timeincl'
21411 timetype='$timetype'
21412 tmpnam_r_proto='$tmpnam_r_proto'
21413 to='$to'
21414 touch='$touch'
21415 tr='$tr'
21416 trnl='$trnl'
21417 troff='$troff'
21418 ttyname_r_proto='$ttyname_r_proto'
21419 u16size='$u16size'
21420 u16type='$u16type'
21421 u32size='$u32size'
21422 u32type='$u32type'
21423 u64size='$u64size'
21424 u64type='$u64type'
21425 u8size='$u8size'
21426 u8type='$u8type'
21427 uidformat='$uidformat'
21428 uidsign='$uidsign'
21429 uidsize='$uidsize'
21430 uidtype='$uidtype'
21431 uname='$uname'
21432 uniq='$uniq'
21433 uquadtype='$uquadtype'
21434 use5005threads='$use5005threads'
21435 use64bitall='$use64bitall'
21436 use64bitint='$use64bitint'
21437 usecrosscompile='$usecrosscompile'
21438 usedl='$usedl'
21439 usefaststdio='$usefaststdio'
21440 useithreads='$useithreads'
21441 uselargefiles='$uselargefiles'
21442 uselongdouble='$uselongdouble'
21443 usemallocwrap='$usemallocwrap'
21444 usemorebits='$usemorebits'
21445 usemultiplicity='$usemultiplicity'
21446 usemymalloc='$usemymalloc'
21447 usenm='$usenm'
21448 useopcode='$useopcode'
21449 useperlio='$useperlio'
21450 useposix='$useposix'
21451 usereentrant='$usereentrant'
21452 userelocatableinc='$userelocatableinc'
21453 usesfio='$usesfio'
21454 useshrplib='$useshrplib'
21455 usesitecustomize='$usesitecustomize'
21456 usesocks='$usesocks'
21457 usethreads='$usethreads'
21458 usevendorprefix='$usevendorprefix'
21459 usevfork='$usevfork'
21460 usrinc='$usrinc'
21461 uuname='$uuname'
21462 uvXUformat='$uvXUformat'
21463 uvoformat='$uvoformat'
21464 uvsize='$uvsize'
21465 uvtype='$uvtype'
21466 uvuformat='$uvuformat'
21467 uvxformat='$uvxformat'
21468 vendorarch='$vendorarch'
21469 vendorarchexp='$vendorarchexp'
21470 vendorbin='$vendorbin'
21471 vendorbinexp='$vendorbinexp'
21472 vendorhtml1dir='$vendorhtml1dir'
21473 vendorhtml1direxp='$vendorhtml1direxp'
21474 vendorhtml3dir='$vendorhtml3dir'
21475 vendorhtml3direxp='$vendorhtml3direxp'
21476 vendorlib='$vendorlib'
21477 vendorlib_stem='$vendorlib_stem'
21478 vendorlibexp='$vendorlibexp'
21479 vendorman1dir='$vendorman1dir'
21480 vendorman1direxp='$vendorman1direxp'
21481 vendorman3dir='$vendorman3dir'
21482 vendorman3direxp='$vendorman3direxp'
21483 vendorprefix='$vendorprefix'
21484 vendorprefixexp='$vendorprefixexp'
21485 vendorscript='$vendorscript'
21486 vendorscriptexp='$vendorscriptexp'
21487 version='$version'
21488 version_patchlevel_string='$version_patchlevel_string'
21489 versiononly='$versiononly'
21490 vi='$vi'
21491 voidflags='$voidflags'
21492 xlibpth='$xlibpth'
21493 yacc='$yacc'
21494 yaccflags='$yaccflags'
21495 zcat='$zcat'
21496 zip='$zip'
21497 EOT
21498
21499 : Add in command line options if available
21500 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21501
21502 : add special variables
21503 $test -f $src/patchlevel.h && \
21504 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21505 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21506 echo "PERL_CONFIG_SH=true" >>config.sh
21507
21508 : propagate old symbols
21509 if $test -f UU/config.sh; then
21510         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21511         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21512         $sort | $uniq -u >UU/oldsyms
21513         set X `cat UU/oldsyms`
21514         shift
21515         case $# in
21516         0) ;;
21517         *)
21518                 cat <<EOM
21519 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21520 EOM
21521                 echo "# Variables propagated from previous config.sh file." >>config.sh
21522                 for sym in `cat UU/oldsyms`; do
21523                         echo "    Propagating $hint variable "'$'"$sym..."
21524                         eval 'tmp="$'"${sym}"'"'
21525                         echo "$tmp" | \
21526                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21527                 done
21528                 ;;
21529         esac
21530 fi
21531
21532 : Finish up by extracting the .SH files
21533 case "$alldone" in
21534 exit)
21535         $rm -rf UU
21536         echo "Extraction done."
21537         exit 0
21538         ;;
21539 cont)
21540         ;;
21541 '')
21542         dflt=''
21543         nostick=true
21544         $cat <<EOM
21545
21546 If you'd like to make any changes to the config.sh file before I begin
21547 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21548
21549 EOM
21550         rp="Press return or use a shell escape to edit config.sh:"
21551         . UU/myread
21552         nostick=''
21553         case "$ans" in
21554         '') ;;
21555         *) : in case they cannot read
21556                 sh 1>&4 -c "$ans";;
21557         esac
21558         ;;
21559 esac
21560
21561 : if this fails, just run all the .SH files by hand
21562 . ./config.sh
21563
21564 echo " "
21565 exec 1>&4
21566 pwd=`pwd`
21567 . ./UU/extract
21568 cd "$pwd"
21569
21570 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21571         dflt=y
21572         case "$silent" in
21573         true) ;;
21574         *)
21575                 $cat <<EOM
21576
21577 Now you need to generate make dependencies by running "$make depend".
21578 You might prefer to run it in background: "$make depend > makedepend.out &"
21579 It can take a while, so you might not want to run it right now.
21580
21581 EOM
21582                 ;;
21583         esac
21584         rp="Run $make depend now?"
21585         . UU/myread
21586         case "$ans" in
21587         y*)
21588                 $make depend && echo "Now you must run '$make'."
21589                 ;;
21590         *)
21591                 echo "You must run '$make depend' then '$make'."
21592                 ;;
21593         esac
21594 elif test -f [Mm]akefile; then
21595         echo " "
21596         echo "Now you must run a $make."
21597 else
21598         echo "Configure done."
21599 fi
21600
21601 if $test -f Policy.sh; then
21602     $cat <<EOM
21603
21604 If you compile $package on a different machine or from a different object
21605 directory, copy the Policy.sh file from this object directory to the
21606 new one before you run Configure -- this will help you with most of
21607 the policy defaults.
21608
21609 EOM
21610 fi
21611 if $test -f config.msg; then
21612     echo "Hmm.  I also noted the following information while running:"
21613     echo " "
21614     $cat config.msg >&4
21615     $rm -f config.msg
21616 fi
21617 $rm -f kit*isdone ark*isdone
21618 $rm -rf UU
21619
21620 : End of Configure
21621