Drop d_sitecustomize again. (usesitecustomize is enough)
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Fri Apr  8 16:30:10 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 usesitecustomize=''
667 d_sockatmark=''
668 d_sockatmarkproto=''
669 d_msg_ctrunc=''
670 d_msg_dontroute=''
671 d_msg_oob=''
672 d_msg_peek=''
673 d_msg_proxy=''
674 d_oldsock=''
675 d_scm_rights=''
676 d_socket=''
677 d_sockpair=''
678 sockethdr=''
679 socketlib=''
680 d_socklen_t=''
681 d_socks5_init=''
682 d_sqrtl=''
683 d_srand48_r=''
684 srand48_r_proto=''
685 d_srandom_r=''
686 srandom_r_proto=''
687 d_sresgproto=''
688 d_sresuproto=''
689 d_statblks=''
690 d_statfs_f_flags=''
691 d_statfs_s=''
692 d_fstatvfs=''
693 d_statvfs=''
694 d_stdio_cnt_lval=''
695 d_stdio_ptr_lval=''
696 d_stdio_ptr_lval_nochange_cnt=''
697 d_stdio_ptr_lval_sets_cnt=''
698 d_stdiobase=''
699 d_stdstdio=''
700 stdio_base=''
701 stdio_bufsiz=''
702 stdio_cnt=''
703 stdio_filbuf=''
704 stdio_ptr=''
705 d_index=''
706 d_strchr=''
707 d_strcoll=''
708 d_strctcpy=''
709 d_strerrm=''
710 d_strerror=''
711 d_sysernlst=''
712 d_syserrlst=''
713 d_strerror_r=''
714 strerror_r_proto=''
715 d_strftime=''
716 d_strlcat=''
717 d_strlcpy=''
718 d_strtod=''
719 d_strtol=''
720 d_strtold=''
721 d_strtoll=''
722 d_strtoq=''
723 d_strtoul=''
724 d_strtoull=''
725 d_strtouq=''
726 d_strxfrm=''
727 d_symlink=''
728 d_syscall=''
729 d_syscallproto=''
730 d_sysconf=''
731 d_system=''
732 d_tcgetpgrp=''
733 d_tcsetpgrp=''
734 d_telldirproto=''
735 d_time=''
736 timetype=''
737 clocktype=''
738 d_times=''
739 d_tmpnam_r=''
740 tmpnam_r_proto=''
741 d_truncate=''
742 d_ttyname_r=''
743 ttyname_r_proto=''
744 d_tzname=''
745 d_u32align=''
746 d_ualarm=''
747 d_umask=''
748 d_semctl_semid_ds=''
749 d_semctl_semun=''
750 d_union_semun=''
751 d_unordered=''
752 d_usleep=''
753 d_usleepproto=''
754 d_ustat=''
755 d_vfork=''
756 usevfork=''
757 d_voidsig=''
758 signal_t=''
759 d_volatile=''
760 d_charvspr=''
761 d_vprintf=''
762 d_wait4=''
763 d_waitpid=''
764 d_wcstombs=''
765 d_wctomb=''
766 d_writev=''
767 dlext=''
768 cccdlflags=''
769 ccdlflags=''
770 dlsrc=''
771 ld=''
772 lddlflags=''
773 usedl=''
774 doublesize=''
775 ebcdic=''
776 fflushNULL=''
777 fflushall=''
778 fpossize=''
779 fpostype=''
780 gccansipedantic=''
781 gccosandvers=''
782 gccversion=''
783 gidformat=''
784 gidsign=''
785 gidsize=''
786 gidtype=''
787 groupstype=''
788 h_fcntl=''
789 h_sysfile=''
790 html1dir=''
791 html1direxp=''
792 installhtml1dir=''
793 html3dir=''
794 html3direxp=''
795 installhtml3dir=''
796 i_arpainet=''
797 i_crypt=''
798 db_hashtype=''
799 db_prefixtype=''
800 db_version_major=''
801 db_version_minor=''
802 db_version_patch=''
803 i_db=''
804 i_dbm=''
805 i_rpcsvcdbm=''
806 d_dirnamlen=''
807 direntrytype=''
808 i_dirent=''
809 i_dld=''
810 i_dlfcn=''
811 i_fcntl=''
812 i_float=''
813 i_fp=''
814 i_fp_class=''
815 i_gdbm=''
816 d_grpasswd=''
817 i_grp=''
818 i_ieeefp=''
819 i_inttypes=''
820 i_langinfo=''
821 i_libutil=''
822 i_limits=''
823 i_locale=''
824 i_machcthr=''
825 i_malloc=''
826 i_math=''
827 i_memory=''
828 i_mntent=''
829 i_ndbm=''
830 i_netdb=''
831 i_neterrno=''
832 i_netinettcp=''
833 i_niin=''
834 i_sysin=''
835 i_poll=''
836 i_prot=''
837 i_pthread=''
838 d_pwage=''
839 d_pwchange=''
840 d_pwclass=''
841 d_pwcomment=''
842 d_pwexpire=''
843 d_pwgecos=''
844 d_pwpasswd=''
845 d_pwquota=''
846 i_pwd=''
847 i_sfio=''
848 i_shadow=''
849 i_socks=''
850 i_stddef=''
851 i_stdlib=''
852 i_string=''
853 strings=''
854 i_sunmath=''
855 i_sysaccess=''
856 i_sysdir=''
857 i_sysfile=''
858 d_voidtty=''
859 i_bsdioctl=''
860 i_sysfilio=''
861 i_sysioctl=''
862 i_syssockio=''
863 i_syslog=''
864 i_sysmman=''
865 i_sysmode=''
866 i_sysmount=''
867 i_sysndir=''
868 i_sysparam=''
869 i_sysresrc=''
870 i_syssecrt=''
871 i_sysselct=''
872 i_sysstat=''
873 i_sysstatfs=''
874 i_sysstatvfs=''
875 i_systimes=''
876 i_systypes=''
877 i_sysuio=''
878 i_sysun=''
879 i_sysutsname=''
880 i_sysvfs=''
881 i_syswait=''
882 i_sgtty=''
883 i_termio=''
884 i_termios=''
885 d_tm_tm_gmtoff=''
886 d_tm_tm_zone=''
887 i_systime=''
888 i_systimek=''
889 i_time=''
890 timeincl=''
891 i_unistd=''
892 i_ustat=''
893 i_utime=''
894 i_values=''
895 i_stdarg=''
896 i_varargs=''
897 i_varhdr=''
898 i_vfork=''
899 inc_version_list=''
900 inc_version_list_init=''
901 installprefix=''
902 installprefixexp=''
903 installstyle=''
904 installusrbinperl=''
905 intsize=''
906 longsize=''
907 shortsize=''
908 issymlink=''
909 libc=''
910 ldlibpthname=''
911 libperl=''
912 shrpenv=''
913 useshrplib=''
914 glibpth=''
915 libpth=''
916 loclibpth=''
917 plibpth=''
918 xlibpth=''
919 ignore_versioned_solibs=''
920 libs=''
921 libsdirs=''
922 libsfiles=''
923 libsfound=''
924 libspath=''
925 lns=''
926 d_PRIEUldbl=''
927 d_PRIFUldbl=''
928 d_PRIGUldbl=''
929 d_PRIeldbl=''
930 d_PRIfldbl=''
931 d_PRIgldbl=''
932 d_SCNfldbl=''
933 sPRIEUldbl=''
934 sPRIFUldbl=''
935 sPRIGUldbl=''
936 sPRIeldbl=''
937 sPRIfldbl=''
938 sPRIgldbl=''
939 sSCNfldbl=''
940 lseeksize=''
941 lseektype=''
942 make_set_make=''
943 d_mymalloc=''
944 freetype=''
945 mallocobj=''
946 mallocsrc=''
947 malloctype=''
948 usemallocwrap=''
949 usemymalloc=''
950 installman1dir=''
951 man1dir=''
952 man1direxp=''
953 man1ext=''
954 installman3dir=''
955 man3dir=''
956 man3direxp=''
957 man3ext=''
958 modetype=''
959 multiarch=''
960 mydomain=''
961 myhostname=''
962 phostname=''
963 c=''
964 n=''
965 d_eofnblk=''
966 eagain=''
967 o_nonblock=''
968 rd_nodata=''
969 need_va_copy=''
970 netdb_hlen_type=''
971 netdb_host_type=''
972 netdb_name_type=''
973 netdb_net_type=''
974 groupcat=''
975 hostcat=''
976 passcat=''
977 orderlib=''
978 ranlib=''
979 d_perl_otherlibdirs=''
980 otherlibdirs=''
981 package=''
982 spackage=''
983 pager=''
984 api_revision=''
985 api_subversion=''
986 api_version=''
987 api_versionstring=''
988 patchlevel=''
989 perl_patchlevel=''
990 revision=''
991 subversion=''
992 version=''
993 version_patchlevel_string=''
994 perl5=''
995 perladmin=''
996 perlpath=''
997 d_nv_preserves_uv=''
998 i16size=''
999 i16type=''
1000 i32size=''
1001 i32type=''
1002 i64size=''
1003 i64type=''
1004 i8size=''
1005 i8type=''
1006 ivsize=''
1007 ivtype=''
1008 nv_preserves_uv_bits=''
1009 nvsize=''
1010 nvtype=''
1011 u16size=''
1012 u16type=''
1013 u32size=''
1014 u32type=''
1015 u64size=''
1016 u64type=''
1017 u8size=''
1018 u8type=''
1019 uvsize=''
1020 uvtype=''
1021 ivdformat=''
1022 nvEUformat=''
1023 nvFUformat=''
1024 nvGUformat=''
1025 nveformat=''
1026 nvfformat=''
1027 nvgformat=''
1028 uvXUformat=''
1029 uvoformat=''
1030 uvuformat=''
1031 uvxformat=''
1032 pidtype=''
1033 prefix=''
1034 prefixexp=''
1035 installprivlib=''
1036 privlib=''
1037 privlibexp=''
1038 prototype=''
1039 ptrsize=''
1040 d_PRIXU64=''
1041 d_PRId64=''
1042 d_PRIi64=''
1043 d_PRIo64=''
1044 d_PRIu64=''
1045 d_PRIx64=''
1046 sPRIXU64=''
1047 sPRId64=''
1048 sPRIi64=''
1049 sPRIo64=''
1050 sPRIu64=''
1051 sPRIx64=''
1052 d_quad=''
1053 quadkind=''
1054 quadtype=''
1055 uquadtype=''
1056 drand01=''
1057 randbits=''
1058 randfunc=''
1059 randseedtype=''
1060 seedfunc=''
1061 installscript=''
1062 scriptdir=''
1063 scriptdirexp=''
1064 selectminbits=''
1065 selecttype=''
1066 sh=''
1067 sig_count=''
1068 sig_name=''
1069 sig_name_init=''
1070 sig_num=''
1071 sig_num_init=''
1072 sig_size=''
1073 installsitearch=''
1074 sitearch=''
1075 sitearchexp=''
1076 installsitebin=''
1077 sitebin=''
1078 sitebinexp=''
1079 installsitehtml1dir=''
1080 sitehtml1dir=''
1081 sitehtml1direxp=''
1082 installsitehtml3dir=''
1083 sitehtml3dir=''
1084 sitehtml3direxp=''
1085 installsitelib=''
1086 sitelib=''
1087 sitelib_stem=''
1088 sitelibexp=''
1089 installsiteman1dir=''
1090 siteman1dir=''
1091 siteman1direxp=''
1092 installsiteman3dir=''
1093 siteman3dir=''
1094 siteman3direxp=''
1095 siteprefix=''
1096 siteprefixexp=''
1097 installsitescript=''
1098 sitescript=''
1099 sitescriptexp=''
1100 sizesize=''
1101 sizetype=''
1102 so=''
1103 socksizetype=''
1104 sharpbang=''
1105 shsharp=''
1106 spitshell=''
1107 src=''
1108 ssizetype=''
1109 startperl=''
1110 startsh=''
1111 stdchar=''
1112 d_stdio_stream_array=''
1113 stdio_stream_array=''
1114 sysman=''
1115 trnl=''
1116 uidformat=''
1117 uidsign=''
1118 uidsize=''
1119 uidtype=''
1120 archname64=''
1121 use64bitall=''
1122 use64bitint=''
1123 usefaststdio=''
1124 ccflags_uselargefiles=''
1125 ldflags_uselargefiles=''
1126 libswanted_uselargefiles=''
1127 uselargefiles=''
1128 uselongdouble=''
1129 usemorebits=''
1130 usemultiplicity=''
1131 nm_opt=''
1132 nm_so_opt=''
1133 runnm=''
1134 usenm=''
1135 useperlio=''
1136 userelocatableinc=''
1137 usesocks=''
1138 d_oldpthreads=''
1139 use5005threads=''
1140 useithreads=''
1141 usereentrant=''
1142 usethreads=''
1143 incpath=''
1144 mips_type=''
1145 usrinc=''
1146 d_vendorarch=''
1147 installvendorarch=''
1148 vendorarch=''
1149 vendorarchexp=''
1150 d_vendorbin=''
1151 installvendorbin=''
1152 vendorbin=''
1153 vendorbinexp=''
1154 installvendorhtml1dir=''
1155 vendorhtml1dir=''
1156 vendorhtml1direxp=''
1157 installvendorhtml3dir=''
1158 vendorhtml3dir=''
1159 vendorhtml3direxp=''
1160 d_vendorlib=''
1161 installvendorlib=''
1162 vendorlib=''
1163 vendorlib_stem=''
1164 vendorlibexp=''
1165 installvendorman1dir=''
1166 vendorman1dir=''
1167 vendorman1direxp=''
1168 installvendorman3dir=''
1169 vendorman3dir=''
1170 vendorman3direxp=''
1171 usevendorprefix=''
1172 vendorprefix=''
1173 vendorprefixexp=''
1174 d_vendorscript=''
1175 installvendorscript=''
1176 vendorscript=''
1177 vendorscriptexp=''
1178 versiononly=''
1179 defvoidused=''
1180 voidflags=''
1181 yacc=''
1182 yaccflags=''
1183 CONFIG=''
1184
1185 define='define'
1186 undef='undef'
1187 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1188 rmlist=''
1189
1190 : We must find out about Eunice early
1191 eunicefix=':'
1192 if test -f /etc/unixtovms; then
1193         eunicefix=/etc/unixtovms
1194 fi
1195 if test -f /etc/unixtovms.exe; then
1196         eunicefix=/etc/unixtovms.exe
1197 fi
1198
1199 : Set executable suffix now -- needed before hints available
1200 if test -f "/libs/version.library"; then
1201 : Amiga OS
1202     _exe=""
1203 elif test -f "/system/gnu_library/bin/ar.pm"; then
1204 : Stratus VOS
1205     _exe=".pm"
1206 elif test -n "$DJGPP"; then
1207 : DOS DJGPP
1208     _exe=".exe"
1209 elif test -d c:/. -o -n "$is_os2" ; then
1210 : OS/2 or cygwin
1211     _exe=".exe"
1212 fi
1213
1214 i_whoami=''
1215 ccname=''
1216 ccversion=''
1217 perllibs=''
1218 : set useposix=false in your hint file to disable the POSIX extension.
1219 useposix=true
1220 : set useopcode=false in your hint file to disable the Opcode extension.
1221 useopcode=true
1222 : Trailing extension.  Override this in a hint file, if needed.
1223 : Extra object files, if any, needed on this platform.
1224 archobjs=''
1225 archname=''
1226 : Possible local include directories to search.
1227 : Set locincpth to "" in a hint file to defeat local include searches.
1228 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1229 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1230 :
1231 : no include file wanted by default
1232 inclwanted=''
1233
1234 groupstype=''
1235 libnames=''
1236 : change the next line if compiling for Xenix/286 on Xenix/386
1237 xlibpth='/usr/lib/386 /lib/386'
1238 : Possible local library directories to search.
1239 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1240 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1241
1242 : general looking path for locating libraries
1243 glibpth="/lib /usr/lib $xlibpth"
1244 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1245 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1246 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1247
1248 : Private path used by Configure to find libraries.  Its value
1249 : is prepended to libpth. This variable takes care of special
1250 : machines, like the mips.  Usually, it should be empty.
1251 plibpth=''
1252
1253 : default library list
1254 libswanted=''
1255 : some systems want to use only the non-versioned libso:s
1256 ignore_versioned_solibs=''
1257 siteman1dir=''
1258 siteman3dir=''
1259 sitescript=''
1260 archname64=''
1261 ccflags_uselargefiles=''
1262 ldflags_uselargefiles=''
1263 libswanted_uselargefiles=''
1264 : set usemultiplicity on the Configure command line to enable multiplicity.
1265 : set usesocks on the Configure command line to enable socks.
1266 : set usethreads on the Configure command line to enable threads.
1267 usereentrant='undef'
1268 : full support for void wanted by default
1269 defvoidused=15
1270
1271 : List of libraries we want.
1272 : If anyone needs extra -lxxx, put those in a hint file.
1273 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1274 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1275 : We probably want to search /usr/shlib before most other libraries.
1276 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1277 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1278 glibpth="/usr/shlib $glibpth"
1279 : Do not use vfork unless overridden by a hint file.
1280 usevfork=false
1281
1282 : Find the basic shell for Bourne shell scripts
1283 case "$sh" in
1284 '')
1285         case "$SYSTYPE" in
1286         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1287         *) xxx='/bin/sh';;
1288         esac
1289         if test -f "$xxx"; then
1290                 sh="$xxx"
1291         else
1292                 : Build up a list and do a single loop so we can 'break' out.
1293                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1294                 for xxx in sh bash ksh pdksh ash; do
1295                         for p in $pth; do
1296                                 try="$try ${p}/${xxx}"
1297                         done
1298                 done
1299                 for xxx in $try; do
1300                         if test -f "$xxx"; then
1301                                 sh="$xxx";
1302                                 break
1303                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1304                                 sh="$xxx";
1305                                 break
1306                         elif test -f "$xxx.exe"; then
1307                                 sh="$xxx";
1308                                 break
1309                         fi
1310                 done
1311         fi
1312         ;;
1313 esac
1314
1315 case "$sh" in
1316 '')     cat >&2 <<EOM
1317 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1318
1319 Usually it's in /bin/sh.  How did you even get this far?
1320 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1321 we'll try to straighten this all out.
1322 EOM
1323         exit 1
1324         ;;
1325 esac
1326
1327 : see if sh knows # comments
1328 if `$sh -c '#' >/dev/null 2>&1`; then
1329         shsharp=true
1330         spitshell=cat
1331         xcat=/bin/cat
1332         test -f $xcat$_exe || xcat=/usr/bin/cat
1333         if test ! -f $xcat$_exe; then
1334                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1335                         if test -f $p/cat$_exe; then
1336                                 xcat=$p/cat
1337                                 break
1338                         fi
1339                 done
1340                 if test ! -f $xcat$_exe; then
1341                         echo "Can't find cat anywhere!"
1342                         exit 1
1343                 fi
1344         fi
1345         echo "#!$xcat" >sharp
1346         $eunicefix sharp
1347         chmod +x sharp
1348         ./sharp > today
1349         if test -s today; then
1350                 sharpbang='#!'
1351         else
1352                 echo "#! $xcat" > sharp
1353                 $eunicefix sharp
1354                 chmod +x sharp
1355                 ./sharp > today
1356                 if test -s today; then
1357                         sharpbang='#! '
1358                 else
1359                         sharpbang=': use '
1360                 fi
1361         fi
1362 else
1363         echo " "
1364         echo "Your $sh doesn't grok # comments--I will strip them later on."
1365         shsharp=false
1366         cd ..
1367         echo "exec grep -v '^[  ]*#'" >spitshell
1368         chmod +x spitshell
1369         $eunicefix spitshell
1370         spitshell=`pwd`/spitshell
1371         cd UU
1372         echo "I presume that if # doesn't work, #! won't work either!"
1373         sharpbang=': use '
1374 fi
1375 rm -f sharp today
1376
1377 : figure out how to guarantee sh startup
1378 case "$startsh" in
1379 '') startsh=${sharpbang}${sh} ;;
1380 *)
1381 esac
1382 cat >sharp <<EOSS
1383 $startsh
1384 set abc
1385 test "$?abc" != 1
1386 EOSS
1387
1388 chmod +x sharp
1389 $eunicefix sharp
1390 if ./sharp; then
1391         : echo "Yup, it does."
1392 else
1393         echo "Hmm... '$startsh' does not guarantee sh startup..."
1394         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1395 fi
1396 rm -f sharp
1397
1398
1399 : Save command line options in file UU/cmdline.opt for later use in
1400 : generating config.sh.
1401 cat > cmdline.opt <<EOSH
1402 # Configure command line arguments.
1403 config_arg0='$0'
1404 config_args='$*'
1405 config_argc=$#
1406 EOSH
1407 argn=1
1408 args_exp=''
1409 args_sep=''
1410 for arg in "$@"; do
1411         cat >>cmdline.opt <<EOSH
1412 config_arg$argn='$arg'
1413 EOSH
1414         # Extreme backslashitis: replace each ' by '"'"'
1415         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1416 $arg
1417 EOC
1418         arg_exp=`cat cmdl.opt`
1419         args_exp="$args_exp$args_sep'$arg_exp'"
1420         argn=`expr $argn + 1`
1421         args_sep=' '
1422 done
1423 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1424 # used by ./hints/os2.sh
1425 rm -f cmdl.opt
1426
1427 : produce awk script to parse command line options
1428 cat >options.awk <<'EOF'
1429 BEGIN {
1430         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1431
1432         len = length(optstr);
1433         for (i = 1; i <= len; i++) {
1434                 c = substr(optstr, i, 1);
1435                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1436                 if (a == ":") {
1437                         arg[c] = 1;
1438                         i++;
1439                 }
1440                 opt[c] = 1;
1441         }
1442 }
1443 {
1444         expect = 0;
1445         str = $0;
1446         if (substr(str, 1, 1) != "-") {
1447                 printf("'%s'\n", str);
1448                 next;
1449         }
1450         len = length($0);
1451         for (i = 2; i <= len; i++) {
1452                 c = substr(str, i, 1);
1453                 if (!opt[c]) {
1454                         printf("-%s\n", substr(str, i));
1455                         next;
1456                 }
1457                 printf("-%s\n", c);
1458                 if (arg[c]) {
1459                         if (i < len)
1460                                 printf("'%s'\n", substr(str, i + 1));
1461                         else
1462                                 expect = 1;
1463                         next;
1464                 }
1465         }
1466 }
1467 END {
1468         if (expect)
1469                 print "?";
1470 }
1471 EOF
1472
1473 : process the command line options
1474 set X `for arg in "$@"; do echo "X$arg"; done |
1475         sed -e s/X// | awk -f options.awk`
1476 eval "set $*"
1477 shift
1478 rm -f options.awk
1479
1480 : set up default values
1481 fastread=''
1482 reuseval=false
1483 config_sh=''
1484 alldone=''
1485 error=''
1486 silent=''
1487 extractsh=''
1488 override=''
1489 knowitall=''
1490 rm -f optdef.sh posthint.sh
1491 cat >optdef.sh <<EOS
1492 $startsh
1493 EOS
1494
1495
1496 : option parsing
1497 while test $# -gt 0; do
1498         case "$1" in
1499         -d) shift; fastread=yes;;
1500         -e) shift; alldone=cont;;
1501         -f)
1502                 shift
1503                 cd ..
1504                 if test -r "$1"; then
1505                         config_sh="$1"
1506                 else
1507                         echo "$me: cannot read config file $1." >&2
1508                         error=true
1509                 fi
1510                 cd UU
1511                 shift;;
1512         -h) shift; error=true;;
1513         -r) shift; reuseval=true;;
1514         -s) shift; silent=true; realsilent=true;;
1515         -E) shift; alldone=exit;;
1516         -K) shift; knowitall=true;;
1517         -O) shift; override=true;;
1518         -S) shift; silent=true; extractsh=true;;
1519         -D)
1520                 shift
1521                 case "$1" in
1522                 *=)
1523                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1524                         echo "$me: ignoring -D $1" >&2
1525                         ;;
1526                 *=*) echo "$1" | \
1527                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1528                 *) echo "$1='define'" >> optdef.sh;;
1529                 esac
1530                 shift
1531                 ;;
1532         -U)
1533                 shift
1534                 case "$1" in
1535                 *=) echo "$1" >> optdef.sh;;
1536                 *=*)
1537                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1538                         echo "$me: ignoring -U $1" >&2
1539                         ;;
1540                 *) echo "$1='undef'" >> optdef.sh;;
1541                 esac
1542                 shift
1543                 ;;
1544         -A)
1545             shift
1546             xxx=''
1547             yyy="$1"
1548             zzz=''
1549             uuu=undef
1550             case "$yyy" in
1551             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1552                  case "$zzz" in
1553                  *:*) zzz='' ;;
1554                  *)   xxx=append
1555                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1556                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1557                  esac
1558                  ;;
1559             esac
1560             case "$xxx" in
1561             '')  case "$yyy" in
1562                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1563                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1564                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1565                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1566                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1567                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1568                  esac
1569                  ;;       
1570             esac
1571             case "$xxx" in
1572             append)
1573                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1574             clear)
1575                 echo "$yyy=''"                  >> posthint.sh ;;
1576             define)
1577                 case "$zzz" in
1578                 '') zzz=define ;;
1579                 esac
1580                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1581             eval)
1582                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1583             prepend)
1584                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1585             undef)
1586                 case "$zzz" in
1587                 '') zzz="$uuu" ;;
1588                 esac
1589                 echo "$yyy=$zzz"                >> posthint.sh ;;
1590             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1591             esac
1592             shift
1593             ;;
1594         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1595             exit 0;;
1596         --) break;;
1597         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1598         *) break;;
1599         esac
1600 done
1601
1602 case "$error" in
1603 true)
1604         cat >&2 <<EOM
1605 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1606                  [-U symbol] [-U symbol=] [-A command:symbol...]
1607   -d : use defaults for all answers.
1608   -e : go on without questioning past the production of config.sh.
1609   -f : specify an alternate default configuration file.
1610   -h : print this help message and exit (with an error status).
1611   -r : reuse C symbols value if possible (skips costly nm extraction).
1612   -s : silent mode, only echoes questions and essential information.
1613   -D : define symbol to have some value:
1614          -D symbol         symbol gets the value 'define'
1615          -D symbol=value   symbol gets the value 'value'
1616   -E : stop at the end of questions, after having produced config.sh.
1617   -K : do not use unless you know what you are doing.
1618   -O : let -D and -U override definitions from loaded configuration file.
1619   -S : perform variable substitutions on all .SH files (can mix with -f)
1620   -U : undefine symbol:
1621          -U symbol    symbol gets the value 'undef'
1622          -U symbol=   symbol gets completely empty
1623   -A : manipulate symbol after the platform specific hints have been applied:
1624          -A symbol=value                append " "value to symbol
1625          -A append:symbol=value         append value to symbol
1626          -A define:symbol=value         define symbol to have value
1627          -A clear:symbol                define symbol to be ''
1628          -A define:symbol               define symbol to be 'define'
1629          -A eval:symbol=value           define symbol to be eval of value
1630          -A prepend:symbol=value        prepend value to symbol
1631          -A undef:symbol                define symbol to be 'undef'
1632          -A undef:symbol=               define symbol to be ''
1633   -V : print version number and exit (with a zero status).
1634 EOM
1635         exit 1
1636         ;;
1637 esac
1638
1639 : Sanity checks
1640 case "$fastread$alldone" in
1641 yescont|yesexit) ;;
1642 *)
1643         case "$extractsh" in
1644         true) ;;
1645         *)
1646                 if test ! -t 0; then
1647                         echo "Say 'sh Configure', not 'sh <Configure'"
1648                         exit 1
1649                 fi
1650                 ;;
1651         esac
1652         ;;
1653 esac
1654
1655 exec 4>&1
1656 case "$silent" in
1657 true) exec 1>/dev/null;;
1658 esac
1659
1660 : run the defines and the undefines, if any, but leave the file out there...
1661 touch optdef.sh
1662 . ./optdef.sh
1663 : create the posthint manipulation script and leave the file out there...
1664 touch posthint.sh
1665
1666 : set package name
1667 package=perl5
1668 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1669 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1670 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1671 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1672 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1673 esac
1674
1675 : Some greps do not return status, grrr.
1676 echo "grimblepritz" >grimble
1677 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1678         contains=contains
1679 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1680         contains=grep
1681 else
1682         contains=contains
1683 fi
1684 rm -f grimble
1685 : the following should work in any shell
1686 case "$contains" in
1687 contains*)
1688         echo " "
1689         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1690         cat >contains <<'EOSS'
1691 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1692 EOSS
1693 chmod +x contains
1694 esac
1695
1696 : Find the path to the source tree
1697 case "$src" in
1698 '') case "$0" in
1699     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1700          case "$src" in
1701          /*)    ;;
1702          .)     ;;
1703          *)     src=`cd ../$src && pwd` ;;
1704          esac
1705          ;;
1706     *)   src='.';;
1707     esac;;
1708 esac
1709 case "$src" in
1710 '')     src=/
1711         rsrc=/
1712         ;;
1713 /*) rsrc="$src";;
1714 *) rsrc="../$src";;
1715 esac
1716 if test -f $rsrc/Configure && \
1717         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1718 then
1719    : found it, so we are ok.
1720 else
1721         rsrc=''
1722         for src in . .. ../.. ../../.. ../../../..; do
1723                 if test -f ../$src/Configure && \
1724                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1725                 then
1726                         rsrc=../$src
1727                         break
1728                 fi
1729         done
1730 fi
1731 case "$rsrc" in
1732 '')
1733         cat <<EOM >&4
1734
1735 Sorry, I can't seem to locate the source dir for $package.  Please start
1736 Configure with an explicit path -- i.e. /some/path/Configure.
1737
1738 EOM
1739         exit 1
1740         ;;
1741 ../.)   rsrc='..';;
1742 *)
1743         echo " "
1744         echo "Sources for $package found in \"$src\"." >&4
1745         ;;
1746 esac
1747
1748 : script used to extract .SH files with variable substitutions
1749 cat >extract <<'EOS'
1750 PERL_CONFIG_SH=true
1751 echo "Doing variable substitutions on .SH files..."
1752 if test -f MANIFEST; then
1753         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1754 else
1755         echo "(Looking for .SH files under the source directory.)"
1756         set x `(cd "$src"; find . -name "*.SH" -print)`
1757 fi
1758 shift
1759 case $# in
1760 0) set x `(cd "$src"; echo *.SH)`; shift;;
1761 esac
1762 if test ! -f "$src/$1"; then
1763         shift
1764 fi
1765 mkdir_p='
1766 name=$1;
1767 create="";
1768 while test $name; do
1769         if test ! -d "$name"; then
1770                 create="$name $create";
1771                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1772                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1773         else
1774                 name="";
1775         fi;
1776 done;
1777 for file in $create; do
1778         mkdir $file;
1779 done
1780 '
1781 for file in $*; do
1782         case "$src" in
1783         ".")
1784                 case "$file" in
1785                 */*)
1786                         dir=`expr X$file : 'X\(.*\)/'`
1787                         file=`expr X$file : 'X.*/\(.*\)'`
1788                         (cd "$dir" && . ./$file)
1789                         ;;
1790                 *)
1791                         . ./$file
1792                         ;;
1793                 esac
1794                 ;;
1795         *)
1796                 case "$file" in
1797                 */*)
1798                         dir=`expr X$file : 'X\(.*\)/'`
1799                         file=`expr X$file : 'X.*/\(.*\)'`
1800                         (set x $dir; shift; eval $mkdir_p)
1801                         sh <"$src/$dir/$file"
1802                         ;;
1803                 *)
1804                         sh <"$src/$file"
1805                         ;;
1806                 esac
1807                 ;;
1808         esac
1809 done
1810 if test -f "$src/config_h.SH"; then
1811         if test ! -f config.h; then
1812         : oops, they left it out of MANIFEST, probably, so do it anyway.
1813         . "$src/config_h.SH"
1814         fi
1815 fi
1816 EOS
1817
1818 : extract files and exit if asked to do so
1819 case "$extractsh" in
1820 true)
1821         case "$realsilent" in
1822         true) ;;
1823         *) exec 1>&4;;
1824         esac
1825         case "$config_sh" in
1826         '') config_sh='config.sh';;
1827         esac
1828         echo " "
1829         echo "Fetching answers from $config_sh..."
1830         cd ..
1831         . $config_sh
1832         test "$override" && . ./optdef.sh
1833         echo " "
1834         . UU/extract
1835         rm -rf UU
1836         echo "Extraction done."
1837         exit 0
1838         ;;
1839 esac
1840
1841 : Eunice requires " " instead of "", can you believe it
1842 echo " "
1843 : Here we go...
1844 echo "Beginning of configuration questions for $package."
1845
1846 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1847
1848 : first determine how to suppress newline on echo command
1849 echo " "
1850 echo "Checking echo to see how to suppress newlines..."
1851 (echo "hi there\c" ; echo " ") >.echotmp
1852 if $contains c .echotmp >/dev/null 2>&1 ; then
1853         echo "...using -n."
1854         n='-n'
1855         c=''
1856 else
1857         cat <<'EOM'
1858 ...using \c
1859 EOM
1860         n=''
1861         c='\c'
1862 fi
1863 echo $n "The star should be here-->$c"
1864 echo '*'
1865 rm -f .echotmp
1866
1867 : Now test for existence of everything in MANIFEST
1868 echo " "
1869 if test -f "$rsrc/MANIFEST"; then
1870         echo "First let's make sure your kit is complete.  Checking..." >&4
1871         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1872         rm -f missing
1873         tmppwd=`pwd`
1874         for filelist in x??; do
1875                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1876         done
1877         if test -s missing; then
1878                 cat missing >&4
1879                 cat >&4 <<'EOM'
1880
1881 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1882
1883 You have the option of continuing the configuration process, despite the
1884 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1885 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1886 and contact the author (perlbug@perl.org).
1887
1888 EOM
1889                 echo $n "Continue? [n] $c" >&4
1890                 read ans
1891                 case "$ans" in
1892                 y*)
1893                         echo "Continuing..." >&4
1894                         rm -f missing
1895                         ;;
1896                 *)
1897                         echo "ABORTING..." >&4
1898                         kill $$
1899                         ;;
1900                 esac
1901         else
1902                 echo "Looks good..."
1903         fi
1904 else
1905         echo "There is no MANIFEST file.  I hope your kit is complete !"
1906 fi
1907 rm -f missing x??
1908
1909 echo " "
1910 : Find the appropriate value for a newline for tr
1911 if test -n "$DJGPP"; then
1912        trnl='\012'
1913 fi
1914 if test X"$trnl" = X; then
1915         case "`echo foo|tr '\n' x 2>/dev/null`" in
1916         foox) trnl='\n' ;;
1917         esac
1918 fi
1919 if test X"$trnl" = X; then
1920         case "`echo foo|tr '\012' x 2>/dev/null`" in
1921         foox) trnl='\012' ;;
1922         esac
1923 fi
1924 if test X"$trnl" = X; then
1925        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1926        fooxy) trnl='\n\r' ;;
1927        esac
1928 fi
1929 if test X"$trnl" = X; then
1930         cat <<EOM >&2
1931
1932 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1933
1934 EOM
1935         exit 1
1936 fi
1937
1938 : compute the number of columns on the terminal for proper question formatting
1939 case "$COLUMNS" in
1940 '') COLUMNS='80';;
1941 esac
1942
1943 : set up the echo used in my read
1944 myecho="case \"\$xxxm\" in
1945 '') echo $n \"\$rp $c\" >&4;;
1946 *) case \"\$rp\" in
1947         '') echo $n \"[\$xxxm] $c\";;
1948         *)
1949                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1950                         echo \"\$rp\" >&4
1951                         echo $n \"[\$xxxm] $c\" >&4
1952                 else
1953                         echo $n \"\$rp [\$xxxm] $c\" >&4
1954                 fi
1955                 ;;
1956         esac;;
1957 esac"
1958
1959 : now set up to do reads with possible shell escape and default assignment
1960 cat <<EOSC >myread
1961 $startsh
1962 xxxm=\$dflt
1963 $myecho
1964 ans='!'
1965 case "\$fastread" in
1966 yes) case "\$dflt" in
1967         '') ;;
1968         *) ans='';
1969                 case "\$silent-\$rp" in
1970                 true-) ;;
1971                 *) echo " " >&4;;
1972                 esac;;
1973         esac;;
1974 *) case "\$silent" in
1975         true) case "\$rp" in
1976                 '') ans='';;
1977                 esac;;
1978         esac;;
1979 esac
1980 while expr "X\$ans" : "X!" >/dev/null; do
1981         read answ
1982         set x \$xxxm
1983         shift
1984         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1985         case  "\$answ" in
1986         "!")
1987                 sh 1>&4
1988                 echo " "
1989                 $myecho
1990                 ;;
1991         !*)
1992                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1993                 shift
1994                 sh 1>&4 -c "\$*"
1995                 echo " "
1996                 $myecho
1997                 ;;
1998         "\$ans")
1999                 case "\$ans" in
2000                 \\&*)
2001                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2002                         shift
2003                         case "\$1" in
2004                         -d)
2005                                 fastread=yes
2006                                 echo "(OK, I'll run with -d after this question.)" >&4
2007                                 ;;
2008                         -*)
2009                                 echo "*** Sorry, \$1 not supported yet." >&4
2010                                 ;;
2011                         esac
2012                         $myecho
2013                         ans=!
2014                         ;;
2015                 esac;;
2016         *)
2017                 case "\$aok" in
2018                 y)
2019                         echo "*** Substitution done -- please confirm."
2020                         xxxm="\$ans"
2021                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2022                         xxxm="\$ans"
2023                         ans=!
2024                         ;;
2025                 *)
2026                         echo "*** Error -- try again."
2027                         ans=!
2028                         ;;
2029                 esac
2030                 $myecho
2031                 ;;
2032         esac
2033         case "\$ans\$xxxm\$nostick" in
2034         '')
2035                 ans=!
2036                 $myecho
2037                 ;;
2038         esac
2039 done
2040 case "\$ans" in
2041 '') ans="\$xxxm";;
2042 esac
2043 EOSC
2044
2045 : create .config dir to save info across Configure sessions
2046 test -d ../.config || mkdir ../.config
2047 cat >../.config/README <<EOF
2048 This directory created by Configure to save information that should
2049 persist across sessions for $package.
2050
2051 You may safely delete it if you wish.
2052 EOF
2053
2054 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2055 case "$usedevel" in
2056 $define|true|[yY]*) ;;
2057 *) case "$xversion" in
2058    *[13579])
2059         cat >&4 <<EOH
2060 *** WHOA THERE!!! ***
2061
2062     This is an UNSTABLE DEVELOPMENT release.
2063     The version of this $package distribution is $xversion, that is, odd,
2064     (as opposed to even) and that signifies a development release.
2065     If you want a maintenance release, you want an even-numbered version.
2066
2067     Do ***NOT*** install this into production use.
2068     Data corruption and crashes are possible.
2069
2070     It is most seriously suggested that you do not continue any further
2071     unless you want to help in developing and debugging Perl.
2072
2073     If you *still* want to build perl, you can answer 'y' now,
2074     or pass -Dusedevel to Configure.
2075
2076 EOH
2077         rp='Do you really want to continue?'
2078         dflt='n'
2079         . ./myread
2080         case "$ans" in
2081         [yY]) echo >&4 "Okay, continuing."
2082               usedevel="$define" ;;
2083         *) echo >&4 "Okay, bye."
2084            exit 1
2085            ;;
2086         esac
2087         ;;
2088     esac
2089     ;;
2090 esac
2091 case "$usedevel" in
2092 $define|true|[yY]*)
2093         case "$versiononly" in
2094         '') versiononly="$define" ;;
2095         esac
2096         case "$installusrbinperl" in
2097         '') installusrbinperl="$undef" ;;
2098         esac
2099         ;;
2100 esac
2101
2102 : general instructions
2103 needman=true
2104 firsttime=true
2105 user=`(logname) 2>/dev/null`
2106 case "$user" in
2107 '') user=`whoami 2>&1`;;
2108 esac
2109 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2110         firsttime=false
2111         echo " "
2112         rp='Would you like to see the instructions?'
2113         dflt=n
2114         . ./myread
2115         case "$ans" in
2116         [yY]*) ;;
2117         *) needman=false;;
2118         esac
2119 fi
2120 if $needman; then
2121         cat <<EOH
2122
2123 This installation shell script will examine your system and ask you questions
2124 to determine how the perl5 package should be installed. If you get
2125 stuck on a question, you may use a ! shell escape to start a subshell or
2126 execute a command.  Many of the questions will have default answers in square
2127 brackets; typing carriage return will give you the default.
2128
2129 On some of the questions which ask for file or directory names you are allowed
2130 to use the ~name construct to specify the login directory belonging to "name",
2131 even if you don't have a shell which knows about that.  Questions where this is
2132 allowed will be marked "(~name ok)".
2133
2134 EOH
2135         rp=''
2136         dflt='Type carriage return to continue'
2137         . ./myread
2138         cat <<'EOH'
2139
2140 The prompter used in this script allows you to use shell variables and
2141 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2142 in the default answer, as if the default line was a set of arguments given to a
2143 script shell.  This means you may also use $* to repeat the whole default line,
2144 so you do not have to re-type everything to add something to the default.
2145
2146 Everytime there is a substitution, you will have to confirm.  If there is an
2147 error (e.g. an unmatched backtick), the default answer will remain unchanged
2148 and you will be prompted again.
2149
2150 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2151 the questions and use the computed defaults (or the previous answers if there
2152 was already a config.sh file). Type 'Configure -h' for a list of options.
2153 You may also start interactively and then answer '& -d' at any prompt to turn
2154 on the non-interactive behaviour for the remainder of the execution.
2155
2156 EOH
2157         . ./myread
2158         cat <<EOH
2159
2160 Much effort has been expended to ensure that this shell script will run on any
2161 Unix system.  If despite that it blows up on yours, your best bet is to edit
2162 Configure and run it again.  If you can't run Configure for some reason,
2163 you'll have to generate a config.sh file by hand.  Whatever problems you
2164 have, let me (perlbug@perl.org) know how I blew it.
2165
2166 This installation script affects things in two ways:
2167
2168 1) it may do direct variable substitutions on some of the files included
2169    in this kit.
2170 2) it builds a config.h file for inclusion in C programs.  You may edit
2171    any of these files as the need arises after running this script.
2172
2173 If you make a mistake on a question, there is no easy way to back up to it
2174 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2175 files.  Configure will offer to let you do this before it runs the SH files.
2176
2177 EOH
2178         dflt='Type carriage return to continue'
2179         . ./myread
2180         case "$firsttime" in
2181         true) echo $user >>../.config/instruct;;
2182         esac
2183 fi
2184
2185 : find out where common programs are
2186 echo " "
2187 echo "Locating common programs..." >&4
2188 cat <<EOSC >loc
2189 $startsh
2190 case \$# in
2191 0) exit 1;;
2192 esac
2193 thing=\$1
2194 shift
2195 dflt=\$1
2196 shift
2197 for dir in \$*; do
2198         case "\$thing" in
2199         .)
2200         if test -d \$dir/\$thing; then
2201                 echo \$dir
2202                 exit 0
2203         fi
2204         ;;
2205         *)
2206         for thisthing in \$dir/\$thing; do
2207                 : just loop through to pick last item
2208         done
2209         if test -f \$thisthing; then
2210                 echo \$thisthing
2211                 exit 0
2212         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2213                 echo \$thisthing
2214                 exit 0
2215         elif test -f \$dir/\$thing.exe; then
2216                 if test -n "$DJGPP"; then
2217                         echo \$dir/\$thing.exe
2218                 elif test "$eunicefix" != ":"; then
2219                         : on Eunice apparently
2220                         echo \$dir/\$thing
2221                         exit 0
2222                 fi
2223                 exit 0
2224         fi
2225         ;;
2226         esac
2227 done
2228 echo \$dflt
2229 exit 1
2230 EOSC
2231 chmod +x loc
2232 $eunicefix loc
2233 loclist="
2234 awk
2235 cat
2236 chmod
2237 comm
2238 cp
2239 echo
2240 expr
2241 grep
2242 ls
2243 mkdir
2244 rm
2245 sed
2246 sort
2247 touch
2248 tr
2249 uniq
2250 "
2251 trylist="
2252 Mcc
2253 ar
2254 bison
2255 byacc
2256 cpp
2257 csh
2258 date
2259 egrep
2260 gmake
2261 gzip
2262 less
2263 ln
2264 make
2265 more
2266 nm
2267 nroff
2268 pg
2269 test
2270 uname
2271 zip
2272 "
2273 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2274 pth="$pth /lib /usr/lib"
2275 for file in $loclist; do
2276         eval xxx=\$$file
2277         case "$xxx" in
2278         /*|?:[\\/]*)
2279                 if test -f "$xxx"; then
2280                         : ok
2281                 else
2282                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2283                         xxx=`./loc $file $file $pth`
2284                 fi
2285                 ;;
2286         '') xxx=`./loc $file $file $pth`;;
2287         *) xxx=`./loc $xxx $xxx $pth`;;
2288         esac
2289         eval $file=$xxx$_exe
2290         eval _$file=$xxx
2291         case "$xxx" in
2292         /*)
2293                 echo $file is in $xxx.
2294                 ;;
2295         ?:[\\/]*)
2296                 echo $file is in $xxx.
2297                 ;;
2298         *)
2299                 echo "I don't know where '$file' is, and my life depends on it." >&4
2300                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2301                 exit 1
2302                 ;;
2303         esac
2304 done
2305 echo " "
2306 echo "Don't worry if any of the following aren't found..."
2307 say=offhand
2308 for file in $trylist; do
2309         eval xxx=\$$file
2310         case "$xxx" in
2311         /*|?:[\\/]*)
2312                 if test -f "$xxx"; then
2313                         : ok
2314                 else
2315                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2316                         xxx=`./loc $file $file $pth`
2317                 fi
2318                 ;;
2319         '') xxx=`./loc $file $file $pth`;;
2320         *) xxx=`./loc $xxx $xxx $pth`;;
2321         esac
2322         eval $file=$xxx$_exe
2323         eval _$file=$xxx
2324         case "$xxx" in
2325         /*)
2326                 echo $file is in $xxx.
2327                 ;;
2328         ?:[\\/]*)
2329                 echo $file is in $xxx.
2330                 ;;
2331         *)
2332                 echo "I don't see $file out there, $say."
2333                 say=either
2334                 ;;
2335         esac
2336 done
2337 case "$egrep" in
2338 egrep)
2339         echo "Substituting grep for egrep."
2340         egrep=$grep
2341         _egrep=$grep
2342         ;;
2343 esac
2344 case "$ln" in
2345 ln)
2346         echo "Substituting cp for ln."
2347         ln=$cp
2348         _ln=$cp
2349         ;;
2350 esac
2351 case "$make" in
2352 make)   
2353         case "$gmake" in
2354         gmake)
2355         echo "I can't find make or gmake, and my life depends on it." >&4
2356         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2357         exit 1
2358         ;;
2359         esac
2360         ;;
2361 esac    
2362 case "$gmake" in
2363 gmake)  ;;
2364 *)      # We can't have osname yet.
2365         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2366                 # Assume that gmake, if found, is definitely GNU make
2367                 # and prefer it over the system make.
2368                 echo "Substituting gmake for make."
2369                 make=$gmake
2370                 _make=$gmake
2371         fi
2372         ;;
2373 esac
2374 case "$test" in
2375 test)
2376         echo "Hopefully test is built into your sh."
2377         ;;
2378 *)
2379         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2380                 echo "Using the test built into your sh."
2381                 test=test
2382                 _test=test
2383         fi
2384         ;;
2385 esac
2386 case "$echo" in
2387 echo)
2388         echo "Hopefully echo is built into your sh."
2389         ;;
2390 '') ;;
2391 *)
2392         echo " "
2393 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2394         $echo $n "hi there$c" >foo1
2395         echo $n "hi there$c" >foo2
2396         if cmp foo1 foo2 >/dev/null 2>&1; then
2397                 echo "They are compatible.  In fact, they may be identical."
2398         else
2399                 case "$n" in
2400                 '-n') n='' c='\c';;
2401                 *) n='-n' c='';;
2402                 esac
2403                 cat <<FOO
2404 They are not compatible!  You are probably running ksh on a non-USG system.
2405 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2406 have echo built in and we may have to run some Bourne shell scripts.  That
2407 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2408
2409 FOO
2410                 $echo $n "The star should be here-->$c"
2411                 $echo "*"
2412         fi
2413         $rm -f foo1 foo2
2414         ;;
2415 esac
2416
2417 cat <<EOS >trygcc
2418 $startsh
2419 EOS
2420 cat <<'EOSC' >>trygcc
2421 case "$cc" in
2422 '') ;;
2423 *)  $rm -f try try.*
2424     $cat >try.c <<EOM
2425 int main(int argc, char *argv[]) {
2426   return 0;
2427 }
2428 EOM
2429     if $cc -o try $ccflags $ldflags try.c; then
2430        :
2431     else
2432         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2433         despair=yes
2434         trygcc=yes
2435         case "$cc" in
2436         *gcc*) trygcc=no ;;
2437         esac
2438         case "`$cc -v -c try.c 2>&1`" in
2439         *gcc*) trygcc=no ;;
2440         esac
2441         if $test X"$trygcc" = Xyes; then
2442             if gcc -o try -c try.c; then
2443                 echo " "
2444                 echo "You seem to have a working gcc, though." >&4
2445                 rp="Would you like to use it?"
2446                 dflt=y
2447                 if $test -f myread; then
2448                     . ./myread
2449                 else
2450                     if $test -f UU/myread; then
2451                         . ./UU/myread
2452                     else
2453                         echo "Cannot find myread, sorry.  Aborting." >&2
2454                         exit 1
2455                     fi
2456                 fi  
2457                 case "$ans" in
2458                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2459                        if $test -f usethreads.cbu; then
2460                            $cat >&4 <<EOM 
2461
2462 *** However, any setting of the C compiler flags (e.g. for thread support)
2463 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2464 *** (together with e.g. -Dusethreads).
2465
2466 EOM
2467                        fi;;
2468                 esac
2469             fi
2470         fi
2471     fi
2472     $rm -f try try.*
2473     ;;
2474 esac
2475 EOSC
2476
2477 cat <<EOS >checkcc
2478 $startsh
2479 EOS
2480 cat <<'EOSC' >>checkcc
2481 case "$cc" in        
2482 '') ;;
2483 *)  $rm -f try try.*              
2484     $cat >try.c <<EOM
2485 int main(int argc, char *argv[]) {
2486   return 0;
2487 }
2488 EOM
2489     if $cc -o try $ccflags $ldflags try.c; then
2490        :
2491     else
2492         if $test X"$despair" = Xyes; then
2493            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2494         fi
2495         $cat >&4 <<EOM         
2496 You need to find a working C compiler.
2497 Either (purchase and) install the C compiler supplied by your OS vendor,
2498 or for a free C compiler try http://gcc.gnu.org/
2499 I cannot continue any further, aborting.
2500 EOM
2501         exit 1
2502     fi
2503     $rm -f try try.*
2504     ;;
2505 esac
2506 EOSC
2507
2508 : determine whether symbolic links are supported
2509 echo " "
2510 $touch blurfl
2511 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2512         echo "Symbolic links are supported." >&4
2513         lns="$ln -s"
2514 else
2515         echo "Symbolic links are NOT supported." >&4
2516         lns="$ln"
2517 fi
2518 $rm -f blurfl sym
2519
2520 : determine whether symbolic links are supported
2521 echo " "
2522 case "$lns" in
2523 *"ln"*" -s")
2524         echo "Checking how to test for symbolic links..." >&4
2525         $lns blurfl sym
2526         if $test "X$issymlink" = X; then
2527                 case "$newsh" in
2528                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2529                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2530                 esac
2531                 if test $? = 0; then
2532                         issymlink="test -h"
2533                 else
2534                         echo "Your builtin 'test -h' may be broken." >&4
2535                         case "$test" in
2536                         /*)     ;;
2537                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2538                                 for p in $pth
2539                                 do
2540                                         if test -f "$p/$test"; then
2541                                                 test="$p/$test"
2542                                                 break
2543                                         fi
2544                                 done
2545                                 ;;
2546                         esac
2547                         case "$test" in
2548                         /*)
2549                                 echo "Trying external '$test -h'." >&4
2550                                 issymlink="$test -h"
2551                                 if $test ! -h sym >/dev/null 2>&1; then
2552                                         echo "External '$test -h' is broken, too." >&4
2553                                         issymlink=''
2554                                 fi
2555                                 ;;
2556                         *)      issymlink='' ;;
2557                         esac
2558                 fi              
2559         fi
2560         if $test "X$issymlink" = X; then
2561                 if $test -L sym 2>/dev/null; then
2562                         issymlink="$test -L"
2563                         echo "The builtin '$test -L' worked." >&4
2564                 fi
2565         fi
2566         if $test "X$issymlink" != X; then
2567                 echo "You can test for symbolic links with '$issymlink'." >&4
2568         else
2569                 echo "I do not know how you can test for symbolic links." >&4
2570         fi
2571         $rm -f blurfl sym
2572         ;;
2573 *)      echo "No symbolic links, so not testing for their testing..." >&4
2574         ;;
2575 esac
2576 echo " "
2577
2578
2579 case "$mksymlinks" in
2580 $define|true|[yY]*)
2581         case "$src" in
2582         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2583                 exit 1
2584                 ;;
2585         *)      case "$lns:$issymlink" in
2586                 *"ln"*" -s:"*"test -"?)
2587                         echo "Creating the symbolic links..." >&4
2588                         echo "(First creating the subdirectories...)" >&4
2589                         cd ..
2590                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2591                                 read directory
2592                                 test -z "$directory" && break
2593                                 mkdir -p $directory
2594                         done
2595                         # Sanity check 1.
2596                         if test ! -d t/base; then
2597                                 echo "Failed to create the subdirectories.  Aborting." >&4
2598                                 exit 1
2599                         fi
2600                         echo "(Then creating the symlinks...)" >&4
2601                         awk '{print $1}' $src/MANIFEST | while true; do
2602                                 read filename
2603                                 test -z "$filename" && break
2604                                 if test -f $filename; then
2605                                         if $issymlink $filename; then
2606                                                 rm -f $filename
2607                                         fi
2608                                 fi
2609                                 if test -f $filename; then
2610                                         echo "$filename already exists, not symlinking."
2611                                 else
2612                                         ln -s $src/$filename $filename
2613                                 fi
2614                         done
2615                         # Sanity check 2.
2616                         if test ! -f t/base/lex.t; then
2617                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2618                                 exit 1
2619                         fi
2620                         cd UU
2621                         ;;
2622                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2623                         ;;
2624                 esac
2625                 ;;
2626         esac
2627         ;;
2628 esac
2629
2630
2631 case "$usecrosscompile" in
2632 $define|true|[yY]*)
2633         $echo "Cross-compiling..."
2634         croak=''
2635         case "$cc" in
2636         *-*-gcc) # A cross-compiling gcc, probably.
2637             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2638             ar=$targetarch-ar
2639             # leave out ld, choosing it is more complex
2640             nm=$targetarch-nm
2641             ranlib=$targetarch-ranlib
2642             $echo 'extern int foo;' > try.c
2643             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2644             shift
2645             if $test $# -gt 0; then
2646                 incpth="$incpth $*"
2647                 incpth="`$echo $incpth|$sed 's/^ //'`"
2648                 echo "Guessing incpth '$incpth'." >&4
2649                 for i in $*; do
2650                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2651                     if $test -d $j; then
2652                         libpth="$libpth $j"
2653                     fi
2654                 done   
2655                 libpth="`$echo $libpth|$sed 's/^ //'`"
2656                 echo "Guessing libpth '$libpth'." >&4
2657             fi
2658             $rm -f try.c
2659             ;;
2660         esac
2661         case "$targetarch" in
2662         '') echo "Targetarch not defined." >&4; croak=y ;;
2663         *)  echo "Using targetarch $targetarch." >&4 ;;
2664         esac
2665         case "$incpth" in
2666         '') echo "Incpth not defined." >&4; croak=y ;;
2667         *)  echo "Using incpth '$incpth'." >&4 ;;
2668         esac
2669         case "$libpth" in
2670         '') echo "Libpth not defined." >&4; croak=y ;;
2671         *)  echo "Using libpth '$libpth'." >&4 ;;
2672         esac
2673         case "$usrinc" in
2674         '') for i in $incpth; do
2675                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2676                     usrinc=$i
2677                     echo "Guessing usrinc $usrinc." >&4
2678                     break
2679                 fi
2680             done
2681             case "$usrinc" in
2682             '') echo "Usrinc not defined." >&4; croak=y ;;
2683             esac
2684             ;;
2685         *)  echo "Using usrinc $usrinc." >&4 ;;
2686         esac
2687         case "$targethost" in
2688         '') echo "Targethost not defined." >&4; croak=y ;;
2689         *)  echo "Using targethost $targethost." >&4
2690         esac
2691         locincpth=' '
2692         loclibpth=' '
2693         case "$croak" in
2694         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2695         esac
2696         case "$src" in
2697         /*) run=$src/Cross/run
2698             targetmkdir=$src/Cross/mkdir
2699             to=$src/Cross/to
2700             from=$src/Cross/from
2701             ;;
2702         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2703             run=$pwd/Cross/run
2704             targetmkdir=$pwd/Cross/mkdir
2705             to=$pwd/Cross/to
2706             from=$pwd/Cross/from
2707             ;;
2708         esac
2709         case "$targetrun" in
2710         '') targetrun=ssh ;;
2711         esac
2712         case "$targetto" in
2713         '') targetto=scp ;;
2714         esac
2715         case "$targetfrom" in
2716         '') targetfrom=scp ;;
2717         esac
2718         run=$run-$targetrun
2719         to=$to-$targetto
2720         from=$from-$targetfrom
2721         case "$targetdir" in
2722         '')  targetdir=/tmp
2723              echo "Guessing targetdir $targetdir." >&4
2724              ;;
2725         esac
2726         case "$targetuser" in
2727         '')  targetuser=root
2728              echo "Guessing targetuser $targetuser." >&4
2729              ;;
2730         esac
2731         case "$targetfrom" in
2732         scp)    q=-q ;;
2733         *)      q='' ;;
2734         esac
2735         case "$targetrun" in
2736         ssh|rsh)
2737             cat >$run <<EOF
2738 #!/bin/sh
2739 case "\$1" in
2740 -cwd)
2741   shift
2742   cwd=\$1
2743   shift
2744   ;;
2745 esac
2746 case "\$cwd" in
2747 '') cwd=$targetdir ;;
2748 esac
2749 exe=\$1
2750 shift
2751 if $test ! -f \$exe.xok; then
2752   $to \$exe
2753   $touch \$exe.xok
2754 fi
2755 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2756 EOF
2757             ;;
2758         *)  echo "Unknown targetrun '$targetrun'" >&4
2759             exit 1
2760             ;;
2761         esac
2762         case "$targetmkdir" in
2763         */Cross/mkdir)
2764             cat >$targetmkdir <<EOF
2765 #!/bin/sh
2766 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2767 EOF
2768             $chmod a+rx $targetmkdir
2769             ;;
2770         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2771             exit 1
2772             ;;
2773         esac
2774         case "$targetto" in
2775         scp|rcp)
2776             cat >$to <<EOF
2777 #!/bin/sh
2778 for f in \$@
2779 do
2780   case "\$f" in
2781   /*)
2782     $targetmkdir \`dirname \$f\`
2783     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2784     ;;
2785   *)
2786     $targetmkdir $targetdir/\`dirname \$f\`
2787     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2788     ;;
2789   esac
2790 done
2791 exit 0
2792 EOF
2793             ;;
2794         cp) cat >$to <<EOF
2795 #!/bin/sh
2796 for f in \$@
2797 do
2798   case "\$f" in
2799   /*)
2800     $mkdir -p $targetdir/\`dirname \$f\`
2801     $cp \$f $targetdir/\$f || exit 1
2802     ;;
2803   *)
2804     $targetmkdir $targetdir/\`dirname \$f\`
2805     $cp \$f $targetdir/\$f || exit 1
2806     ;;
2807   esac
2808 done
2809 exit 0
2810 EOF
2811             ;;
2812         *)  echo "Unknown targetto '$targetto'" >&4
2813             exit 1
2814             ;;
2815         esac
2816         case "$targetfrom" in
2817         scp|rcp)
2818           cat >$from <<EOF
2819 #!/bin/sh
2820 for f in \$@
2821 do
2822   $rm -f \$f
2823   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2824 done
2825 exit 0
2826 EOF
2827             ;;
2828         cp) cat >$from <<EOF
2829 #!/bin/sh
2830 for f in \$@
2831 do
2832   $rm -f \$f
2833   cp $targetdir/\$f . || exit 1
2834 done
2835 exit 0
2836 EOF
2837             ;;
2838         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2839             exit 1
2840             ;;
2841         esac
2842         if $test ! -f $run; then
2843             echo "Target 'run' script '$run' not found." >&4
2844         else
2845             $chmod a+rx $run
2846         fi
2847         if $test ! -f $to; then
2848             echo "Target 'to' script '$to' not found." >&4
2849         else
2850             $chmod a+rx $to
2851         fi
2852         if $test ! -f $from; then
2853             echo "Target 'from' script '$from' not found." >&4
2854         else
2855             $chmod a+rx $from
2856         fi
2857         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2858             exit 1
2859         fi
2860         cat >&4 <<EOF
2861 Using '$run' for remote execution,
2862 and '$from' and '$to'
2863 for remote file transfer.
2864 EOF
2865         ;;
2866 *)      run=''
2867         to=:
2868         from=:
2869         usecrosscompile='undef'
2870         targetarch=''
2871         ;;
2872 esac
2873
2874 : see whether [:lower:] and [:upper:] are supported character classes
2875 echo " "
2876 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2877 ABYZ)
2878         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2879         up='[:upper:]'
2880         low='[:lower:]'
2881         ;;
2882 *)      # There is a discontinuity in EBCDIC between 'R' and 'S'
2883         # (0xd9 and 0xe2), therefore that is a nice testing point.
2884         if test "X$up" = X -o "X$low" = X; then
2885             case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2886             rs) up='[A-Z]'
2887                 low='[a-z]'
2888                 ;;
2889             esac
2890         fi
2891         if test "X$up" = X -o "X$low" = X; then
2892             case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2893             rs) up='A-Z'
2894                 low='a-z'
2895                 ;;
2896             esac
2897         fi
2898         if test "X$up" = X -o "X$low" = X; then
2899             case "`echo RS | od -x 2>/dev/null`" in
2900             *D9E2*|*d9e2*)
2901                 echo "Hey, this might be EBCDIC." >&4
2902                 if test "X$up" = X -o "X$low" = X; then
2903                     case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2904                     rs) up='[A-IJ-RS-Z]'
2905                         low='[a-ij-rs-z]'
2906                         ;;
2907                     esac
2908                 fi
2909                 if test "X$up" = X -o "X$low" = X; then
2910                     case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2911                     rs) up='A-IJ-RS-Z'
2912                         low='a-ij-rs-z'
2913                         ;;
2914                     esac
2915                 fi
2916                 ;;
2917             esac
2918         fi
2919 esac
2920 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
2921 rs)
2922     echo "Using $up and $low to convert case." >&4
2923     ;;
2924 *)
2925     echo "I don't know how to translate letters from upper to lower case." >&4
2926     echo "Your tr is not acting any way I know of." >&4
2927     exit 1
2928     ;;
2929 esac
2930 : set up the translation script tr, must be called with ./tr of course
2931 cat >tr <<EOSC
2932 $startsh
2933 case "\$1\$2" in
2934 '[A-Z][a-z]') exec $tr '$up' '$low';;
2935 '[a-z][A-Z]') exec $tr '$low' '$up';;
2936 esac
2937 exec $tr "\$@"
2938 EOSC
2939 chmod +x tr
2940 $eunicefix tr
2941
2942 : Try to determine whether config.sh was made on this system
2943 case "$config_sh" in
2944 '')
2945 myuname=`$uname -a 2>/dev/null`
2946 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2947 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2948 # because the A-Z/a-z are not consecutive.
2949 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2950         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2951 newmyuname="$myuname"
2952 dflt=n
2953 case "$knowitall" in
2954 '')
2955         if test -f ../config.sh; then
2956                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2957                         eval "`grep myuname= ../config.sh`"
2958                 fi
2959                 if test "X$myuname" = "X$newmyuname"; then
2960                         dflt=y
2961                 fi
2962         fi
2963         ;;
2964 *) dflt=y;;
2965 esac
2966
2967 : Get old answers from old config file if Configure was run on the
2968 : same system, otherwise use the hints.
2969 hint=default
2970 cd ..
2971 if test -f config.sh; then
2972         echo " "
2973         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2974         . UU/myread
2975         case "$ans" in
2976         n*|N*) echo "OK, I'll ignore it."
2977                 mv config.sh config.sh.old
2978                 myuname="$newmyuname"
2979                 ;;
2980         *)  echo "Fetching default answers from your old config.sh file..." >&4
2981                 tmp_n="$n"
2982                 tmp_c="$c"
2983                 tmp_sh="$sh"
2984                 . ./config.sh
2985                 cp config.sh UU
2986                 n="$tmp_n"
2987                 c="$tmp_c"
2988                 : Older versions did not always set $sh.  Catch re-use of such
2989                 : an old config.sh.
2990                 case "$sh" in
2991                 '') sh="$tmp_sh" ;;
2992                 esac
2993                 hint=previous
2994                 ;;
2995         esac
2996 fi
2997 . ./UU/checkcc
2998 if test ! -f config.sh; then
2999         $cat <<EOM
3000
3001 First time through, eh?  I have some defaults handy for some systems
3002 that need some extra help getting the Configure answers right:
3003
3004 EOM
3005         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3006         dflt=''
3007         : Half the following guesses are probably wrong... If you have better
3008         : tests or hints, please send them to perlbug@perl.org
3009         : The metaconfig authors would also appreciate a copy...
3010         $test -f /irix && osname=irix
3011         $test -f /xenix && osname=sco_xenix
3012         $test -f /dynix && osname=dynix
3013         $test -f /dnix && osname=dnix
3014         $test -f /lynx.os && osname=lynxos
3015         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3016         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3017         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3018         $test -f /bin/mips && /bin/mips && osname=mips
3019         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3020                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3021         $test -d /usr/apollo/bin && osname=apollo
3022         $test -f /etc/saf/_sactab && osname=svr4
3023         $test -d /usr/include/minix && osname=minix
3024         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3025         if $test -d /MachTen -o -d /MachTen_Folder; then
3026                 osname=machten
3027                 if $test -x /sbin/version; then
3028                         osvers=`/sbin/version | $awk '{print $2}' |
3029                         $sed -e 's/[A-Za-z]$//'`
3030                 elif $test -x /usr/etc/version; then
3031                         osvers=`/usr/etc/version | $awk '{print $2}' |
3032                         $sed -e 's/[A-Za-z]$//'`
3033                 else
3034                         osvers="$2.$3"
3035                 fi
3036         fi
3037
3038         $test -f /sys/posix.dll &&
3039                 $test -f /usr/bin/what &&
3040                 set X `/usr/bin/what /sys/posix.dll` &&
3041                 $test "$3" = UWIN &&
3042                 osname=uwin &&
3043                 osvers="$5"
3044
3045         if $test -f $uname; then
3046                 set X $myuname
3047                 shift
3048
3049                 case "$5" in
3050                 fps*) osname=fps ;;
3051                 mips*)
3052                         case "$4" in
3053                         umips) osname=umips ;;
3054                         *) osname=mips ;;
3055                         esac;;
3056                 [23]100) osname=mips ;;
3057                 next*) osname=next ;;
3058                 i386*)
3059                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3060                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3061                                 osname='sco'
3062                                 osvers=$tmp
3063                         elif $test -f /etc/kconfig; then
3064                                 osname=isc
3065                                 if test "$lns" = "$ln -s"; then
3066                                         osvers=4
3067                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3068                                         osvers=3
3069                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3070                                         osvers=2
3071                                 fi
3072                         fi
3073                         tmp=''
3074                         ;;
3075                 pc*)
3076                         if test -n "$DJGPP"; then
3077                                 osname=dos
3078                                 osvers=djgpp
3079                         fi
3080                         ;;
3081                 esac
3082
3083                 case "$1" in
3084                 aix) osname=aix
3085                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3086                         case "$tmp" in
3087                         # oslevel can fail with:
3088                         # oslevel: Unable to acquire lock.
3089                         *not\ found) osvers="$4"."$3" ;;
3090                         '<3240'|'<>3240') osvers=3.2.0 ;;
3091                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3092                         '=3250'|'>3250') osvers=3.2.5 ;;
3093                         *) osvers=$tmp;;
3094                         esac
3095                         ;;
3096                 bsd386) osname=bsd386
3097                         osvers=`$uname -r`
3098                         ;;
3099                 cygwin*) osname=cygwin
3100                         osvers="$3"
3101                         ;;
3102                 *dc.osx) osname=dcosx
3103                         osvers="$3"
3104                         ;;
3105                 dnix) osname=dnix
3106                         osvers="$3"
3107                         ;;
3108                 domainos) osname=apollo
3109                         osvers="$3"
3110                         ;;
3111                 dgux)   osname=dgux 
3112                         osvers="$3"
3113                         ;;
3114                 dynixptx*) osname=dynixptx
3115                         osvers=`echo "$4"|sed 's/^v//'`
3116                         ;;
3117                 freebsd) osname=freebsd 
3118                         osvers="$3" ;;
3119                 genix)  osname=genix ;;
3120                 gnu)    osname=gnu
3121                         osvers="$3" ;;
3122                 hp*)    osname=hpux 
3123                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3124                         ;;
3125                 irix*)  osname=irix
3126                         case "$3" in
3127                         4*) osvers=4 ;;
3128                         5*) osvers=5 ;;
3129                         *)      osvers="$3" ;;
3130                         esac
3131                         ;;
3132                 linux)  osname=linux
3133                         case "$3" in
3134                         *)      osvers="$3" ;;
3135                         esac
3136                         ;;
3137                 MiNT)   osname=mint
3138                         ;;
3139                 netbsd*) osname=netbsd
3140                         osvers="$3"
3141                         ;;
3142                 news-os) osvers="$3"
3143                         case "$3" in
3144                         4*) osname=newsos4 ;;
3145                         *) osname=newsos ;;
3146                         esac
3147                         ;;
3148                 next*) osname=next ;;
3149                 nonstop-ux) osname=nonstopux ;;
3150                 openbsd) osname=openbsd
3151                         osvers="$3"
3152                         ;;
3153                 os2)    osname=os2
3154                         osvers="$4"
3155                         ;;
3156                 POSIX-BC | posix-bc ) osname=posix-bc
3157                         osvers="$3"
3158                         ;;
3159                 powerux | power_ux | powermax_os | powermaxos | \
3160                 powerunix | power_unix) osname=powerux
3161                         osvers="$3"
3162                         ;;
3163                 qnx) osname=qnx
3164                         osvers="$4"
3165                         ;;
3166                 solaris) osname=solaris
3167                         case "$3" in
3168                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3169                         *)      osvers="$3" ;;
3170                         esac
3171                         ;;
3172                 sunos) osname=sunos
3173                         case "$3" in
3174                         5*) osname=solaris
3175                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3176                         *)      osvers="$3" ;;
3177                         esac
3178                         ;;
3179                 titanos) osname=titanos
3180                         case "$3" in
3181                         1*) osvers=1 ;;
3182                         2*) osvers=2 ;;
3183                         3*) osvers=3 ;;
3184                         4*) osvers=4 ;;
3185                         *)      osvers="$3" ;;
3186                         esac
3187                         ;;
3188                 ultrix) osname=ultrix
3189                         osvers="$3"
3190                         ;;
3191                 osf1|mls+)      case "$5" in
3192                                 alpha)
3193                                         osname=dec_osf
3194                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3195                                         case "$osvers" in
3196                                         [1-9].[0-9]*) ;;
3197                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3198                                         esac
3199                                         ;;
3200                         hp*)    osname=hp_osf1  ;;
3201                         mips)   osname=mips_osf1 ;;
3202                         esac
3203                         ;;
3204                 # UnixWare 7.1.2 is known as Open UNIX 8
3205                 openunix|unixware) osname=svr5
3206                         osvers="$4"
3207                         ;;
3208                 uts)    osname=uts
3209                         osvers="$3"
3210                         ;;
3211                 vos) osvers="$3"
3212                         ;;
3213                 $2) case "$osname" in
3214                         *isc*) ;;
3215                         *freebsd*) ;;
3216                         svr*)
3217                                 : svr4.x or possibly later
3218                                 case "svr$3" in 
3219                                 ${osname}*)
3220                                         osname=svr$3
3221                                         osvers=$4
3222                                         ;;
3223                                 esac
3224                                 case "$osname" in
3225                                 svr4.0)
3226                                         : Check for ESIX
3227                                         if test -f /stand/boot ; then
3228                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3229                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3230                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3231                                                         if test -n "$isesix"; then
3232                                                                 osname=esix4
3233                                                         fi
3234                                                 fi
3235                                         fi
3236                                         ;;
3237                                 esac
3238                                 ;;
3239                         *)      if test -f /etc/systemid; then
3240                                         osname=sco
3241                                         set `echo $3 | $sed 's/\./ /g'` $4
3242                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3243                                                 osvers=$1.$2.$3
3244                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3245                                                 osvers=$1.$2
3246                                         elif $test -f $src/hints/sco_$1.sh; then
3247                                                 osvers=$1
3248                                         fi
3249                                 else
3250                                         case "$osname" in
3251                                         '') : Still unknown.  Probably a generic Sys V.
3252                                                 osname="sysv"
3253                                                 osvers="$3"
3254                                                 ;;
3255                                         esac
3256                                 fi
3257                                 ;;
3258                         esac
3259                         ;;
3260                 *)      case "$osname" in
3261                         '') : Still unknown.  Probably a generic BSD.
3262                                 osname="$1"
3263                                 osvers="$3"
3264                                 ;;
3265                         esac
3266                         ;;
3267                 esac
3268         else
3269                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3270                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3271                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3272                                 osname=news_os
3273                         fi
3274                         $rm -f UU/kernel.what
3275                 elif test -d c:/. -o -n "$is_os2" ; then
3276                         set X $myuname
3277                         osname=os2
3278                         osvers="$5"
3279                 fi
3280         fi
3281         
3282         case "$targetarch" in
3283         '') ;;
3284         *)  hostarch=$osname
3285             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3286             osvers=''
3287             ;;
3288         esac
3289
3290         : Now look for a hint file osname_osvers, unless one has been
3291         : specified already.
3292         case "$hintfile" in
3293         ''|' ')
3294                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3295                 : Also try without trailing minor version numbers.
3296                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3297                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3298                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3299                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3300                 case "$file" in
3301                 '') dflt=none ;;
3302                 *)  case "$osvers" in
3303                         '') dflt=$file
3304                                 ;;
3305                         *)  if $test -f $src/hints/$file.sh ; then
3306                                         dflt=$file
3307                                 elif $test -f $src/hints/$xfile.sh ; then
3308                                         dflt=$xfile
3309                                 elif $test -f $src/hints/$xxfile.sh ; then
3310                                         dflt=$xxfile
3311                                 elif $test -f $src/hints/$xxxfile.sh ; then
3312                                         dflt=$xxxfile
3313                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3314                                         dflt=$xxxxfile
3315                                 elif $test -f "$src/hints/${osname}.sh" ; then
3316                                         dflt="${osname}"
3317                                 else
3318                                         dflt=none
3319                                 fi
3320                                 ;;
3321                         esac
3322                         ;;
3323                 esac
3324                 if $test -f Policy.sh ; then
3325                         case "$dflt" in
3326                         *Policy*) ;;
3327                         none) dflt="Policy" ;;
3328                         *) dflt="Policy $dflt" ;;
3329                         esac
3330                 fi
3331                 ;;
3332         *)
3333                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3334                 ;;
3335         esac
3336
3337         if $test -f Policy.sh ; then
3338                 $cat <<EOM
3339
3340 There's also a Policy hint file available, which should make the
3341 site-specific (policy) questions easier to answer.
3342 EOM
3343
3344         fi
3345
3346         $cat <<EOM
3347
3348 You may give one or more space-separated answers, or "none" if appropriate.
3349 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3350 is a good thing.  DO NOT give a wrong version or a wrong OS.
3351
3352 EOM
3353
3354         rp="Which of these apply, if any?"
3355         . UU/myread
3356         tans=$ans
3357         for file in $tans; do
3358                 if $test X$file = XPolicy -a -f Policy.sh; then
3359                         . Policy.sh
3360                         $cat Policy.sh >> UU/config.sh
3361                 elif $test -f $src/hints/$file.sh; then
3362                         . $src/hints/$file.sh
3363                         $cat $src/hints/$file.sh >> UU/config.sh
3364                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3365                         : nothing
3366                 else
3367                         : Give one chance to correct a possible typo.
3368                         echo "$file.sh does not exist"
3369                         dflt=$file
3370                         rp="hint to use instead?"
3371                         . UU/myread
3372                         for file in $ans; do
3373                                 if $test -f "$src/hints/$file.sh"; then
3374                                         . $src/hints/$file.sh
3375                                         $cat $src/hints/$file.sh >> UU/config.sh
3376                                 elif $test X$ans = X -o X$ans = Xnone ; then
3377                                         : nothing
3378                                 else
3379                                         echo "$file.sh does not exist -- ignored."
3380                                 fi
3381                         done
3382                 fi
3383         done
3384
3385         hint=recommended
3386         : Remember our hint file for later.
3387         if $test -f "$src/hints/$file.sh" ; then
3388                 hintfile="$file"
3389         else
3390                 hintfile=''
3391         fi
3392 fi
3393 cd UU
3394 ;;
3395 *)
3396         echo " "
3397         echo "Fetching default answers from $config_sh..." >&4
3398         tmp_n="$n"
3399         tmp_c="$c"
3400         cd ..
3401         cp $config_sh config.sh 2>/dev/null
3402         chmod +w config.sh
3403         . ./config.sh
3404         cd UU
3405         cp ../config.sh .
3406         n="$tmp_n"
3407         c="$tmp_c"
3408         hint=previous
3409         ;;
3410 esac
3411 test "$override" && . ./optdef.sh
3412
3413 : Restore computed paths
3414 for file in $loclist $trylist; do
3415         eval $file="\$_$file"
3416 done
3417
3418 cat << EOM
3419
3420 Configure uses the operating system name and version to set some defaults.
3421 The default value is probably right if the name rings a bell. Otherwise,
3422 since spelling matters for me, either accept the default or answer "none"
3423 to leave it blank.
3424
3425 EOM
3426 case "$osname" in
3427         ''|' ')
3428                 case "$hintfile" in
3429                 ''|' '|none) dflt=none ;;
3430                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3431                 esac
3432                 ;;
3433         *) dflt="$osname" ;;
3434 esac
3435 rp="Operating system name?"
3436 . ./myread
3437 case "$ans" in
3438 none)  osname='' ;;
3439 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3440 esac
3441 echo " "
3442 case "$osvers" in
3443         ''|' ')
3444                 case "$hintfile" in
3445                 ''|' '|none) dflt=none ;;
3446                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3447                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3448                         case "$dflt" in
3449                         ''|' ') dflt=none ;;
3450                         esac
3451                         ;;
3452                 esac
3453                 ;;
3454         *) dflt="$osvers" ;;
3455 esac
3456 rp="Operating system version?"
3457 . ./myread
3458 case "$ans" in
3459 none)  osvers='' ;;
3460 *) osvers="$ans" ;;
3461 esac
3462
3463
3464 . ./posthint.sh
3465
3466 : who configured the system
3467 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3468 case "$cf_by" in
3469 "")
3470         cf_by=`(logname) 2>/dev/null`
3471         case "$cf_by" in
3472         "")
3473                 cf_by=`(whoami) 2>/dev/null`
3474                 case "$cf_by" in
3475                 "") cf_by=unknown ;;
3476                 esac ;;
3477         esac ;;
3478 esac
3479
3480 : set up the script used to warn in case of inconsistency
3481 cat <<EOS >whoa
3482 $startsh
3483 EOS
3484 cat <<'EOSC' >>whoa
3485 dflt=y
3486 echo " "
3487 echo "*** WHOA THERE!!! ***" >&4
3488 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3489 rp="    Keep the $hint value?"
3490 . ./myread
3491 case "$ans" in
3492 y) td=$was; tu=$was;;
3493 esac
3494 EOSC
3495
3496 : function used to set $1 to $val
3497 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3498 case "$val$was" in
3499 $define$undef) . ./whoa; eval "$var=\$td";;
3500 $undef$define) . ./whoa; eval "$var=\$tu";;
3501 *) eval "$var=$val";;
3502 esac'
3503
3504 case "$usesocks" in
3505 $define|true|[yY]*)     dflt='y';;
3506 *) dflt='n';;
3507 esac
3508 cat <<EOM
3509
3510 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3511 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3512 to use the PerlIO abstraction layer, this will be implicitly selected.
3513
3514 If this doesn't make any sense to you, just accept the default '$dflt'.
3515 EOM
3516 rp='Build Perl for SOCKS?'
3517 . ./myread
3518 case "$ans" in
3519 y|Y)    val="$define" ;;     
3520 *)      val="$undef" ;;
3521 esac
3522 set usesocks
3523 eval $setvar
3524
3525 case "$usesocks" in
3526 $define|true|[yY]*) useperlio="$define";;
3527 esac
3528
3529 case "$useperlio" in
3530 $define|true|[yY]*|'')  dflt='y';;
3531 *) dflt='n';;
3532 esac
3533 cat <<EOM
3534
3535 Previous version of $package used the standard IO mechanisms as
3536 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
3537 alternate IO mechanisms via the PerlIO abstraction layer, but the
3538 stdio mechanism is still available if needed.  The abstraction layer
3539 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3540 Using PerlIO with sfio may cause problems with some extension modules.
3541
3542 If this doesn't make any sense to you, just accept the default '$dflt'.
3543 EOM
3544 rp='Use the PerlIO abstraction layer?'
3545 . ./myread
3546 case "$ans" in
3547 y|Y) 
3548         val="$define"
3549         ;;
3550 *)      
3551         echo "Ok, doing things the stdio way."
3552         val="$undef"
3553         ;;
3554 esac
3555 set useperlio
3556 eval $setvar 
3557
3558 case "$usesocks" in
3559 $define|true|[yY]*)
3560         case "$useperlio" in
3561         $define|true|[yY]*) ;;
3562         *)      cat >&4 <<EOM
3563
3564 You are using the SOCKS proxy protocol library which means that you
3565 should also use the PerlIO layer.  You may be headed for trouble.
3566
3567 EOM
3568                 ;;
3569         esac
3570         ;;
3571 esac
3572
3573         
3574 case "$usethreads" in
3575 $define|true|[yY]*)     dflt='y';;
3576 *)     # Catch case where user specified ithreads or 5005threads but
3577        # forgot -Dusethreads (A.D. 4/2002)
3578        case "$useithreads$use5005threads" in
3579        *$define*)      
3580                 case "$useperlio" in
3581                 "$define")      dflt='y' ;;
3582                 *)              dflt='n' ;;
3583                 esac
3584                 ;;
3585        *)       dflt='n';;
3586        esac
3587        ;;
3588 esac
3589 cat <<EOM
3590
3591 Perl can be built to take advantage of threads on some systems.
3592 To do so, Configure can be run with -Dusethreads.
3593
3594 Note that Perl built with threading support runs slightly slower
3595 and uses more memory than plain Perl. The current implementation
3596 is believed to be stable, but it is fairly new, and so should be
3597 treated with caution.
3598
3599 If this doesn't make any sense to you, just accept the default '$dflt'.
3600 EOM
3601 rp='Build a threading Perl?'
3602 . ./myread
3603 case "$ans" in
3604 y|Y)    val="$define" ;;
3605 *)      val="$undef" ;;
3606 esac
3607 set usethreads
3608 eval $setvar
3609
3610 case "$usethreads" in
3611 $define)
3612         $cat <<EOM
3613
3614 Since release 5.6, Perl has had two different threading implementations,
3615 the newer interpreter-based version (ithreads) with one interpreter per
3616 thread, and the older 5.005 version (5005threads).
3617 The 5005threads version is effectively unmaintained and will probably be
3618 removed in Perl 5.10, so there should be no need to build a Perl using it
3619 unless needed for backwards compatibility with some existing 5.005threads
3620 code.
3621
3622 EOM
3623         : Default to ithreads unless overridden on command line or with
3624         : old config.sh
3625         dflt='y'
3626         case "$use5005threads" in
3627                 $define|true|[yY]*) dflt='n';;
3628         esac
3629         case "$useithreads" in
3630                 $undef|false|[nN]*) dflt='n';;
3631         esac
3632         rp='Use the newer interpreter-based ithreads?'
3633         . ./myread
3634         case "$ans" in
3635         y|Y)    val="$define" ;;
3636         *)      val="$undef" ;;
3637         esac
3638         set useithreads
3639         eval $setvar
3640         : Now set use5005threads to the opposite value.
3641         case "$useithreads" in
3642         $define) val="$undef" ;;
3643         *) val="$define" ;;
3644         esac
3645         set use5005threads
3646         eval $setvar
3647         ;;
3648 *)
3649         useithreads="$undef"
3650         use5005threads="$undef"
3651         ;;
3652 esac
3653
3654 case "$useithreads$use5005threads" in
3655 "$define$define")
3656         $cat >&4 <<EOM
3657
3658 You cannot have both the ithreads and the 5.005 threads enabled
3659 at the same time.  Disabling the 5.005 threads since they are
3660 much less stable than the ithreads.
3661
3662 EOM
3663         use5005threads="$undef"
3664         ;;
3665 esac
3666
3667 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3668         cat >&4 <<EOF
3669 ***
3670 *** To build with ithreads you must also use the PerlIO layer.
3671 *** Cannot continue, aborting.
3672 ***
3673 EOF
3674         exit 1
3675 fi
3676
3677 case "$d_oldpthreads" in
3678 '')     : Configure tests would be welcome here.  For now, assume undef.
3679         val="$undef" ;;
3680 *)      val="$d_oldpthreads" ;;
3681 esac
3682 set d_oldpthreads
3683 eval $setvar
3684
3685
3686 : Look for a hint-file generated 'call-back-unit'.  If the
3687 : user has specified that a threading perl is to be built,
3688 : we may need to set or change some other defaults.
3689 if $test -f usethreads.cbu; then
3690     echo "Your platform has some specific hints regarding threaded builds, using them..."
3691     . ./usethreads.cbu
3692 else
3693     case "$usethreads" in
3694         "$define"|true|[yY]*)
3695                 $cat <<EOM
3696 (Your platform does not have any specific hints for threaded builds.
3697  Assuming POSIX threads, then.)
3698 EOM
3699         ;;
3700     esac
3701 fi
3702
3703 cat <<EOM
3704
3705 Perl can be built so that multiple Perl interpreters can coexist
3706 within the same Perl executable.
3707 EOM
3708
3709 case "$useithreads" in
3710 $define)
3711         cat <<EOM
3712 This multiple interpreter support is required for interpreter-based threads.
3713 EOM
3714         val="$define"
3715         ;;
3716 *)      case "$usemultiplicity" in
3717         $define|true|[yY]*)     dflt='y';;
3718         *) dflt='n';;
3719         esac
3720         echo " "
3721         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3722         rp='Build Perl for multiplicity?'
3723         . ./myread
3724         case "$ans" in
3725         y|Y)    val="$define" ;;
3726         *)      val="$undef" ;;
3727         esac
3728         ;;
3729 esac
3730 set usemultiplicity
3731 eval $setvar
3732
3733
3734 case "$usemorebits" in
3735 "$define"|true|[yY]*)
3736         use64bitint="$define"
3737         uselongdouble="$define"
3738         usemorebits="$define"
3739         ;;
3740 *)      usemorebits="$undef"
3741         ;;
3742 esac
3743
3744 : make some quick guesses about what we are up against
3745 echo " "
3746 $echo $n "Hmm...  $c"
3747 echo exit 1 >bsd
3748 echo exit 1 >usg
3749 echo exit 1 >v7
3750 echo exit 1 >osf1
3751 echo exit 1 >eunice
3752 echo exit 1 >xenix
3753 echo exit 1 >venix
3754 echo exit 1 >os2
3755 d_bsd="$undef"
3756 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3757 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3758 then
3759         echo "Looks kind of like an OSF/1 system, but we'll see..."
3760         echo exit 0 >osf1
3761 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3762         xxx=`./loc addbib blurfl $pth`
3763         if $test -f $xxx; then
3764         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3765                 echo exit 0 >bsd
3766                 echo exit 0 >usg
3767         else
3768                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3769                         echo "Looks kind of like an extended USG system, but we'll see..."
3770                 else
3771                         echo "Looks kind of like a USG system, but we'll see..."
3772                 fi
3773                 echo exit 0 >usg
3774         fi
3775 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3776         echo "Looks kind of like a BSD system, but we'll see..."
3777         d_bsd="$define"
3778         echo exit 0 >bsd
3779 else
3780         echo "Looks kind of like a Version 7 system, but we'll see..."
3781         echo exit 0 >v7
3782 fi
3783 case "$eunicefix" in
3784 *unixtovms*)
3785         $cat <<'EOI'
3786 There is, however, a strange, musty smell in the air that reminds me of
3787 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3788 EOI
3789         echo exit 0 >eunice
3790         d_eunice="$define"
3791 : it so happens the Eunice I know will not run shell scripts in Unix format
3792         ;;
3793 *)
3794         echo " "
3795         echo "Congratulations.  You aren't running Eunice."
3796         d_eunice="$undef"
3797         ;;
3798 esac
3799 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3800 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3801 : semicolon as a patch separator
3802 case "$p_" in
3803 :) ;;
3804 *)
3805         $cat <<'EOI'
3806 I have the feeling something is not exactly right, however...don't tell me...
3807 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3808 (Or you may be running DOS with DJGPP.)
3809 EOI
3810         echo exit 0 >os2
3811         ;;
3812 esac
3813 if test -f /xenix; then
3814         echo "Actually, this looks more like a XENIX system..."
3815         echo exit 0 >xenix
3816         d_xenix="$define"
3817 else
3818         echo " "
3819         echo "It's not Xenix..."
3820         d_xenix="$undef"
3821 fi
3822 chmod +x xenix
3823 $eunicefix xenix
3824 if test -f /venix; then
3825         echo "Actually, this looks more like a VENIX system..."
3826         echo exit 0 >venix
3827 else
3828         echo " "
3829         if ./xenix; then
3830                 : null
3831         else
3832                 echo "Nor is it Venix..."
3833         fi
3834 fi
3835 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3836 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3837 $rm -f foo
3838
3839 case "$cc" in
3840 '') dflt=cc;;
3841 *) dflt="$cc";;
3842 esac
3843 rp="Use which C compiler?"
3844 . ./myread
3845 cc="$ans"
3846
3847 : See if they have not cc but they do have gcc
3848 . ./trygcc
3849 : Look for a hint-file generated 'call-back-unit'.  Now that the
3850 : user has specified the compiler, we may need to set or change some
3851 : other defaults.
3852 if $test -f cc.cbu; then
3853     . ./cc.cbu
3854 fi
3855 . ./checkcc
3856
3857 echo " "
3858 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3859 $cat >try.c <<EOM
3860 #include <stdio.h>
3861 int main() {
3862 #ifdef __GNUC__
3863 #ifdef __VERSION__
3864         printf("%s\n", __VERSION__);
3865 #else
3866         printf("%s\n", "1");
3867 #endif
3868 #endif
3869         return(0);
3870 }
3871 EOM
3872 if $cc -o try $ccflags $ldflags try.c; then
3873         gccversion=`$run ./try`
3874         case "$gccversion" in
3875         '') echo "You are not using GNU cc." ;;
3876         *)  echo "You are using GNU cc $gccversion."
3877             ccname=gcc
3878             ;;
3879         esac
3880 else
3881         echo " "
3882         echo "*** WHOA THERE!!! ***" >&4
3883         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3884         case "$knowitall" in
3885         '')
3886         echo "    You'd better start hunting for one and let me know about it." >&4
3887                 exit 1
3888                 ;;
3889         esac
3890 fi
3891 $rm -f try try.*
3892 case "$gccversion" in
3893 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3894 esac
3895 case "$gccversion" in
3896 '') gccosandvers='' ;;
3897 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3898    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3899    gccshortvers=''
3900    case "$gccosandvers" in
3901    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3902    $osname$osvers) ;; # looking good
3903    $osname*) cat <<EOM >&4
3904
3905 *** WHOA THERE!!! ***
3906
3907     Your gcc has not been compiled for the exact release of
3908     your operating system ($gccosandvers versus $osname$osvers).
3909
3910     In general it is a good idea to keep gcc synchronized with
3911     the operating system because otherwise serious problems
3912     may ensue when trying to compile software, like Perl.
3913
3914     I'm trying to be optimistic here, though, and will continue.
3915     If later during the configuration and build icky compilation
3916     problems appear (headerfile conflicts being the most common
3917     manifestation), I suggest reinstalling the gcc to match
3918     your operating system release.
3919
3920 EOM
3921       ;;
3922    *) gccosandvers='' ;; # failed to parse, better be silent
3923    esac
3924    ;;
3925 esac
3926 case "$ccname" in
3927 '') ccname="$cc" ;;
3928 esac
3929
3930 # gcc 3.* complain about adding -Idirectories that they already know about,
3931 # so we will take those off from locincpth.
3932 case "$gccversion" in
3933 3*)
3934     echo "main(){}">try.c
3935     for incdir in $locincpth; do
3936        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3937              grep '^c[cp]p*[01]: warning: changing search order '`
3938        if test "X$warn" != X; then
3939            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3940        fi
3941     done
3942     $rm -f try try.*
3943 esac
3944
3945 : decide how portable to be.  Allow command line overrides.
3946 case "$d_portable" in
3947 "$undef") ;;
3948 *)      d_portable="$define" ;;
3949 esac
3950
3951 : set up shell script to do ~ expansion
3952 cat >filexp <<EOSS
3953 $startsh
3954 : expand filename
3955 case "\$1" in
3956  ~/*|~)
3957         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3958         ;;
3959  ~*)
3960         if $test -f /bin/csh; then
3961                 /bin/csh -f -c "glob \$1"
3962                 failed=\$?
3963                 echo ""
3964                 exit \$failed
3965         else
3966                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3967                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3968                 if $test ! -d "\$dir"; then
3969                         me=\`basename \$0\`
3970                         echo "\$me: can't locate home directory for: \$name" >&2
3971                         exit 1
3972                 fi
3973                 case "\$1" in
3974                 */*)
3975                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3976                         ;;
3977                 *)
3978                         echo \$dir
3979                         ;;
3980                 esac
3981         fi
3982         ;;
3983 *)
3984         echo \$1
3985         ;;
3986 esac
3987 EOSS
3988 chmod +x filexp
3989 $eunicefix filexp
3990
3991 : now set up to get a file name
3992 cat <<EOS >getfile
3993 $startsh
3994 EOS
3995 cat <<'EOSC' >>getfile
3996 tilde=''
3997 fullpath=''
3998 already=''
3999 skip=''
4000 none_ok=''
4001 exp_file=''
4002 nopath_ok=''
4003 orig_rp="$rp"
4004 orig_dflt="$dflt"
4005 case "$gfpth" in
4006 '') gfpth='.' ;;
4007 esac
4008
4009 case "$fn" in
4010 *\(*)
4011         : getfile will accept an answer from the comma-separated list
4012         : enclosed in parentheses even if it does not meet other criteria.
4013         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
4014         fn=`echo $fn | sed 's/(.*)//'`
4015         ;;
4016 esac
4017
4018 case "$fn" in
4019 *:*)
4020         loc_file=`expr $fn : '.*:\(.*\)'`
4021         fn=`expr $fn : '\(.*\):.*'`
4022         ;;
4023 esac
4024
4025 case "$fn" in
4026 *~*) tilde=true;;
4027 esac
4028 case "$fn" in
4029 */*) fullpath=true;;
4030 esac
4031 case "$fn" in
4032 *+*) skip=true;;
4033 esac
4034 case "$fn" in
4035 *n*) none_ok=true;;
4036 esac
4037 case "$fn" in
4038 *e*) exp_file=true;;
4039 esac
4040 case "$fn" in
4041 *p*) nopath_ok=true;;
4042 esac
4043
4044 case "$fn" in
4045 *f*) type='File';;
4046 *d*) type='Directory';;
4047 *l*) type='Locate';;
4048 esac
4049
4050 what="$type"
4051 case "$what" in
4052 Locate) what='File';;
4053 esac
4054
4055 case "$exp_file" in
4056 '')
4057         case "$d_portable" in
4058         "$define") ;;
4059         *) exp_file=true;;
4060         esac
4061         ;;
4062 esac
4063
4064 cd ..
4065 while test "$type"; do
4066         redo=''
4067         rp="$orig_rp"
4068         dflt="$orig_dflt"
4069         case "$tilde" in
4070         true) rp="$rp (~name ok)";;
4071         esac
4072         . UU/myread
4073         if test -f UU/getfile.ok && \
4074                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4075         then
4076                 value="$ans"
4077                 ansexp="$ans"
4078                 break
4079         fi
4080         case "$ans" in
4081         none)
4082                 value=''
4083                 ansexp=''
4084                 case "$none_ok" in
4085                 true) type='';;
4086                 esac
4087                 ;;
4088         *)
4089                 case "$tilde" in
4090                 '') value="$ans"
4091                         ansexp="$ans";;
4092                 *)
4093                         value=`UU/filexp $ans`
4094                         case $? in
4095                         0)
4096                                 if test "$ans" != "$value"; then
4097                                         echo "(That expands to $value on this system.)"
4098                                 fi
4099                                 ;;
4100                         *) value="$ans";;
4101                         esac
4102                         ansexp="$value"
4103                         case "$exp_file" in
4104                         '') value="$ans";;
4105                         esac
4106                         ;;
4107                 esac
4108                 case "$fullpath" in
4109                 true)
4110                         case "$ansexp" in
4111                         /*) value="$ansexp" ;;
4112                         [a-zA-Z]:/*) value="$ansexp" ;;
4113                         *)
4114                                 redo=true
4115                                 case "$already" in
4116                                 true)
4117                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4118                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4119                                         ;;
4120                                 *)
4121                                 echo "Please give a full path name, starting with slash." >&4
4122                                         case "$tilde" in
4123                                         true)
4124                                 echo "Note that using ~name is ok provided it expands well." >&4
4125                                                 already=true
4126                                                 ;;
4127                                         esac
4128                                 esac
4129                                 ;;
4130                         esac
4131                         ;;
4132                 esac
4133                 case "$redo" in
4134                 '')
4135                         case "$type" in
4136                         File)
4137                                 for fp in $gfpth; do
4138                                         if test "X$fp" = X.; then
4139                                             pf="$ansexp"
4140                                         else    
4141                                             pf="$fp/$ansexp"
4142                                         fi
4143                                         if test -f "$pf"; then
4144                                                 type=''
4145                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4146                                         then
4147                                                 echo "($value is not a plain file, but that's ok.)"
4148                                                 type=''
4149                                         fi
4150                                         if test X"$type" = X; then
4151                                             value="$pf"
4152                                             break
4153                                         fi
4154                                 done
4155                                 ;;
4156                         Directory)
4157                                 for fp in $gfpth; do
4158                                         if test "X$fp" = X.; then
4159                                             dir="$ans"
4160                                             direxp="$ansexp"
4161                                         else    
4162                                             dir="$fp/$ansexp"
4163                                             direxp="$fp/$ansexp"
4164                                         fi
4165                                         if test -d "$direxp"; then
4166                                                 type=''
4167                                                 value="$dir"
4168                                                 break
4169                                         fi
4170                                 done
4171                                 ;;
4172                         Locate)
4173                                 if test -d "$ansexp"; then
4174                                         echo "(Looking for $loc_file in directory $value.)"
4175                                         value="$value/$loc_file"
4176                                         ansexp="$ansexp/$loc_file"
4177                                 fi
4178                                 if test -f "$ansexp"; then
4179                                         type=''
4180                                 fi
4181                                 case "$nopath_ok" in
4182                                 true)   case "$value" in
4183                                         */*) ;;
4184                                         *)      echo "Assuming $value will be in people's path."
4185                                                 type=''
4186                                                 ;;
4187                                         esac
4188                                         ;;
4189                                 esac
4190                                 ;;
4191                         esac
4192
4193                         case "$skip" in
4194                         true) type='';
4195                         esac
4196
4197                         case "$type" in
4198                         '') ;;
4199                         *)
4200                                 if test "$fastread" = yes; then
4201                                         dflt=y
4202                                 else
4203                                         dflt=n
4204                                 fi
4205                                 rp="$what $value doesn't exist.  Use that name anyway?"
4206                                 . UU/myread
4207                                 dflt=''
4208                                 case "$ans" in
4209                                 y*) type='';;
4210                                 *) echo " ";;
4211                                 esac
4212                                 ;;
4213                         esac
4214                         ;;
4215                 esac
4216                 ;;
4217         esac
4218 done
4219 cd UU
4220 ans="$value"
4221 rp="$orig_rp"
4222 dflt="$orig_dflt"
4223 rm -f getfile.ok
4224 test "X$gfpthkeep" != Xy && gfpth=""
4225 EOSC
4226
4227 : What should the include directory be ?
4228 echo " "
4229 $echo $n "Hmm...  $c"
4230 dflt='/usr/include'
4231 incpath=''
4232 mips_type=''
4233 if $test -f /bin/mips && /bin/mips; then
4234         echo "Looks like a MIPS system..."
4235         $cat >usr.c <<'EOCP'
4236 #ifdef SYSTYPE_BSD43
4237 /bsd43
4238 #endif
4239 EOCP
4240         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4241                 dflt='/bsd43/usr/include'
4242                 incpath='/bsd43'
4243                 mips_type='BSD 4.3'
4244         else
4245                 mips_type='System V'
4246         fi
4247         $rm -f usr.c usr.out
4248         echo "and you're compiling with the $mips_type compiler and libraries."
4249         xxx_prompt=y
4250         echo "exit 0" >mips
4251 else
4252         echo "Doesn't look like a MIPS system."
4253         xxx_prompt=n
4254         echo "exit 1" >mips
4255 fi
4256 chmod +x mips
4257 $eunicefix mips
4258 case "$usrinc" in
4259 '') ;;
4260 *) dflt="$usrinc";;
4261 esac
4262 case "$xxx_prompt" in
4263 y)      fn=d/
4264         echo " "
4265         rp='Where are the include files you want to use?'
4266         . ./getfile
4267         usrinc="$ans"
4268         ;;
4269 *)      usrinc="$dflt"
4270         ;;
4271 esac
4272
4273 : see how we invoke the C preprocessor
4274 echo " "
4275 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4276 cat <<'EOT' >testcpp.c
4277 #define ABC abc
4278 #define XYZ xyz
4279 ABC.XYZ
4280 EOT
4281 cd ..
4282 if test ! -f cppstdin; then
4283         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4284                 # AIX cc -E doesn't show the absolute headerfile
4285                 # locations but we'll cheat by using the -M flag.
4286                 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
4287         else
4288                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4289         fi
4290 else
4291         echo "Keeping your $hint cppstdin wrapper."
4292 fi
4293 chmod 755 cppstdin
4294 wrapper=`pwd`/cppstdin
4295 ok='false'
4296 cd UU
4297
4298 if $test "X$cppstdin" != "X" && \
4299         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4300         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4301 then
4302         echo "You used to use $cppstdin $cppminus so we'll use that again."
4303         case "$cpprun" in
4304         '') echo "But let's see if we can live without a wrapper..." ;;
4305         *)
4306                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4307                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4308                 then
4309                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4310                         ok='true'
4311                 else
4312                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4313                 fi
4314                 ;;
4315         esac
4316 else
4317         case "$cppstdin" in
4318         '') ;;
4319         *)
4320                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4321                 ;;
4322         esac
4323 fi
4324
4325 if $ok; then
4326         : nothing
4327 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4328         $cc -E <testcpp.c >testcpp.out 2>&1; \
4329         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4330         echo "Yup, it does."
4331         x_cpp="$cc -E"
4332         x_minus='';
4333 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4334         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4335         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4336         echo "Yup, it does."
4337         x_cpp="$cc -E"
4338         x_minus='-';
4339 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4340         $cc -P <testcpp.c >testcpp.out 2>&1; \
4341         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4342         echo "Yipee, that works!"
4343         x_cpp="$cc -P"
4344         x_minus='';
4345 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4346         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4347         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4348         echo "At long last!"
4349         x_cpp="$cc -P"
4350         x_minus='-';
4351 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4352         $cpp <testcpp.c >testcpp.out 2>&1; \
4353         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4354         echo "It works!"
4355         x_cpp="$cpp"
4356         x_minus='';
4357 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4358         $cpp - <testcpp.c >testcpp.out 2>&1; \
4359         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4360         echo "Hooray, it works!  I was beginning to wonder."
4361         x_cpp="$cpp"
4362         x_minus='-';
4363 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4364         $wrapper <testcpp.c >testcpp.out 2>&1; \
4365         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4366         x_cpp="$wrapper"
4367         x_minus=''
4368         echo "Eureka!"
4369 else
4370         dflt=''
4371         rp="No dice.  I can't find a C preprocessor.  Name one:"
4372         . ./myread
4373         x_cpp="$ans"
4374         x_minus=''
4375         $x_cpp <testcpp.c >testcpp.out 2>&1
4376         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4377                 echo "OK, that will do." >&4
4378         else
4379 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4380                 exit 1
4381         fi
4382 fi
4383
4384 case "$ok" in
4385 false)
4386         cppstdin="$x_cpp"
4387         cppminus="$x_minus"
4388         cpprun="$x_cpp"
4389         cpplast="$x_minus"
4390         set X $x_cpp
4391         shift
4392         case "$1" in
4393         "$cpp")
4394                 echo "Perhaps can we force $cc -E using a wrapper..."
4395                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4396                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4397                 then
4398                         echo "Yup, we can."
4399                         cppstdin="$wrapper"
4400                         cppminus='';
4401                 else
4402                         echo "Nope, we'll have to live without it..."
4403                 fi
4404                 ;;
4405         esac
4406         case "$cpprun" in
4407         "$wrapper")
4408                 cpprun=''
4409                 cpplast=''
4410                 ;;
4411         esac
4412         ;;
4413 esac
4414
4415 case "$cppstdin" in
4416 "$wrapper"|'cppstdin') ;;
4417 *) $rm -f $wrapper;;
4418 esac
4419 $rm -f testcpp.c testcpp.out
4420
4421 : Set private lib path
4422 case "$plibpth" in
4423 '') if ./mips; then
4424                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4425         fi;;
4426 esac
4427 case "$libpth" in
4428 ' ') dlist='';;
4429 '') dlist="$loclibpth $plibpth $glibpth";;
4430 *) dlist="$libpth";;
4431 esac
4432
4433 : Now check and see which directories actually exist, avoiding duplicates
4434 libpth=''
4435 for xxx in $dlist
4436 do
4437     if $test -d $xxx; then
4438                 case " $libpth " in
4439                 *" $xxx "*) ;;
4440                 *) libpth="$libpth $xxx";;
4441                 esac
4442     fi
4443 done
4444 $cat <<'EOM'
4445
4446 Some systems have incompatible or broken versions of libraries.  Among
4447 the directories listed in the question below, please remove any you
4448 know not to be holding relevant libraries, and add any that are needed.
4449 Say "none" for none.
4450
4451 EOM
4452 case "$libpth" in
4453 '') dflt='none';;
4454 *)
4455         set X $libpth
4456         shift
4457         dflt=${1+"$@"}
4458         ;;
4459 esac
4460 rp="Directories to use for library searches?"
4461 . ./myread
4462 case "$ans" in
4463 none) libpth=' ';;
4464 *) libpth="$ans";;
4465 esac
4466
4467 : compute shared library extension
4468 case "$so" in
4469 '')
4470         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4471                 dflt='sl'
4472         else
4473                 dflt='so'
4474         fi
4475         ;;
4476 *) dflt="$so";;
4477 esac
4478 $cat <<EOM
4479
4480 On some systems, shared libraries may be available.  Answer 'none' if
4481 you want to suppress searching of shared libraries for the remainder
4482 of this configuration.
4483
4484 EOM
4485 rp='What is the file extension used for shared libraries?'
4486 . ./myread
4487 so="$ans"
4488
4489 : Define several unixisms.
4490 : Hints files or command line option can be used to override them.
4491 : The convoluted testing is in case hints files set either the old
4492 : or the new name.
4493 case "$_exe" in
4494 '')     case "$exe_ext" in
4495         '')     ;;
4496         *)      _exe="$exe_ext" ;;
4497         esac
4498         ;;
4499 esac
4500 case "$_a" in
4501 '')     case "$lib_ext" in
4502     '') _a='.a';;
4503         *)      _a="$lib_ext" ;;
4504         esac
4505         ;;
4506 esac
4507 case "$_o" in
4508 '') case "$obj_ext" in
4509         '')     _o='.o';;
4510         *)      _o="$obj_ext";;
4511         esac
4512         ;;
4513 esac
4514 case "$p_" in
4515 '') case "$path_sep" in
4516         '')     p_=':';;
4517         *)      p_="$path_sep";;
4518         esac
4519         ;;
4520 esac
4521 exe_ext=$_exe
4522 lib_ext=$_a
4523 obj_ext=$_o
4524 path_sep=$p_
4525
4526 : Which makefile gets called first.  This is used by make depend.
4527 case "$firstmakefile" in
4528 '') firstmakefile='makefile';;
4529 esac
4530
4531 case "$ccflags" in
4532 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4533 esac
4534
4535 case "$uselongdouble" in
4536 $define|true|[yY]*)     dflt='y';;
4537 *) dflt='n';;
4538 esac
4539 cat <<EOM
4540
4541 Perl can be built to take advantage of long doubles which
4542 (if available) may give more accuracy and range for floating point numbers.
4543
4544 If this doesn't make any sense to you, just accept the default '$dflt'.
4545 EOM
4546 rp='Try to use long doubles if available?'
4547 . ./myread
4548 case "$ans" in
4549 y|Y)    val="$define"   ;;
4550 *)      val="$undef"    ;;
4551 esac
4552 set uselongdouble
4553 eval $setvar
4554
4555 case "$uselongdouble" in
4556 true|[yY]*) uselongdouble="$define" ;;
4557 esac
4558
4559 : Look for a hint-file generated 'call-back-unit'.  If the
4560 : user has specified that long doubles should be used,
4561 : we may need to set or change some other defaults.
4562 if $test -f uselongdouble.cbu; then
4563     echo "Your platform has some specific hints regarding long doubles, using them..."
4564     . ./uselongdouble.cbu
4565 else
4566     case "$uselongdouble" in
4567         $define)
4568                 $cat <<EOM
4569 (Your platform does not have any specific hints for long doubles.)
4570 EOM
4571         ;;
4572     esac
4573 fi
4574
4575 : Looking for optional libraries
4576 echo " "
4577 echo "Checking for optional libraries..." >&4
4578 case "$libs" in
4579 ' '|'') dflt='';;
4580 *) dflt="$libs";;
4581 esac
4582 case "$libswanted" in
4583 '') libswanted='c_s';;
4584 esac
4585 case "$usesocks" in
4586 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4587 esac
4588 libsfound=''
4589 libsfiles=''
4590 libsdirs=''
4591 libspath=''
4592 for thisdir in $libpth $xlibpth; do
4593   test -d $thisdir && libspath="$libspath $thisdir"
4594 done
4595 for thislib in $libswanted; do
4596         for thisdir in $libspath; do
4597             xxx=''
4598             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4599                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4600                 $test -f "$xxx" && eval $libscheck
4601                 $test -f "$xxx" && libstyle=shared
4602             fi
4603             if test ! -f "$xxx"; then
4604                 xxx=$thisdir/lib$thislib.$so
4605                 $test -f "$xxx" && eval $libscheck
4606                 $test -f "$xxx" && libstyle=shared
4607             fi  
4608             if test ! -f "$xxx"; then
4609                 xxx=$thisdir/lib$thislib$_a
4610                 $test -f "$xxx" && eval $libscheck
4611                 $test -f "$xxx" && libstyle=static
4612             fi
4613             if test ! -f "$xxx"; then
4614                 xxx=$thisdir/$thislib$_a
4615                 $test -f "$xxx" && eval $libscheck
4616                 $test -f "$xxx" && libstyle=static
4617             fi
4618             if test ! -f "$xxx"; then
4619                 xxx=$thisdir/lib${thislib}_s$_a
4620                 $test -f "$xxx" && eval $libscheck
4621                 $test -f "$xxx" && libstyle=static
4622                 $test -f "$xxx" && thislib=${thislib}_s
4623             fi
4624             if test ! -f "$xxx"; then
4625                 xxx=$thisdir/Slib$thislib$_a
4626                 $test -f "$xxx" && eval $libscheck
4627                 $test -f "$xxx" && libstyle=static
4628             fi
4629             if $test -f "$xxx"; then
4630                 case "$libstyle" in
4631                 shared) echo "Found -l$thislib (shared)." ;;
4632                 static) echo "Found -l$thislib." ;;
4633                 *)      echo "Found -l$thislib ($libstyle)." ;;
4634                 esac
4635                 case " $dflt " in
4636                 *"-l$thislib "*);;
4637                 *) dflt="$dflt -l$thislib"
4638                    libsfound="$libsfound $xxx"
4639                    yyy=`basename $xxx`
4640                    libsfiles="$libsfiles $yyy"
4641                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4642                    case " $libsdirs " in
4643                    *" $yyy "*) ;;
4644                    *) libsdirs="$libsdirs $yyy" ;;
4645                    esac
4646                    ;;
4647                 esac
4648                 break
4649             fi  
4650         done
4651         if $test ! -f "$xxx"; then
4652             echo "No -l$thislib."
4653         fi
4654 done
4655 set X $dflt
4656 shift
4657 dflt="$*"
4658 case "$libs" in
4659 '') dflt="$dflt";;
4660 *) dflt="$libs";;
4661 esac
4662 case "$dflt" in
4663 ' '|'') dflt='none';;
4664 esac
4665
4666 $cat <<EOM
4667
4668 In order to compile $package on your machine, a number of libraries
4669 are usually needed.  Include any other special libraries here as well.
4670 Say "none" for none.  The default list is almost always right.
4671 EOM
4672
4673 echo " "
4674 rp="What libraries to use?"
4675 . ./myread
4676 case "$ans" in
4677 none) libs=' ';;
4678 *) libs="$ans";;
4679 esac
4680
4681 : determine optimization, if desired, or use for debug flag also
4682 case "$optimize" in
4683 ' '|$undef) dflt='none';;
4684 '') dflt='-O';;
4685 *) dflt="$optimize";;
4686 esac
4687 $cat <<EOH
4688
4689 By default, $package compiles with the -O flag to use the optimizer.
4690 Alternately, you might want to use the symbolic debugger, which uses
4691 the -g flag (on traditional Unix systems).  Either flag can be
4692 specified here.  To use neither flag, specify the word "none".
4693
4694 EOH
4695 rp="What optimizer/debugger flag should be used?"
4696 . ./myread
4697 optimize="$ans"
4698 case "$optimize" in
4699 'none') optimize=" ";;
4700 esac
4701
4702 dflt=''
4703 : We will not override a previous value, but we might want to
4704 : augment a hint file
4705 case "$hint" in
4706 default|recommended)
4707         case "$gccversion" in
4708         1*) dflt='-fpcc-struct-return' ;;
4709         esac
4710         case "$optimize" in
4711         *-g*) dflt="$dflt -DDEBUGGING";;
4712         esac
4713         case "$gccversion" in
4714         2*) if test -d /etc/conf/kconfig.d &&
4715                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4716                 then
4717                         # Interactive Systems (ISC) POSIX mode.
4718                         dflt="$dflt -posix"
4719                 fi
4720                 ;;
4721         esac
4722         case "$gccversion" in
4723         1*) ;;
4724         2.[0-8]*) ;;
4725         ?*)     echo " "
4726                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4727                 echo 'int main(void) { return 0; }' > gcctest.c
4728                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4729                         echo "Yes, it does." 2>&1
4730                         case "$ccflags" in
4731                         *strict-aliasing*)
4732                                 echo "Leaving current flags $ccflags alone." 2>&1
4733                                 ;;
4734                         *) dflt="$dflt -fno-strict-aliasing" ;;
4735                         esac
4736                 else
4737                         echo "Nope, it doesn't, but that's ok." 2>&1
4738                 fi
4739                 ;;
4740         esac
4741         # For gcc, adding -pipe speeds up compilations for some, but apparently
4742         # some assemblers can't read from stdin.  (It also slows down compilations
4743         # in other cases, but those are apparently rarer these days.)  AD 5/2004.
4744         case "$gccversion" in
4745         ?*)     echo " "
4746                 echo "Checking if your compiler accepts -pipe" 2>&1
4747                 echo 'int main(void) { return 0; }' > gcctest.c
4748                 if $cc -O2 -pipe -o gcctest gcctest.c; then
4749                         echo "Yes, it does." 2>&1
4750                         case "$ccflags" in
4751                         *-pipe*)
4752                                 echo "Leaving current flags $ccflags alone." 2>&1
4753                                 ;;
4754                         *) dflt="$dflt -pipe" ;;
4755                         esac
4756                 else
4757                         echo "Nope, it doesn't, but that's ok." 2>&1
4758                 fi
4759                 ;;
4760         esac
4761         ;;
4762 esac
4763
4764 case "$mips_type" in
4765 *BSD*|'') inclwanted="$locincpth $usrinc";;
4766 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4767 esac
4768 for thisincl in $inclwanted; do
4769         if $test -d $thisincl; then
4770                 if $test x$thisincl != x$usrinc; then
4771                         case "$dflt" in
4772                         *" -I$thisincl "*);;
4773                         *) dflt="$dflt -I$thisincl ";;
4774                         esac
4775                 fi
4776         fi
4777 done
4778
4779 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4780         xxx=true;
4781 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4782         xxx=true;
4783 else
4784         xxx=false;
4785 fi;
4786 if $xxx; then
4787         case "$dflt" in
4788         *$2*);;
4789         *) dflt="$dflt -D$2";;
4790         esac;
4791 fi'
4792
4793 set signal.h LANGUAGE_C; eval $inctest
4794
4795 case "$usesocks" in
4796 $define)
4797         ccflags="$ccflags -DSOCKS"
4798         ;;
4799 esac
4800
4801 case "$hint" in
4802 default|recommended) dflt="$ccflags $dflt" ;;
4803 *) dflt="$ccflags";;
4804 esac
4805
4806 case "$dflt" in
4807 ''|' ') dflt=none;;
4808 esac
4809
4810 $cat <<EOH
4811
4812 Your C compiler may want other flags.  For this question you should include
4813 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4814 but you should NOT include libraries or ld flags like -lwhatever.  If you
4815 want $package to honor its debug switch, you should include -DDEBUGGING here.
4816 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4817
4818 To use no flags, specify the word "none".
4819
4820 EOH
4821 set X $dflt
4822 shift
4823 dflt=${1+"$@"}
4824 rp="Any additional cc flags?"
4825 . ./myread
4826 case "$ans" in
4827 none) ccflags='';;
4828 *) ccflags="$ans";;
4829 esac
4830
4831 : the following weeds options from ccflags that are of no interest to cpp
4832 case "$cppflags" in
4833 '') cppflags="$ccflags" ;;
4834 *)  cppflags="$cppflags $ccflags" ;;
4835 esac
4836 case "$gccversion" in
4837 1*) cppflags="$cppflags -D__GNUC__"
4838 esac
4839 case "$mips_type" in
4840 '');;
4841 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4842 esac
4843 case "$cppflags" in
4844 '');;
4845 *)
4846         echo " "
4847         echo "Let me guess what the preprocessor flags are..." >&4
4848         set X $cppflags
4849         shift
4850         cppflags=''
4851         $cat >cpp.c <<'EOM'
4852 #define BLURFL foo
4853
4854 BLURFL xx LFRULB
4855 EOM
4856         previous=''
4857         for flag in $*
4858         do
4859                 case "$flag" in
4860                 -*) ftry="$flag";;
4861                 *) ftry="$previous $flag";;
4862                 esac
4863                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4864                         >cpp1.out 2>/dev/null && \
4865                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4866                         >cpp2.out 2>/dev/null && \
4867                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4868                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4869                 then
4870                         cppflags="$cppflags $ftry"
4871                         previous=''
4872                 else
4873                         previous="$flag"
4874                 fi
4875         done
4876         set X $cppflags
4877         shift
4878         cppflags=${1+"$@"}
4879         case "$cppflags" in
4880         *-*)  echo "They appear to be: $cppflags";;
4881         esac
4882         $rm -f cpp.c cpp?.out
4883         ;;
4884 esac
4885
4886 : flags used in final linking phase
4887 case "$ldflags" in
4888 '') if ./venix; then
4889                 dflt='-i -z'
4890         else
4891                 dflt=''
4892         fi
4893         case "$ccflags" in
4894         *-posix*) dflt="$dflt -posix" ;;
4895         esac
4896         ;;
4897 *) dflt="$ldflags";;
4898 esac
4899
4900 : Try to guess additional flags to pick up local libraries.
4901 for thislibdir in $libpth; do
4902         case " $loclibpth " in
4903         *" $thislibdir "*)
4904                 case "$dflt " in
4905                 *"-L$thislibdir "*) ;;
4906                 *)  dflt="$dflt -L$thislibdir" ;;
4907                 esac
4908                 ;;
4909         esac
4910 done
4911
4912 case "$dflt" in
4913 '') dflt='none' ;;
4914 esac
4915
4916 $cat <<EOH
4917
4918 Your C linker may need flags.  For this question you should
4919 include -L/whatever and any other flags used by the C linker, but you
4920 should NOT include libraries like -lwhatever.
4921
4922 Make sure you include the appropriate -L/path flags if your C linker
4923 does not normally search all of the directories you specified above,
4924 namely
4925         $libpth
4926 To use no flags, specify the word "none".
4927
4928 EOH
4929
4930 rp="Any additional ld flags (NOT including libraries)?"
4931 . ./myread
4932 case "$ans" in
4933 none) ldflags='';;
4934 *) ldflags="$ans";;
4935 esac
4936 rmlist="$rmlist pdp11"
4937
4938 : coherency check
4939 echo " "
4940 echo "Checking your choice of C compiler and flags for coherency..." >&4
4941 $cat > try.c <<'EOF'
4942 #include <stdio.h>
4943 int main() { printf("Ok\n"); return(0); }
4944 EOF
4945 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4946 shift
4947 $cat >try.msg <<'EOM'
4948 I've tried to compile and run the following simple program:
4949
4950 EOM
4951 $cat try.c >> try.msg
4952
4953 $cat >> try.msg <<EOM
4954
4955 I used the command:
4956
4957         $*
4958         $run ./try
4959
4960 and I got the following output:
4961
4962 EOM
4963 dflt=y
4964 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4965         if $sh -c "$run ./try" >>try.msg 2>&1; then
4966                 xxx=`$run ./try`
4967                 case "$xxx" in
4968                 "Ok") dflt=n ;;
4969                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4970                         case " $libs " in
4971                         *" -lsfio "*)
4972                                 cat >> try.msg <<'EOQS'
4973 If $libs contains -lsfio, and sfio is mis-configured, then it
4974 sometimes (apparently) runs and exits with a 0 status, but with no
4975 output!  It may have to do with sfio's use of _exit vs. exit.
4976
4977 EOQS
4978                                 rp="You have a big problem.  Shall I abort Configure"
4979                                 dflt=y
4980                                 ;;
4981                         esac
4982                         ;;
4983                 esac
4984         else
4985                 echo "The program compiled OK, but exited with status $?." >>try.msg
4986                 rp="You have a problem.  Shall I abort Configure"
4987                 dflt=y
4988         fi
4989 else
4990         echo "I can't compile the test program." >>try.msg
4991         rp="You have a BIG problem.  Shall I abort Configure"
4992         dflt=y
4993 fi
4994 case "$dflt" in
4995 y)
4996         $cat try.msg >&4
4997         case "$knowitall" in
4998         '')
4999                 echo "(The supplied flags or libraries might be incorrect.)"
5000                 ;;
5001         *) dflt=n;;
5002         esac
5003         echo " "
5004         . ./myread
5005         case "$ans" in
5006         n*|N*) ;;
5007         *)      echo "Ok.  Stopping Configure." >&4
5008                 exit 1
5009                 ;;
5010         esac
5011         ;;
5012 n) echo "OK, that should do.";;
5013 esac
5014 $rm -f try try.* core
5015
5016 : define a shorthand compile call
5017 compile='
5018 mc_file=$1;
5019 shift;
5020 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5021 : define a shorthand compile call for compilations that should be ok.
5022 compile_ok='
5023 mc_file=$1;
5024 shift;
5025 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5026
5027 : determine filename position in cpp output
5028 echo " "
5029 echo "Computing filename position in cpp output for #include directives..." >&4
5030 case "$osname" in
5031 vos) testaccess=-e ;;
5032 *)   testaccess=-r ;;
5033 esac
5034 echo '#include <stdio.h>' > foo.c
5035 $cat >fieldn <<EOF
5036 $startsh
5037 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5038 $grep '^[       ]*#.*stdio\.h' | \
5039 while read cline; do
5040         pos=1
5041         set \$cline
5042         while $test \$# -gt 0; do
5043                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5044                         echo "\$pos"
5045                         exit 0
5046                 fi
5047                 shift
5048                 pos=\`expr \$pos + 1\`
5049         done
5050 done
5051 EOF
5052 chmod +x fieldn
5053 fieldn=`./fieldn`
5054 $rm -f foo.c fieldn
5055 case $fieldn in
5056 '') pos='???';;
5057 1) pos=first;;
5058 2) pos=second;;
5059 3) pos=third;;
5060 *) pos="${fieldn}th";;
5061 esac
5062 echo "Your cpp writes the filename in the $pos field of the line."
5063
5064 case "$osname" in
5065 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5066 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5067 *)   cppfilter='' ;;
5068 esac
5069 : locate header file
5070 $cat >findhdr <<EOF
5071 $startsh
5072 wanted=\$1
5073 name=''
5074 for usrincdir in $usrinc
5075 do
5076         if test -f \$usrincdir/\$wanted; then
5077                 echo "\$usrincdir/\$wanted"
5078                 exit 0
5079         fi
5080 done
5081 awkprg='{ print \$$fieldn }'
5082 echo "#include <\$wanted>" > foo\$\$.c
5083 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5084 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5085 while read cline; do
5086         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5087         case "\$name" in
5088         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5089         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5090         *) exit 2;;
5091         esac;
5092 done;
5093 #
5094 # status = 0: grep returned 0 lines, case statement not executed
5095 # status = 1: headerfile found
5096 # status = 2: while loop executed, no headerfile found
5097 #
5098 status=\$?
5099 $rm -f foo\$\$.c;
5100 if test \$status -eq 1; then
5101         exit 0;
5102 fi
5103 exit 1
5104 EOF
5105 chmod +x findhdr
5106
5107 : define an alternate in-header-list? function
5108 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5109 cont=true; xxf="echo \"<\$1> found.\" >&4";
5110 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5111 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5112 esac;
5113 case $# in 4) instead=instead;; *) instead="at last";; esac;
5114 while $test "$cont"; do
5115         xxx=`./findhdr $1`
5116         var=$2; eval "was=\$$2";
5117         if $test "$xxx" && $test -r "$xxx";
5118         then eval $xxf;
5119         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5120                 cont="";
5121         else eval $xxnf;
5122         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5123         set $yyy; shift; shift; yyy=$@;
5124         case $# in 0) cont="";;
5125         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5126                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5127         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5128                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5129         esac;
5130 done;
5131 while $test "$yyy";
5132 do set $yyy; var=$2; eval "was=\$$2";
5133         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5134         set $yyy; shift; shift; yyy=$@;
5135 done'
5136
5137 : see if stdlib is available
5138 set stdlib.h i_stdlib
5139 eval $inhdr
5140
5141 : check for lengths of integral types
5142 echo " "
5143 case "$intsize" in
5144 '')
5145         echo "Checking to see how big your integers are..." >&4
5146         $cat >try.c <<EOCP
5147 #include <stdio.h>
5148 #$i_stdlib I_STDLIB
5149 #ifdef I_STDLIB
5150 #include <stdlib.h>
5151 #endif
5152 int main()
5153 {
5154         printf("intsize=%d;\n", (int)sizeof(int));
5155         printf("longsize=%d;\n", (int)sizeof(long));
5156         printf("shortsize=%d;\n", (int)sizeof(short));
5157         exit(0);
5158 }
5159 EOCP
5160         set try
5161         if eval $compile_ok && $run ./try > /dev/null; then
5162                 eval `$run ./try`
5163                 echo "Your integers are $intsize bytes long."
5164                 echo "Your long integers are $longsize bytes long."
5165                 echo "Your short integers are $shortsize bytes long."
5166         else
5167                 $cat >&4 <<EOM
5168 !
5169 Help! I can't compile and run the intsize test program: please enlighten me!
5170 (This is probably a misconfiguration in your system or libraries, and
5171 you really ought to fix it.  Still, I'll try anyway.)
5172 !
5173 EOM
5174                 dflt=4
5175                 rp="What is the size of an integer (in bytes)?"
5176                 . ./myread
5177                 intsize="$ans"
5178                 dflt=$intsize
5179                 rp="What is the size of a long integer (in bytes)?"
5180                 . ./myread
5181                 longsize="$ans"
5182                 dflt=2
5183                 rp="What is the size of a short integer (in bytes)?"
5184                 . ./myread
5185                 shortsize="$ans"
5186         fi
5187         ;;
5188 esac
5189 $rm -f try try.*
5190
5191 : check for long long
5192 echo " "
5193 echo "Checking to see if you have long long..." >&4
5194 echo 'int main() { long long x = 7; return 0; }' > try.c
5195 set try
5196 if eval $compile; then
5197         val="$define"
5198         echo "You have long long."
5199 else
5200         val="$undef"
5201         echo "You do not have long long."
5202 fi
5203 $rm try.*
5204 set d_longlong
5205 eval $setvar
5206
5207 : check for length of long long
5208 case "${d_longlong}${longlongsize}" in
5209 $define)
5210         echo " "
5211         echo "Checking to see how big your long longs are..." >&4
5212         $cat >try.c <<'EOCP'
5213 #include <stdio.h>
5214 int main()
5215 {
5216     printf("%d\n", (int)sizeof(long long));
5217     return(0);
5218 }
5219 EOCP
5220         set try
5221         if eval $compile_ok; then
5222                 longlongsize=`$run ./try`
5223                 echo "Your long longs are $longlongsize bytes long."
5224         else
5225                 dflt='8'
5226                 echo " "
5227                 echo "(I can't seem to compile the test program.  Guessing...)"
5228                 rp="What is the size of a long long (in bytes)?"
5229                 . ./myread
5230                 longlongsize="$ans"
5231         fi
5232         if $test "X$longsize" = "X$longlongsize"; then
5233                 echo "(That isn't any different from an ordinary long.)"
5234         fi      
5235         ;;
5236 esac
5237 $rm -f try.* try
5238
5239 : see if inttypes.h is available
5240 : we want a real compile instead of Inhdr because some systems
5241 : have an inttypes.h which includes non-existent headers
5242 echo " "
5243 $cat >try.c <<EOCP
5244 #include <inttypes.h>
5245 int main() {
5246         static int32_t foo32 = 0x12345678;
5247 }
5248 EOCP
5249 set try
5250 if eval $compile; then
5251         echo "<inttypes.h> found." >&4
5252         val="$define"
5253 else
5254         echo "<inttypes.h> NOT found." >&4
5255         val="$undef"
5256 fi
5257 $rm -f try.c try
5258 set i_inttypes
5259 eval $setvar
5260
5261 : check for int64_t
5262 echo " "
5263 echo "Checking to see if you have int64_t..." >&4
5264 $cat >try.c <<EOCP
5265 #include <sys/types.h>
5266 #$i_inttypes I_INTTYPES
5267 #ifdef I_INTTYPES
5268 #include <inttypes.h>
5269 #endif
5270 int main() { int64_t x = 7; }
5271 EOCP
5272 set try
5273 if eval $compile; then
5274         val="$define"
5275         echo "You have int64_t."
5276 else
5277         val="$undef"
5278         echo "You do not have int64_t."
5279 fi
5280 $rm -f try try.*
5281 set d_int64_t
5282 eval $setvar
5283
5284
5285 echo " "
5286 echo "Checking which 64-bit integer type we could use..." >&4
5287
5288 case "$intsize" in
5289 8) val=int
5290    set quadtype
5291    eval $setvar
5292    val='"unsigned int"'
5293    set uquadtype
5294    eval $setvar
5295    quadkind=1
5296    ;;
5297 *) case "$longsize" in
5298    8) val=long
5299       set quadtype
5300       eval $setvar
5301       val='"unsigned long"'
5302       set uquadtype
5303       eval $setvar
5304       quadkind=2
5305       ;;
5306    *) case "$d_longlong:$longlongsize" in
5307       define:8)
5308         val='"long long"'
5309         set quadtype
5310         eval $setvar
5311         val='"unsigned long long"'
5312         set uquadtype
5313         eval $setvar
5314         quadkind=3
5315         ;;
5316       *) case "$d_int64_t" in
5317          define)
5318            val=int64_t
5319            set quadtype
5320            eval $setvar
5321            val=uint64_t
5322            set uquadtype
5323            eval $setvar
5324            quadkind=4
5325            ;;
5326          esac
5327          ;;
5328       esac
5329       ;;
5330    esac
5331    ;;
5332 esac
5333
5334 case "$quadtype" in
5335 '')     echo "Alas, no 64-bit integer types in sight." >&4
5336         d_quad="$undef"
5337         ;;
5338 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5339         d_quad="$define"
5340         ;;
5341 esac
5342
5343
5344 case "$uselonglong" in
5345 "$define"|true|[yY]*)
5346         cat <<EOM >&4
5347
5348 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5349 EOM
5350         use64bitint="$define"
5351         ;;
5352 esac                          
5353 case "$use64bits" in
5354 "$define"|true|[yY]*)
5355         cat <<EOM >&4
5356
5357 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5358 EOM
5359         use64bitint="$define"
5360         ;;
5361 esac                          
5362 case "$use64bitints" in
5363 "$define"|true|[yY]*)
5364         cat <<EOM >&4
5365
5366 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5367 EOM
5368         use64bitint="$define"
5369         ;;
5370 esac                          
5371 case "$use64bitsint" in
5372 "$define"|true|[yY]*)
5373         cat <<EOM >&4
5374
5375 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5376 EOM
5377         use64bitint="$define"
5378         ;;
5379 esac                          
5380 case "$uselonglongs" in
5381 "$define"|true|[yY]*)
5382         cat <<EOM >&4
5383
5384 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5385 EOM
5386         use64bitint="$define"
5387         ;;
5388 esac                          
5389 case "$use64bitsall" in
5390 "$define"|true|[yY]*)
5391         cat <<EOM >&4
5392
5393 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5394 EOM
5395         use64bitall="$define"
5396         ;;
5397 esac                          
5398
5399 case "$ccflags" in
5400 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5401 esac
5402 case "$use64bitall" in
5403 "$define"|true|[yY]*) use64bitint="$define" ;;
5404 esac
5405
5406 case "$longsize" in
5407 8) cat <<EOM
5408
5409 You have natively 64-bit long integers.
5410 EOM
5411    val="$define"
5412    ;;
5413 *) case "$use64bitint" in
5414    "$define"|true|[yY]*) dflt='y';;
5415    *) dflt='n';;
5416    esac
5417    case "$d_quad" in
5418    "$define") ;;
5419    *) dflt='n' ;;
5420    esac
5421    cat <<EOM
5422
5423 Perl can be built to take advantage of 64-bit integer types
5424 on some systems.  To do so, Configure can be run with -Duse64bitint.
5425 Choosing this option will most probably introduce binary incompatibilities.
5426
5427 If this doesn't make any sense to you, just accept the default '$dflt'.
5428 (The default has been chosen based on your configuration.)
5429 EOM
5430    rp='Try to use 64-bit integers, if available?'
5431    . ./myread
5432    case "$ans" in
5433    [yY]*) val="$define" ;;
5434    *)     val="$undef"  ;;
5435    esac
5436    ;;
5437 esac
5438 set use64bitint
5439 eval $setvar
5440
5441 case "$use64bitall" in
5442 "$define"|true|[yY]*) dflt='y' ;;
5443 *) case "$longsize" in
5444    8) dflt='y' ;;
5445    *) dflt='n' ;;
5446    esac
5447    ;;
5448 esac    
5449 cat <<EOM
5450
5451 You may also choose to try maximal 64-bitness.  It means using as much
5452 64-bitness as possible on the platform.  This in turn means even more
5453 binary incompatibilities.  On the other hand, your platform may not
5454 have any more 64-bitness available than what you already have chosen.
5455
5456 If this doesn't make any sense to you, just accept the default '$dflt'.
5457 (The default has been chosen based on your configuration.)
5458 EOM
5459 rp='Try to use maximal 64-bit support, if available?'
5460 . ./myread
5461 case "$ans" in
5462 [yY]*) val="$define" ;;
5463 *)     val="$undef"  ;;
5464 esac
5465 set use64bitall
5466 eval $setvar
5467 case "$use64bitall" in
5468 "$define")
5469         case "$use64bitint" in
5470         "$undef")
5471                 cat <<EOM
5472
5473 Since you have chosen a maximally 64-bit build, I'm also turning on
5474 the use of 64-bit integers.
5475 EOM
5476                 use64bitint="$define" ;;
5477         esac
5478         ;;
5479 esac
5480
5481 : Look for a hint-file generated 'call-back-unit'.  If the
5482 : user has specified that a 64-bit perl is to be built,
5483 : we may need to set or change some other defaults.
5484 if $test -f use64bitint.cbu; then
5485         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5486         . ./use64bitint.cbu
5487 fi
5488 case "$use64bitint" in
5489 "$define"|true|[yY]*)
5490         case "$longsize" in
5491         4) case "$archname64" in
5492            '') archname64=64int ;;
5493            esac
5494            ;;
5495         esac
5496         ;;
5497 esac
5498
5499 : Look for a hint-file generated 'call-back-unit'.  If the
5500 : user has specified that a maximally 64-bit perl is to be built,
5501 : we may need to set or change some other defaults.
5502 if $test -f use64bitall.cbu; then
5503         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5504         . ./use64bitall.cbu
5505 fi
5506 case "$use64bitall" in
5507 "$define"|true|[yY]*)
5508         case "$longsize" in
5509         4) case "$archname64" in
5510            ''|64int) archname64=64all ;;
5511            esac
5512            ;;
5513         esac
5514         ;;
5515 esac
5516
5517 case "$d_quad:$use64bitint" in
5518 $undef:$define)
5519         cat >&4 <<EOF
5520
5521 *** You have chosen to use 64-bit integers,
5522 *** but none can be found.
5523 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5524 *** Cannot continue, aborting.
5525
5526 EOF
5527         exit 1
5528         ;;
5529 esac
5530
5531 : check for length of double
5532 echo " "
5533 case "$doublesize" in
5534 '')
5535         echo "Checking to see how big your double precision numbers are..." >&4
5536         $cat >try.c <<EOCP
5537 #include <stdio.h>
5538 #$i_stdlib I_STDLIB
5539 #ifdef I_STDLIB
5540 #include <stdlib.h>
5541 #endif
5542 int main()
5543 {
5544     printf("%d\n", (int)sizeof(double));
5545     exit(0);
5546 }
5547 EOCP
5548         set try
5549         if eval $compile_ok; then
5550                 doublesize=`$run ./try`
5551                 echo "Your double is $doublesize bytes long."
5552         else
5553                 dflt='8'
5554                 echo "(I can't seem to compile the test program.  Guessing...)"
5555                 rp="What is the size of a double precision number (in bytes)?"
5556                 . ./myread
5557                 doublesize="$ans"
5558         fi
5559         ;;
5560 esac
5561 $rm -f try.c try
5562
5563 : check for long doubles
5564 echo " "
5565 echo "Checking to see if you have long double..." >&4
5566 echo 'int main() { long double x = 7.0; }' > try.c
5567 set try
5568 if eval $compile; then
5569         val="$define"
5570         echo "You have long double."
5571 else
5572         val="$undef"
5573         echo "You do not have long double."
5574 fi
5575 $rm try.*
5576 set d_longdbl
5577 eval $setvar
5578
5579 : check for length of long double
5580 case "${d_longdbl}${longdblsize}" in
5581 $define)
5582         echo " "
5583         echo "Checking to see how big your long doubles are..." >&4
5584         $cat >try.c <<'EOCP'
5585 #include <stdio.h>
5586 int main()
5587 {
5588         printf("%d\n", sizeof(long double));
5589 }
5590 EOCP
5591         set try
5592         set try
5593         if eval $compile; then
5594                 longdblsize=`$run ./try`
5595                 echo "Your long doubles are $longdblsize bytes long."
5596         else
5597                 dflt='8'
5598                 echo " "
5599                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5600                 rp="What is the size of a long double (in bytes)?"
5601                 . ./myread
5602                 longdblsize="$ans"
5603         fi
5604         if $test "X$doublesize" = "X$longdblsize"; then
5605                 echo "That isn't any different from an ordinary double."
5606                 echo "I'll keep your setting anyway, but you may see some"
5607                 echo "harmless compilation warnings."
5608         fi      
5609         ;;
5610 esac
5611 $rm -f try.* try
5612
5613 : determine the architecture name
5614 echo " "
5615 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5616         tarch=`arch`"-$osname"
5617 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5618         if uname -m > tmparch 2>&1 ; then
5619                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5620                         -e 's/$/'"-$osname/" tmparch`
5621         else
5622                 tarch="$osname"
5623         fi
5624         $rm -f tmparch
5625 else
5626         tarch="$osname"
5627 fi
5628 case "$myarchname" in
5629 ''|"$tarch") ;;
5630 *)
5631         echo "(Your architecture name used to be $myarchname.)"
5632         archname=''
5633         ;;
5634 esac
5635 case "$targetarch" in
5636 '') ;;
5637 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5638 esac
5639 myarchname="$tarch"
5640 case "$archname" in
5641 '') dflt="$tarch";;
5642 *) dflt="$archname";;
5643 esac
5644 rp='What is your architecture name'
5645 . ./myread
5646 archname="$ans"
5647 case "$usethreads" in
5648 $define)
5649         echo "Threads selected." >&4
5650         case "$archname" in
5651         *-thread*) echo "...and architecture name already has -thread." >&4
5652                 ;;
5653         *)      archname="$archname-thread"
5654                 echo "...setting architecture name to $archname." >&4
5655                 ;;
5656         esac
5657         ;;
5658 esac
5659 case "$usemultiplicity" in
5660 $define)
5661         echo "Multiplicity selected." >&4
5662         case "$archname" in
5663         *-multi*) echo "...and architecture name already has -multi." >&4
5664                 ;;
5665         *)      archname="$archname-multi"
5666                 echo "...setting architecture name to $archname." >&4
5667                 ;;
5668         esac
5669         ;;
5670 esac
5671 case "$use64bitint$use64bitall" in
5672 *"$define"*)
5673         case "$archname64" in
5674         '')
5675                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5676                 ;;
5677         *)
5678                 case "$use64bitint" in
5679                 "$define") echo "64 bit integers selected." >&4 ;;
5680                 esac
5681                 case "$use64bitall" in
5682                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5683                 esac
5684                 case "$archname" in
5685                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5686                         ;;
5687                 *)      archname="$archname-$archname64"
5688                         echo "...setting architecture name to $archname." >&4
5689                         ;;
5690                 esac
5691                 ;;
5692         esac
5693 esac
5694 case "$uselongdouble" in
5695 $define)
5696         echo "Long doubles selected." >&4
5697         case "$longdblsize" in
5698         $doublesize)
5699                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5700                 ;;
5701         *)
5702                 case "$archname" in
5703                 *-ld*) echo "...and architecture name already has -ld." >&4
5704                         ;;
5705                 *)      archname="$archname-ld"
5706                         echo "...setting architecture name to $archname." >&4
5707                         ;;
5708                 esac
5709                 ;;
5710         esac
5711         ;;
5712 esac
5713 case "$useperlio" in
5714 $define)
5715         echo "Perlio selected." >&4
5716         ;;
5717 *)
5718         echo "Perlio not selected, using stdio." >&4
5719         case "$archname" in
5720         *-stdio*) echo "...and architecture name already has -stdio." >&4
5721                 ;;
5722         *)      archname="$archname-stdio"
5723                 echo "...setting architecture name to $archname." >&4
5724                 ;;
5725         esac
5726         ;;
5727 esac
5728 if $test -f archname.cbu; then
5729         echo "Your platform has some specific hints for architecture name, using them..."
5730         . ./archname.cbu
5731 fi
5732
5733 : determine root of directory hierarchy where package will be installed.
5734 case "$prefix" in
5735 '')
5736         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5737         ;;
5738 *?/)
5739         dflt=`echo "$prefix" | sed 's/.$//'`
5740         ;;
5741 *)
5742         dflt="$prefix"
5743         ;;
5744 esac
5745 $cat <<EOM
5746
5747 By default, $package will be installed in $dflt/bin, manual pages
5748 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5749 installation directories. Typically this is something like /usr/local.
5750 If you wish to have binaries under /usr/bin but other parts of the
5751 installation under /usr/local, that's ok: you will be prompted
5752 separately for each of the installation directories, the prefix being
5753 only used to set the defaults.
5754
5755 EOM
5756 fn=d~
5757 rp='Installation prefix to use?'
5758 . ./getfile
5759 oldprefix=''
5760 case "$prefix" in
5761 '') ;;
5762 *)
5763         case "$ans" in
5764         "$prefix") ;;
5765         *) oldprefix="$prefix";;
5766         esac
5767         ;;
5768 esac
5769 prefix="$ans"
5770 prefixexp="$ansexp"
5771
5772 case "$afsroot" in
5773 '')     afsroot=/afs ;;
5774 *)      afsroot=$afsroot ;;
5775 esac
5776
5777 : is AFS running?
5778 echo " "
5779 case "$afs" in
5780 $define|true)   afs=true ;;
5781 $undef|false)   afs=false ;;
5782 *)      if test -d $afsroot; then
5783                 afs=true
5784         else
5785                 afs=false
5786         fi
5787         ;;
5788 esac
5789 if $afs; then
5790         echo "AFS may be running... I'll be extra cautious then..." >&4
5791 else
5792         echo "AFS does not seem to be running..." >&4
5793 fi
5794
5795 : determine installation prefix for where package is to be installed.
5796 if $afs; then 
5797 $cat <<EOM
5798
5799 Since you are running AFS, I need to distinguish the directory in which
5800 files will reside from the directory in which they are installed (and from
5801 which they are presumably copied to the former directory by occult means).
5802
5803 EOM
5804         case "$installprefix" in
5805         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5806         *) dflt="$installprefix";;
5807         esac
5808 else
5809 $cat <<EOM
5810
5811 In some special cases, particularly when building $package for distribution,
5812 it is convenient to distinguish the directory in which files should be
5813 installed from the directory ($prefix) in which they will
5814 eventually reside.  For most users, these two directories are the same.
5815
5816 EOM
5817         case "$installprefix" in
5818         '') dflt=$prefix ;;
5819         *) dflt=$installprefix;;
5820         esac
5821 fi
5822 fn=d~
5823 rp='What installation prefix should I use for installing files?'
5824 . ./getfile
5825 installprefix="$ans"
5826 installprefixexp="$ansexp"
5827
5828 : set the prefixit variable, to compute a suitable default value
5829 prefixit='case "$3" in
5830 ""|none)
5831         case "$oldprefix" in
5832         "") eval "$1=\"\$$2\"";;
5833         *)
5834                 case "$3" in
5835                 "") eval "$1=";;
5836                 none)
5837                         eval "tp=\"\$$2\"";
5838                         case "$tp" in
5839                         ""|" ") eval "$1=\"\$$2\"";;
5840                         *) eval "$1=";;
5841                         esac;;
5842                 esac;;
5843         esac;;
5844 *)
5845         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5846         case "$tp" in
5847         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5848         /*-$oldprefix/*|\~*-$oldprefix/*)
5849                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5850         *) eval "$1=\"\$$2\"";;
5851         esac;;
5852 esac'
5853
5854 : get the patchlevel
5855 echo " "
5856 echo "Getting the current patchlevel..." >&4
5857 if $test -r $rsrc/patchlevel.h;then
5858         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5859         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5860         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5861         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5862         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5863         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5864        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5865 else
5866         revision=0
5867         patchlevel=0
5868         subversion=0
5869         api_revision=0
5870         api_version=0
5871         api_subversion=0
5872         perl_patchlevel=0
5873         $echo "(You do not have patchlevel.h.  Eek.)"
5874 fi
5875 if $test -r $rsrc/.patch ; then  
5876         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5877                 perl_patchlevel=`cat $rsrc/.patch`
5878         fi
5879 fi
5880 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5881 version_patchlevel_string="version $patchlevel subversion $subversion"
5882 case "$perl_patchlevel" in
5883 0|'') ;;
5884 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5885 esac
5886
5887 $echo "(You have $package $version_patchlevel_string.)"
5888
5889 case "$osname" in
5890 dos|vms)
5891         : XXX Should be a Configure test for double-dots in filenames.
5892         version=`echo $revision $patchlevel $subversion | \
5893                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5894         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5895                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5896         ;;
5897 *)
5898         version=`echo $revision $patchlevel $subversion | \
5899                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5900         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5901                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5902         ;;
5903 esac
5904 : Special case the 5.005_xx maintenance series, which used 5.005
5905 : without any subversion label as a subdirectory in $sitelib
5906 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5907         api_versionstring='5.005'
5908 fi
5909
5910 : determine installation style
5911 : For now, try to deduce it from prefix unless it is already set.
5912 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5913 case "$installstyle" in
5914 '')     case "$prefix" in
5915                 *perl*) dflt='lib';;
5916                 *) dflt='lib/perl5' ;;
5917         esac
5918         ;;
5919 *)      dflt="$installstyle" ;;
5920 esac
5921 : Probably not worth prompting for this since we prompt for all
5922 : the directories individually, and the prompt would be too long and
5923 : confusing anyway.
5924 installstyle=$dflt
5925
5926 : determine where private library files go
5927 : Usual default is /usr/local/lib/perl5/$version.
5928 : Also allow things like /opt/perl/lib/$version, since 
5929 : /opt/perl/lib/perl5... would be redundant.
5930 : The default "style" setting is made in installstyle.U
5931 case "$installstyle" in
5932 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5933 *)       set dflt privlib lib/$version ;;
5934 esac
5935 eval $prefixit
5936 $cat <<EOM
5937
5938 There are some auxiliary files for $package that need to be put into a
5939 private library directory that is accessible by everyone.
5940
5941 EOM
5942 fn=d~+
5943 rp='Pathname where the private library files will reside?'
5944 . ./getfile
5945 privlib="$ans"
5946 privlibexp="$ansexp"
5947 : Change installation prefix, if necessary.
5948 if $test X"$prefix" != X"$installprefix"; then
5949         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5950 else
5951         installprivlib="$privlibexp"
5952 fi
5953
5954 : set the prefixup variable, to restore leading tilda escape
5955 prefixup='case "$prefixexp" in
5956 "$prefix") ;;
5957 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5958 esac'
5959
5960 : determine where public architecture dependent libraries go
5961 set archlib archlib
5962 eval $prefixit
5963 : privlib default is /usr/local/lib/$package/$version
5964 : archlib default is /usr/local/lib/$package/$version/$archname
5965 : privlib may have an optional trailing /share.
5966 tdflt=`echo $privlib | $sed 's,/share$,,'`
5967 tdflt=$tdflt/$archname
5968 case "$archlib" in
5969 '')     dflt=$tdflt
5970         ;;
5971 *)      dflt="$archlib"
5972     ;;
5973 esac
5974 $cat <<EOM
5975
5976 $spackage contains architecture-dependent library files.  If you are
5977 sharing libraries in a heterogeneous environment, you might store
5978 these files in a separate location.  Otherwise, you can just include
5979 them with the rest of the public library files.
5980
5981 EOM
5982 fn=d+~
5983 rp='Where do you want to put the public architecture-dependent libraries?'
5984 . ./getfile
5985 archlib="$ans"
5986 archlibexp="$ansexp"
5987 if $test X"$archlib" = X"$privlib"; then
5988         d_archlib="$undef"
5989 else
5990         d_archlib="$define"
5991 fi
5992 : Change installation prefix, if necessary.
5993 if $test X"$prefix" != X"$installprefix"; then
5994         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5995 else
5996         installarchlib="$archlibexp"
5997 fi
5998
5999 : see if setuid scripts can be secure
6000 $cat <<EOM
6001
6002 Some kernels have a bug that prevents setuid #! scripts from being
6003 secure.  Some sites have disabled setuid #! scripts because of this.
6004
6005 First let's decide if your kernel supports secure setuid #! scripts.
6006 (If setuid #! scripts would be secure but have been disabled anyway,
6007 don't say that they are secure if asked.)
6008
6009 EOM
6010
6011 val="$undef"
6012 if $test -d /dev/fd; then
6013         echo "#!$ls" >reflect
6014         chmod +x,u+s reflect
6015         ./reflect >flect 2>&1
6016         if $contains "/dev/fd" flect >/dev/null; then
6017                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6018                 val="$define"
6019         else
6020                 $cat <<EOM
6021 If you are not sure if they are secure, I can check but I'll need a
6022 username and password different from the one you are using right now.
6023 If you don't have such a username or don't want me to test, simply
6024 enter 'none'.
6025
6026 EOM
6027                 rp='Other username to test security of setuid scripts with?'
6028                 dflt='none'
6029                 . ./myread
6030                 case "$ans" in
6031                 n|none)
6032                         case "$d_suidsafe" in
6033                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6034                                 dflt=n;;
6035                         "$undef")
6036                                 echo "Well, the $hint value is *not* secure." >&4
6037                                 dflt=n;;
6038                         *)      echo "Well, the $hint value *is* secure." >&4
6039                                 dflt=y;;
6040                         esac
6041                         ;;
6042                 *)
6043                         $rm -f reflect flect
6044                         echo "#!$ls" >reflect
6045                         chmod +x,u+s reflect
6046                         echo >flect
6047                         chmod a+w flect
6048                         echo '"su" will (probably) prompt you for '"$ans's password."
6049                         su $ans -c './reflect >flect'
6050                         if $contains "/dev/fd" flect >/dev/null; then
6051                                 echo "Okay, it looks like setuid scripts are secure." >&4
6052                                 dflt=y
6053                         else
6054                                 echo "I don't think setuid scripts are secure." >&4
6055                                 dflt=n
6056                         fi
6057                         ;;
6058                 esac
6059                 rp='Does your kernel have *secure* setuid scripts?'
6060                 . ./myread
6061                 case "$ans" in
6062                 [yY]*)  val="$define";;
6063                 *)      val="$undef";;
6064                 esac
6065         fi
6066 else
6067         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6068         echo "(That's for file descriptors, not floppy disks.)"
6069         val="$undef"
6070 fi
6071 set d_suidsafe
6072 eval $setvar
6073
6074 $rm -f reflect flect
6075
6076 : now see if they want to do setuid emulation
6077 echo " "
6078 val="$undef"
6079 case "$d_suidsafe" in
6080 "$define")
6081         val="$undef"
6082         echo "No need to emulate SUID scripts since they are secure here." >&4
6083         ;;
6084 *)
6085         $cat <<EOM
6086 Some systems have disabled setuid scripts, especially systems where
6087 setuid scripts cannot be secure.  On systems where setuid scripts have
6088 been disabled, the setuid/setgid bits on scripts are currently
6089 useless.  It is possible for $package to detect those bits and emulate
6090 setuid/setgid in a secure fashion.  This emulation will only work if
6091 setuid scripts have been disabled in your kernel.
6092
6093 EOM
6094         case "$d_dosuid" in
6095         "$define") dflt=y ;;
6096         *) dflt=n ;;
6097         esac
6098         rp="Do you want to do setuid/setgid emulation?"
6099         . ./myread
6100         case "$ans" in
6101         [yY]*)  val="$define";;
6102         *)      val="$undef";;
6103         esac
6104         ;;
6105 esac
6106 set d_dosuid
6107 eval $setvar
6108
6109 : see if this is a malloc.h system
6110 : we want a real compile instead of Inhdr because some systems have a
6111 : malloc.h that just gives a compile error saying to use stdlib.h instead
6112 echo " "
6113 $cat >try.c <<EOCP
6114 #include <stdlib.h>
6115 #include <malloc.h>
6116 int main () { return 0; }
6117 EOCP
6118 set try
6119 if eval $compile; then
6120     echo "<malloc.h> found." >&4
6121     val="$define"
6122 else
6123     echo "<malloc.h> NOT found." >&4
6124     val="$undef"
6125 fi
6126 $rm -f try.c try
6127 set i_malloc
6128 eval $setvar
6129
6130 : check for void type
6131 echo " "
6132 echo "Checking to see how well your C compiler groks the void type..." >&4
6133 case "$voidflags" in
6134 '')
6135         $cat >try.c <<EOCP
6136 #$i_stdlib I_STDLIB
6137 #ifdef I_STDLIB
6138 #include <stdlib.h>
6139 #endif
6140 #if TRY & 1
6141 void sub() {
6142 #else
6143 sub() {
6144 #endif
6145         extern void moo();      /* function returning void */
6146         void (*goo)();          /* ptr to func returning void */
6147 #if TRY & 8
6148         void *hue;              /* generic ptr */
6149 #endif
6150 #if TRY & 2
6151         void (*foo[10])();
6152 #endif
6153
6154 #if TRY & 4
6155         if(goo == moo) {
6156                 exit(0);
6157         }
6158 #endif
6159         exit(0);
6160 }
6161 int main() { sub(); }
6162 EOCP
6163         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6164                 voidflags=$defvoidused
6165         echo "Good.  It appears to support void to the level $package wants.">&4
6166                 if $contains warning .out >/dev/null 2>&1; then
6167                         echo "However, you might get some warnings that look like this:"
6168                         $cat .out
6169                 fi
6170         else
6171 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6172                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6173                         echo "It supports 1..."
6174                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6175                                 echo "It also supports 2..."
6176                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6177                                         voidflags=7
6178                                         echo "And it supports 4 but not 8 definitely."
6179                                 else
6180                                         echo "It doesn't support 4..."
6181                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6182                                                 voidflags=11
6183                                                 echo "But it supports 8."
6184                                         else
6185                                                 voidflags=3
6186                                                 echo "Neither does it support 8."
6187                                         fi
6188                                 fi
6189                         else
6190                                 echo "It does not support 2..."
6191                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6192                                         voidflags=13
6193                                         echo "But it supports 4 and 8."
6194                                 else
6195                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6196                                                 voidflags=5
6197                                                 echo "And it supports 4 but has not heard about 8."
6198                                         else
6199                                                 echo "However it supports 8 but not 4."
6200                                         fi
6201                                 fi
6202                         fi
6203                 else
6204                         echo "There is no support at all for void."
6205                         voidflags=0
6206                 fi
6207         fi
6208 esac
6209 case "$voidflags" in
6210 "$defvoidused") ;;
6211 *)      $cat >&4 <<'EOM'
6212   Support flag bits are:
6213     1: basic void declarations.
6214     2: arrays of pointers to functions returning void.
6215     4: operations between pointers to and addresses of void functions.
6216     8: generic void pointers.
6217 EOM
6218         dflt="$voidflags";
6219         rp="Your void support flags add up to what?"
6220         . ./myread
6221         voidflags="$ans"
6222         ;;
6223 esac
6224 $rm -f try.* .out
6225
6226 : check for length of pointer
6227 echo " "
6228 case "$ptrsize" in
6229 '')
6230         echo "Checking to see how big your pointers are..." >&4
6231         if test "$voidflags" -gt 7; then
6232                 echo '#define VOID_PTR char *' > try.c
6233         else
6234                 echo '#define VOID_PTR void *' > try.c
6235         fi
6236         $cat >>try.c <<EOCP
6237 #include <stdio.h>
6238 #$i_stdlib I_STDLIB
6239 #ifdef I_STDLIB
6240 #include <stdlib.h>
6241 #endif
6242 int main()
6243 {
6244     printf("%d\n", (int)sizeof(VOID_PTR));
6245     exit(0);
6246 }
6247 EOCP
6248         set try
6249         if eval $compile_ok; then
6250                 ptrsize=`$run ./try`
6251                 echo "Your pointers are $ptrsize bytes long."
6252         else
6253                 dflt='4'
6254                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6255                 rp="What is the size of a pointer (in bytes)?"
6256                 . ./myread
6257                 ptrsize="$ans"
6258         fi
6259         ;;
6260 esac
6261 $rm -f try.c try
6262 case "$use64bitall" in
6263 "$define"|true|[yY]*)
6264         case "$ptrsize" in
6265         4)      cat <<EOM >&4
6266
6267 *** You have chosen a maximally 64-bit build,
6268 *** but your pointers are only 4 bytes wide.
6269 *** Please rerun Configure without -Duse64bitall.
6270 EOM
6271                 case "$d_quad" in
6272                 define)
6273                         cat <<EOM >&4
6274 *** Since you have quads, you could possibly try with -Duse64bitint.
6275 EOM
6276                         ;;
6277                 esac
6278                 cat <<EOM >&4
6279 *** Cannot continue, aborting.
6280
6281 EOM
6282
6283                 exit 1
6284                 ;;
6285         esac
6286         ;;
6287 esac
6288
6289
6290 : determine whether to use malloc wrapping
6291 echo " "
6292 case "$usemallocwrap" in
6293 [yY]*|true|$define)     dflt='y' ;;
6294 [nN]*|false|$undef)     dflt='n' ;;
6295 *)      case "$usedevel" in
6296         [yY]*|true|$define)     dflt='y' ;;
6297         *) dflt='n' ;;
6298         esac
6299         ;;
6300 esac
6301 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6302 . ./myread
6303 usemallocwrap="$ans"
6304 case "$ans" in
6305 y*|true)
6306         usemallocwrap="$define" ;;
6307 *)
6308         usemallocwrap="$undef" ;;
6309 esac
6310
6311 : determine which malloc to compile in
6312 echo " "
6313 case "$usemymalloc" in
6314 [yY]*|true|$define)     dflt='y' ;;
6315 [nN]*|false|$undef)     dflt='n' ;;
6316 *)      case "$ptrsize" in
6317         4) dflt='y' ;;
6318         *) dflt='n' ;;
6319         esac
6320         ;;
6321 esac
6322 rp="Do you wish to attempt to use the malloc that comes with $package?"
6323 . ./myread
6324 usemymalloc="$ans"
6325 case "$ans" in
6326 y*|true)
6327         usemymalloc='y'
6328         mallocsrc='malloc.c'
6329         mallocobj="malloc$_o"
6330         d_mymalloc="$define"
6331         case "$libs" in
6332         *-lmalloc*)
6333                 : Remove malloc from list of libraries to use
6334                 echo "Removing unneeded -lmalloc from library list" >&4
6335                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6336                 shift
6337                 libs="$*"
6338                 echo "libs = $libs" >&4
6339                 ;;
6340         esac
6341         ;;
6342 *)
6343         usemymalloc='n'
6344         mallocsrc=''
6345         mallocobj=''
6346         d_mymalloc="$undef"
6347         ;;
6348 esac
6349
6350 : compute the return types of malloc and free
6351 echo " "
6352 $cat >malloc.c <<END
6353 #$i_malloc I_MALLOC
6354 #$i_stdlib I_STDLIB
6355 #include <stdio.h>
6356 #include <sys/types.h>
6357 #ifdef I_MALLOC
6358 #include <malloc.h>
6359 #endif
6360 #ifdef I_STDLIB
6361 #include <stdlib.h>
6362 #endif
6363 #ifdef TRY_MALLOC
6364 void *malloc();
6365 #endif
6366 #ifdef TRY_FREE
6367 void free();
6368 #endif
6369 END
6370 case "$malloctype" in
6371 '')
6372         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6373                 malloctype='void *'
6374         else
6375                 malloctype='char *'
6376         fi
6377         ;;
6378 esac
6379 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6380
6381 case "$freetype" in
6382 '')
6383         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6384                 freetype='void'
6385         else
6386                 freetype='int'
6387         fi
6388         ;;
6389 esac
6390 echo "Your system uses $freetype free(), it would seem." >&4
6391 $rm -f malloc.[co]
6392 $cat <<EOM
6393
6394 After $package is installed, you may wish to install various
6395 add-on modules and utilities.  Typically, these add-ons will
6396 be installed under $prefix with the rest
6397 of this package.  However, you may wish to install such add-ons
6398 elsewhere under a different prefix.
6399
6400 If you do not wish to put everything under a single prefix, that's
6401 ok.  You will be prompted for the individual locations; this siteprefix
6402 is only used to suggest the defaults.
6403
6404 The default should be fine for most people.
6405
6406 EOM
6407 fn=d~+
6408 rp='Installation prefix to use for add-on modules and utilities?'
6409 : XXX Here might be another good place for an installstyle setting.
6410 case "$siteprefix" in
6411 '') dflt=$prefix ;;
6412 *)  dflt=$siteprefix ;;
6413 esac
6414 . ./getfile
6415 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6416 oldsiteprefix=''
6417 case "$siteprefix" in
6418 '') ;;
6419 *)      case "$ans" in
6420         "$prefix") ;;
6421         *) oldsiteprefix="$prefix";;
6422         esac
6423         ;;
6424 esac
6425 siteprefix="$ans"
6426 siteprefixexp="$ansexp"
6427
6428 : determine where site specific libraries go.
6429 : Usual default is /usr/local/lib/perl5/site_perl/$version
6430 : The default "style" setting is made in installstyle.U
6431 : XXX No longer works with Prefixit stuff.
6432 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6433 case "$sitelib" in
6434 '') case "$installstyle" in
6435         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6436         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6437         esac
6438         ;;
6439 *)      dflt="$sitelib"
6440         ;;
6441 esac
6442 $cat <<EOM
6443
6444 The installation process will create a directory for
6445 site-specific extensions and modules.  Most users find it convenient
6446 to place all site-specific files in this directory rather than in the
6447 main distribution directory.
6448
6449 EOM
6450 fn=d~+
6451 rp='Pathname for the site-specific library files?'
6452 . ./getfile
6453 sitelib="$ans"
6454 sitelibexp="$ansexp"
6455 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6456 : Change installation prefix, if necessary.
6457 if $test X"$prefix" != X"$installprefix"; then
6458         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6459 else
6460         installsitelib="$sitelibexp"
6461 fi
6462
6463 : determine where site specific architecture-dependent libraries go.
6464 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6465 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6466 : sitelib may have an optional trailing /share.
6467 case "$sitearch" in
6468 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6469         dflt="$dflt/$archname"
6470         ;;
6471 *)      dflt="$sitearch"
6472         ;;
6473 esac
6474 set sitearch sitearch none
6475 eval $prefixit
6476 $cat <<EOM
6477
6478 The installation process will also create a directory for
6479 architecture-dependent site-specific extensions and modules.
6480
6481 EOM
6482 fn=d~+
6483 rp='Pathname for the site-specific architecture-dependent library files?'
6484 . ./getfile
6485 sitearch="$ans"
6486 sitearchexp="$ansexp"
6487 : Change installation prefix, if necessary.
6488 if $test X"$prefix" != X"$installprefix"; then
6489         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6490 else
6491         installsitearch="$sitearchexp"
6492 fi
6493
6494 $cat <<EOM
6495
6496 The installation process will also create a directory for
6497 vendor-supplied add-ons.  Vendors who supply perl with their system
6498 may find it convenient to place all vendor-supplied files in this
6499 directory rather than in the main distribution directory.  This will
6500 ease upgrades between binary-compatible maintenance versions of perl.
6501
6502 Of course you may also use these directories in whatever way you see
6503 fit.  For example, you might use them to access modules shared over a
6504 company-wide network.
6505
6506 The default answer should be fine for most people.
6507 This causes further questions about vendor add-ons to be skipped
6508 and no vendor-specific directories will be configured for perl.
6509
6510 EOM
6511 rp='Do you want to configure vendor-specific add-on directories?'
6512 case "$usevendorprefix" in
6513 define|true|[yY]*) dflt=y ;;
6514 *)      : User may have set vendorprefix directly on Configure command line.
6515         case "$vendorprefix" in
6516         ''|' ') dflt=n ;;
6517         *)      dflt=y ;;
6518         esac
6519         ;;
6520 esac
6521 . ./myread
6522 case "$ans" in
6523 [yY]*)  fn=d~+
6524         rp='Installation prefix to use for vendor-supplied add-ons?'
6525         case "$vendorprefix" in
6526         '') dflt='' ;;
6527         *)  dflt=$vendorprefix ;;
6528         esac
6529         . ./getfile
6530         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6531         oldvendorprefix=''
6532         case "$vendorprefix" in
6533         '') ;;
6534         *)      case "$ans" in
6535                 "$prefix") ;;
6536                 *) oldvendorprefix="$prefix";;
6537                 esac
6538                 ;;
6539         esac
6540         usevendorprefix="$define"
6541         vendorprefix="$ans"
6542         vendorprefixexp="$ansexp"
6543         ;;
6544 *)      usevendorprefix="$undef"
6545         vendorprefix=''
6546         vendorprefixexp=''
6547         ;;
6548 esac
6549
6550 case "$vendorprefix" in
6551 '')     d_vendorlib="$undef"
6552         vendorlib=''
6553         vendorlibexp=''
6554         ;;
6555 *)      d_vendorlib="$define"
6556         : determine where vendor-supplied modules go.
6557         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6558         case "$vendorlib" in
6559         '')
6560                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6561                 case "$installstyle" in
6562                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6563                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6564                 esac
6565                 ;;
6566         *)      dflt="$vendorlib"
6567                 ;;
6568         esac
6569         fn=d~+
6570         rp='Pathname for the vendor-supplied library files?'
6571         . ./getfile
6572         vendorlib="$ans"
6573         vendorlibexp="$ansexp"
6574         ;;
6575 esac
6576 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6577 : Change installation prefix, if necessary.
6578 if $test X"$prefix" != X"$installprefix"; then
6579         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6580 else
6581         installvendorlib="$vendorlibexp"
6582 fi
6583
6584 case "$vendorprefix" in
6585 '')     d_vendorarch="$undef"
6586         vendorarch=''
6587         vendorarchexp=''
6588         ;;
6589 *)      d_vendorarch="$define"
6590         : determine where vendor-supplied architecture-dependent libraries go.
6591         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6592         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6593         : vendorlib may have an optional trailing /share.
6594         case "$vendorarch" in
6595         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6596                 dflt="$dflt/$archname"
6597                 ;;
6598         *)      dflt="$vendorarch" ;;
6599         esac
6600         fn=d~+
6601         rp='Pathname for vendor-supplied architecture-dependent files?'
6602         . ./getfile
6603         vendorarch="$ans"
6604         vendorarchexp="$ansexp"
6605         ;;
6606 esac
6607 : Change installation prefix, if necessary.
6608 if $test X"$prefix" != X"$installprefix"; then
6609         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6610 else
6611         installvendorarch="$vendorarchexp"
6612 fi
6613
6614 : Final catch-all directories to search
6615 $cat <<EOM
6616
6617 Lastly, you can have perl look in other directories for extensions and
6618 modules in addition to those already specified.
6619 These directories will be searched after 
6620         $sitearch 
6621         $sitelib 
6622 EOM
6623 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6624 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6625 echo ' '
6626 case "$otherlibdirs" in
6627 ''|' ') dflt='none' ;;
6628 *)      dflt="$otherlibdirs" ;;
6629 esac
6630 $cat <<EOM
6631 Enter a colon-separated set of extra paths to include in perl's @INC
6632 search path, or enter 'none' for no extra paths.
6633
6634 EOM
6635
6636 rp='Colon-separated list of additional directories for perl to search?'
6637 . ./myread
6638 case "$ans" in
6639 ' '|''|none)    otherlibdirs=' ' ;;     
6640 *)      otherlibdirs="$ans" ;;
6641 esac
6642 case "$otherlibdirs" in
6643 ' ') val=$undef ;;
6644 *)      val=$define ;;
6645 esac
6646 set d_perl_otherlibdirs
6647 eval $setvar
6648
6649 : Cruising for prototypes
6650 echo " "
6651 echo "Checking out function prototypes..." >&4
6652 $cat >prototype.c <<EOCP
6653 #$i_stdlib I_STDLIB
6654 #ifdef I_STDLIB
6655 #include <stdlib.h>
6656 #endif
6657 int main(int argc, char *argv[]) {
6658         exit(0);}
6659 EOCP
6660 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6661         echo "Your C compiler appears to support function prototypes."
6662         val="$define"
6663 else
6664         echo "Your C compiler doesn't seem to understand function prototypes."
6665         val="$undef"
6666 fi
6667 set prototype
6668 eval $setvar
6669 $rm -f prototype*
6670
6671 case "$prototype" in
6672 "$define") ;;
6673 *)      ansi2knr='ansi2knr'
6674         echo " "
6675         cat <<EOM >&4
6676
6677 $me:  FATAL ERROR:
6678 This version of $package can only be compiled by a compiler that 
6679 understands function prototypes.  Unfortunately, your C compiler 
6680         $cc $ccflags
6681 doesn't seem to understand them.  Sorry about that.
6682
6683 If GNU cc is available for your system, perhaps you could try that instead.  
6684
6685 Eventually, we hope to support building Perl with pre-ANSI compilers.
6686 If you would like to help in that effort, please contact <perlbug@perl.org>.
6687
6688 Aborting Configure now.
6689 EOM
6690         exit 2
6691         ;;
6692 esac
6693
6694 : determine where public executables go
6695 echo " "
6696 set dflt bin bin
6697 eval $prefixit
6698 fn=d~
6699 rp='Pathname where the public executables will reside?'
6700 . ./getfile
6701 if $test "X$ansexp" != "X$binexp"; then
6702         installbin=''
6703 fi
6704 bin="$ans"
6705 binexp="$ansexp"
6706 : Change installation prefix, if necessary.
6707 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6708 if $test X"$prefix" != X"$installprefix"; then
6709         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6710 else
6711         installbin="$binexp"
6712 fi
6713
6714 echo " "
6715 case "$extras" in
6716 '') dflt='n';;
6717 *) dflt='y';;
6718 esac
6719 cat <<EOM
6720 Perl can be built with extra modules or bundles of modules which
6721 will be fetched from the CPAN and installed alongside Perl.
6722
6723 Notice that you will need access to the CPAN; either via the Internet,
6724 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6725 be asked later to configure the CPAN.pm module which will in turn do
6726 the installation of the rest of the extra modules or bundles.)
6727
6728 Notice also that if the modules require any external software such as
6729 libraries and headers (the libz library and the zlib.h header for the
6730 Compress::Zlib module, for example) you MUST have any such software
6731 already installed, this configuration process will NOT install such
6732 things for you.
6733
6734 If this doesn't make any sense to you, just accept the default '$dflt'.
6735 EOM
6736 rp='Install any extra modules (y or n)?'
6737 . ./myread
6738 case "$ans" in
6739 y|Y)
6740         cat <<EOM
6741
6742 Please list any extra modules or bundles to be installed from CPAN,
6743 with spaces between the names.  The names can be in any format the
6744 'install' command of CPAN.pm will understand.  (Answer 'none',
6745 without the quotes, to install no extra modules or bundles.)
6746 EOM
6747         rp='Extras?'
6748         dflt="$extras"
6749         . ./myread
6750         extras="$ans"
6751 esac
6752 case "$extras" in
6753 ''|'none')
6754         val=''
6755         $rm -f ../extras.lst
6756         ;;
6757 *)      echo "(Saving the list of extras for later...)"
6758         echo "$extras" > ../extras.lst
6759         val="'$extras'"
6760         ;;
6761 esac
6762 set extras
6763 eval $setvar
6764 echo " "
6765
6766 : determine where html pages for programs go
6767 set html1dir html1dir none
6768 eval $prefixit
6769 $cat <<EOM
6770
6771 If you wish to install html files for programs in $spackage, indicate 
6772 the appropriate directory here.  To skip installing html files,
6773 answer "none".
6774 EOM
6775 case "$html1dir" in
6776 ''|none|$undef|' ') dflt=none ;;
6777 *) dflt=$html1dir ;;
6778 esac
6779 fn=dn+~
6780 rp="Directory for the main $spackage html pages?"
6781 . ./getfile
6782 html1dir="$ans"
6783 html1direxp="$ansexp"
6784 : Use ' ' for none so value is preserved next time through Configure
6785 $test X"$html1dir" = "X" && html1dir=' '
6786 : Change installation prefix, if necessary.
6787 if $test X"$prefix" != X"$installprefix"; then
6788         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6789 else
6790         installhtml1dir="$html1direxp"
6791 fi
6792
6793 : determine where html pages for libraries and modules go
6794 set html3dir html3dir none
6795 eval $prefixit
6796 $cat <<EOM
6797
6798 If you wish to install html files for modules associated with $spackage,
6799 indicate the appropriate directory here.  To skip installing html files,
6800 answer "none".
6801 EOM
6802 : There is no obvious default.  If they have specified html1dir, then
6803 : try to key off that, possibly changing .../html1 into .../html3.
6804 case "$html3dir" in
6805 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6806 *) dflt=$html3dir ;;
6807 esac
6808 fn=dn+~
6809 rp="Directory for the $spackage module html pages?"
6810 . ./getfile
6811 html3dir="$ans"
6812 html3direxp="$ansexp"
6813 : Use ' ' for none so value is preserved next time through Configure
6814 $test X"$html3dir" = "X" && html3dir=' '
6815 : Change installation prefix, if necessary.
6816 if $test X"$prefix" != X"$installprefix"; then
6817         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6818 else
6819         installhtml3dir="$html3direxp"
6820 fi
6821
6822 : Find perl5.005 or later.
6823 echo "Looking for a previously installed perl5.005 or later... "
6824 case "$perl5" in
6825 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6826                 : Check if this perl is recent and can load a simple module
6827                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6828                         perl5=$tdir/perl
6829                         break;
6830                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6831                         perl5=$tdir/perl5
6832                         break;
6833                 fi
6834         done
6835         ;;
6836 *)      perl5="$perl5"
6837         ;;
6838 esac
6839 case "$perl5" in
6840 '')     echo "None found.  That's ok.";;
6841 *)      echo "Using $perl5." ;;
6842 esac
6843
6844 : Determine list of previous versions to include in @INC
6845 $cat > getverlist <<EOPL
6846 #!$perl5 -w
6847 use File::Basename;
6848 \$api_versionstring = "$api_versionstring";
6849 \$version = "$version";
6850 \$stem = "$sitelib_stem";
6851 \$archname = "$archname";
6852 EOPL
6853         $cat >> getverlist <<'EOPL'
6854 # Can't have leading @ because metaconfig interprets it as a command!
6855 ;@inc_version_list=();
6856 # XXX Redo to do opendir/readdir? 
6857 if (-d $stem) {
6858     chdir($stem);
6859     ;@candidates = glob("5.*");
6860 }
6861 else {
6862     ;@candidates = ();
6863 }
6864
6865 # XXX ToDo:  These comparisons must be reworked when two-digit
6866 # subversions come along, so that 5.7.10 compares as greater than
6867 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6868 # widespread that we can use the built-in version vectors rather
6869 # than reinventing them here.  For 5.6.0, however, we must
6870 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6871 foreach $d (@candidates) {
6872     if ($d lt $version) {
6873         if ($d ge $api_versionstring) {
6874             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6875         }
6876         elsif ($d ge "5.005") {
6877             unshift(@inc_version_list, grep { -d } $d);
6878         }
6879     }
6880     else {
6881         # Skip newer version.  I.e. don't look in
6882         # 5.7.0 if we're installing 5.6.1.
6883     }
6884 }
6885
6886 if (@inc_version_list) {
6887     print join(' ', @inc_version_list);
6888 }
6889 else {
6890     # Blank space to preserve value for next Configure run.
6891     print " ";
6892 }
6893 EOPL
6894 chmod +x getverlist
6895 case "$inc_version_list" in
6896 '')     if test -x "$perl5$exe_ext"; then
6897                 dflt=`$perl5 getverlist`
6898         else
6899                 dflt='none'
6900         fi
6901         ;;
6902 $undef) dflt='none' ;;
6903 *)  eval dflt=\"$inc_version_list\" ;;
6904 esac
6905 case "$dflt" in
6906 ''|' ') dflt=none ;;
6907 esac
6908 case "$dflt" in
6909 5.005) dflt=none ;;
6910 esac
6911 $cat <<EOM
6912
6913 In order to ease the process of upgrading, this version of perl 
6914 can be configured to use modules built and installed with earlier 
6915 versions of perl that were installed under $prefix.  Specify here
6916 the list of earlier versions that this version of perl should check.
6917 If Configure detected no earlier versions of perl installed under
6918 $prefix, then the list will be empty.  Answer 'none' to tell perl
6919 to not search earlier versions.
6920
6921 The default should almost always be sensible, so if you're not sure,
6922 just accept the default.
6923 EOM
6924
6925 rp='List of earlier versions to include in @INC?'
6926 . ./myread
6927 case "$ans" in
6928 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6929 *) inc_version_list="$ans" ;;
6930 esac
6931 case "$inc_version_list" in
6932 ''|' ') 
6933         inc_version_list_init='0';;
6934 *)      inc_version_list_init=`echo $inc_version_list |
6935                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6936         ;;
6937 esac
6938 $rm -f getverlist
6939
6940 : determine whether to install perl also as /usr/bin/perl
6941
6942 echo " "
6943 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6944         $cat <<EOM
6945 Many scripts expect perl to be installed as /usr/bin/perl.
6946
6947 If you want to, I can install the perl you are about to compile
6948 as /usr/bin/perl (in addition to $bin/perl).
6949 EOM
6950         if test -f /usr/bin/perl; then
6951             $cat <<EOM
6952
6953 However, please note that because you already have a /usr/bin/perl,
6954 overwriting that with a new Perl would very probably cause problems.
6955 Therefore I'm assuming you don't want to do that (unless you insist).
6956
6957 EOM
6958             case "$installusrbinperl" in
6959             "$define"|[yY]*)    dflt='y';;
6960             *)                  dflt='n';;
6961             esac
6962         else
6963             $cat <<EOM
6964
6965 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6966
6967 EOM
6968             case "$installusrbinperl" in
6969             "$undef"|[nN]*)     dflt='n';;
6970             *)                  dflt='y';;
6971             esac
6972         fi
6973         rp="Do you want to install perl as /usr/bin/perl?"
6974         . ./myread
6975         case "$ans" in
6976         [yY]*)  val="$define";;
6977         *)      val="$undef" ;;
6978         esac
6979 else
6980         val="$undef"
6981 fi
6982 set installusrbinperl
6983 eval $setvar
6984
6985 echo " "
6986 echo "Checking for GNU C Library..." >&4
6987 cat >try.c <<'EOCP'
6988 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
6989    alone are insufficient to distinguish different versions, such as
6990    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
6991    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
6992 */
6993 #include <stdio.h>
6994 int main(void)
6995 {
6996 #ifdef __GLIBC__
6997 #   ifdef __GLIBC_MINOR__
6998 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6999 #           include <gnu/libc-version.h>
7000             printf("%s\n",  gnu_get_libc_version());
7001 #       else
7002             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
7003 #       endif
7004 #   else
7005         printf("%d\n",  __GLIBC__);
7006 #   endif
7007     return 0;
7008 #else
7009     return 1;
7010 #endif
7011 }
7012 EOCP
7013 set try
7014 if eval $compile_ok && $run ./try > glibc.ver; then
7015         val="$define"
7016         gnulibc_version=`$cat glibc.ver`
7017         echo "You are using the GNU C Library version $gnulibc_version"
7018 else
7019         val="$undef"
7020         gnulibc_version=''
7021         echo "You are not using the GNU C Library"
7022 fi
7023 $rm -f try try.* glibc.ver
7024 set d_gnulibc
7025 eval $setvar
7026
7027 : see if nm is to be used to determine whether a symbol is defined or not
7028 case "$usenm" in
7029 '')
7030         dflt=''
7031         case "$d_gnulibc" in
7032         "$define")
7033                 echo " "
7034                 echo "nm probably won't work on the GNU C Library." >&4
7035                 dflt=n
7036                 ;;
7037         esac
7038         case "$dflt" in
7039         '') 
7040                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7041                         echo " "
7042                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
7043                         echo "'nm' won't be sufficient on this sytem." >&4
7044                         dflt=n
7045                 fi
7046                 ;;
7047         esac
7048         case "$dflt" in
7049         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7050                 if $test $dflt -gt 20; then
7051                         dflt=y
7052                 else
7053                         dflt=n
7054                 fi
7055                 ;;
7056         esac
7057         ;;
7058 *)
7059         case "$usenm" in
7060         true|$define) dflt=y;;
7061         *) dflt=n;;
7062         esac
7063         ;;
7064 esac
7065 $cat <<EOM
7066
7067 I can use $nm to extract the symbols from your C libraries. This
7068 is a time consuming task which may generate huge output on the disk (up
7069 to 3 megabytes) but that should make the symbols extraction faster. The
7070 alternative is to skip the 'nm' extraction part and to compile a small
7071 test program instead to determine whether each symbol is present. If
7072 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7073 this may be the best solution.
7074
7075 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7076
7077 EOM
7078 rp="Shall I use $nm to extract C symbols from the libraries?"
7079 . ./myread
7080 case "$ans" in
7081 [Nn]*) usenm=false;;
7082 *) usenm=true;;
7083 esac
7084
7085 runnm=$usenm
7086 case "$reuseval" in
7087 true) runnm=false;;
7088 esac
7089
7090 : nm options which may be necessary
7091 case "$nm_opt" in
7092 '') if $test -f /mach_boot; then
7093                 nm_opt=''       # Mach
7094         elif $test -d /usr/ccs/lib; then
7095                 nm_opt='-p'     # Solaris (and SunOS?)
7096         elif $test -f /dgux; then
7097                 nm_opt='-p'     # DG-UX
7098         elif $test -f /lib64/rld; then
7099                 nm_opt='-p'     # 64-bit Irix
7100         else
7101                 nm_opt=''
7102         fi;;
7103 esac
7104
7105 : nm options which may be necessary for shared libraries but illegal
7106 : for archive libraries.  Thank you, Linux.
7107 case "$nm_so_opt" in
7108 '')     case "$myuname" in
7109         *linux*|gnu*)
7110                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7111                         nm_so_opt='--dynamic'
7112                 fi
7113                 ;;
7114         esac
7115         ;;
7116 esac
7117
7118 case "$runnm" in
7119 true)
7120 : get list of predefined functions in a handy place
7121 echo " "
7122 case "$libc" in
7123 '') libc=unknown
7124         case "$libs" in
7125         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7126         esac
7127         ;;
7128 esac
7129 case "$libs" in
7130 '') ;;
7131 *)  for thislib in $libs; do
7132         case "$thislib" in
7133         -lc|-lc_s)
7134                 : Handle C library specially below.
7135                 ;;
7136         -l*)
7137                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7138                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7139                         :
7140                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7141                         :
7142                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7143                         :
7144                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7145                         :
7146                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7147                         :
7148                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7149                         :
7150                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7151                         :
7152                 else
7153                         try=''
7154                 fi
7155                 libnames="$libnames $try"
7156                 ;;
7157         *) libnames="$libnames $thislib" ;;
7158         esac
7159         done
7160         ;;
7161 esac
7162 xxx=normal
7163 case "$libc" in
7164 unknown)
7165         set /lib/libc.$so
7166         for xxx in $libpth; do
7167                 $test -r $1 || set $xxx/libc.$so
7168                 : The messy sed command sorts on library version numbers.
7169                 $test -r $1 || \
7170                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7171                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7172                                 h
7173                                 s/[0-9][0-9]*/0000&/g
7174                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7175                                 G
7176                                 s/\n/ /' | \
7177                          $sort | $sed -e 's/^.* //'`
7178                 eval set \$$#
7179         done
7180         $test -r $1 || set /usr/ccs/lib/libc.$so
7181         $test -r $1 || set /lib/libsys_s$_a
7182         ;;
7183 *)
7184         set blurfl
7185         ;;
7186 esac
7187 if $test -r "$1"; then
7188         echo "Your (shared) C library seems to be in $1."
7189         libc="$1"
7190 elif $test -r /lib/libc && $test -r /lib/clib; then
7191         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7192         xxx=apollo
7193         libc='/lib/clib /lib/libc'
7194         if $test -r /lib/syslib; then
7195                 echo "(Your math library is in /lib/syslib.)"
7196                 libc="$libc /lib/syslib"
7197         fi
7198 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7199         echo "Your C library seems to be in $libc, as you said before."
7200 elif $test -r $incpath/usr/lib/libc$_a; then
7201         libc=$incpath/usr/lib/libc$_a;
7202         echo "Your C library seems to be in $libc.  That's fine."
7203 elif $test -r /lib/libc$_a; then
7204         libc=/lib/libc$_a;
7205         echo "Your C library seems to be in $libc.  You're normal."
7206 else
7207         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7208                 :
7209         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7210                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7211         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7212                 :
7213         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7214                 :
7215         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7216                 :
7217         else
7218                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7219         fi
7220         if $test -r "$tans"; then
7221                 echo "Your C library seems to be in $tans, of all places."
7222                 libc=$tans
7223         else
7224                 libc='blurfl'
7225         fi
7226 fi
7227 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7228         dflt="$libc"
7229         cat <<EOM
7230
7231 If the guess above is wrong (which it might be if you're using a strange
7232 compiler, or your machine supports multiple models), you can override it here.
7233
7234 EOM
7235 else
7236         dflt=''
7237         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7238         cat >&4 <<EOM
7239 I can't seem to find your C library.  I've looked in the following places:
7240
7241 EOM
7242         $sed 's/^/      /' libpath
7243         cat <<EOM
7244
7245 None of these seems to contain your C library. I need to get its name...
7246
7247 EOM
7248 fi
7249 fn=f
7250 rp='Where is your C library?'
7251 . ./getfile
7252 libc="$ans"
7253
7254 echo " "
7255 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7256 set X `cat libnames`
7257 shift
7258 xxx=files
7259 case $# in 1) xxx=file; esac
7260 echo "Extracting names from the following $xxx for later perusal:" >&4
7261 echo " "
7262 $sed 's/^/      /' libnames >&4
7263 echo " "
7264 $echo $n "This may take a while...$c" >&4
7265
7266 for file in $*; do
7267         case $file in
7268         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7269         *) $nm $nm_opt $file 2>/dev/null;;
7270         esac
7271 done >libc.tmp
7272
7273 $echo $n ".$c"
7274 $grep fprintf libc.tmp > libc.ptf
7275 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7276 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7277 xxx='[ADTSIW]'
7278 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7279         eval $xscan;\
7280         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7281                 eval $xrun
7282 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7283         eval $xscan;\
7284         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7285                 eval $xrun
7286 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7287         eval $xscan;\
7288         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7289                 eval $xrun
7290 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7291         eval $xscan;\
7292         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7293                 eval $xrun
7294 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7295         eval $xscan;\
7296         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7297                 eval $xrun
7298 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7299         eval $xscan;\
7300         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7301                 eval $xrun
7302 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7303                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7304         eval $xscan;\
7305         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7306                 eval $xrun
7307 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7308         eval $xscan;\
7309         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7310                 eval $xrun
7311 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7312         eval $xscan;\
7313         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7314                 eval $xrun
7315 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7316         eval $xscan;\
7317         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7318                 eval $xrun
7319 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7320         eval $xscan;\
7321         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7322                 eval $xrun
7323 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7324         eval $xscan;\
7325         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7326                 eval $xrun
7327 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7328         eval $xscan;\
7329         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7330                 eval $xrun
7331 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7332         eval $xscan;\
7333         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7334                 eval $xrun
7335 else
7336         $nm -p $* 2>/dev/null >libc.tmp
7337         $grep fprintf libc.tmp > libc.ptf
7338         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7339                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7340         then
7341                 nm_opt='-p'
7342                 eval $xrun
7343         else
7344                 echo " "
7345                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7346                 com=''
7347                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7348                         for thisname in $libnames $libc; do
7349                                 $ar t $thisname >>libc.tmp
7350                         done
7351                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7352                         echo "Ok." >&4
7353                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7354                         # Repeat libc to extract forwarders to DLL entries too
7355                         for thisname in $libnames $libc; do
7356                                 $ar tv $thisname >>libc.tmp
7357                                 # Revision 50 of EMX has bug in $ar.
7358                                 # it will not extract forwarders to DLL entries
7359                                 # Use emximp which will extract exactly them.
7360                                 emximp -o tmp.imp $thisname \
7361                                     2>/dev/null && \
7362                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7363                                     < tmp.imp >>libc.tmp
7364                                 $rm tmp.imp
7365                         done
7366                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7367                         echo "Ok." >&4
7368                 else
7369                         echo "$ar didn't seem to work right." >&4
7370                         echo "Maybe this is a Cray...trying bld instead..." >&4
7371                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7372                         then
7373                                 for thisname in $libnames; do
7374                                         bld t $libnames | \
7375                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7376                                         $ar t $thisname >>libc.tmp
7377                                 done
7378                                 echo "Ok." >&4
7379                         else
7380                                 echo "That didn't work either.  Giving up." >&4
7381                                 exit 1
7382                         fi
7383                 fi
7384         fi
7385 fi
7386 nm_extract="$com"
7387 case "$PASE" in
7388 define)
7389     echo " "
7390     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7391     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7392     ;;
7393 *)  if $test -f /lib/syscalls.exp; then
7394         echo " "
7395         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7396         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7397     fi
7398     ;;
7399 esac
7400 ;;
7401 esac
7402 $rm -f libnames libpath
7403
7404 : see if dld is available
7405 set dld.h i_dld
7406 eval $inhdr
7407
7408 : is a C symbol defined?
7409 csym='tlook=$1;
7410 case "$3" in
7411 -v) tf=libc.tmp; tdc="";;
7412 -a) tf=libc.tmp; tdc="[]";;
7413 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7414 esac;
7415 tx=yes;
7416 case "$reuseval-$4" in
7417 true-) ;;
7418 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7419 esac;
7420 case "$tx" in
7421 yes)
7422         tval=false;
7423         if $test "$runnm" = true; then
7424                 if $contains $tlook $tf >/dev/null 2>&1; then
7425                         tval=true;
7426                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7427                         echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7428                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7429                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7430                         $rm -f try$_exe try.c core core.* try.core;
7431                 fi;
7432         else
7433                 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7434                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7435                 $rm -f try$_exe try.c;
7436         fi;
7437         ;;
7438 *)
7439         case "$tval" in
7440         $define) tval=true;;
7441         *) tval=false;;
7442         esac;
7443         ;;
7444 esac;
7445 eval "$2=$tval"'
7446
7447 : define an is-in-libc? function
7448 inlibc='echo " "; td=$define; tu=$undef;
7449 sym=$1; var=$2; eval "was=\$$2";
7450 tx=yes;
7451 case "$reuseval$was" in
7452 true) ;;
7453 true*) tx=no;;
7454 esac;
7455 case "$tx" in
7456 yes)
7457         set $sym tres -f;
7458         eval $csym;
7459         case "$tres" in
7460         true)
7461                 echo "$sym() found." >&4;
7462                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7463         *)
7464                 echo "$sym() NOT found." >&4;
7465                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7466         esac;;
7467 *)
7468         case "$was" in
7469         $define) echo "$sym() found." >&4;;
7470         *) echo "$sym() NOT found." >&4;;
7471         esac;;
7472 esac'
7473
7474 : see if dlopen exists
7475 xxx_runnm="$runnm"
7476 runnm=false
7477 set dlopen d_dlopen
7478 eval $inlibc
7479 runnm="$xxx_runnm"
7480
7481 : determine which dynamic loading, if any, to compile in
7482 echo " "
7483 dldir="ext/DynaLoader"
7484 case "$usedl" in
7485 $define|y|true)
7486         dflt='y'
7487         usedl="$define"
7488         ;;
7489 $undef|n|false)
7490         dflt='n'
7491         usedl="$undef"
7492         ;;
7493 *) 
7494         dflt='n'
7495         case "$d_dlopen" in
7496             $define) dflt='y' ;;
7497         esac
7498         case "$i_dld" in
7499             $define) dflt='y' ;;
7500         esac
7501         : Does a dl_xxx.xs file exist for this operating system
7502         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7503         ;;
7504 esac
7505 rp="Do you wish to use dynamic loading?"
7506 . ./myread
7507 usedl="$ans"
7508 case "$ans" in
7509 y*) usedl="$define"
7510         case "$dlsrc" in
7511         '')
7512                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7513                         dflt="$dldir/dl_${osname}.xs"
7514                 elif $test "$d_dlopen" = "$define" ; then
7515                         dflt="$dldir/dl_dlopen.xs"
7516                 elif $test "$i_dld" = "$define" ; then
7517                         dflt="$dldir/dl_dld.xs"
7518                 else
7519                         dflt=''
7520                 fi
7521                 ;;
7522         *)      dflt="$dldir/$dlsrc"
7523                 ;;
7524         esac
7525     echo "The following dynamic loading files are available:"
7526         : Can not go over to $dldir because getfile has path hard-coded in.
7527         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7528         rp="Source file to use for dynamic loading"
7529         fn="fne"
7530         gfpth="$src"
7531         . ./getfile
7532         usedl="$define"
7533         : emulate basename
7534         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7535
7536         $cat << EOM
7537
7538 Some systems may require passing special flags to $cc -c to
7539 compile modules that will be used to create a shared library.
7540 To use no flags, say "none".
7541
7542 EOM
7543     case "$cccdlflags" in
7544     '') case "$gccversion" in
7545                 '') case "$osname" in
7546                         hpux)   dflt='+z' ;;
7547                         next)   dflt='none' ;;
7548                         irix*)  dflt='-KPIC' ;;
7549                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7550                         sunos)  dflt='-pic' ;;
7551                         *)      dflt='none' ;;
7552                     esac
7553                         ;;
7554                 *)  case "$osname" in
7555                         darwin) dflt='none' ;;
7556                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7557                         *)      dflt='-fpic' ;;
7558                     esac ;;
7559             esac ;;
7560         ' ') dflt='none' ;;
7561     *)  dflt="$cccdlflags" ;;
7562     esac
7563     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7564     . ./myread
7565     case "$ans" in
7566     none) cccdlflags=' ' ;;
7567     *) cccdlflags="$ans" ;;
7568     esac
7569
7570     cat << EOM
7571
7572 Some systems use ld to create libraries that can be dynamically loaded,
7573 while other systems (such as those using ELF) use $cc.
7574
7575 EOM
7576         case "$ld" in
7577         '')     $cat >try.c <<EOM
7578 /* Test for whether ELF binaries are produced */
7579 #include <fcntl.h>
7580 #$i_stdlib I_STDLIB
7581 #ifdef I_STDLIB
7582 #include <stdlib.h>
7583 #endif
7584 int main() {
7585         char b[4];
7586         int i = open("a.out",O_RDONLY);
7587         if(i == -1) 
7588                 exit(1); /* fail */
7589         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7590                 exit(0); /* succeed (yes, it's ELF) */
7591         else
7592                 exit(1); /* fail */
7593 }
7594 EOM
7595                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7596                         cat <<EOM
7597 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7598 EOM
7599                         dflt="$cc"
7600                 else
7601                         echo "I'll use ld to build dynamic libraries."
7602                         dflt='ld'
7603                 fi
7604                 rm -f try.c a.out
7605                 ;;
7606         *)      dflt="$ld"
7607                 ;;
7608         esac
7609
7610     rp="What command should be used to create dynamic libraries?"
7611     . ./myread
7612         ld="$ans"
7613
7614     cat << EOM
7615
7616 Some systems may require passing special flags to $ld to create a
7617 library that can be dynamically loaded.  If your ld flags include
7618 -L/other/path options to locate libraries outside your loader's normal
7619 search path, you may need to specify those -L options here as well.  To
7620 use no flags, say "none".
7621
7622 EOM
7623     case "$lddlflags" in
7624     '') case "$osname" in
7625                         beos) dflt='-nostart' ;;
7626                         hpux) dflt='-b';
7627                               case "$gccversion" in
7628                               '') dflt="$dflt +vnocompatwarnings" ;;
7629                               esac
7630                               ;;        
7631                         linux|irix*|gnu*)       dflt='-shared' ;;
7632                         next)  dflt='none' ;;
7633                         solaris) dflt='-G' ;;
7634                         sunos) dflt='-assert nodefinitions' ;;
7635                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7636                 *)     dflt='none' ;;
7637                         esac
7638                         ;;
7639     *) dflt="$lddlflags" ;;
7640     esac
7641
7642         : Try to guess additional flags to pick up local libraries.
7643         : Be careful not to append to a plain 'none'
7644         case "$dflt" in
7645         none) dflt='' ;;
7646         esac
7647         for thisflag in $ldflags; do
7648                 case "$thisflag" in
7649                 -L*|-R*|-Wl,-R*)
7650                         case " $dflt " in
7651                         *" $thisflag "*) ;;
7652                         *) dflt="$dflt $thisflag" ;;
7653                         esac
7654                         ;;
7655                 esac
7656         done
7657
7658         case "$dflt" in
7659         ''|' ') dflt='none' ;;
7660         esac
7661
7662     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7663     . ./myread
7664     case "$ans" in
7665     none) lddlflags=' ' ;;
7666     *) lddlflags="$ans" ;;
7667     esac
7668
7669         cat <<EOM
7670
7671 Some systems may require passing special flags to $cc to indicate that
7672 the resulting executable will use dynamic linking.  To use no flags,
7673 say "none".
7674
7675 EOM
7676     case "$ccdlflags" in
7677     '') case "$osname" in
7678             linux|hpux|gnu*)    dflt='-Wl,-E' ;;
7679             next|sunos) dflt='none' ;;
7680             *)          dflt='none' ;;
7681             esac ;;
7682     ' ')  dflt='none' ;;
7683     *)  dflt="$ccdlflags" ;;
7684     esac
7685     rp="Any special flags to pass to $cc to use dynamic linking?"
7686     . ./myread
7687     case "$ans" in
7688     none) ccdlflags=' ' ;;
7689     *) ccdlflags="$ans" ;;
7690     esac
7691     ;;
7692 *)  usedl="$undef"
7693         ld='ld'
7694     dlsrc='dl_none.xs'
7695     lddlflags=''
7696     ccdlflags=''
7697     ;;
7698 esac
7699
7700 also=''
7701 case "$usedl" in
7702 $undef)
7703         # No dynamic loading being used, so don't bother even to prompt.
7704         useshrplib='false'
7705         ;;
7706 *)      case "$useshrplib" in
7707         '')     case "$osname" in
7708                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7709                         dflt=y
7710                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7711                         ;;
7712                 next*)
7713                         case "$osvers" in
7714                         4*)     dflt=y
7715                                 also='Building a shared libperl is needed for MAB support.'
7716                                 ;;
7717                         *)      dflt=n
7718                                 ;;
7719                         esac
7720                         ;;
7721                 *)      dflt=n
7722                         ;;
7723                 esac
7724                 ;;
7725         $define|true|[Yy]*)
7726                 dflt=y
7727                 ;;
7728         *)      dflt=n
7729                 ;;
7730         esac
7731         $cat << EOM
7732
7733 The perl executable is normally obtained by linking perlmain.c with
7734 libperl${_a}, any static extensions (usually just DynaLoader), and
7735 any other libraries needed on this system (such as -lm, etc.).  Since
7736 your system supports dynamic loading, it is probably possible to build
7737 a shared libperl.$so.  If you will have more than one executable linked
7738 to libperl.$so, this will significantly reduce the size of each
7739 executable, but it may have a noticeable affect on performance.  The
7740 default is probably sensible for your system.
7741 $also
7742
7743 EOM
7744         rp="Build a shared libperl.$so (y/n)"
7745         . ./myread
7746         case "$ans" in
7747         true|$define|[Yy]*)
7748                 useshrplib='true'  ;;
7749         *)      useshrplib='false' ;;
7750         esac
7751         ;;
7752 esac
7753
7754 case "$useshrplib" in
7755 true)
7756         case "$libperl" in
7757         '')
7758                 # Figure out a good name for libperl.so.  Since it gets stored in
7759                 # a version-specific architecture-dependent library, the version
7760                 # number isn't really that important, except for making cc/ld happy.
7761                 #
7762                 # A name such as libperl.so.3.1
7763                 majmin="libperl.$so.$patchlevel.$subversion"
7764                 # A name such as libperl.so.301
7765                 majonly=`echo $patchlevel $subversion |
7766                         $awk '{printf "%d%02d", $1, $2}'`
7767                 majonly=libperl.$so.$majonly
7768                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7769                 # rely on figuring it out from the naming of libc.
7770                 case "${osname}${osvers}" in
7771                 next4*)
7772                         dflt=libperl.5.$so
7773                         # XXX How handle the --version stuff for MAB?
7774                         ;;
7775                 linux*|gnu*)  # ld won't link with a bare -lperl otherwise.
7776                         dflt=libperl.$so
7777                         ;;
7778                 cygwin*) # ld links against an importlib
7779                         dflt=libperl$lib_ext
7780                         ;;
7781                 *)      # Try to guess based on whether libc has major.minor.
7782                         case "$libc" in
7783                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7784                         *libc.$so.[0-9]*) dflt=$majonly ;;
7785                         *)      dflt=libperl.$so ;;
7786                         esac
7787                         ;;
7788                 esac
7789                 ;;
7790         *)      dflt=$libperl
7791                 ;;
7792         esac
7793         cat << EOM
7794
7795 I need to select a good name for the shared libperl.  If your system uses
7796 library names with major and minor numbers, then you might want something
7797 like $majmin.  Alternatively, if your system uses a single version
7798 number for shared libraries, then you might want to use $majonly.
7799 Or, your system might be quite happy with a simple libperl.$so.
7800
7801 Since the shared libperl will get installed into a version-specific
7802 architecture-dependent directory, the version number of the shared perl
7803 library probably isn't important, so the default should be o.k.
7804
7805 EOM
7806         rp='What name do you want to give to the shared libperl?'
7807         . ./myread
7808         libperl=$ans
7809         echo "Ok, I'll use $libperl"
7810         ;;
7811 *)
7812         libperl="libperl${_a}"
7813         ;;
7814 esac
7815
7816 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7817 case "$shrpdir" in
7818 '') ;;
7819 *)      $cat >&4 <<EOM
7820 WARNING:  Use of the shrpdir variable for the installation location of
7821 the shared $libperl is not supported.  It was never documented and
7822 will not work in this version.  Let me (perlbug@perl.org)
7823 know of any problems this may cause.
7824
7825 EOM
7826         case "$shrpdir" in
7827         "$archlibexp/CORE")
7828                 $cat >&4 <<EOM
7829 But your current setting of $shrpdir is
7830 the default anyway, so it's harmless.
7831 EOM
7832                 ;;
7833         *)
7834                 $cat >&4 <<EOM
7835 Further, your current attempted setting of $shrpdir
7836 conflicts with the value of $archlibexp/CORE
7837 that installperl will use.
7838 EOM
7839                 ;;
7840         esac
7841         ;;
7842 esac
7843
7844 # How will the perl executable find the installed shared $libperl?
7845 # Add $xxx to ccdlflags.
7846 # If we can't figure out a command-line option, use $shrpenv to
7847 # set env LD_RUN_PATH.  The main perl makefile uses this.
7848 shrpdir=$archlibexp/CORE
7849 xxx=''
7850 tmp_shrpenv=''
7851 if "$useshrplib"; then
7852     case "$osname" in 
7853         aix)
7854                 # We'll set it in Makefile.SH...
7855                 ;;
7856         solaris)
7857                 xxx="-R $shrpdir"
7858                 ;;
7859         freebsd|netbsd|openbsd|interix)
7860                 xxx="-Wl,-R$shrpdir"
7861                 ;;
7862         bsdos|linux|irix*|dec_osf|gnu*)
7863                 xxx="-Wl,-rpath,$shrpdir"
7864                 ;;
7865         next)
7866                 # next doesn't like the default...
7867                 ;;
7868         beos)
7869                 # beos doesn't like the default, either.
7870                 ;;
7871         hpux*)
7872                 # hpux doesn't like the default, either.
7873                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7874                 ;;
7875         *)
7876                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7877                 ;;
7878         esac
7879         case "$xxx" in
7880         '') ;;
7881         *)      
7882                 # Only add $xxx if it isn't already in ccdlflags.
7883                 case " $ccdlflags " in
7884                 *" $xxx "*)     ;;
7885                 *)      ccdlflags="$ccdlflags $xxx"
7886                         cat <<EOM >&4
7887
7888 Adding $xxx to the flags
7889 passed to $ld so that the perl executable will find the 
7890 installed shared $libperl.
7891
7892 EOM
7893                         ;;
7894                 esac
7895                 ;;
7896         esac
7897 fi
7898 # Fix ccdlflags in AIX for building external extensions.
7899 # (For building Perl itself bare -bE:perl.exp is needed,
7900 #  Makefile.SH takes care of this.)
7901 case "$osname" in
7902 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7903 esac
7904 # Respect a hint or command-line value.
7905 case "$shrpenv" in
7906 '') shrpenv="$tmp_shrpenv" ;;
7907 esac
7908 case "$ldlibpthname" in
7909 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7910 none)   ldlibpthname='' ;;
7911 esac
7912
7913 : determine where manual pages are on this system
7914 echo " "
7915 case "$sysman" in
7916 '') 
7917         syspath='/usr/share/man/man1 /usr/man/man1'
7918         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7919         syspath="$syspath /usr/man/u_man/man1"
7920         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7921         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7922         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7923         sysman=`./loc . /usr/man/man1 $syspath`
7924         ;;
7925 esac
7926 if $test -d "$sysman"; then
7927         echo "System manual is in $sysman." >&4
7928 else
7929         echo "Could not find manual pages in source form." >&4
7930 fi
7931
7932 : determine where manual pages go
7933 set man1dir man1dir none
7934 eval $prefixit
7935 $cat <<EOM
7936
7937 $spackage has manual pages available in source form.
7938 EOM
7939 case "$nroff" in
7940 nroff)
7941         echo "However, you don't have nroff, so they're probably useless to you."
7942         case "$man1dir" in
7943         '') man1dir="none";;
7944         esac;;
7945 esac
7946 echo "If you don't want the manual sources installed, answer 'none'."
7947 case "$man1dir" in
7948 ' ') dflt=none
7949         ;;
7950 '')
7951         lookpath="$prefixexp/share/man/man1"
7952         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7953         lookpath="$lookpath $prefixexp/man/p_man/man1"
7954         lookpath="$lookpath $prefixexp/man/u_man/man1"
7955         lookpath="$lookpath $prefixexp/man/man.1"
7956         case "$sysman" in
7957         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7958         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7959         esac
7960         set dflt
7961         eval $prefixup
7962         ;;
7963 *)  dflt="$man1dir"
7964         ;;
7965 esac
7966 echo " "
7967 fn=dn+~
7968 rp="Where do the main $spackage manual pages (source) go?"
7969 . ./getfile
7970 if $test "X$man1direxp" != "X$ansexp"; then
7971         installman1dir=''
7972 fi
7973 man1dir="$ans"
7974 man1direxp="$ansexp"
7975 case "$man1dir" in
7976 '')     man1dir=' '
7977         installman1dir='';;
7978 esac
7979
7980 : Change installation prefix, if necessary.
7981 if $test X"$prefix" != X"$installprefix"; then
7982         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7983 else
7984         installman1dir="$man1direxp"
7985 fi
7986
7987 : What suffix to use on installed man pages
7988
7989 case "$man1dir" in
7990 ' ')
7991         man1ext='0'
7992         ;;
7993 *)
7994         rp="What suffix should be used for the main $spackage man pages?"
7995         case "$man1ext" in
7996         '')     case "$man1dir" in
7997                 *1)  dflt=1 ;;
7998                 *1p) dflt=1p ;;
7999                 *1pm) dflt=1pm ;;
8000                 *l) dflt=l;;
8001                 *n) dflt=n;;
8002                 *o) dflt=o;;
8003                 *p) dflt=p;;
8004                 *C) dflt=C;;
8005                 *L) dflt=L;;
8006                 *L1) dflt=L1;;
8007                 *) dflt=1;;
8008                 esac
8009                 ;;
8010         *)      dflt="$man1ext";;
8011         esac
8012         . ./myread
8013         man1ext="$ans"
8014         ;;
8015 esac
8016
8017 : see if we can have long filenames
8018 echo " "
8019 first=123456789abcdef
8020 $rm -f $first
8021 if (echo hi >$first) 2>/dev/null; then
8022         if $test -f 123456789abcde; then
8023                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
8024                 val="$undef"
8025         else
8026                 echo 'You can have filenames longer than 14 characters.'>&4
8027                 val="$define"
8028         fi
8029 else
8030         $cat <<'EOM'
8031 You can't have filenames longer than 14 chars.
8032 You can't even think about them!
8033 EOM
8034         val="$undef"
8035 fi 
8036 set d_flexfnam
8037 eval $setvar
8038 $rm -rf 123456789abcde*
8039
8040 : determine where library module manual pages go
8041 set man3dir man3dir none
8042 eval $prefixit
8043 $cat <<EOM
8044
8045 $spackage has manual pages for many of the library modules.
8046 EOM
8047
8048 case "$nroff" in
8049 nroff)
8050         $cat <<'EOM'
8051 However, you don't have nroff, so they're probably useless to you.
8052 EOM
8053         case "$man3dir" in
8054         '') man3dir="none";;
8055         esac;;
8056 esac
8057
8058 case "$d_flexfnam" in
8059 undef)
8060         $cat <<'EOM'
8061 However, your system can't handle the long file names like File::Basename.3. 
8062 EOM
8063         case "$man3dir" in
8064         '') man3dir="none";;
8065         esac;;
8066 esac
8067
8068 echo "If you don't want the manual sources installed, answer 'none'."
8069 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8070 case "$man3dir" in
8071 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8072         if $test -d "$privlib/man/man3"; then
8073                 cat <<EOM >&4
8074
8075 WARNING:  Previous versions of perl installed man3 pages into
8076 $privlib/man/man3.  This version will suggest a 
8077 new default of $dflt.  
8078 EOM
8079                 tdflt=$dflt
8080                 dflt='n'
8081                 rp='Do you wish to preserve the old behavior?(y/n)'
8082                 . ./myread
8083                 case "$ans" in
8084                 y*) dflt="$privlib/man/man3" ;;
8085                 *)  dflt=$tdflt ;;
8086                 esac
8087     fi
8088         ;;
8089 *)      dflt="$man3dir" ;;
8090 esac
8091 case "$dflt" in
8092 ' ') dflt=none ;;
8093 esac
8094 echo " "
8095 fn=dn+~
8096 rp="Where do the $package library man pages (source) go?"
8097 . ./getfile
8098 man3dir="$ans"
8099 man3direxp="$ansexp"
8100 case "$man3dir" in
8101 '')     man3dir=' '
8102         installman3dir='';;
8103 esac
8104
8105 : Change installation prefix, if necessary.
8106 if $test X"$prefix" != X"$installprefix"; then
8107         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8108 else
8109         installman3dir="$man3direxp"
8110 fi
8111
8112 : What suffix to use on installed man pages
8113 case "$man3dir" in
8114 ' ')
8115         man3ext='0'
8116         ;;
8117 *)
8118         rp="What suffix should be used for the $package library man pages?"
8119         case "$man3ext" in
8120         '')     case "$man3dir" in
8121                 *3)  dflt=3 ;;
8122                 *3p) dflt=3p ;;
8123                 *3pm) dflt=3pm ;;
8124                 *l) dflt=l;;
8125                 *n) dflt=n;;
8126                 *o) dflt=o;;
8127                 *p) dflt=p;;
8128                 *C) dflt=C;;
8129                 *L) dflt=L;;
8130                 *L3) dflt=L3;;
8131                 *) dflt=3;;
8132                 esac
8133                 ;;
8134         *)      dflt="$man3ext";;
8135         esac
8136         . ./myread
8137         man3ext="$ans"
8138         ;;
8139 esac
8140
8141 : see if we have to deal with yellow pages, now NIS.
8142 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8143         if $test -f /usr/etc/nibindd; then
8144                 echo " "
8145                 echo "I'm fairly confident you're on a NeXT."
8146                 echo " "
8147                 rp='Do you get the hosts file via NetInfo?'
8148                 dflt=y
8149                 case "$hostcat" in
8150                 nidump*) ;;
8151                 '') ;;
8152                 *) dflt=n;;
8153                 esac
8154                 . ./myread
8155                 case "$ans" in
8156                 y*) hostcat='nidump hosts .';;
8157                 *)      case "$hostcat" in
8158                         nidump*) hostcat='';;
8159                         esac
8160                         ;;
8161                 esac
8162         fi
8163         case "$hostcat" in
8164         nidump*) ;;
8165         *)
8166                 case "$hostcat" in
8167                 *ypcat*) dflt=y;;
8168                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8169                                 dflt=y
8170                         else
8171                                 dflt=n
8172                         fi;;
8173                 *) dflt=n;;
8174                 esac
8175                 echo " "
8176                 rp='Are you getting the hosts file via yellow pages?'
8177                 . ./myread
8178                 case "$ans" in
8179                 y*) hostcat='ypcat hosts';;
8180                 *) hostcat='cat /etc/hosts';;
8181                 esac
8182                 ;;
8183         esac
8184 fi
8185 case "$hostcat" in
8186 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8187 esac
8188 case "$groupcat" in
8189 '') test -f /etc/group && groupcat='cat /etc/group';;
8190 esac
8191 case "$passcat" in
8192 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8193 esac
8194
8195 : now get the host name
8196 echo " "
8197 echo "Figuring out host name..." >&4
8198 case "$myhostname" in
8199 '') cont=true
8200         echo 'Maybe "hostname" will work...'
8201         if tans=`sh -c hostname 2>&1` ; then
8202                 myhostname=$tans
8203                 phostname=hostname
8204                 cont=''
8205         fi
8206         ;;
8207 *) cont='';;
8208 esac
8209 if $test "$cont"; then
8210         if ./xenix; then
8211                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8212                 if tans=`cat /etc/systemid 2>&1` ; then
8213                         myhostname=$tans
8214                         phostname='cat /etc/systemid'
8215                         echo "Whadyaknow.  Xenix always was a bit strange..."
8216                         cont=''
8217                 fi
8218         elif $test -r /etc/systemid; then
8219                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8220         fi
8221 fi
8222 if $test "$cont"; then
8223         echo 'No, maybe "uuname -l" will work...'
8224         if tans=`sh -c 'uuname -l' 2>&1` ; then
8225                 myhostname=$tans
8226                 phostname='uuname -l'
8227         else
8228                 echo 'Strange.  Maybe "uname -n" will work...'
8229                 if tans=`sh -c 'uname -n' 2>&1` ; then
8230                         myhostname=$tans
8231                         phostname='uname -n'
8232                 else
8233                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8234                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8235                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8236                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8237                         else
8238                                 case "$myhostname" in
8239                                 '') echo "Does this machine have an identity crisis or something?"
8240                                         phostname='';;
8241                                 *)
8242                                         echo "Well, you said $myhostname before..."
8243                                         phostname='echo $myhostname';;
8244                                 esac
8245                         fi
8246                 fi
8247         fi
8248 fi
8249 case "$myhostname" in
8250 '') myhostname=noname ;;
8251 esac
8252 : you do not want to know about this
8253 set $myhostname
8254 myhostname=$1
8255
8256 : verify guess
8257 if $test "$myhostname" ; then
8258         dflt=y
8259         rp='Your host name appears to be "'$myhostname'".'" Right?"
8260         . ./myread
8261         case "$ans" in
8262         y*) ;;
8263         *) myhostname='';;
8264         esac
8265 fi
8266
8267 : bad guess or no guess
8268 while $test "X$myhostname" = X ; do
8269         dflt=''
8270         rp="Please type the (one word) name of your host:"
8271         . ./myread
8272         myhostname="$ans"
8273 done
8274
8275 : translate upper to lower if necessary
8276 case "$myhostname" in
8277 *[A-Z]*)
8278         echo "(Normalizing case in your host name)"
8279         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8280         ;;
8281 esac
8282
8283 case "$myhostname" in
8284 *.*)
8285         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8286         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8287         echo "(Trimming domain name from host name--host name is now $myhostname)"
8288         ;;
8289 *) case "$mydomain" in
8290         '')
8291                 {
8292                         test "X$hostcat" = "Xypcat hosts" &&
8293                         ypmatch "$myhostname" hosts 2>/dev/null |\
8294                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8295                         $test -s hosts
8296                 } || {
8297                         test "X$hostcat" != "X" &&
8298                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8299                                         /[       ]$myhostname[  . ]/p" > hosts
8300                 }
8301                 tmp_re="[       . ]"
8302                 if $test -f hosts; then
8303                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8304                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8305                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8306                                 hosts | $sort | $uniq | \
8307                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8308                         case `$echo X$dflt` in
8309                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8310                                 dflt=.
8311                                 ;;
8312                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8313                                 ;;
8314                         esac
8315                 else
8316                         echo "(I cannot locate a hosts database anywhere)"
8317                         dflt=.
8318                 fi
8319                 case "$dflt" in
8320                 .)
8321                         tans=`./loc resolv.conf X /etc /usr/etc`
8322                         if $test -f "$tans"; then
8323                                 echo "(Attempting domain name extraction from $tans)"
8324                                 dflt=.`$sed -n -e 's/   / /g' \
8325                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8326                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8327                                 case "$dflt" in
8328                                 .) dflt=.`$sed -n -e 's/        / /g' \
8329                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8330                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8331                                         ;;
8332                                 esac
8333                         fi
8334                         ;;
8335                 esac
8336                 case "$dflt" in
8337                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8338                         dflt=.`sh -c domainname 2>/dev/null`
8339                         case "$dflt" in
8340                         '') dflt='.';;
8341                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8342                         esac
8343                         ;;
8344                 esac
8345                 case "$dflt$osname" in
8346                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8347                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8348                         ;;
8349                 esac
8350                 case "$dflt" in
8351                 .) echo "(Lost all hope -- silly guess then)"
8352                         dflt='.nonet'
8353                         ;;
8354                 esac
8355                 $rm -f hosts
8356                 ;;
8357         *) dflt="$mydomain";;
8358         esac;;
8359 esac
8360 echo " "
8361 rp="What is your domain name?"
8362 . ./myread
8363 tans="$ans"
8364 case "$ans" in
8365 '') ;;
8366 .*) ;;
8367 *) tans=".$tans";;
8368 esac
8369 mydomain="$tans"
8370
8371 : translate upper to lower if necessary
8372 case "$mydomain" in
8373 *[A-Z]*)
8374         echo "(Normalizing case in your domain name)"
8375         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8376         ;;
8377 esac
8378
8379 : a little sanity check here
8380 case "$phostname" in
8381 '') ;;
8382 *)
8383         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8384         $myhostname$mydomain|$myhostname) ;;
8385         *)
8386                 case "$phostname" in
8387                 sed*)
8388                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8389                         ;;
8390                 *)
8391                         echo "(That doesn't agree with your $phostname command, by the way.)"
8392                         ;;
8393                 esac
8394         ;;
8395         esac
8396         ;;
8397 esac
8398
8399 $cat <<EOM
8400
8401 I need to get your e-mail address in Internet format if possible, i.e.
8402 something like user@host.domain. Please answer accurately since I have
8403 no easy means to double check it. The default value provided below
8404 is most probably close to reality but may not be valid from outside
8405 your organization...
8406
8407 EOM
8408 cont=x
8409 while test "$cont"; do
8410         case "$cf_email" in
8411         '') dflt="$cf_by@$myhostname$mydomain";;
8412         *) dflt="$cf_email";;
8413         esac
8414         rp='What is your e-mail address?'
8415         . ./myread
8416         cf_email="$ans"
8417         case "$cf_email" in
8418         *@*.*) cont='' ;;
8419         *)
8420                 rp='Address does not look like an Internet one.  Use it anyway?'
8421                 case "$fastread" in
8422                 yes) dflt=y ;;
8423                 *) dflt=n ;;
8424                 esac
8425                 . ./myread
8426                 case "$ans" in
8427                 y*) cont='' ;;
8428                 *) echo " " ;;
8429                 esac
8430                 ;;
8431         esac
8432 done
8433
8434 $cat <<EOM
8435
8436 If you or somebody else will be maintaining perl at your site, please
8437 fill in the correct e-mail address here so that they may be contacted
8438 if necessary. Currently, the "perlbug" program included with perl
8439 will send mail to this address in addition to perlbug@perl.org. You may
8440 enter "none" for no administrator.
8441
8442 EOM
8443 case "$perladmin" in
8444 '') dflt="$cf_email";;
8445 *) dflt="$perladmin";;
8446 esac
8447 rp='Perl administrator e-mail address'
8448 . ./myread
8449 perladmin="$ans"
8450
8451 : determine whether to only install version-specific parts.
8452 echo " "
8453 $cat <<EOM
8454 Do you want to install only the version-specific parts of the perl
8455 distribution?  Usually you do *not* want to do this.
8456 EOM
8457 case "$versiononly" in
8458 "$define"|[Yy]*|true) dflt='y' ;;
8459 *) dflt='n';
8460 esac
8461 rp="Do you want to install only the version-specific parts of perl?"
8462 . ./myread
8463 case "$ans" in
8464 [yY]*)  val="$define";;
8465 *)      val="$undef" ;;
8466 esac
8467 set versiononly
8468 eval $setvar
8469
8470 case "$versiononly" in
8471 "$define") inc_version_list=''
8472            inc_version_list_init=0
8473            ;;
8474 esac
8475
8476 : figure out how to guarantee perl startup
8477 case "$startperl" in
8478 '')
8479         case "$sharpbang" in
8480         *!)
8481                 $cat <<EOH
8482
8483 I can use the #! construct to start perl on your system. This will
8484 make startup of perl scripts faster, but may cause problems if you
8485 want to share those scripts and perl is not in a standard place
8486 ($binexp/perl) on all your platforms. The alternative is to force
8487 a shell by starting the script with a single ':' character.
8488
8489 EOH
8490                 case "$versiononly" in
8491                 "$define")      dflt="$binexp/perl$version";;  
8492                 *)              dflt="$binexp/perl";;
8493                 esac
8494                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8495                 . ./myread
8496                 case "$ans" in
8497                 none)   startperl=": # use perl";;
8498                 *)      startperl="#!$ans"
8499                         if $test 30 -lt `echo "$ans" | wc -c`; then
8500                                 $cat >&4 <<EOM
8501
8502 WARNING:  Some systems limit the #! command to 32 characters.
8503 If you experience difficulty running Perl scripts with #!, try
8504 installing Perl in a directory with a shorter pathname.
8505
8506 EOM
8507                         fi ;;
8508                 esac
8509                 ;;
8510         *) startperl=": # use perl"
8511                 ;;
8512         esac
8513         ;;
8514 esac
8515 echo "I'll use $startperl to start perl scripts."
8516
8517 : figure best path for perl in scripts
8518 case "$perlpath" in
8519 '')
8520         case "$versiononly" in
8521         "$define")      perlpath="$binexp/perl$version";;
8522         *)              perlpath="$binexp/perl";;
8523         esac
8524         case "$startperl" in
8525         *!*) ;;
8526         *)
8527                 $cat <<EOH
8528
8529 I will use the "eval 'exec'" idiom to start Perl on your system.
8530 I can use the full path of your Perl binary for this purpose, but
8531 doing so may cause problems if you want to share those scripts and
8532 Perl is not always in a standard place ($binexp/perl).
8533
8534 EOH
8535                 dflt="$binexp/perl"
8536                 rp="What path shall I use in \"eval 'exec'\"?"
8537                 . ./myread
8538                 perlpath="$ans"
8539                 ;;
8540         esac
8541         ;;
8542 esac
8543 case "$startperl" in
8544 *!*)    ;;
8545 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8546 esac
8547
8548 : determine where public executable scripts go
8549 set scriptdir scriptdir
8550 eval $prefixit
8551 case "$scriptdir" in
8552 '')
8553         dflt="$bin"
8554         : guess some guesses
8555         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8556         $test -d /usr/share/bin     && dflt=/usr/share/bin
8557         $test -d /usr/local/script  && dflt=/usr/local/script
8558         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8559         $test -d $prefixexp/script  && dflt=$prefixexp/script
8560         set dflt
8561         eval $prefixup
8562         ;;
8563 *)  dflt="$scriptdir"
8564         ;;
8565 esac
8566 $cat <<EOM
8567  
8568 Some installations have a separate directory just for executable scripts so
8569 that they can mount it across multiple architectures but keep the scripts in
8570 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8571 Or you might just lump your scripts in with all your other executables.
8572  
8573 EOM
8574 fn=d~
8575 rp='Where do you keep publicly executable scripts?'
8576 . ./getfile
8577 if $test "X$ansexp" != "X$scriptdirexp"; then
8578         installscript=''
8579 fi
8580 scriptdir="$ans"
8581 scriptdirexp="$ansexp"
8582 : Change installation prefix, if necessary.
8583 if $test X"$prefix" != X"$installprefix"; then
8584         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8585 else
8586         installscript="$scriptdirexp"
8587 fi
8588
8589 : determine where add-on public executables go
8590 case "$sitebin" in
8591 '')     dflt=$siteprefix/bin ;;
8592 *)      dflt=$sitebin ;;
8593 esac
8594 fn=d~
8595 rp='Pathname where the add-on public executables should be installed?'
8596 . ./getfile
8597 sitebin="$ans"
8598 sitebinexp="$ansexp"
8599 : Change installation prefix, if necessary.
8600 if $test X"$prefix" != X"$installprefix"; then
8601         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8602 else
8603         installsitebin="$sitebinexp"
8604 fi
8605
8606 : determine where add-on html pages go
8607 : There is no standard location, so try to copy the previously-selected
8608 : directory structure for the core html pages.
8609 case "$sitehtml1dir" in
8610 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8611 *)     dflt=$sitehtml1dir ;;
8612 esac
8613 case "$dflt" in
8614 ''|' ') dflt=none ;;
8615 esac
8616 fn=dn+~
8617 rp='Pathname where the site-specific html pages should be installed?'
8618 . ./getfile
8619 sitehtml1dir="$ans"
8620 sitehtml1direxp="$ansexp"
8621 : Change installation prefix, if necessary.
8622 if $test X"$prefix" != X"$installprefix"; then
8623         installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
8624 else
8625         installsitehtml1dir="$sitehtml1direxp"
8626 fi
8627
8628 : determine where add-on library html pages go
8629 : There is no standard location, so try to copy the previously-selected
8630 : directory structure for the core html pages.
8631 case "$sitehtml3dir" in
8632 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8633 *)     dflt=$sitehtml3dir ;;
8634 esac
8635 case "$dflt" in
8636 ''|' ') dflt=none ;;
8637 esac
8638 fn=dn+~
8639 rp='Pathname where the site-specific library html pages should be installed?'
8640 . ./getfile
8641 sitehtml3dir="$ans"
8642 sitehtml3direxp="$ansexp"
8643 : Change installation prefix, if necessary.
8644 if $test X"$prefix" != X"$installprefix"; then
8645         installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
8646 else
8647         installsitehtml3dir="$sitehtml3direxp"
8648 fi
8649
8650 : determine where add-on manual pages go
8651 case "$siteman1dir" in
8652 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8653 *)      dflt=$siteman1dir ;;
8654 esac
8655 case "$dflt" in
8656 ''|' ') dflt=none ;;
8657 esac
8658 fn=dn+~
8659 rp='Pathname where the site-specific manual pages should be installed?'
8660 . ./getfile
8661 siteman1dir="$ans"
8662 siteman1direxp="$ansexp"
8663 : Change installation prefix, if necessary.
8664 if $test X"$prefix" != X"$installprefix"; then
8665         installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
8666 else
8667         installsiteman1dir="$siteman1direxp"
8668 fi
8669
8670 : determine where add-on library man pages go
8671 case "$siteman3dir" in
8672 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8673 *)      dflt=$siteman3dir ;;
8674 esac
8675 case "$dflt" in
8676 ''|' ') dflt=none ;;
8677 esac
8678 fn=dn+~
8679 rp='Pathname where the site-specific library manual pages should be installed?'
8680 . ./getfile
8681 siteman3dir="$ans"
8682 siteman3direxp="$ansexp"
8683 : Change installation prefix, if necessary.
8684 if $test X"$prefix" != X"$installprefix"; then
8685         installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
8686 else
8687         installsiteman3dir="$siteman3direxp"
8688 fi
8689
8690 : determine where add-on public executable scripts go
8691 case "$sitescript" in
8692 '')     dflt=$siteprefix/script
8693         $test -d $dflt || dflt=$sitebin ;;
8694 *)  dflt="$sitescript" ;;
8695 esac
8696 fn=d~+
8697 rp='Pathname where add-on public executable scripts should be installed?'
8698 . ./getfile
8699 sitescript="$ans"
8700 sitescriptexp="$ansexp"
8701 : Change installation prefix, if necessary.
8702 if $test X"$prefix" != X"$installprefix"; then
8703         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8704 else
8705         installsitescript="$sitescriptexp"
8706 fi
8707
8708 case "$usefaststdio" in
8709 $define|true|[yY]*|'')
8710         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8711         case "$xversion" in
8712         [68])   dflt='y' ;;
8713         *)      dflt='n' ;;
8714         esac
8715         ;;
8716 *) dflt='n';;
8717 esac
8718 cat <<EOM
8719
8720 Perl can be built to use 'fast stdio', which means using the stdio
8721 library but also directly manipulating the stdio buffers to enable
8722 faster I/O.  Using stdio is better for backward compatibility (especially
8723 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8724 interface has been preferred instead of stdio.
8725
8726 If this doesn't make any sense to you, just accept the default '$dflt'.
8727 EOM
8728 rp='Use the "fast stdio" if available?'
8729 . ./myread
8730 case "$ans" in
8731 y|Y)    val="$define" ;;     
8732 *)      val="$undef" ;;
8733 esac
8734 set usefaststdio
8735 eval $setvar
8736
8737
8738 : define an is-a-typedef? function
8739 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8740 case "$inclist" in
8741 "") inclist="sys/types.h";;
8742 esac;
8743 eval "varval=\$$var";
8744 case "$varval" in
8745 "")
8746         $rm -f temp.c;
8747         for inc in $inclist; do
8748                 echo "#include <$inc>" >>temp.c;
8749         done;
8750         echo "#ifdef $type" >> temp.c;
8751         echo "printf(\"We have $type\");" >> temp.c;
8752         echo "#endif" >> temp.c;
8753         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8754         if $contains $type temp.E >/dev/null 2>&1; then
8755                 eval "$var=\$type";
8756         else
8757                 eval "$var=\$def";
8758         fi;
8759         $rm -f temp.?;;
8760 *) eval "$var=\$varval";;
8761 esac'
8762
8763 : define an is-a-typedef? function that prompts if the type is not available.
8764 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8765 case "$inclist" in
8766 "") inclist="sys/types.h";;
8767 esac;
8768 eval "varval=\$$var";
8769 case "$varval" in
8770 "")
8771         $rm -f temp.c;
8772         for inc in $inclist; do
8773                 echo "#include <$inc>" >>temp.c;
8774         done;
8775         echo "#ifdef $type" >> temp.c;
8776         echo "printf(\"We have $type\");" >> temp.c;
8777         echo "#endif" >> temp.c;
8778         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8779         echo " " ;
8780         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8781         if $contains $type temp.E >/dev/null 2>&1; then
8782                 echo "$type found." >&4;
8783                 eval "$var=\$type";
8784         else
8785                 echo "$type NOT found." >&4;
8786                 dflt="$def";
8787                 . ./myread ;
8788                 eval "$var=\$ans";
8789         fi;
8790         $rm -f temp.?;;
8791 *) eval "$var=\$varval";;
8792 esac'
8793
8794 : see what type lseek is declared as in the kernel
8795 rp="What is the type used for lseek's offset on this system?"
8796 set off_t lseektype long stdio.h sys/types.h
8797 eval $typedef_ask
8798
8799 echo " "
8800 echo "Checking to see how big your file offsets are..." >&4
8801 $cat >try.c <<EOCP
8802 #include <sys/types.h>
8803 #include <stdio.h>
8804 int main()
8805 {
8806     printf("%d\n", (int)sizeof($lseektype));
8807     return(0); 
8808 }
8809 EOCP
8810 set try
8811 if eval $compile_ok; then
8812         lseeksize=`$run ./try`
8813         echo "Your file offsets are $lseeksize bytes long."
8814 else
8815         dflt=$longsize
8816         echo " "
8817         echo "(I can't seem to compile the test program.  Guessing...)"
8818         rp="What is the size of your file offsets (in bytes)?"
8819         . ./myread
8820         lseeksize="$ans"
8821 fi
8822 $rm -f try.c try
8823
8824 : see what type file positions are declared as in the library
8825 rp="What is the type for file position used by fsetpos()?"
8826 set fpos_t fpostype long stdio.h sys/types.h
8827 eval $typedef_ask
8828
8829 echo " "
8830 case "$fpostype" in
8831 *_t) zzz="$fpostype"    ;;
8832 *)   zzz="fpos_t"       ;;
8833 esac
8834 echo "Checking the size of $zzz..." >&4 
8835 cat > try.c <<EOCP
8836 #include <sys/types.h>
8837 #include <stdio.h>
8838 #$i_stdlib I_STDLIB
8839 #ifdef I_STDLIB
8840 #include <stdlib.h>
8841 #endif
8842 int main() {
8843     printf("%d\n", (int)sizeof($fpostype));
8844     exit(0);
8845 }
8846 EOCP
8847 set try
8848 if eval $compile_ok; then
8849         yyy=`$run ./try`
8850         case "$yyy" in
8851         '')     fpossize=4
8852                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8853                 ;;
8854         *)      fpossize=$yyy
8855                 echo "Your $zzz is $fpossize bytes long."
8856                 ;;
8857         esac
8858 else
8859         dflt="$longsize"
8860         echo " " >&4
8861         echo "(I can't compile the test program.  Guessing...)" >&4
8862         rp="What is the size of your file positions (in bytes)?"
8863         . ./myread
8864         fpossize="$ans"
8865 fi
8866
8867 # Backward compatibility (uselfs is deprecated).
8868 case "$uselfs" in
8869 "$define"|true|[yY]*)
8870         cat <<EOM >&4
8871
8872 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8873 EOM
8874         uselargefiles="$define"
8875         ;;
8876 esac                          
8877
8878 case "$lseeksize:$fpossize" in
8879 8:8) cat <<EOM
8880
8881 You can have files larger than 2 gigabytes.
8882 EOM
8883    val="$define" ;;
8884 *)    case "$uselargefiles" in
8885    "$undef"|false|[nN]*) dflt='n' ;;
8886    *)   dflt='y' ;;
8887    esac
8888    cat <<EOM
8889
8890 Perl can be built to understand large files (files larger than 2 gigabytes)
8891 on some systems.  To do so, Configure can be run with -Duselargefiles.
8892
8893 If this doesn't make any sense to you, just accept the default '$dflt'.
8894 EOM
8895    rp='Try to understand large files, if available?'
8896    . ./myread
8897    case "$ans" in
8898    y|Y)         val="$define" ;;
8899    *)           val="$undef"  ;;
8900    esac
8901    ;;
8902 esac
8903 set uselargefiles
8904 eval $setvar
8905 : Look for a hint-file generated 'call-back-unit'.  If the
8906 : user has specified that a large files perl is to be built,
8907 : we may need to set or change some other defaults.
8908 if $test -f uselargefiles.cbu; then
8909         echo "Your platform has some specific hints regarding large file builds, using them..."
8910         . ./uselargefiles.cbu
8911 fi
8912 case "$uselargefiles" in
8913 "$define")
8914         if $test -f uselargefiles.cbu; then
8915                 echo " "
8916                 echo "Rechecking to see how big your file offsets are..." >&4
8917                 $cat >try.c <<EOCP
8918 #include <sys/types.h>
8919 #include <stdio.h>
8920 int main()
8921 {
8922     printf("%d\n", (int)sizeof($lseektype));
8923     return(0); 
8924 }
8925 EOCP
8926                 set try
8927                 if eval $compile_ok; then
8928                         lseeksize=`$run ./try`
8929                         $echo "Your file offsets are now $lseeksize bytes long."
8930                 else
8931                         dflt="$lseeksize"
8932                         echo " "
8933                         echo "(I can't seem to compile the test program.  Guessing...)"
8934                         rp="What is the size of your file offsets (in bytes)?"
8935                         . ./myread
8936                         lseeksize="$ans"
8937                 fi
8938                 case "$fpostype" in
8939                 *_t) zzz="$fpostype"    ;;
8940                 *)   zzz="fpos_t"       ;;
8941                 esac
8942                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8943                 $cat > try.c <<EOCP
8944 #include <sys/types.h>
8945 #include <stdio.h>
8946 #$i_stdlib I_STDLIB
8947 #ifdef I_STDLIB
8948 #include <stdlib.h>
8949 #endif
8950 int main() {
8951     printf("%d\n", (int)sizeof($fpostype));
8952     return(0);
8953 }
8954 EOCP
8955                 set try
8956                 if eval $compile_ok; then
8957                         yyy=`$run ./try`
8958                         dflt="$lseeksize"
8959                         case "$yyy" in
8960                         '')     echo " "
8961                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8962                                 ;;
8963                         *)      fpossize=$yyy
8964                                 echo " $fpossize bytes." >&4
8965                                 ;;
8966                         esac
8967                 else
8968                         dflt="$fpossize"
8969                         echo " "
8970                         echo "(I can't compile the test program.  Guessing...)" >&4
8971                         rp="What is the size of your file positions (in bytes)?"
8972                         . ./myread
8973                         fpossize="$ans"
8974                 fi
8975                 $rm -f try.c try
8976         fi
8977         ;;
8978 esac
8979
8980 # probably will refer to
8981 #   $archlib $privlib $sitearch $sitelib $vendorarch $vendorlib
8982 need_relocation=0
8983 userelocatableinc=undef
8984
8985 case "$vendorprefix" in
8986 '')     d_vendorbin="$undef"
8987         vendorbin=''
8988         vendorbinexp=''
8989         ;;
8990 *)      d_vendorbin="$define"
8991         : determine where vendor-supplied executables go.
8992         case "$vendorbin" in
8993         '') dflt=$vendorprefix/bin ;;
8994         *)      dflt="$vendorbin" ;;
8995         esac
8996         fn=d~+
8997         rp='Pathname for the vendor-supplied executables directory?'
8998         . ./getfile
8999         vendorbin="$ans"
9000         vendorbinexp="$ansexp"
9001         ;;
9002 esac
9003 : Change installation prefix, if necessary.
9004 if $test X"$prefix" != X"$installprefix"; then
9005         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
9006 else
9007         installvendorbin="$vendorbinexp"
9008 fi
9009
9010 case "$vendorprefix" in
9011 '')     vendorhtml1dir=''
9012         vendorhtml1direxp=''
9013         ;;
9014 *)      : determine where vendor-supplied html pages go.
9015         : There is no standard location, so try to copy the previously-selected
9016         : directory structure for the core html pages.
9017         : XXX Better default suggestions would be welcome.
9018         case "$vendorhtml1dir" in
9019         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9020         *)      dflt=$vendorhtml1dir ;;
9021         esac
9022         case "$dflt" in
9023         ''|' ') dflt=none ;;
9024         esac
9025         fn=dn+~
9026         rp='Pathname for the vendor-supplied html pages?'
9027         . ./getfile
9028         vendorhtml1dir="$ans"
9029         vendorhtml1direxp="$ansexp"
9030         ;;
9031 esac
9032 : Use ' ' for none so value is preserved next time through Configure
9033 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9034 : Change installation prefix, if necessary.
9035 if $test X"$prefix" != X"$installprefix"; then
9036         installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
9037 else
9038         installvendorhtml1dir="$vendorhtml1direxp"
9039 fi
9040
9041 case "$vendorprefix" in
9042 '')     vendorhtml3dir=''
9043         vendorhtml3direxp=''
9044         ;;
9045 *)      : determine where vendor-supplied module html pages go.
9046         : There is no standard location, so try to copy the previously-selected
9047         : directory structure for the core html pages.
9048         : XXX Better default suggestions would be welcome.
9049         case "$vendorhtml3dir" in
9050         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9051         *)      dflt=$vendorhtml3dir ;;
9052         esac
9053         case "$dflt" in
9054         ''|' ') dflt=none ;;
9055         esac
9056         fn=dn+~
9057         rp='Pathname for the vendor-supplied html pages?'
9058         . ./getfile
9059         vendorhtml3dir="$ans"
9060         vendorhtml3direxp="$ansexp"
9061         ;;
9062 esac
9063 : Use ' ' for none so value is preserved next time through Configure
9064 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9065 : Change installation prefix, if necessary.
9066 if $test X"$prefix" != X"$installprefix"; then
9067         installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
9068 else
9069         installvendorhtml3dir="$vendorhtml3direxp"
9070 fi
9071
9072 case "$vendorprefix" in
9073 '')     vendorman1dir=''
9074         vendorman1direxp=''
9075         ;;
9076 *)      : determine where vendor-supplied manual pages go.
9077         case "$vendorman1dir" in
9078         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9079         *)      dflt=$vendorman1dir ;;
9080         esac
9081         case "$dflt" in
9082         ''|' ') dflt=none ;;
9083         esac
9084         fn=nd~+
9085         rp='Pathname for the vendor-supplied manual section 1 pages?'
9086         . ./getfile
9087         vendorman1dir="$ans"
9088         vendorman1direxp="$ansexp"
9089         ;;
9090 esac
9091 : Use ' ' for none so value is preserved next time through Configure
9092 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9093 : Change installation prefix, if necessary.
9094 if $test X"$prefix" != X"$installprefix"; then
9095         installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
9096 else
9097         installvendorman1dir="$vendorman1direxp"
9098 fi
9099
9100 case "$vendorprefix" in
9101 '')     vendorman3dir=''
9102         vendorman3direxp=''
9103         ;;
9104 *)      : determine where vendor-supplied module manual pages go.
9105         case "$vendorman3dir" in
9106         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9107         *)      dflt=$vendorman3dir ;;
9108         esac
9109         case "$dflt" in
9110         ''|' ') dflt=none ;;
9111         esac
9112         fn=nd~+
9113         rp='Pathname for the vendor-supplied manual section 3 pages?'
9114         . ./getfile
9115         vendorman3dir="$ans"
9116         vendorman3direxp="$ansexp"
9117         ;;
9118 esac
9119 : Use ' ' for none so value is preserved next time through Configure
9120 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9121 : Change installation prefix, if necessary.
9122 if $test X"$prefix" != X"$installprefix"; then
9123         installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
9124 else
9125         installvendorman3dir="$vendorman3direxp"
9126 fi
9127
9128 case "$vendorprefix" in
9129 '')     d_vendorscript="$undef"
9130         vendorscript=''
9131         vendorscriptexp=''
9132         ;;
9133 *)      d_vendorscript="$define"
9134         : determine where vendor-supplied scripts go.
9135         case "$vendorscript" in
9136         '')     dflt=$vendorprefix/script
9137                 $test -d $dflt || dflt=$vendorbin ;;
9138         *)  dflt="$vendorscript" ;;
9139         esac
9140         $cat <<EOM
9141
9142 The installation process will create a directory for 
9143 vendor-supplied scripts.
9144
9145 EOM
9146         fn=d~+
9147         rp='Pathname for the vendor-supplied scripts directory?'
9148         . ./getfile
9149         vendorscript="$ans"
9150         vendorscriptexp="$ansexp"
9151         ;;
9152 esac
9153 : Change installation prefix, if necessary.
9154 if $test X"$prefix" != X"$installprefix"; then
9155         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9156 else
9157         installvendorscript="$vendorscriptexp"
9158 fi
9159
9160 : see if qgcvt exists
9161 set qgcvt d_qgcvt
9162 eval $inlibc
9163
9164 echo " "
9165
9166 if $test X"$d_longdbl" = X"$define"; then
9167
9168 echo "Checking how to print long doubles..." >&4
9169
9170 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9171         $cat >try.c <<'EOCP'
9172 #include <sys/types.h>
9173 #include <stdio.h>
9174 int main() {
9175   double d = 123.456;
9176   printf("%.3f\n", d);
9177 }
9178 EOCP
9179         set try
9180         if eval $compile; then
9181                 yyy=`$run ./try`
9182                 case "$yyy" in
9183                 123.456)
9184                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9185                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9186                         echo "We will use %f."
9187                         ;;
9188                 esac
9189         fi
9190 fi
9191
9192 if $test X"$sPRIfldbl" = X; then
9193         $cat >try.c <<'EOCP'
9194 #include <sys/types.h>
9195 #include <stdio.h>
9196 int main() {
9197   long double d = 123.456;
9198   printf("%.3Lf\n", d);
9199 }
9200 EOCP
9201         set try
9202         if eval $compile; then
9203                 yyy=`$run ./try`
9204                 case "$yyy" in
9205                 123.456)
9206                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9207                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9208                         echo "We will use %Lf."
9209                         ;;
9210                 esac
9211         fi
9212 fi
9213
9214 if $test X"$sPRIfldbl" = X; then
9215         $cat >try.c <<'EOCP'
9216 #include <sys/types.h>
9217 #include <stdio.h>
9218 int main() {
9219   long double d = 123.456;
9220   printf("%.3llf\n", d);
9221 }
9222 EOCP
9223         set try
9224         if eval $compile; then
9225                 yyy=`$run ./try`
9226                 case "$yyy" in
9227                 123.456)
9228                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9229                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9230                         echo "We will use %llf."
9231                         ;;
9232                 esac
9233         fi
9234 fi
9235
9236 if $test X"$sPRIfldbl" = X; then
9237         $cat >try.c <<'EOCP'
9238 #include <sys/types.h>
9239 #include <stdio.h>
9240 int main() {
9241   long double d = 123.456;
9242   printf("%.3lf\n", d);
9243 }
9244 EOCP
9245         set try
9246         if eval $compile; then
9247                 yyy=`$run ./try`
9248                 case "$yyy" in
9249                 123.456)
9250                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9251                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9252                         echo "We will use %lf."
9253                         ;;
9254                 esac
9255         fi
9256 fi
9257
9258 if $test X"$sPRIfldbl" = X; then
9259         echo "Cannot figure out how to print long doubles." >&4
9260 else
9261         sSCNfldbl=$sPRIfldbl    # expect consistency
9262 fi
9263
9264 $rm -f try try.*
9265
9266 fi # d_longdbl
9267
9268 case "$sPRIfldbl" in
9269 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9270         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9271         d_SCNfldbl="$undef";
9272         ;;
9273 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9274         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9275         d_SCNfldbl="$define";
9276         ;;
9277 esac
9278
9279 : Check how to convert floats to strings.
9280
9281 if test "X$d_Gconvert" = X; then
9282
9283 echo " "
9284 echo "Checking for an efficient way to convert floats to strings."
9285 echo " " > try.c
9286 case "$uselongdouble" in
9287 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9288 esac
9289 case "$d_longdbl" in
9290 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9291 esac
9292 case "$d_PRIgldbl" in
9293 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9294 esac
9295 $cat >>try.c <<EOP
9296 #ifdef TRY_gconvert
9297 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9298 char *myname = "gconvert";
9299 #endif
9300 #ifdef TRY_gcvt
9301 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9302 char *myname = "gcvt";
9303 #endif
9304 #ifdef TRY_qgcvt
9305 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9306 char *myname = "qgcvt";
9307 #define DOUBLETYPE long double
9308 #endif
9309 #ifdef TRY_sprintf
9310 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9311 #ifdef HAS_PRIgldbl
9312 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9313 #else
9314 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9315 #endif
9316 #else
9317 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9318 #endif
9319 char *myname = "sprintf";
9320 #endif
9321
9322 #ifndef DOUBLETYPE
9323 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9324 #define DOUBLETYPE long double
9325 #else
9326 #define DOUBLETYPE double
9327 #endif
9328 #endif
9329
9330 #include <stdio.h>
9331
9332 #define I_STDLIB $i_stdlib
9333 #ifdef I_STDLIB
9334 #include <stdlib.h>
9335 #endif
9336
9337 int
9338 checkit(expect, got)
9339 char *expect;
9340 char *got;
9341 {
9342     if (strcmp(expect, got)) {
9343                 printf("%s oddity:  Expected %s, got %s\n",
9344                         myname, expect, got);
9345                 exit(1);
9346         }
9347 }
9348
9349 int main()
9350
9351         char buf[64]; 
9352         buf[63] = '\0';
9353
9354         /* This must be 1st test on (which?) platform */
9355         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9356         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9357         checkit("0.1", buf);
9358
9359         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9360         checkit("0.01", buf);
9361
9362         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9363         checkit("0.001", buf);
9364
9365         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9366         checkit("0.0001", buf);
9367
9368         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9369         if (strlen(buf) > 5)
9370             checkit("9e-005", buf); /* for Microsoft ?? */
9371         else
9372             checkit("9e-05", buf);
9373
9374         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9375         checkit("1", buf);
9376
9377         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9378         checkit("1.1", buf);
9379
9380         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9381         checkit("1.01", buf);
9382
9383         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9384         checkit("1.001", buf);
9385
9386         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9387         checkit("1.0001", buf);
9388
9389         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9390         checkit("1.00001", buf);
9391
9392         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9393         checkit("1.000001", buf);
9394
9395         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9396         checkit("0", buf);
9397
9398         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9399         checkit("-1", buf);
9400
9401         /* Some Linux gcvt's give 1.e+5 here. */
9402         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9403         checkit("100000", buf);
9404         
9405         /* Some Linux gcvt's give -1.e+5 here. */
9406         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9407         checkit("-100000", buf);
9408
9409         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9410         checkit("123.456", buf);
9411
9412         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9413         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9414         /* 34 should be enough to scare even long double
9415          * places into using the e notation. */
9416         if (strlen(buf) > 5)
9417             checkit("1e+034", buf); /* for Microsoft */
9418         else
9419             checkit("1e+34", buf);
9420
9421         /* For Perl, if you add additional tests here, also add them to
9422          * t/base/num.t for benefit of platforms not using Configure or
9423          * overriding d_Gconvert */
9424
9425         exit(0);
9426 }
9427 EOP
9428 : first add preferred functions to our list
9429 xxx_list=""
9430 for xxx_convert in $gconvert_preference; do
9431     case $xxx_convert in
9432     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9433     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9434     esac 
9435 done
9436 : then add any others
9437 for xxx_convert in gconvert gcvt sprintf; do
9438     case "$xxx_list" in
9439     *$xxx_convert*) ;;
9440     *) xxx_list="$xxx_list $xxx_convert" ;;
9441     esac 
9442 done
9443
9444 case "$d_longdbl$uselongdouble" in
9445 "$define$define")
9446     : again, add prefered functions to our list first
9447     xxx_ld_list=""
9448     for xxx_convert in $gconvert_ld_preference; do
9449         case $xxx_convert in
9450         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9451         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9452         esac
9453     done
9454     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9455     for xxx_convert in qgcvt sprintf $xxx_list; do
9456         case "$xxx_ld_list" in
9457         $xxx_convert*|*" $xxx_convert"*) ;;
9458         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9459         esac
9460     done
9461     : if sprintf cannot do long doubles, move it to the end
9462     if test "$d_PRIgldbl" != "$define"; then
9463         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9464     fi
9465     : if no qgcvt, remove it
9466     if test "$d_qgcvt" != "$define"; then
9467         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9468     fi
9469     : use the ld_list
9470     xxx_list="$xxx_ld_list"
9471     ;;
9472 esac
9473
9474 for xxx_convert in $xxx_list; do
9475         echo "Trying $xxx_convert..."
9476         $rm -f try try$_o
9477         set try -DTRY_$xxx_convert
9478         if eval $compile; then
9479                 echo "$xxx_convert() found." >&4
9480                 if $run ./try; then
9481                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9482                         break;
9483                 else
9484                         echo "...But $xxx_convert didn't work as I expected."
9485                         xxx_convert=''
9486                 fi
9487         else
9488                 echo "$xxx_convert NOT found." >&4
9489         fi
9490 done
9491
9492 if test X$xxx_convert = X; then
9493     echo "*** WHOA THERE!!! ***" >&4
9494     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9495     xxx_convert=sprintf
9496 fi
9497
9498 case "$xxx_convert" in
9499 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9500 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9501 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9502 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9503    "$define$define$define")
9504       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9505    "$define$define$undef")
9506       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9507    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9508    esac
9509    ;;  
9510 esac
9511
9512 fi
9513
9514 : see if _fwalk exists
9515 set fwalk d__fwalk
9516 eval $inlibc
9517
9518 : Initialize h_fcntl
9519 h_fcntl=false
9520
9521 : Initialize h_sysfile
9522 h_sysfile=false
9523
9524 : access call always available on UNIX
9525 set access d_access
9526 eval $inlibc
9527
9528 : locate the flags for 'access()'
9529 case "$d_access" in
9530 "$define")
9531         echo " "
9532         $cat >access.c <<EOCP
9533 #include <sys/types.h>
9534 #ifdef I_FCNTL
9535 #include <fcntl.h>
9536 #endif
9537 #ifdef I_SYS_FILE
9538 #include <sys/file.h>
9539 #endif
9540 #ifdef I_UNISTD
9541 #include <unistd.h>
9542 #endif
9543 #$i_stdlib I_STDLIB
9544 #ifdef I_STDLIB
9545 #include <stdlib.h>
9546 #endif
9547 int main() {
9548         exit(R_OK);
9549 }
9550 EOCP
9551         : check sys/file.h first, no particular reason here
9552         if $test `./findhdr sys/file.h` && \
9553                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9554                 h_sysfile=true;
9555                 echo "<sys/file.h> defines the *_OK access constants." >&4
9556         elif $test `./findhdr fcntl.h` && \
9557                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9558                 h_fcntl=true;
9559                 echo "<fcntl.h> defines the *_OK access constants." >&4
9560         elif $test `./findhdr unistd.h` && \
9561                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9562                 echo "<unistd.h> defines the *_OK access constants." >&4
9563         else
9564                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9565         fi
9566         ;;
9567 esac
9568 $rm -f access*
9569
9570 : see if accessx exists
9571 set accessx d_accessx
9572 eval $inlibc
9573
9574 : see if aintl exists
9575 set aintl d_aintl
9576 eval $inlibc
9577
9578 : see if alarm exists
9579 set alarm d_alarm
9580 eval $inlibc
9581
9582 : see if POSIX threads are available
9583 set pthread.h i_pthread
9584 eval $inhdr
9585
9586 : define a fucntion to check prototypes
9587 $cat > protochk <<EOSH
9588 $startsh
9589 cc="$cc"
9590 optimize="$optimize"
9591 ccflags="$ccflags"
9592 prototype="$prototype"
9593 define="$define"
9594 rm=$rm
9595 usethreads=$usethreads
9596 i_pthread=$i_pthread
9597 pthread_h_first=$pthread_h_first
9598 EOSH
9599
9600 $cat >> protochk <<'EOSH'
9601
9602 $rm -f try.c
9603 foo="$1"
9604 shift
9605 while test $# -ge 2; do
9606         case "$1" in
9607                 $define) echo "#include <$2>" >> try.c ;;
9608                 literal) echo "$2" >> try.c ;;
9609         esac
9610     # Extra magic for the benefit of systems that need pthread.h
9611     # to be included early to correctly detect threadsafe functions.
9612     # Such functions must guarantee themselves, though, that the usethreads
9613     # and i_pthread have been defined, before calling protochk.
9614     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9615         echo "#include <pthread.h>" >> try.c
9616         pthread_h_done=yes
9617     fi
9618     shift 2
9619 done
9620 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9621 cat >> try.c <<'EOCP'
9622 #ifdef CAN_PROTOTYPE
9623 #define _(args) args
9624 #else
9625 #define _(args) ()
9626 #endif
9627 EOCP
9628 echo "$foo" >> try.c
9629 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9630 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9631 status=$?
9632 $rm -f try.[co]
9633 exit $status
9634 EOSH
9635 chmod +x protochk
9636 $eunicefix protochk
9637
9638 hasproto='varname=$1; func=$2; shift; shift;
9639 while $test $# -ge 2; do
9640         case "$1" in
9641         $define) echo "#include <$2>";;
9642         esac ;
9643     shift 2;
9644 done > try.c;
9645 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9646 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9647         echo "$func() prototype found.";
9648         val="$define";
9649 else
9650         echo "$func() prototype NOT found.";
9651         val="$undef";
9652 fi;
9653 set $varname;
9654 eval $setvar;
9655 $rm -f try.c tryout.c'
9656
9657 : see if sys/types.h has to be included
9658 set sys/types.h i_systypes
9659 eval $inhdr
9660
9661 : see if sys/select.h has to be included
9662 set sys/select.h i_sysselct
9663 eval $inhdr
9664
9665 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9666 while $test $# -ge 2; do
9667         case "$1" in
9668         $define) echo "#include <$2>";;
9669         esac ;
9670     shift 2;
9671 done > try.c;
9672 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9673 set try;
9674 if eval $compile; then
9675         val="$define";
9676 else
9677         val="$undef";
9678 fi;
9679 set $varname;
9680 eval $setvar;
9681 $rm -f try.c try.o'
9682
9683 : see if we should include time.h, sys/time.h, or both
9684 echo " "
9685 if test "X$timeincl" = X; then
9686         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9687         $echo $n "I'm now running the test program...$c"
9688         $cat >try.c <<EOCP
9689 #include <sys/types.h>
9690 #ifdef I_TIME
9691 #include <time.h>
9692 #endif
9693 #ifdef I_SYSTIME
9694 #ifdef SYSTIMEKERNEL
9695 #define KERNEL
9696 #endif
9697 #include <sys/time.h>
9698 #endif
9699 #ifdef I_SYSSELECT
9700 #include <sys/select.h>
9701 #endif
9702 #$i_stdlib I_STDLIB
9703 #ifdef I_STDLIB
9704 #include <stdlib.h>
9705 #endif
9706 int main()
9707 {
9708         struct tm foo;
9709 #ifdef S_TIMEVAL
9710         struct timeval bar;
9711 #endif
9712 #ifdef S_TIMEZONE
9713         struct timezone tzp;
9714 #endif
9715         if (foo.tm_sec == foo.tm_sec)
9716                 exit(0);
9717 #ifdef S_TIMEVAL
9718         if (bar.tv_sec == bar.tv_sec)
9719                 exit(0);
9720 #endif
9721         exit(1);
9722 }
9723 EOCP
9724         flags=''
9725         for s_timezone in '-DS_TIMEZONE' ''; do
9726         sysselect=''
9727         for s_timeval in '-DS_TIMEVAL' ''; do
9728         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9729         for i_time in '' '-DI_TIME'; do
9730         for i_systime in '-DI_SYSTIME' ''; do
9731                 case "$flags" in
9732                 '') $echo $n ".$c"
9733                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9734                         if eval $compile; then
9735                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9736                                 shift
9737                                 flags="$*"
9738                                 echo " "
9739                                 $echo $n "Succeeded with $flags$c"
9740                         fi
9741                         ;;
9742                 esac
9743         done
9744         done
9745         done
9746         done
9747         done
9748         timeincl=''
9749         echo " "
9750         case "$flags" in
9751         *SYSTIMEKERNEL*) i_systimek="$define"
9752                 timeincl=`./findhdr sys/time.h`
9753                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9754         *) i_systimek="$undef";;
9755         esac
9756         case "$flags" in
9757         *I_TIME*) i_time="$define"
9758                 timeincl=`./findhdr time.h`" $timeincl"
9759                 echo "We'll include <time.h>." >&4;;
9760         *) i_time="$undef";;
9761         esac
9762         case "$flags" in
9763         *I_SYSTIME*) i_systime="$define"
9764                 timeincl=`./findhdr sys/time.h`" $timeincl"
9765                 echo "We'll include <sys/time.h>." >&4;;
9766         *) i_systime="$undef";;
9767         esac
9768         $rm -f try.c try
9769 fi
9770 : see if struct tm knows about tm_zone
9771 case "$i_systime$i_time" in
9772 *$define*) 
9773         echo " "
9774         echo "Checking to see if your struct tm has tm_zone field..." >&4
9775         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9776         eval $hasfield
9777         ;;
9778 *)      val="$undef"
9779         set d_tm_tm_zone
9780         eval $setvar
9781         ;;
9782 esac
9783 case "$d_tm_tm_zone" in
9784 "$define")      echo "Yes, it does."   ;;
9785 *)              echo "No, it doesn't." ;;
9786 esac
9787 : see if struct tm knows about tm_gmtoff
9788 case "$i_systime$i_time" in
9789 *$define*) 
9790         echo " "
9791         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9792         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9793         eval $hasfield
9794         ;;
9795 *)      val="$undef"
9796         set d_tm_tm_gmtoff
9797         eval $setvar
9798         ;;
9799 esac
9800 case "$d_tm_tm_gmtoff" in
9801 "$define")      echo "Yes, it does."   ;;
9802 *)              echo "No, it doesn't." ;;
9803 esac
9804
9805 : see if asctime_r exists
9806 set asctime_r d_asctime_r
9807 eval $inlibc
9808 case "$d_asctime_r" in
9809 "$define")
9810         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9811         case "$d_asctime_r_proto:$usethreads" in
9812         ":define")      d_asctime_r_proto=define
9813                 set d_asctime_r_proto asctime_r $hdrs
9814                 eval $hasproto ;;
9815         *)      ;;
9816         esac
9817         case "$d_asctime_r_proto" in
9818         define)
9819         case "$asctime_r_proto" in
9820         ''|0) try='char* asctime_r(const struct tm*, char*);'
9821         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9822         esac
9823         case "$asctime_r_proto" in
9824         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9825         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9826         esac
9827         case "$asctime_r_proto" in
9828         ''|0) try='int asctime_r(const struct tm*, char*);'
9829         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9830         esac
9831         case "$asctime_r_proto" in
9832         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9833         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9834         esac
9835         case "$asctime_r_proto" in
9836         ''|0)   d_asctime_r=undef
9837                 asctime_r_proto=0
9838                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9839         * )     case "$asctime_r_proto" in
9840                 REENTRANT_PROTO*) ;;
9841                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9842                 esac
9843                 echo "Prototype: $try" ;;
9844         esac
9845         ;;
9846         *)      case "$usethreads" in
9847                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9848                 esac
9849                 d_asctime_r=undef
9850                 asctime_r_proto=0
9851                 ;;
9852         esac
9853         ;;
9854 *)      asctime_r_proto=0
9855         ;;
9856 esac
9857
9858 : see if atolf exists
9859 set atolf d_atolf
9860 eval $inlibc
9861
9862 : see if atoll exists
9863 set atoll d_atoll
9864 eval $inlibc
9865
9866 : Look for GNU-cc style attribute checking
9867 case "$d_attribut" in
9868 '')
9869 echo " "
9870 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9871 $cat >attrib.c <<'EOCP'
9872 #include <stdio.h>
9873 void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
9874 EOCP
9875 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9876         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9877                 echo "Your C compiler doesn't fully support __attribute__."
9878                 val="$undef"
9879         else
9880                 echo "Your C compiler supports __attribute__."
9881                 val="$define"
9882         fi
9883 else
9884         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9885         val="$undef"
9886 fi
9887 ;;
9888 *) val="$d_attribut" ;;
9889 esac
9890 set d_attribut
9891 eval $setvar
9892 $rm -f attrib*
9893
9894 : see if bcmp exists
9895 set bcmp d_bcmp
9896 eval $inlibc
9897
9898 : see if bcopy exists
9899 set bcopy d_bcopy
9900 eval $inlibc
9901
9902 : see if this is a unistd.h system
9903 set unistd.h i_unistd
9904 eval $inhdr
9905
9906 : see if getpgrp exists
9907 set getpgrp d_getpgrp
9908 eval $inlibc
9909
9910 case "$d_getpgrp" in
9911 "$define")
9912         echo " "
9913         echo "Checking to see which flavor of getpgrp is in use..."
9914         $cat >try.c <<EOP
9915 #$i_unistd I_UNISTD
9916 #include <sys/types.h>
9917 #ifdef I_UNISTD
9918 #  include <unistd.h>
9919 #endif
9920 #$i_stdlib I_STDLIB
9921 #ifdef I_STDLIB
9922 #include <stdlib.h>
9923 #endif
9924 int main()
9925 {
9926         if (getuid() == 0) {
9927                 printf("(I see you are running Configure as super-user...)\n");
9928                 setuid(1);
9929         }
9930 #ifdef TRY_BSD_PGRP
9931         if (getpgrp(1) == 0)
9932                 exit(0);
9933 #else
9934         if (getpgrp() > 0)
9935                 exit(0);
9936 #endif
9937         exit(1);
9938 }
9939 EOP
9940         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9941                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9942                 val="$define"
9943         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9944                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9945                 val="$undef"
9946         else
9947                 echo "I can't seem to compile and run the test program."
9948                 if ./usg; then
9949                         xxx="a USG one, i.e. you use getpgrp()."
9950                 else
9951                         # SVR4 systems can appear rather BSD-ish.
9952                         case "$i_unistd" in
9953                         $undef)
9954                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9955                                 val="$define"
9956                                 ;;
9957                         $define)
9958                                 xxx="probably a USG one, i.e. you use getpgrp()."
9959                                 val="$undef"
9960                                 ;;
9961                         esac
9962                 fi
9963                 echo "Assuming your getpgrp is $xxx" >&4
9964         fi
9965         ;;
9966 *) val="$undef";;
9967 esac
9968 set d_bsdgetpgrp
9969 eval $setvar
9970 $rm -f try try.*
9971
9972 : see if setpgrp exists
9973 set setpgrp d_setpgrp
9974 eval $inlibc
9975
9976 case "$d_setpgrp" in
9977 "$define")
9978         echo " "
9979         echo "Checking to see which flavor of setpgrp is in use..."
9980         $cat >try.c <<EOP
9981 #$i_unistd I_UNISTD
9982 #include <sys/types.h>
9983 #ifdef I_UNISTD
9984 #  include <unistd.h>
9985 #endif
9986 #$i_stdlib I_STDLIB
9987 #ifdef I_STDLIB
9988 #include <stdlib.h>
9989 #endif
9990 int main()
9991 {
9992         if (getuid() == 0) {
9993                 printf("(I see you are running Configure as super-user...)\n");
9994                 setuid(1);
9995         }
9996 #ifdef TRY_BSD_PGRP
9997         if (-1 == setpgrp(1, 1))
9998                 exit(0);
9999 #else
10000         if (setpgrp() != -1)
10001                 exit(0);
10002 #endif
10003         exit(1);
10004 }
10005 EOP
10006         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10007                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10008                 val="$define"
10009         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10010                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10011                 val="$undef"
10012         else
10013                 echo "(I can't seem to compile and run the test program.)"
10014                 if ./usg; then
10015                         xxx="a USG one, i.e. you use setpgrp()."
10016                 else
10017                         # SVR4 systems can appear rather BSD-ish.
10018                         case "$i_unistd" in
10019                         $undef)
10020                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10021                                 val="$define"
10022                                 ;;
10023                         $define)
10024                                 xxx="probably a USG one, i.e. you use setpgrp()."
10025                                 val="$undef"
10026                                 ;;
10027                         esac
10028                 fi
10029                 echo "Assuming your setpgrp is $xxx" >&4
10030         fi
10031         ;;
10032 *) val="$undef";;
10033 esac
10034 set d_bsdsetpgrp
10035 eval $setvar
10036 $rm -f try try.*
10037 : see if bzero exists
10038 set bzero d_bzero
10039 eval $inlibc
10040
10041 : see if signal is declared as pointer to function returning int or void
10042 echo " "
10043 xxx=`./findhdr signal.h`
10044 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10045 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10046         echo "You have int (*signal())() instead of void." >&4
10047         val="$undef"
10048 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10049         echo "You have void (*signal())()." >&4
10050         val="$define"
10051 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10052         echo "You have int (*signal())() instead of void." >&4
10053         val="$undef"
10054 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10055         echo "You have void (*signal())()." >&4
10056         val="$define"
10057 else
10058         case "$d_voidsig" in
10059         '')
10060         echo "I can't determine whether signal handler returns void or int..." >&4
10061                 dflt=void
10062                 rp="What type does your signal handler return?"
10063                 . ./myread
10064                 case "$ans" in
10065                 v*) val="$define";;
10066                 *) val="$undef";;
10067                 esac;;
10068         "$define")
10069                 echo "As you already told me, signal handler returns void." >&4
10070                 val="$define"
10071                 ;;
10072         *)      echo "As you already told me, signal handler returns int." >&4
10073                 val="$undef"
10074                 ;;
10075         esac
10076 fi
10077 set d_voidsig
10078 eval $setvar
10079 case "$d_voidsig" in
10080 "$define") signal_t="void";;
10081 *) signal_t="int";;
10082 esac
10083 $rm -f $$.tmp
10084
10085 : check for ability to cast large floats to 32-bit ints.
10086 echo " "
10087 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10088 if $test "$intsize" -ge 4; then
10089         xxx=int
10090 else
10091         xxx=long
10092 fi
10093 $cat >try.c <<EOCP
10094 #include <stdio.h>
10095 #$i_stdlib I_STDLIB
10096 #ifdef I_STDLIB
10097 #include <stdlib.h>
10098 #endif
10099 #include <sys/types.h>
10100 #include <signal.h>
10101 $signal_t blech(s) int s; { exit(3); }
10102 int main()
10103 {
10104         $xxx i32;
10105         double f, g;
10106         int result = 0;
10107         char str[16];
10108         signal(SIGFPE, blech);
10109
10110         /* Don't let compiler optimize the test away.  Store the number 
10111            in a writable string for gcc to pass to sscanf under HP/UX.
10112         */
10113         sprintf(str, "2147483647");
10114         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10115         g = 10 * f;
10116         i32  = ($xxx) g;
10117
10118         /* x86 processors will probably give 0x8000 0000, which is a
10119            sign change.  We don't want that.  We want to mimic SPARC
10120            behavior here, which is to preserve the sign and give
10121            back 0x7fff ffff.
10122         */
10123         if (i32 != ($xxx) f)
10124                 result |= 1;
10125         exit(result);
10126 }
10127 EOCP
10128 set try
10129 if eval $compile_ok; then
10130         $run ./try
10131         yyy=$?
10132 else
10133         echo "(I can't seem to compile the test program--assuming it can't)"
10134         yyy=1
10135 fi
10136 case "$yyy" in
10137 0)      val="$define"
10138         echo "Yup, it can."
10139         ;;
10140 *)      val="$undef"
10141         echo "Nope, it can't."
10142         ;;
10143 esac
10144 set d_casti32
10145 eval $setvar
10146 $rm -f try try.*
10147
10148 : check for ability to cast negative floats to unsigned
10149 echo " "
10150 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10151 $cat >try.c <<EOCP
10152 #include <stdio.h>
10153 #$i_stdlib I_STDLIB
10154 #ifdef I_STDLIB
10155 #include <stdlib.h>
10156 #endif
10157 #include <sys/types.h>
10158 #include <signal.h>
10159 $signal_t blech(s) int s; { exit(7); }
10160 $signal_t blech_in_list(s) int s; { exit(4); }
10161 unsigned long dummy_long(p) unsigned long p; { return p; }
10162 unsigned int dummy_int(p) unsigned int p; { return p; }
10163 unsigned short dummy_short(p) unsigned short p; { return p; }
10164 int main()
10165 {
10166         double f;
10167         unsigned long along;
10168         unsigned int aint;
10169         unsigned short ashort;
10170         int result = 0;
10171         char str[16];
10172         
10173         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10174            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10175            optimized the whole file away
10176         */
10177         /* Store the number in a writable string for gcc to pass to 
10178            sscanf under HP/UX.
10179         */
10180         sprintf(str, "-123");
10181         sscanf(str, "%lf", &f);  /* f = -123.; */
10182
10183         signal(SIGFPE, blech);
10184         along = (unsigned long)f;
10185         aint = (unsigned int)f;
10186         ashort = (unsigned short)f;
10187         if (along != (unsigned long)-123)
10188                 result |= 1;
10189         if (aint != (unsigned int)-123)
10190                 result |= 1;
10191         if (ashort != (unsigned short)-123)
10192                 result |= 1;
10193         sprintf(str, "1073741824.");
10194         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10195         f = f + f;
10196         along = 0;
10197         along = (unsigned long)f;
10198         if (along != 0x80000000)
10199                 result |= 2;
10200         f -= 1.;
10201         along = 0;
10202         along = (unsigned long)f;
10203         if (along != 0x7fffffff)
10204                 result |= 1;
10205         f += 2.;
10206         along = 0;
10207         along = (unsigned long)f;
10208         if (along != 0x80000001)
10209                 result |= 2;
10210         if (result)
10211                 exit(result);
10212         signal(SIGFPE, blech_in_list);
10213         sprintf(str, "123.");
10214         sscanf(str, "%lf", &f);  /* f = 123.; */
10215         along = dummy_long((unsigned long)f);
10216         aint = dummy_int((unsigned int)f);
10217         ashort = dummy_short((unsigned short)f);
10218         if (along != (unsigned long)123)
10219                 result |= 4;
10220         if (aint != (unsigned int)123)
10221                 result |= 4;
10222         if (ashort != (unsigned short)123)
10223                 result |= 4;
10224         exit(result);
10225
10226 }
10227 EOCP
10228 set try
10229 if eval $compile_ok; then
10230         $run ./try
10231         castflags=$?
10232 else
10233         echo "(I can't seem to compile the test program--assuming it can't)"
10234         castflags=7
10235 fi
10236 case "$castflags" in
10237 0)      val="$define"
10238         echo "Yup, it can."
10239         ;;
10240 *)      val="$undef"
10241         echo "Nope, it can't."
10242         ;;
10243 esac
10244 set d_castneg
10245 eval $setvar
10246 $rm -f try.*
10247
10248 : see if vprintf exists
10249 echo " "
10250 if set vprintf val -f d_vprintf; eval $csym; $val; then
10251         echo 'vprintf() found.' >&4
10252         val="$define"
10253         $cat >try.c <<EOF
10254 #include <varargs.h>
10255 #$i_stdlib I_STDLIB
10256 #ifdef I_STDLIB
10257 #include <stdlib.h>
10258 #endif
10259
10260 int main() { xxx("foo"); }
10261
10262 xxx(va_alist)
10263 va_dcl
10264 {
10265         va_list args;
10266         char buf[10];
10267
10268         va_start(args);
10269         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10270 }
10271 EOF
10272         set try
10273         if eval $compile && $run ./try; then
10274                 echo "Your vsprintf() returns (int)." >&4
10275                 val2="$undef"
10276         else
10277                 echo "Your vsprintf() returns (char*)." >&4
10278                 val2="$define"
10279         fi
10280 else
10281         echo 'vprintf() NOT found.' >&4
10282                 val="$undef"
10283                 val2="$undef"
10284 fi
10285 $rm -f try try.*
10286 set d_vprintf
10287 eval $setvar
10288 val=$val2
10289 set d_charvspr
10290 eval $setvar
10291
10292 : see if chown exists
10293 set chown d_chown
10294 eval $inlibc
10295
10296 : see if chroot exists
10297 set chroot d_chroot
10298 eval $inlibc
10299
10300 : see if chsize exists
10301 set chsize d_chsize
10302 eval $inlibc
10303
10304 : see if class exists
10305 set class d_class
10306 eval $inlibc
10307
10308 hasstruct='varname=$1; struct=$2; shift; shift;
10309 while $test $# -ge 2; do
10310         case "$1" in
10311         $define) echo "#include <$2>";;
10312         esac ;
10313     shift 2;
10314 done > try.c;
10315 echo "int main () { struct $struct foo; }" >> try.c;
10316 set try;
10317 if eval $compile; then
10318         val="$define";
10319 else
10320         val="$undef";
10321 fi;
10322 set $varname;
10323 eval $setvar;
10324 $rm -f try.c try.o'
10325
10326 socketlib=''
10327 sockethdr=''
10328 : see whether socket exists
10329 echo " "
10330 $echo $n "Hmm... $c" >&4
10331 if set socket val -f d_socket; eval $csym; $val; then
10332         echo "Looks like you have Berkeley networking support." >&4
10333         d_socket="$define"
10334         if set setsockopt val -f; eval $csym; $val; then
10335                 d_oldsock="$undef"
10336         else
10337                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10338                 d_oldsock="$define"
10339         fi
10340 else
10341         if $contains socklib libc.list >/dev/null 2>&1; then
10342                 echo "Looks like you have Berkeley networking support." >&4
10343                 d_socket="$define"
10344                 : we will have to assume that it supports the 4.2 BSD interface
10345                 d_oldsock="$undef"
10346         else
10347                 echo "You don't have Berkeley networking in libc$_a..." >&4
10348                 if test "X$d_socket" = "X$define"; then
10349                    echo "...but you seem to believe that you have sockets." >&4
10350                 else
10351                         for net in net socket
10352                         do
10353                                 if test -f /usr/lib/lib$net$_a; then
10354                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10355                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10356                                         if $contains socket libc.list >/dev/null 2>&1; then
10357                                                 d_socket="$define"
10358                                                 socketlib="-l$net"
10359                                                 case "$net" in
10360                                                 net)
10361                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10362                                                         sockethdr="-I/usr/netinclude"
10363                                                         ;;
10364                                                 esac
10365                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10366                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10367                                                         d_oldsock="$undef"
10368                                                 else
10369                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10370                                                         d_oldsock="$define"
10371                                                 fi
10372                                                 break
10373                                         fi
10374                                 fi
10375                         done
10376                         if test "X$d_socket" != "X$define"; then
10377                            echo "or anywhere else I see." >&4
10378                            d_socket="$undef"
10379                            d_oldsock="$undef"
10380                         fi
10381                 fi
10382         fi
10383 fi
10384
10385 : see if socketpair exists
10386 set socketpair d_sockpair
10387 eval $inlibc
10388
10389
10390 echo " "
10391 echo "Checking the availability of certain socket constants..." >&4
10392 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10393         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10394         $cat >try.c <<EOF
10395 #include <sys/types.h>
10396 #include <sys/socket.h>
10397 int main() {
10398     int i = $ENUM;
10399 }
10400 EOF
10401         val="$undef"
10402         set try; if eval $compile; then
10403                 val="$define"
10404         fi
10405         set d_${enum}; eval $setvar
10406         $rm -f try.c try
10407 done
10408
10409 : see if this is a sys/uio.h system
10410 set sys/uio.h i_sysuio
10411 eval $inhdr
10412
10413
10414 echo " "
10415 echo "Checking to see if your system supports struct cmsghdr..." >&4
10416 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10417 eval $hasstruct
10418 case "$d_cmsghdr_s" in
10419 "$define")      echo "Yes, it does."   ;;
10420 *)              echo "No, it doesn't." ;;
10421 esac
10422
10423
10424 : check for const keyword
10425 echo " "
10426 echo 'Checking to see if your C compiler knows about "const"...' >&4
10427 $cat >const.c <<'EOCP'
10428 typedef struct spug { int drokk; } spug;
10429 int main()
10430 {
10431         const char *foo;
10432         const spug y;
10433 }
10434 EOCP
10435 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10436         val="$define"
10437         echo "Yup, it does."
10438 else
10439         val="$undef"
10440         echo "Nope, it doesn't."
10441 fi
10442 set d_const
10443 eval $setvar
10444
10445 : see if copysignl exists
10446 set copysignl d_copysignl
10447 eval $inlibc
10448
10449 : see if crypt exists
10450 echo " "
10451 set crypt d_crypt
10452 eval $inlibc
10453 case "$d_crypt" in
10454 $define) cryptlib='' ;;
10455 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10456                 echo 'crypt() found.' >&4
10457                 val="$define"
10458                 cryptlib=''
10459         else
10460                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10461                 if $test -z "$cryptlib"; then
10462                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10463                 else
10464                         cryptlib=-lcrypt
10465                 fi
10466                 if $test -z "$cryptlib"; then
10467                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10468                 else
10469                         cryptlib=-lcrypt
10470                 fi
10471                 if $test -z "$cryptlib"; then
10472                         cryptlib=`./loc libcrypt$_a "" $libpth`
10473                 else
10474                         cryptlib=-lcrypt
10475                 fi
10476                 if $test -z "$cryptlib"; then
10477                         echo 'crypt() NOT found.' >&4
10478                         val="$undef"
10479                 else
10480                         val="$define"
10481                 fi
10482         fi
10483         set d_crypt
10484         eval $setvar
10485         ;;
10486 esac
10487
10488 : see if this is a crypt.h system
10489 set crypt.h i_crypt
10490 eval $inhdr
10491
10492 : see if crypt_r exists
10493 set crypt_r d_crypt_r
10494 eval $inlibc
10495 case "$d_crypt_r" in
10496 "$define")
10497         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10498         case "$d_crypt_r_proto:$usethreads" in
10499         ":define")      d_crypt_r_proto=define
10500                 set d_crypt_r_proto crypt_r $hdrs
10501                 eval $hasproto ;;
10502         *)      ;;
10503         esac
10504         case "$d_crypt_r_proto" in
10505         define)
10506         case "$crypt_r_proto" in
10507         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10508         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10509         esac
10510         case "$crypt_r_proto" in
10511         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10512         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10513         esac
10514         case "$crypt_r_proto" in
10515         ''|0)   d_crypt_r=undef
10516                 crypt_r_proto=0
10517                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10518         * )     case "$crypt_r_proto" in
10519                 REENTRANT_PROTO*) ;;
10520                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10521                 esac
10522                 echo "Prototype: $try" ;;
10523         esac
10524         ;;
10525         *)      case "$usethreads" in
10526                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10527                 esac
10528                 d_crypt_r=undef
10529                 crypt_r_proto=0
10530                 ;;
10531         esac
10532         ;;
10533 *)      crypt_r_proto=0
10534         ;;
10535 esac
10536
10537 : get csh whereabouts
10538 case "$csh" in
10539 'csh') val="$undef" ;;
10540 *) val="$define" ;;
10541 esac
10542 set d_csh
10543 eval $setvar
10544 : Respect a hint or command line value for full_csh.
10545 case "$full_csh" in
10546 '') full_csh=$csh ;;
10547 esac
10548
10549 : see if ctermid_r exists
10550 set ctermid_r d_ctermid_r
10551 eval $inlibc
10552 case "$d_ctermid_r" in
10553 "$define")
10554         hdrs="$i_systypes sys/types.h define stdio.h "
10555         case "$d_ctermid_r_proto:$usethreads" in
10556         ":define")      d_ctermid_r_proto=define
10557                 set d_ctermid_r_proto ctermid_r $hdrs
10558                 eval $hasproto ;;
10559         *)      ;;
10560         esac
10561         case "$d_ctermid_r_proto" in
10562         define)
10563         case "$ctermid_r_proto" in
10564         ''|0) try='char* ctermid_r(char*);'
10565         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10566         esac
10567         case "$ctermid_r_proto" in
10568         ''|0)   d_ctermid_r=undef
10569                 ctermid_r_proto=0
10570                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10571         * )     case "$ctermid_r_proto" in
10572                 REENTRANT_PROTO*) ;;
10573                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10574                 esac
10575                 echo "Prototype: $try" ;;
10576         esac
10577         ;;
10578         *)      case "$usethreads" in
10579                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10580                 esac
10581                 d_ctermid_r=undef
10582                 ctermid_r_proto=0
10583                 ;;
10584         esac
10585         ;;
10586 *)      ctermid_r_proto=0
10587         ;;
10588 esac
10589
10590 : see if ctime_r exists
10591 set ctime_r d_ctime_r
10592 eval $inlibc
10593 case "$d_ctime_r" in
10594 "$define")
10595         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10596         case "$d_ctime_r_proto:$usethreads" in
10597         ":define")      d_ctime_r_proto=define
10598                 set d_ctime_r_proto ctime_r $hdrs
10599                 eval $hasproto ;;
10600         *)      ;;
10601         esac
10602         case "$d_ctime_r_proto" in
10603         define)
10604         case "$ctime_r_proto" in
10605         ''|0) try='char* ctime_r(const time_t*, char*);'
10606         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10607         esac
10608         case "$ctime_r_proto" in
10609         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10610         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10611         esac
10612         case "$ctime_r_proto" in
10613         ''|0) try='int ctime_r(const time_t*, char*);'
10614         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10615         esac
10616         case "$ctime_r_proto" in
10617         ''|0) try='int ctime_r(const time_t*, char*, int);'
10618         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10619         esac
10620         case "$ctime_r_proto" in
10621         ''|0)   d_ctime_r=undef
10622                 ctime_r_proto=0
10623                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10624         * )     case "$ctime_r_proto" in
10625                 REENTRANT_PROTO*) ;;
10626                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10627                 esac
10628                 echo "Prototype: $try" ;;
10629         esac
10630         ;;
10631         *)      case "$usethreads" in
10632                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10633                 esac
10634                 d_ctime_r=undef
10635                 ctime_r_proto=0
10636                 ;;
10637         esac
10638         ;;
10639 *)      ctime_r_proto=0
10640         ;;
10641 esac
10642
10643 : see if cuserid exists
10644 set cuserid d_cuserid
10645 eval $inlibc
10646
10647 : see if this is a limits.h system
10648 set limits.h i_limits
10649 eval $inhdr
10650
10651 : see if this is a float.h system
10652 set float.h i_float
10653 eval $inhdr
10654
10655 : See if number of significant digits in a double precision number is known
10656 echo " "
10657 $cat >dbl_dig.c <<EOM
10658 #$i_limits I_LIMITS
10659 #$i_float I_FLOAT
10660 #ifdef I_LIMITS
10661 #include <limits.h>
10662 #endif
10663 #ifdef I_FLOAT
10664 #include <float.h>
10665 #endif
10666 #ifdef DBL_DIG
10667 printf("Contains DBL_DIG");
10668 #endif
10669 EOM
10670 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10671 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10672         echo "DBL_DIG found." >&4
10673         val="$define"
10674 else
10675         echo "DBL_DIG NOT found." >&4
10676         val="$undef"
10677 fi
10678 $rm -f dbl_dig.?
10679 set d_dbl_dig
10680 eval $setvar
10681
10682 : see if dbm.h is available
10683 : see if dbmclose exists
10684 set dbmclose d_dbmclose
10685 eval $inlibc
10686
10687 case "$d_dbmclose" in
10688 $define)
10689         set dbm.h i_dbm
10690         eval $inhdr
10691         case "$i_dbm" in
10692         $define)
10693                 val="$undef"
10694                 set i_rpcsvcdbm
10695                 eval $setvar
10696                 ;;
10697         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10698                 eval $inhdr
10699                 ;;
10700         esac
10701         ;;
10702 *)      echo "We won't be including <dbm.h>"
10703         val="$undef"
10704         set i_dbm
10705         eval $setvar
10706         val="$undef"
10707         set i_rpcsvcdbm
10708         eval $setvar
10709         ;;
10710 esac
10711
10712 : see if prototype for dbminit is available
10713 echo " "
10714 set d_dbminitproto dbminit $i_dbm dbm.h
10715 eval $hasproto
10716
10717 : see if difftime exists
10718 set difftime d_difftime
10719 eval $inlibc
10720
10721 : see if this is a dirent system
10722 echo " "
10723 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10724         val="$define"
10725         echo "<dirent.h> found." >&4
10726 else
10727         val="$undef"
10728         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10729                 echo "<sys/dir.h> found." >&4
10730                 echo " "
10731         else
10732                 xinc=`./findhdr sys/ndir.h`
10733         fi
10734         echo "<dirent.h> NOT found." >&4
10735 fi
10736 set i_dirent
10737 eval $setvar
10738
10739 : Look for type of directory structure.
10740 echo " "
10741 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10742
10743 case "$direntrytype" in
10744 ''|' ')
10745         case "$i_dirent" in
10746         $define) guess1='struct dirent' ;;
10747         *) guess1='struct direct'  ;;
10748         esac
10749         ;;
10750 *)      guess1="$direntrytype"
10751         ;;
10752 esac
10753
10754 case "$guess1" in
10755 'struct dirent') guess2='struct direct' ;;
10756 *) guess2='struct dirent' ;;
10757 esac
10758                 
10759 if $contains "$guess1" try.c >/dev/null 2>&1; then
10760         direntrytype="$guess1"
10761         echo "Your directory entries are $direntrytype." >&4
10762 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10763         direntrytype="$guess2"
10764         echo "Your directory entries seem to be $direntrytype." >&4
10765 else
10766         echo "I don't recognize your system's directory entries." >&4
10767         rp="What type is used for directory entries on this system?"
10768         dflt="$guess1"
10769         . ./myread
10770         direntrytype="$ans"
10771 fi
10772 $rm -f try.c
10773
10774
10775 : see if the directory entry stores field length
10776 echo " "
10777 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10778 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10779         echo "Good, your directory entry keeps length information in d_namlen." >&4
10780         val="$define"
10781 else
10782         echo "Your directory entry does not know about the d_namlen field." >&4
10783         val="$undef"
10784 fi
10785 set d_dirnamlen
10786 eval $setvar
10787 $rm -f try.c
10788
10789 : see if this is an sysdir system
10790 set sys/dir.h i_sysdir
10791 eval $inhdr
10792
10793 : see if this is an sysndir system
10794 set sys/ndir.h i_sysndir
10795 eval $inhdr
10796
10797 : Look for dirfd
10798 echo " "
10799 $cat >dirfd.c <<EOM
10800 #include <stdio.h>
10801 #$i_stdlib I_STDLIB
10802 #ifdef I_STDLIB
10803 #include <stdlib.h>
10804 #endif
10805 #$i_dirent I_DIRENT             /**/
10806 #$i_sysdir I_SYS_DIR            /**/
10807 #$i_sysndir I_SYS_NDIR          /**/
10808 #$i_systypes I_SYS_TYPES        /**/
10809 #if defined(I_SYS_TYPES)
10810 #include <sys/types.h>
10811 #endif
10812 #if defined(I_DIRENT)
10813 #include <dirent.h>
10814 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10815 #include <sys/dir.h>
10816 #endif
10817 #else
10818 #ifdef I_SYS_NDIR
10819 #include <sys/ndir.h>
10820 #else
10821 #ifdef I_SYS_DIR
10822 #ifdef hp9000s500
10823 #include <ndir.h>       /* may be wrong in the future */
10824 #else
10825 #include <sys/dir.h>
10826 #endif
10827 #endif
10828 #endif
10829 #endif 
10830 int main() {
10831         DIR *dirp = opendir(".");
10832         if (dirfd(dirp) >= 0)
10833                 exit(0);
10834         else
10835                 exit(1);
10836 }
10837 EOM
10838 set dirfd
10839 if eval $compile; then
10840         val="$define"
10841 fi
10842 case "$val" in
10843 $define)        echo "dirfd() found." >&4       ;;
10844 *)              echo "dirfd() NOT found." >&4   ;;
10845 esac
10846 set d_dirfd
10847 eval $setvar
10848 $rm -f dirfd*
10849
10850 : see if dlerror exists
10851 xxx_runnm="$runnm"
10852 runnm=false
10853 set dlerror d_dlerror
10854 eval $inlibc
10855 runnm="$xxx_runnm"
10856
10857 : see if dlfcn is available
10858 set dlfcn.h i_dlfcn
10859 eval $inhdr
10860
10861 case "$usedl" in
10862 $define|y|true)
10863         $cat << EOM
10864
10865 On a few systems, the dynamically loaded modules that perl generates and uses
10866 will need a different extension than shared libs. The default will probably
10867 be appropriate.
10868
10869 EOM
10870         case "$dlext" in
10871         '')     dflt="$so" ;;
10872         *)      dflt="$dlext" ;;
10873         esac
10874         rp='What is the extension of dynamically loaded modules'
10875         . ./myread
10876         dlext="$ans"
10877         ;;
10878 *)
10879         dlext="none"
10880         ;;
10881 esac
10882
10883 : Check if dlsym need a leading underscore
10884 echo " "
10885 val="$undef"
10886
10887 case "$dlsrc" in
10888 dl_dlopen.xs)
10889         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10890         $cat >dyna.c <<'EOM'
10891 fred () { }
10892 EOM
10893
10894 $cat >fred.c<<EOM
10895
10896 #include <stdio.h>
10897 #$i_stdlib I_STDLIB
10898 #ifdef I_STDLIB
10899 #include <stdlib.h>
10900 #endif
10901 #$i_dlfcn I_DLFCN
10902 #ifdef I_DLFCN
10903 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10904 #else
10905 #include <sys/types.h>
10906 #include <nlist.h>
10907 #include <link.h>
10908 #endif
10909
10910 extern int fred() ;
10911
10912 int main()
10913 {
10914     void * handle ;
10915     void * symbol ;
10916 #ifndef RTLD_LAZY
10917     int mode = 1 ;
10918 #else
10919     int mode = RTLD_LAZY ;
10920 #endif
10921     handle = dlopen("./dyna.$dlext", mode) ;
10922     if (handle == NULL) {
10923         printf ("1\n") ;
10924         fflush (stdout) ;
10925         exit(0);
10926     }
10927     symbol = dlsym(handle, "fred") ;
10928     if (symbol == NULL) {
10929         /* try putting a leading underscore */
10930         symbol = dlsym(handle, "_fred") ;
10931         if (symbol == NULL) {
10932             printf ("2\n") ;
10933             fflush (stdout) ;
10934             exit(0);
10935         }
10936         printf ("3\n") ;
10937     }
10938     else
10939         printf ("4\n") ;
10940     fflush (stdout) ;
10941     exit(0);
10942 }
10943 EOM
10944         : Call the object file tmp-dyna.o in case dlext=o.
10945         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10946                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10947                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10948                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10949                 xxx=`$run ./fred`
10950                 case $xxx in
10951                 1)      echo "Test program failed using dlopen." >&4
10952                         echo "Perhaps you should not use dynamic loading." >&4;;
10953                 2)      echo "Test program failed using dlsym." >&4
10954                         echo "Perhaps you should not use dynamic loading." >&4;;
10955                 3)      echo "dlsym needs a leading underscore" >&4
10956                         val="$define" ;;
10957                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10958                 esac
10959         else
10960                 echo "I can't compile and run the test program." >&4
10961                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10962         fi
10963         ;;
10964 esac
10965                 
10966 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10967
10968 set d_dlsymun
10969 eval $setvar
10970
10971 : see if drand48_r exists
10972 set drand48_r d_drand48_r
10973 eval $inlibc
10974 case "$d_drand48_r" in
10975 "$define")
10976         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10977         case "$d_drand48_r_proto:$usethreads" in
10978         ":define")      d_drand48_r_proto=define
10979                 set d_drand48_r_proto drand48_r $hdrs
10980                 eval $hasproto ;;
10981         *)      ;;
10982         esac
10983         case "$d_drand48_r_proto" in
10984         define)
10985         case "$drand48_r_proto" in
10986         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10987         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10988         esac
10989         case "$drand48_r_proto" in
10990         ''|0)   d_drand48_r=undef
10991                 drand48_r_proto=0
10992                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10993         * )     case "$drand48_r_proto" in
10994                 REENTRANT_PROTO*) ;;
10995                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10996                 esac
10997                 echo "Prototype: $try" ;;
10998         esac
10999         ;;
11000         *)      case "$usethreads" in
11001                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11002                 esac
11003                 d_drand48_r=undef
11004                 drand48_r_proto=0
11005                 ;;
11006         esac
11007         ;;
11008 *)      drand48_r_proto=0
11009         ;;
11010 esac
11011
11012 : see if prototype for drand48 is available
11013 echo " "
11014 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11015 eval $hasproto
11016
11017 : see if dup2 exists
11018 set dup2 d_dup2
11019 eval $inlibc
11020
11021 : see if eaccess exists
11022 set eaccess d_eaccess
11023 eval $inlibc
11024
11025 : see if endgrent exists
11026 set endgrent d_endgrent
11027 eval $inlibc
11028
11029 : see if this is an grp system
11030 set grp.h i_grp
11031 eval $inhdr
11032
11033 case "$i_grp" in
11034 $define)
11035         xxx=`./findhdr grp.h`
11036         $cppstdin $cppflags $cppminus < $xxx >$$.h
11037
11038         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11039                 val="$define"
11040         else
11041                 val="$undef"
11042         fi
11043         set d_grpasswd
11044         eval $setvar
11045
11046         $rm -f $$.h
11047         ;;
11048 *)
11049         val="$undef";
11050         set d_grpasswd; eval $setvar
11051         ;;
11052 esac
11053
11054 : see if endgrent_r exists
11055 set endgrent_r d_endgrent_r
11056 eval $inlibc
11057 case "$d_endgrent_r" in
11058 "$define")
11059         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11060         case "$d_endgrent_r_proto:$usethreads" in
11061         ":define")      d_endgrent_r_proto=define
11062                 set d_endgrent_r_proto endgrent_r $hdrs
11063                 eval $hasproto ;;
11064         *)      ;;
11065         esac
11066         case "$d_endgrent_r_proto" in
11067         define)
11068         case "$endgrent_r_proto" in
11069         ''|0) try='int endgrent_r(FILE**);'
11070         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11071         esac
11072         case "$endgrent_r_proto" in
11073         ''|0) try='void endgrent_r(FILE**);'
11074         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11075         esac
11076         case "$endgrent_r_proto" in
11077         ''|0)   d_endgrent_r=undef
11078                 endgrent_r_proto=0
11079                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11080         * )     case "$endgrent_r_proto" in
11081                 REENTRANT_PROTO*) ;;
11082                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11083                 esac
11084                 echo "Prototype: $try" ;;
11085         esac
11086         ;;
11087         *)      case "$usethreads" in
11088                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11089                 esac
11090                 d_endgrent_r=undef
11091                 endgrent_r_proto=0
11092                 ;;
11093         esac
11094         ;;
11095 *)      endgrent_r_proto=0
11096         ;;
11097 esac
11098
11099 : see if endhostent exists
11100 set endhostent d_endhent
11101 eval $inlibc
11102
11103 : see if this is a netdb.h system
11104 set netdb.h i_netdb
11105 eval $inhdr
11106
11107 : see if endhostent_r exists
11108 set endhostent_r d_endhostent_r
11109 eval $inlibc
11110 case "$d_endhostent_r" in
11111 "$define")
11112         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11113         case "$d_endhostent_r_proto:$usethreads" in
11114         ":define")      d_endhostent_r_proto=define
11115                 set d_endhostent_r_proto endhostent_r $hdrs
11116                 eval $hasproto ;;
11117         *)      ;;
11118         esac
11119         case "$d_endhostent_r_proto" in
11120         define)
11121         case "$endhostent_r_proto" in
11122         ''|0) try='int endhostent_r(struct hostent_data*);'
11123         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11124         esac
11125         case "$endhostent_r_proto" in
11126         ''|0) try='void endhostent_r(struct hostent_data*);'
11127         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11128         esac
11129         case "$endhostent_r_proto" in
11130         ''|0)   d_endhostent_r=undef
11131                 endhostent_r_proto=0
11132                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11133         * )     case "$endhostent_r_proto" in
11134                 REENTRANT_PROTO*) ;;
11135                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11136                 esac
11137                 echo "Prototype: $try" ;;
11138         esac
11139         ;;
11140         *)      case "$usethreads" in
11141                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11142                 esac
11143                 d_endhostent_r=undef
11144                 endhostent_r_proto=0
11145                 ;;
11146         esac
11147         ;;
11148 *)      endhostent_r_proto=0
11149         ;;
11150 esac
11151
11152 : see if endnetent exists
11153 set endnetent d_endnent
11154 eval $inlibc
11155
11156 : see if endnetent_r exists
11157 set endnetent_r d_endnetent_r
11158 eval $inlibc
11159 case "$d_endnetent_r" in
11160 "$define")
11161         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11162         case "$d_endnetent_r_proto:$usethreads" in
11163         ":define")      d_endnetent_r_proto=define
11164                 set d_endnetent_r_proto endnetent_r $hdrs
11165                 eval $hasproto ;;
11166         *)      ;;
11167         esac
11168         case "$d_endnetent_r_proto" in
11169         define)
11170         case "$endnetent_r_proto" in
11171         ''|0) try='int endnetent_r(struct netent_data*);'
11172         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11173         esac
11174         case "$endnetent_r_proto" in
11175         ''|0) try='void endnetent_r(struct netent_data*);'
11176         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11177         esac
11178         case "$endnetent_r_proto" in
11179         ''|0)   d_endnetent_r=undef
11180                 endnetent_r_proto=0
11181                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11182         * )     case "$endnetent_r_proto" in
11183                 REENTRANT_PROTO*) ;;
11184                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11185                 esac
11186                 echo "Prototype: $try" ;;
11187         esac
11188         ;;
11189         *)      case "$usethreads" in
11190                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11191                 esac
11192                 d_endnetent_r=undef
11193                 endnetent_r_proto=0
11194                 ;;
11195         esac
11196         ;;
11197 *)      endnetent_r_proto=0
11198         ;;
11199 esac
11200
11201 : see if endprotoent exists
11202 set endprotoent d_endpent
11203 eval $inlibc
11204
11205 : see if endprotoent_r exists
11206 set endprotoent_r d_endprotoent_r
11207 eval $inlibc
11208 case "$d_endprotoent_r" in
11209 "$define")
11210         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11211         case "$d_endprotoent_r_proto:$usethreads" in
11212         ":define")      d_endprotoent_r_proto=define
11213                 set d_endprotoent_r_proto endprotoent_r $hdrs
11214                 eval $hasproto ;;
11215         *)      ;;
11216         esac
11217         case "$d_endprotoent_r_proto" in
11218         define)
11219         case "$endprotoent_r_proto" in
11220         ''|0) try='int endprotoent_r(struct protoent_data*);'
11221         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11222         esac
11223         case "$endprotoent_r_proto" in
11224         ''|0) try='void endprotoent_r(struct protoent_data*);'
11225         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11226         esac
11227         case "$endprotoent_r_proto" in
11228         ''|0)   d_endprotoent_r=undef
11229                 endprotoent_r_proto=0
11230                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11231         * )     case "$endprotoent_r_proto" in
11232                 REENTRANT_PROTO*) ;;
11233                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11234                 esac
11235                 echo "Prototype: $try" ;;
11236         esac
11237         ;;
11238         *)      case "$usethreads" in
11239                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11240                 esac
11241                 d_endprotoent_r=undef
11242                 endprotoent_r_proto=0
11243                 ;;
11244         esac
11245         ;;
11246 *)      endprotoent_r_proto=0
11247         ;;
11248 esac
11249
11250 : see if endpwent exists
11251 set endpwent d_endpwent
11252 eval $inlibc
11253
11254 : see if this is a pwd.h system
11255 set pwd.h i_pwd
11256 eval $inhdr
11257
11258 case "$i_pwd" in
11259 $define)
11260         xxx=`./findhdr pwd.h`
11261         $cppstdin $cppflags $cppminus < $xxx >$$.h
11262
11263         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11264                 val="$define"
11265         else
11266                 val="$undef"
11267         fi
11268         set d_pwquota
11269         eval $setvar
11270
11271         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11272                 val="$define"
11273         else
11274                 val="$undef"
11275         fi
11276         set d_pwage
11277         eval $setvar
11278
11279         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11280                 val="$define"
11281         else
11282                 val="$undef"
11283         fi
11284         set d_pwchange
11285         eval $setvar
11286
11287         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11288                 val="$define"
11289         else
11290                 val="$undef"
11291         fi
11292         set d_pwclass
11293         eval $setvar
11294
11295         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11296                 val="$define"
11297         else
11298                 val="$undef"
11299         fi
11300         set d_pwexpire
11301         eval $setvar
11302
11303         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11304                 val="$define"
11305         else
11306                 val="$undef"
11307         fi
11308         set d_pwcomment
11309         eval $setvar
11310
11311         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11312                 val="$define"
11313         else
11314                 val="$undef"
11315         fi
11316         set d_pwgecos
11317         eval $setvar
11318
11319         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11320                 val="$define"
11321         else
11322                 val="$undef"
11323         fi
11324         set d_pwpasswd
11325         eval $setvar
11326
11327         $rm -f $$.h
11328         ;;
11329 *)
11330         val="$undef"; 
11331         set d_pwquota; eval $setvar
11332         set d_pwage; eval $setvar
11333         set d_pwchange; eval $setvar
11334         set d_pwclass; eval $setvar
11335         set d_pwexpire; eval $setvar
11336         set d_pwcomment; eval $setvar
11337         set d_pwgecos; eval $setvar
11338         set d_pwpasswd; eval $setvar
11339         ;;
11340 esac
11341
11342 : see if endpwent_r exists
11343 set endpwent_r d_endpwent_r
11344 eval $inlibc
11345 case "$d_endpwent_r" in
11346 "$define")
11347         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11348         case "$d_endpwent_r_proto:$usethreads" in
11349         ":define")      d_endpwent_r_proto=define
11350                 set d_endpwent_r_proto endpwent_r $hdrs
11351                 eval $hasproto ;;
11352         *)      ;;
11353         esac
11354         case "$d_endpwent_r_proto" in
11355         define)
11356         case "$endpwent_r_proto" in
11357         ''|0) try='int endpwent_r(FILE**);'
11358         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11359         esac
11360         case "$endpwent_r_proto" in
11361         ''|0) try='void endpwent_r(FILE**);'
11362         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11363         esac
11364         case "$endpwent_r_proto" in
11365         ''|0)   d_endpwent_r=undef
11366                 endpwent_r_proto=0
11367                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11368         * )     case "$endpwent_r_proto" in
11369                 REENTRANT_PROTO*) ;;
11370                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11371                 esac
11372                 echo "Prototype: $try" ;;
11373         esac
11374         ;;
11375         *)      case "$usethreads" in
11376                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11377                 esac
11378                 d_endpwent_r=undef
11379                 endpwent_r_proto=0
11380                 ;;
11381         esac
11382         ;;
11383 *)      endpwent_r_proto=0
11384         ;;
11385 esac
11386
11387 : see if endservent exists
11388 set endservent d_endsent
11389 eval $inlibc
11390
11391 : see if endservent_r exists
11392 set endservent_r d_endservent_r
11393 eval $inlibc
11394 case "$d_endservent_r" in
11395 "$define")
11396         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11397         case "$d_endservent_r_proto:$usethreads" in
11398         ":define")      d_endservent_r_proto=define
11399                 set d_endservent_r_proto endservent_r $hdrs
11400                 eval $hasproto ;;
11401         *)      ;;
11402         esac
11403         case "$d_endservent_r_proto" in
11404         define)
11405         case "$endservent_r_proto" in
11406         ''|0) try='int endservent_r(struct servent_data*);'
11407         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11408         esac
11409         case "$endservent_r_proto" in
11410         ''|0) try='void endservent_r(struct servent_data*);'
11411         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11412         esac
11413         case "$endservent_r_proto" in
11414         ''|0)   d_endservent_r=undef
11415                 endservent_r_proto=0
11416                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11417         * )     case "$endservent_r_proto" in
11418                 REENTRANT_PROTO*) ;;
11419                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11420                 esac
11421                 echo "Prototype: $try" ;;
11422         esac
11423         ;;
11424         *)      case "$usethreads" in
11425                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11426                 esac
11427                 d_endservent_r=undef
11428                 endservent_r_proto=0
11429                 ;;
11430         esac
11431         ;;
11432 *)      endservent_r_proto=0
11433         ;;
11434 esac
11435
11436 : Locate the flags for 'open()'
11437 echo " "
11438 $cat >try.c <<EOCP
11439 #include <sys/types.h>
11440 #ifdef I_FCNTL
11441 #include <fcntl.h>
11442 #endif
11443 #ifdef I_SYS_FILE
11444 #include <sys/file.h>
11445 #endif
11446 #$i_stdlib I_STDLIB
11447 #ifdef I_STDLIB
11448 #include <stdlib.h>
11449 #endif
11450 int main() {
11451         if(O_RDONLY);
11452 #ifdef O_TRUNC
11453         exit(0);
11454 #else
11455         exit(1);
11456 #endif
11457 }
11458 EOCP
11459 : check sys/file.h first to get FREAD on Sun
11460 if $test `./findhdr sys/file.h` && \
11461                 set try -DI_SYS_FILE && eval $compile; then
11462         h_sysfile=true;
11463         echo "<sys/file.h> defines the O_* constants..." >&4
11464         if $run ./try; then
11465                 echo "and you have the 3 argument form of open()." >&4
11466                 val="$define"
11467         else
11468                 echo "but not the 3 argument form of open().  Oh, well." >&4
11469                 val="$undef"
11470         fi
11471 elif $test `./findhdr fcntl.h` && \
11472                 set try -DI_FCNTL && eval $compile; then
11473         h_fcntl=true;
11474         echo "<fcntl.h> defines the O_* constants..." >&4
11475         if $run ./try; then
11476                 echo "and you have the 3 argument form of open()." >&4
11477                 val="$define"
11478         else
11479                 echo "but not the 3 argument form of open().  Oh, well." >&4
11480                 val="$undef"
11481         fi
11482 else
11483         val="$undef"
11484         echo "I can't find the O_* constant definitions!  You got problems." >&4
11485 fi
11486 set d_open3
11487 eval $setvar
11488 $rm -f try try.*
11489
11490 : see which of string.h or strings.h is needed
11491 echo " "
11492 strings=`./findhdr string.h`
11493 if $test "$strings" && $test -r "$strings"; then
11494         echo "Using <string.h> instead of <strings.h>." >&4
11495         val="$define"
11496 else
11497         val="$undef"
11498         strings=`./findhdr strings.h`
11499         if $test "$strings" && $test -r "$strings"; then
11500                 echo "Using <strings.h> instead of <string.h>." >&4
11501         else
11502                 echo "No string header found -- You'll surely have problems." >&4
11503         fi
11504 fi
11505 set i_string
11506 eval $setvar
11507 case "$i_string" in
11508 "$undef") strings=`./findhdr strings.h`;;
11509 *)        strings=`./findhdr string.h`;;
11510 esac
11511
11512 : see if this is a sys/file.h system
11513 val=''
11514 set sys/file.h val
11515 eval $inhdr
11516
11517 : do we need to include sys/file.h ?
11518 case "$val" in
11519 "$define")
11520         echo " "
11521         if $h_sysfile; then
11522                 val="$define"
11523                 echo "We'll be including <sys/file.h>." >&4
11524         else
11525                 val="$undef"
11526                 echo "We won't be including <sys/file.h>." >&4
11527         fi
11528         ;;
11529 *)
11530         h_sysfile=false
11531         ;;
11532 esac
11533 set i_sysfile
11534 eval $setvar
11535
11536 : see if fcntl.h is there
11537 val=''
11538 set fcntl.h val
11539 eval $inhdr
11540
11541 : see if we can include fcntl.h
11542 case "$val" in
11543 "$define")
11544         echo " "
11545         if $h_fcntl; then
11546                 val="$define"
11547                 echo "We'll be including <fcntl.h>." >&4
11548         else
11549                 val="$undef"
11550                 if $h_sysfile; then
11551         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11552                 else
11553                         echo "We won't be including <fcntl.h>." >&4
11554                 fi
11555         fi
11556         ;;
11557 *)
11558         h_fcntl=false
11559         val="$undef"
11560         ;;
11561 esac
11562 set i_fcntl
11563 eval $setvar
11564
11565 : check for non-blocking I/O stuff
11566 case "$h_sysfile" in
11567 true) echo "#include <sys/file.h>" > head.c;;
11568 *)
11569        case "$h_fcntl" in
11570        true) echo "#include <fcntl.h>" > head.c;;
11571        *) echo "#include <sys/fcntl.h>" > head.c;;
11572        esac
11573        ;;
11574 esac
11575 echo " "
11576 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11577 case "$o_nonblock" in
11578 '')
11579         $cat head.c > try.c
11580         $cat >>try.c <<EOCP
11581 #include <stdio.h>
11582 #$i_stdlib I_STDLIB
11583 #ifdef I_STDLIB
11584 #include <stdlib.h>
11585 #endif
11586 #$i_fcntl I_FCNTL
11587 #ifdef I_FCNTL
11588 #include <fcntl.h>
11589 #endif
11590 int main() {
11591 #ifdef O_NONBLOCK
11592         printf("O_NONBLOCK\n");
11593         exit(0);
11594 #endif
11595 #ifdef O_NDELAY
11596         printf("O_NDELAY\n");
11597         exit(0);
11598 #endif
11599 #ifdef FNDELAY
11600         printf("FNDELAY\n");
11601         exit(0);
11602 #endif
11603         exit(0);
11604 }
11605 EOCP
11606         set try
11607         if eval $compile_ok; then
11608                 o_nonblock=`$run ./try`
11609                 case "$o_nonblock" in
11610                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11611                 *) echo "Seems like we can use $o_nonblock.";;
11612                 esac
11613         else
11614                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11615         fi
11616         ;;
11617 *) echo "Using $hint value $o_nonblock.";;
11618 esac
11619 $rm -f try try.* .out core
11620
11621 echo " "
11622 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11623 case "$eagain" in
11624 '')
11625         $cat head.c > try.c
11626         $cat >>try.c <<EOCP
11627 #include <errno.h>
11628 #include <sys/types.h>
11629 #include <signal.h>
11630 #include <stdio.h> 
11631 #$i_stdlib I_STDLIB
11632 #ifdef I_STDLIB
11633 #include <stdlib.h>
11634 #endif
11635 #$i_fcntl I_FCNTL
11636 #ifdef I_FCNTL
11637 #include <fcntl.h>
11638 #endif
11639 #define MY_O_NONBLOCK $o_nonblock
11640 #ifndef errno  /* XXX need better Configure test */
11641 extern int errno;
11642 #endif
11643 #$i_unistd I_UNISTD
11644 #ifdef I_UNISTD
11645 #include <unistd.h>
11646 #endif
11647 #$i_string I_STRING
11648 #ifdef I_STRING
11649 #include <string.h>
11650 #else
11651 #include <strings.h>
11652 #endif
11653 $signal_t blech(x) int x; { exit(3); }
11654 EOCP
11655         $cat >> try.c <<'EOCP'
11656 int main()
11657 {
11658         int pd[2];
11659         int pu[2];
11660         char buf[1];
11661         char string[100];
11662
11663         pipe(pd);       /* Down: child -> parent */
11664         pipe(pu);       /* Up: parent -> child */
11665         if (0 != fork()) {
11666                 int ret;
11667                 close(pd[1]);   /* Parent reads from pd[0] */
11668                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11669 #ifdef F_SETFL
11670                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11671                         exit(1);
11672 #else
11673                 exit(4);
11674 #endif
11675                 signal(SIGALRM, blech);
11676                 alarm(5);
11677                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11678                         exit(2);
11679                 sprintf(string, "%d\n", ret);
11680                 write(2, string, strlen(string));
11681                 alarm(0);
11682 #ifdef EAGAIN
11683                 if (errno == EAGAIN) {
11684                         printf("EAGAIN\n");
11685                         goto ok;
11686                 }
11687 #endif
11688 #ifdef EWOULDBLOCK
11689                 if (errno == EWOULDBLOCK)
11690                         printf("EWOULDBLOCK\n");
11691 #endif
11692         ok:
11693                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11694                 sleep(2);                               /* Give it time to close our pipe */
11695                 alarm(5);
11696                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11697                 alarm(0);
11698                 sprintf(string, "%d\n", ret);
11699                 write(4, string, strlen(string));
11700                 exit(0);
11701         }
11702
11703         close(pd[0]);                   /* We write to pd[1] */
11704         close(pu[1]);                   /* We read from pu[0] */
11705         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11706         close(pd[1]);                   /* Pipe pd is now fully closed! */
11707         exit(0);                                /* Bye bye, thank you for playing! */
11708 }
11709 EOCP
11710         set try
11711         if eval $compile_ok; then
11712                 echo "$startsh" >mtry
11713                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11714                 chmod +x mtry
11715                 ./mtry >/dev/null 2>&1
11716                 case $? in
11717                 0) eagain=`$cat try.out`;;
11718                 1) echo "Could not perform non-blocking setting!";;
11719                 2) echo "I did a successful read() for something that was not there!";;
11720                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11721                 4) echo "Could not find F_SETFL!";;
11722                 *) echo "Something terribly wrong happened during testing.";;
11723                 esac
11724                 rd_nodata=`$cat try.ret`
11725                 echo "A read() system call with no data present returns $rd_nodata."
11726                 case "$rd_nodata" in
11727                 0|-1) ;;
11728                 *)
11729                         echo "(That's peculiar, fixing that to be -1.)"
11730                         rd_nodata=-1
11731                         ;;
11732                 esac
11733                 case "$eagain" in
11734                 '')
11735                         echo "Forcing errno EAGAIN on read() with no data available."
11736                         eagain=EAGAIN
11737                         ;;
11738                 *)
11739                         echo "Your read() sets errno to $eagain when no data is available."
11740                         ;;
11741                 esac
11742                 status=`$cat try.err`
11743                 case "$status" in
11744                 0) echo "And it correctly returns 0 to signal EOF.";;
11745                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11746                 *) echo "However, your read() returns '$status' on EOF??";;
11747                 esac
11748                 val="$define"
11749                 if test "$status" = "$rd_nodata"; then
11750                         echo "WARNING: you can't distinguish between EOF and no data!"
11751                         val="$undef"
11752                 fi
11753         else
11754                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11755                 eagain=EAGAIN
11756         fi
11757         set d_eofnblk
11758         eval $setvar
11759         ;;
11760 *)
11761         echo "Using $hint value $eagain."
11762         echo "Your read() returns $rd_nodata when no data is present."
11763         case "$d_eofnblk" in
11764         "$define") echo "And you can see EOF because read() returns 0.";;
11765         "$undef") echo "But you can't see EOF status from read() returned value.";;
11766         *)
11767                 echo "(Assuming you can't see EOF status from read anyway.)"
11768                 d_eofnblk=$undef
11769                 ;;
11770         esac
11771         ;;
11772 esac
11773 $rm -f try try.* .out core head.c mtry
11774
11775 : see if _ptr and _cnt from stdio act std
11776 echo " "
11777
11778 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11779         echo "(Looks like you have stdio.h from BSD.)"
11780         case "$stdio_ptr" in
11781         '') stdio_ptr='((fp)->_p)'
11782                 ptr_lval=$define
11783                 ;;
11784         *)      ptr_lval=$d_stdio_ptr_lval;;
11785         esac
11786         case "$stdio_cnt" in
11787         '') stdio_cnt='((fp)->_r)'
11788                 cnt_lval=$define
11789                 ;;
11790         *)      cnt_lval=$d_stdio_cnt_lval;;
11791         esac
11792         case "$stdio_base" in
11793         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11794         esac
11795         case "$stdio_bufsiz" in
11796         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11797         esac
11798 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11799         echo "(Looks like you have stdio.h from Linux.)"
11800         case "$stdio_ptr" in
11801         '') stdio_ptr='((fp)->_IO_read_ptr)'
11802                 ptr_lval=$define
11803                 ;;
11804         *)      ptr_lval=$d_stdio_ptr_lval;;
11805         esac
11806         case "$stdio_cnt" in
11807         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11808                 cnt_lval=$undef
11809                 ;;
11810         *)      cnt_lval=$d_stdio_cnt_lval;;
11811         esac
11812         case "$stdio_base" in
11813         '') stdio_base='((fp)->_IO_read_base)';;
11814         esac
11815         case "$stdio_bufsiz" in
11816         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11817         esac
11818 else
11819         case "$stdio_ptr" in
11820         '') stdio_ptr='((fp)->_ptr)'
11821                 ptr_lval=$define
11822                 ;;
11823         *)      ptr_lval=$d_stdio_ptr_lval;;
11824         esac
11825         case "$stdio_cnt" in
11826         '') stdio_cnt='((fp)->_cnt)'
11827                 cnt_lval=$define
11828                 ;;
11829         *)      cnt_lval=$d_stdio_cnt_lval;;
11830         esac
11831         case "$stdio_base" in
11832         '') stdio_base='((fp)->_base)';;
11833         esac
11834         case "$stdio_bufsiz" in
11835         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11836         esac
11837 fi
11838
11839 : test whether _ptr and _cnt really work
11840 echo "Checking how std your stdio is..." >&4
11841 $cat >try.c <<EOP
11842 #include <stdio.h>
11843 #$i_stdlib I_STDLIB
11844 #ifdef I_STDLIB
11845 #include <stdlib.h>
11846 #endif
11847 #define FILE_ptr(fp)    $stdio_ptr
11848 #define FILE_cnt(fp)    $stdio_cnt
11849 int main() {
11850         FILE *fp = fopen("try.c", "r");
11851         char c = getc(fp);
11852         if (
11853                 18 <= FILE_cnt(fp) &&
11854                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11855         )
11856                 exit(0);
11857         exit(1);
11858 }
11859 EOP
11860 val="$undef"
11861 set try
11862 if eval $compile && $to try.c; then
11863         if $run ./try; then
11864                 echo "Your stdio acts pretty std."
11865                 val="$define"
11866         else
11867                 echo "Your stdio isn't very std."
11868         fi
11869 else
11870         echo "Your stdio doesn't appear very std."
11871 fi
11872 $rm -f try.c try
11873
11874 # glibc 2.2.90 and above apparently change stdio streams so Perl's
11875 # direct buffer manipulation no longer works.  The Configure tests
11876 # should be changed to correctly detect this, but until then,
11877 # the following check should at least let perl compile and run.
11878 # (This quick fix should be updated before 5.8.1.)
11879 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
11880 # A. Dougherty, June 3, 2002.
11881 case "$d_gnulibc" in
11882 $define)
11883         case "$gnulibc_version" in
11884         2.[01]*)  ;;
11885         2.2) ;;
11886         2.2.[0-9]) ;;
11887         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11888                 val="$undef"
11889                 ;;
11890         esac
11891         ;;
11892 esac
11893 set d_stdstdio
11894 eval $setvar
11895
11896 : Can _ptr be used as an lvalue?
11897 case "$d_stdstdio$ptr_lval" in
11898 $define$define) val=$define ;;
11899 *) val=$undef ;;
11900 esac
11901 set d_stdio_ptr_lval
11902 eval $setvar
11903
11904 : Can _cnt be used as an lvalue?
11905 case "$d_stdstdio$cnt_lval" in
11906 $define$define) val=$define ;;
11907 *) val=$undef ;;
11908 esac
11909 set d_stdio_cnt_lval
11910 eval $setvar
11911
11912
11913 : test whether setting _ptr sets _cnt as a side effect
11914 d_stdio_ptr_lval_sets_cnt="$undef"
11915 d_stdio_ptr_lval_nochange_cnt="$undef"
11916 case "$d_stdio_ptr_lval$d_stdstdio" in
11917 $define$define)
11918         echo "Checking to see what happens if we set the stdio ptr..." >&4
11919 $cat >try.c <<EOP
11920 #include <stdio.h>
11921 /* Can we scream? */
11922 /* Eat dust sed :-) */
11923 /* In the buffer space, no one can hear you scream. */
11924 #$i_stdlib I_STDLIB
11925 #ifdef I_STDLIB
11926 #include <stdlib.h>
11927 #endif
11928 #define FILE_ptr(fp)    $stdio_ptr
11929 #define FILE_cnt(fp)    $stdio_cnt
11930 #include <sys/types.h>
11931 int main() {
11932         FILE *fp = fopen("try.c", "r");
11933         int c;
11934         char *ptr;
11935         size_t cnt;
11936         if (!fp) {
11937             puts("Fail even to read");
11938             exit(1);
11939         }
11940         c = getc(fp); /* Read away the first # */
11941         if (c == EOF) {
11942             puts("Fail even to read");
11943             exit(1);
11944         }
11945         if (!(
11946                 18 <= FILE_cnt(fp) &&
11947                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11948         )) {
11949                 puts("Fail even to read");
11950                 exit (1);
11951         }
11952         ptr = (char*) FILE_ptr(fp);
11953         cnt = (size_t)FILE_cnt(fp);
11954
11955         FILE_ptr(fp) += 42;
11956
11957         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11958                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11959                 exit (1);
11960         }
11961         if (FILE_cnt(fp) <= 20) {
11962                 printf ("Fail (<20 chars to test)");
11963                 exit (1);
11964         }
11965         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11966                 puts("Fail compare");
11967                 exit (1);
11968         }
11969         if (cnt == FILE_cnt(fp)) {
11970                 puts("Pass_unchanged");
11971                 exit (0);
11972         }       
11973         if (FILE_cnt(fp) == (cnt - 42)) {
11974                 puts("Pass_changed");
11975                 exit (0);
11976         }
11977         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11978         return 1;
11979
11980 }
11981 EOP
11982         set try
11983         if eval $compile && $to try.c; then
11984                 case `$run ./try` in
11985                 Pass_changed)
11986                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11987                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11988                 Pass_unchanged)
11989                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11990                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11991                 Fail*)
11992                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11993                 *)
11994                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11995         esac
11996         else
11997                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11998         fi
11999         $rm -f try.c try
12000         ;;
12001 esac
12002
12003 : see if _base is also standard
12004 val="$undef"
12005 case "$d_stdstdio" in
12006 $define)
12007         $cat >try.c <<EOP
12008 #include <stdio.h>
12009 #$i_stdlib I_STDLIB
12010 #ifdef I_STDLIB
12011 #include <stdlib.h>
12012 #endif
12013 #define FILE_base(fp)   $stdio_base
12014 #define FILE_bufsiz(fp) $stdio_bufsiz
12015 int main() {
12016         FILE *fp = fopen("try.c", "r");
12017         char c = getc(fp);
12018         if (
12019                 19 <= FILE_bufsiz(fp) &&
12020                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12021         )
12022                 exit(0);
12023         exit(1);
12024 }
12025 EOP
12026         set try
12027         if eval $compile && $to try.c; then
12028                 if $run ./try; then
12029                         echo "And its _base field acts std."
12030                         val="$define"
12031                 else
12032                         echo "But its _base field isn't std."
12033                 fi
12034         else
12035                 echo "However, it seems to be lacking the _base field."
12036         fi
12037         $rm -f try.c try
12038         ;;
12039 esac
12040 set d_stdiobase
12041 eval $setvar
12042
12043 : see if fast_stdio exists
12044 val="$undef"
12045 case "$d_stdstdio:$d_stdio_ptr_lval" in
12046 "$define:$define")
12047         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12048         *$define*)
12049                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12050                 val="$define"
12051                 ;;
12052         esac
12053         ;;
12054 esac
12055 set d_faststdio
12056 eval $setvar
12057
12058
12059
12060 : see if fchdir exists
12061 set fchdir d_fchdir
12062 eval $inlibc
12063
12064 : see if fchmod exists
12065 set fchmod d_fchmod
12066 eval $inlibc
12067
12068 : see if fchown exists
12069 set fchown d_fchown
12070 eval $inlibc
12071
12072 : see if this is an fcntl system
12073 set fcntl d_fcntl
12074 eval $inlibc
12075
12076 echo " "
12077 : See if fcntl-based locking works.
12078 $cat >try.c <<EOCP
12079 #$i_stdlib I_STDLIB
12080 #ifdef I_STDLIB
12081 #include <stdlib.h>
12082 #endif
12083 #include <unistd.h>
12084 #include <fcntl.h>
12085 #include <signal.h>
12086 $signal_t blech(x) int x; { exit(3); }
12087 int main() {
12088 #if defined(F_SETLK) && defined(F_SETLKW)
12089      struct flock flock;
12090      int retval, fd;
12091      fd = open("try.c", O_RDONLY);
12092      flock.l_type = F_RDLCK;
12093      flock.l_whence = SEEK_SET;
12094      flock.l_start = flock.l_len = 0;
12095      signal(SIGALRM, blech);
12096      alarm(10);
12097      retval = fcntl(fd, F_SETLK, &flock);
12098      close(fd);
12099      (retval < 0 ? exit(2) : exit(0));
12100 #else
12101      exit(2);
12102 #endif
12103 }
12104 EOCP
12105 echo "Checking if fcntl-based file locking works... "
12106 case "$d_fcntl" in
12107 "$define")
12108         set try
12109         if eval $compile_ok; then
12110                 if $run ./try; then
12111                         echo "Yes, it seems to work."
12112                         val="$define"
12113                 else
12114                         echo "Nope, it didn't work."
12115                         val="$undef"
12116                         case "$?" in
12117                         3) $cat >&4 <<EOM
12118 ***
12119 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12120 *** This is (almost) impossible.
12121 *** If your NFS lock daemons are not feeling well, something like
12122 *** this may happen, please investigate.  Cannot continue, aborting.
12123 ***
12124 EOM
12125                                 exit 1
12126                                 ;;
12127                         esac
12128                 fi
12129         else
12130                 echo "I'm unable to compile the test program, so I'll assume not."
12131                 val="$undef"
12132         fi
12133         ;;
12134 *) val="$undef";
12135         echo "Nope, since you don't even have fcntl()."
12136         ;;
12137 esac
12138 set d_fcntl_can_lock
12139 eval $setvar
12140 $rm -f try*
12141
12142
12143 : check for fd_set items
12144 $cat <<EOM
12145
12146 Checking to see how well your C compiler handles fd_set and friends ...
12147 EOM
12148 $cat >try.c <<EOCP
12149 #$i_stdlib I_STDLIB
12150 #ifdef I_STDLIB
12151 #include <stdlib.h>
12152 #endif
12153 #$i_systime I_SYS_TIME
12154 #$i_sysselct I_SYS_SELECT
12155 #$d_socket HAS_SOCKET
12156 #include <sys/types.h>
12157 #ifdef HAS_SOCKET
12158 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12159 #endif
12160 #ifdef I_SYS_TIME
12161 #include <sys/time.h>
12162 #endif
12163 #ifdef I_SYS_SELECT
12164 #include <sys/select.h>
12165 #endif
12166 int main() {
12167         fd_set fds;
12168
12169 #ifdef TRYBITS
12170         if(fds.fds_bits);
12171 #endif
12172
12173 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12174         exit(0);
12175 #else
12176         exit(1);
12177 #endif
12178 }
12179 EOCP
12180 set try -DTRYBITS
12181 if eval $compile; then
12182         d_fds_bits="$define"
12183         d_fd_set="$define"
12184         echo "Well, your system knows about the normal fd_set typedef..." >&4
12185         if $run ./try; then
12186                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12187                 d_fd_macros="$define"
12188         else
12189                 $cat >&4 <<'EOM'
12190 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12191 EOM
12192                 d_fd_macros="$undef"
12193         fi
12194 else
12195         $cat <<'EOM'
12196 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12197 EOM
12198         set try
12199         if eval $compile; then
12200                 d_fds_bits="$undef"
12201                 d_fd_set="$define"
12202                 echo "Well, your system has some sort of fd_set available..." >&4
12203                 if $run ./try; then
12204                         echo "and you have the normal fd_set macros." >&4
12205                         d_fd_macros="$define"
12206                 else
12207                         $cat <<'EOM'
12208 but not the normal fd_set macros!  Gross!  More work for me...
12209 EOM
12210                         d_fd_macros="$undef"
12211                 fi
12212         else
12213         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12214                 d_fd_set="$undef"
12215                 d_fds_bits="$undef"
12216                 d_fd_macros="$undef"
12217         fi
12218 fi
12219 $rm -f try try.*
12220
12221 : see if fgetpos exists
12222 set fgetpos d_fgetpos
12223 eval $inlibc
12224
12225 : see if finite exists
12226 set finite d_finite
12227 eval $inlibc
12228
12229 : see if finitel exists
12230 set finitel d_finitel
12231 eval $inlibc
12232
12233 : see if flock exists
12234 set flock d_flock
12235 eval $inlibc
12236
12237 : see if prototype for flock is available
12238 echo " "
12239 set d_flockproto flock $i_sysfile sys/file.h
12240 eval $hasproto
12241
12242 : see if fork exists
12243 set fork d_fork
12244 eval $inlibc
12245
12246 : see if fp_class exists
12247 set fp_class d_fp_class
12248 eval $inlibc
12249
12250 : see if pathconf exists
12251 set pathconf d_pathconf
12252 eval $inlibc
12253
12254 : see if fpathconf exists
12255 set fpathconf d_fpathconf
12256 eval $inlibc
12257
12258 : see if fpclass exists
12259 set fpclass d_fpclass
12260 eval $inlibc
12261
12262 : see if fpclassify exists
12263 set fpclassify d_fpclassify
12264 eval $inlibc
12265
12266 : see if fpclassl exists
12267 set fpclassl d_fpclassl
12268 eval $inlibc
12269
12270
12271 : check for fpos64_t
12272 echo " "
12273 echo "Checking to see if you have fpos64_t..." >&4
12274 $cat >try.c <<EOCP
12275 #include <stdio.h>
12276 int main() { fpos64_t x = 7; }
12277 EOCP
12278 set try
12279 if eval $compile; then
12280         val="$define"
12281         echo "You have fpos64_t."
12282 else
12283         val="$undef"
12284         echo "You do not have fpos64_t."
12285         case "$fpossize" in
12286         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12287         esac
12288 fi
12289 $rm -f try.* try
12290 set d_fpos64_t
12291 eval $setvar
12292
12293 : see if frexpl exists
12294 set frexpl d_frexpl
12295 eval $inlibc
12296
12297 : see if this is a sys/param system
12298 set sys/param.h i_sysparam
12299 eval $inhdr
12300
12301 : see if this is a sys/mount.h system
12302 set sys/mount.h i_sysmount
12303 eval $inhdr
12304
12305
12306 echo " "
12307 echo "Checking to see if your system supports struct fs_data..." >&4
12308 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12309 eval $hasstruct
12310 case "$d_fs_data_s" in
12311 "$define")      echo "Yes, it does."   ;;
12312 *)              echo "No, it doesn't." ;;
12313 esac
12314
12315 : see if fseeko exists
12316 set fseeko d_fseeko
12317 eval $inlibc
12318 case "$longsize" in
12319 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12320 esac
12321
12322 : see if fsetpos exists
12323 set fsetpos d_fsetpos
12324 eval $inlibc
12325
12326
12327 : see if fstatfs exists
12328 set fstatfs d_fstatfs
12329 eval $inlibc
12330
12331
12332 : see if statvfs exists
12333 set statvfs d_statvfs
12334 eval $inlibc
12335
12336 : see if fstatvfs exists
12337 set fstatvfs d_fstatvfs
12338 eval $inlibc
12339
12340
12341 : see if fsync exists
12342 set fsync d_fsync
12343 eval $inlibc
12344
12345 : see if ftello exists
12346 set ftello d_ftello
12347 eval $inlibc
12348 case "$longsize" in
12349 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12350 esac
12351
12352 : see if getcwd exists
12353 set getcwd d_getcwd
12354 eval $inlibc
12355
12356 : see if getespwnam exists
12357 set getespwnam d_getespwnam
12358 eval $inlibc
12359
12360
12361 : see if getfsstat exists
12362 set getfsstat d_getfsstat
12363 eval $inlibc
12364
12365 : see if getgrent exists
12366 set getgrent d_getgrent
12367 eval $inlibc
12368
12369 : see if getgrent_r exists
12370 set getgrent_r d_getgrent_r
12371 eval $inlibc
12372 case "$d_getgrent_r" in
12373 "$define")
12374         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12375         case "$d_getgrent_r_proto:$usethreads" in
12376         ":define")      d_getgrent_r_proto=define
12377                 set d_getgrent_r_proto getgrent_r $hdrs
12378                 eval $hasproto ;;
12379         *)      ;;
12380         esac
12381         case "$d_getgrent_r_proto" in
12382         define)
12383         case "$getgrent_r_proto" in
12384         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12385         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12386         esac
12387         case "$getgrent_r_proto" in
12388         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12389         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12390         esac
12391         case "$getgrent_r_proto" in
12392         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12393         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12394         esac
12395         case "$getgrent_r_proto" in
12396         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12397         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12398         esac
12399         case "$getgrent_r_proto" in
12400         ''|0) try='int getgrent_r(struct group*, char*, int);'
12401         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12402         esac
12403         case "$getgrent_r_proto" in
12404         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12405         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12406         esac
12407         case "$getgrent_r_proto" in
12408         ''|0)   d_getgrent_r=undef
12409                 getgrent_r_proto=0
12410                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12411         * )     case "$getgrent_r_proto" in
12412                 REENTRANT_PROTO*) ;;
12413                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12414                 esac
12415                 echo "Prototype: $try" ;;
12416         esac
12417         ;;
12418         *)      case "$usethreads" in
12419                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12420                 esac
12421                 d_getgrent_r=undef
12422                 getgrent_r_proto=0
12423                 ;;
12424         esac
12425         ;;
12426 *)      getgrent_r_proto=0
12427         ;;
12428 esac
12429
12430 : see if getgrgid_r exists
12431 set getgrgid_r d_getgrgid_r
12432 eval $inlibc
12433 case "$d_getgrgid_r" in
12434 "$define")
12435         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12436         case "$d_getgrgid_r_proto:$usethreads" in
12437         ":define")      d_getgrgid_r_proto=define
12438                 set d_getgrgid_r_proto getgrgid_r $hdrs
12439                 eval $hasproto ;;
12440         *)      ;;
12441         esac
12442         case "$d_getgrgid_r_proto" in
12443         define)
12444         case "$getgrgid_r_proto" in
12445         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12446         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12447         esac
12448         case "$getgrgid_r_proto" in
12449         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12450         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12451         esac
12452         case "$getgrgid_r_proto" in
12453         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12454         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12455         esac
12456         case "$getgrgid_r_proto" in
12457         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12458         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12459         esac
12460         case "$getgrgid_r_proto" in
12461         ''|0)   d_getgrgid_r=undef
12462                 getgrgid_r_proto=0
12463                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12464         * )     case "$getgrgid_r_proto" in
12465                 REENTRANT_PROTO*) ;;
12466                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12467                 esac
12468                 echo "Prototype: $try" ;;
12469         esac
12470         ;;
12471         *)      case "$usethreads" in
12472                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12473                 esac
12474                 d_getgrgid_r=undef
12475                 getgrgid_r_proto=0
12476                 ;;
12477         esac
12478         ;;
12479 *)      getgrgid_r_proto=0
12480         ;;
12481 esac
12482
12483 : see if getgrnam_r exists
12484 set getgrnam_r d_getgrnam_r
12485 eval $inlibc
12486 case "$d_getgrnam_r" in
12487 "$define")
12488         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12489         case "$d_getgrnam_r_proto:$usethreads" in
12490         ":define")      d_getgrnam_r_proto=define
12491                 set d_getgrnam_r_proto getgrnam_r $hdrs
12492                 eval $hasproto ;;
12493         *)      ;;
12494         esac
12495         case "$d_getgrnam_r_proto" in
12496         define)
12497         case "$getgrnam_r_proto" in
12498         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12499         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12500         esac
12501         case "$getgrnam_r_proto" in
12502         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12503         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12504         esac
12505         case "$getgrnam_r_proto" in
12506         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12507         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12508         esac
12509         case "$getgrnam_r_proto" in
12510         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12511         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12512         esac
12513         case "$getgrnam_r_proto" in
12514         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12515         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12516         esac
12517         case "$getgrnam_r_proto" in
12518         ''|0)   d_getgrnam_r=undef
12519                 getgrnam_r_proto=0
12520                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12521         * )     case "$getgrnam_r_proto" in
12522                 REENTRANT_PROTO*) ;;
12523                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12524                 esac
12525                 echo "Prototype: $try" ;;
12526         esac
12527         ;;
12528         *)      case "$usethreads" in
12529                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12530                 esac
12531                 d_getgrnam_r=undef
12532                 getgrnam_r_proto=0
12533                 ;;
12534         esac
12535         ;;
12536 *)      getgrnam_r_proto=0
12537         ;;
12538 esac
12539
12540 : see if gethostbyaddr exists
12541 set gethostbyaddr d_gethbyaddr
12542 eval $inlibc
12543
12544 : see if gethostbyname exists
12545 set gethostbyname d_gethbyname
12546 eval $inlibc
12547
12548 : see if gethostent exists
12549 set gethostent d_gethent
12550 eval $inlibc
12551
12552 : see how we will look up host name
12553 echo " "
12554 call=''
12555 if set gethostname val -f d_gethname; eval $csym; $val; then
12556         echo 'gethostname() found.' >&4
12557         d_gethname="$define"
12558         call=gethostname
12559 fi
12560 if set uname val -f d_uname; eval $csym; $val; then
12561         if ./xenix; then
12562                 $cat <<'EOM'
12563 uname() was found, but you're running xenix, and older versions of xenix
12564 have a broken uname(). If you don't really know whether your xenix is old
12565 enough to have a broken system call, use the default answer.
12566
12567 EOM
12568                 dflt=y
12569                 case "$d_uname" in
12570                 "$define") dflt=n;;
12571                 esac
12572                 rp='Is your uname() broken?'
12573                 . ./myread
12574                 case "$ans" in
12575                 n*) d_uname="$define"; call=uname;;
12576                 esac
12577         else
12578                 echo 'uname() found.' >&4
12579                 d_uname="$define"
12580                 case "$call" in
12581                 '') call=uname ;;
12582                 esac
12583         fi
12584 fi
12585 case "$d_gethname" in
12586 '') d_gethname="$undef";;
12587 esac
12588 case "$d_uname" in
12589 '') d_uname="$undef";;
12590 esac
12591 case "$d_uname$d_gethname" in
12592 *define*)
12593         dflt=n
12594         cat <<EOM
12595  
12596 Every now and then someone has a $call() that lies about the hostname
12597 but can't be fixed for political or economic reasons.  If you wish, I can
12598 pretend $call() isn't there and maybe compute hostname at run-time
12599 thanks to the '$phostname' command.
12600
12601 EOM
12602         rp="Shall I ignore $call() from now on?"
12603         . ./myread
12604         case "$ans" in
12605         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12606         esac;;
12607 esac
12608 case "$phostname" in
12609 '') aphostname='';;
12610 *) case "$aphostname" in
12611         /*) ;;
12612         *) set X $phostname
12613                 shift
12614                 file=$1
12615                 shift
12616                 file=`./loc $file $file $pth`
12617                 aphostname=`echo $file $*`
12618                 ;;
12619         esac
12620         ;;
12621 esac
12622 case "$d_uname$d_gethname" in
12623 *define*) ;;
12624 *)
12625         case "$phostname" in
12626         '')
12627                 echo "There will be no way for $package to get your hostname." >&4;;
12628         *)
12629         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12630                 ;;
12631         esac;;
12632 esac
12633 case "$d_phostname" in
12634 '') d_phostname="$undef";;
12635 esac
12636
12637 : see if gethostbyaddr_r exists
12638 set gethostbyaddr_r d_gethostbyaddr_r
12639 eval $inlibc
12640 case "$d_gethostbyaddr_r" in
12641 "$define")
12642         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12643         case "$d_gethostbyaddr_r_proto:$usethreads" in
12644         ":define")      d_gethostbyaddr_r_proto=define
12645                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12646                 eval $hasproto ;;
12647         *)      ;;
12648         esac
12649         case "$d_gethostbyaddr_r_proto" in
12650         define)
12651         case "$gethostbyaddr_r_proto" in
12652         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12653         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12654         esac
12655         case "$gethostbyaddr_r_proto" in
12656         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12657         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12658         esac
12659         case "$gethostbyaddr_r_proto" in
12660         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12661         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12662         esac
12663         case "$gethostbyaddr_r_proto" in
12664         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12665         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12666         esac
12667         case "$gethostbyaddr_r_proto" in
12668         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12669         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12670         esac
12671         case "$gethostbyaddr_r_proto" in
12672         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12673         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12674         esac
12675         case "$gethostbyaddr_r_proto" in
12676         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12677         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12678         esac
12679         case "$gethostbyaddr_r_proto" in
12680         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12681         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12682         esac
12683         case "$gethostbyaddr_r_proto" in
12684         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12685         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12686         esac
12687         case "$gethostbyaddr_r_proto" in
12688         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12689         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12690         esac
12691         case "$gethostbyaddr_r_proto" in
12692         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12693         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12694         esac
12695         case "$gethostbyaddr_r_proto" in
12696         ''|0)   d_gethostbyaddr_r=undef
12697                 gethostbyaddr_r_proto=0
12698                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12699         * )     case "$gethostbyaddr_r_proto" in
12700                 REENTRANT_PROTO*) ;;
12701                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12702                 esac
12703                 echo "Prototype: $try" ;;
12704         esac
12705         ;;
12706         *)      case "$usethreads" in
12707                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12708                 esac
12709                 d_gethostbyaddr_r=undef
12710                 gethostbyaddr_r_proto=0
12711                 ;;
12712         esac
12713         ;;
12714 *)      gethostbyaddr_r_proto=0
12715         ;;
12716 esac
12717
12718 : see if gethostbyname_r exists
12719 set gethostbyname_r d_gethostbyname_r
12720 eval $inlibc
12721 case "$d_gethostbyname_r" in
12722 "$define")
12723         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12724         case "$d_gethostbyname_r_proto:$usethreads" in
12725         ":define")      d_gethostbyname_r_proto=define
12726                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12727                 eval $hasproto ;;
12728         *)      ;;
12729         esac
12730         case "$d_gethostbyname_r_proto" in
12731         define)
12732         case "$gethostbyname_r_proto" in
12733         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12734         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12735         esac
12736         case "$gethostbyname_r_proto" in
12737         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12738         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12739         esac
12740         case "$gethostbyname_r_proto" in
12741         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12742         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12743         esac
12744         case "$gethostbyname_r_proto" in
12745         ''|0)   d_gethostbyname_r=undef
12746                 gethostbyname_r_proto=0
12747                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12748         * )     case "$gethostbyname_r_proto" in
12749                 REENTRANT_PROTO*) ;;
12750                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12751                 esac
12752                 echo "Prototype: $try" ;;
12753         esac
12754         ;;
12755         *)      case "$usethreads" in
12756                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12757                 esac
12758                 d_gethostbyname_r=undef
12759                 gethostbyname_r_proto=0
12760                 ;;
12761         esac
12762         ;;
12763 *)      gethostbyname_r_proto=0
12764         ;;
12765 esac
12766
12767 : see if gethostent_r exists
12768 set gethostent_r d_gethostent_r
12769 eval $inlibc
12770 case "$d_gethostent_r" in
12771 "$define")
12772         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12773         case "$d_gethostent_r_proto:$usethreads" in
12774         ":define")      d_gethostent_r_proto=define
12775                 set d_gethostent_r_proto gethostent_r $hdrs
12776                 eval $hasproto ;;
12777         *)      ;;
12778         esac
12779         case "$d_gethostent_r_proto" in
12780         define)
12781         case "$gethostent_r_proto" in
12782         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12783         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12784         esac
12785         case "$gethostent_r_proto" in
12786         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12787         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12788         esac
12789         case "$gethostent_r_proto" in
12790         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12791         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12792         esac
12793         case "$gethostent_r_proto" in
12794         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12795         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12796         esac
12797         case "$gethostent_r_proto" in
12798         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12799         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12800         esac
12801         case "$gethostent_r_proto" in
12802         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12803         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12804         esac
12805         case "$gethostent_r_proto" in
12806         ''|0)   d_gethostent_r=undef
12807                 gethostent_r_proto=0
12808                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12809         * )     case "$gethostent_r_proto" in
12810                 REENTRANT_PROTO*) ;;
12811                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12812                 esac
12813                 echo "Prototype: $try" ;;
12814         esac
12815         ;;
12816         *)      case "$usethreads" in
12817                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12818                 esac
12819                 d_gethostent_r=undef
12820                 gethostent_r_proto=0
12821                 ;;
12822         esac
12823         ;;
12824 *)      gethostent_r_proto=0
12825         ;;
12826 esac
12827
12828 : see if prototypes for various gethostxxx netdb.h functions are available
12829 echo " "
12830 set d_gethostprotos gethostent $i_netdb netdb.h
12831 eval $hasproto
12832
12833 : see if getitimer exists
12834 set getitimer d_getitimer
12835 eval $inlibc
12836
12837 : see if getlogin exists
12838 set getlogin d_getlogin
12839 eval $inlibc
12840
12841 : see if getlogin_r exists
12842 set getlogin_r d_getlogin_r
12843 eval $inlibc
12844 case "$d_getlogin_r" in
12845 "$define")
12846         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12847         case "$d_getlogin_r_proto:$usethreads" in
12848         ":define")      d_getlogin_r_proto=define
12849                 set d_getlogin_r_proto getlogin_r $hdrs
12850                 eval $hasproto ;;
12851         *)      ;;
12852         esac
12853         case "$d_getlogin_r_proto" in
12854         define)
12855         case "$getlogin_r_proto" in
12856         ''|0) try='int getlogin_r(char*, size_t);'
12857         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12858         esac
12859         case "$getlogin_r_proto" in
12860         ''|0) try='int getlogin_r(char*, int);'
12861         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12862         esac
12863         case "$getlogin_r_proto" in
12864         ''|0) try='char* getlogin_r(char*, size_t);'
12865         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12866         esac
12867         case "$getlogin_r_proto" in
12868         ''|0) try='char* getlogin_r(char*, int);'
12869         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12870         esac
12871         case "$getlogin_r_proto" in
12872         ''|0)   d_getlogin_r=undef
12873                 getlogin_r_proto=0
12874                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12875         * )     case "$getlogin_r_proto" in
12876                 REENTRANT_PROTO*) ;;
12877                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12878                 esac
12879                 echo "Prototype: $try" ;;
12880         esac
12881         ;;
12882         *)      case "$usethreads" in
12883                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12884                 esac
12885                 d_getlogin_r=undef
12886                 getlogin_r_proto=0
12887                 ;;
12888         esac
12889         ;;
12890 *)      getlogin_r_proto=0
12891         ;;
12892 esac
12893
12894 : see if getmnt exists
12895 set getmnt d_getmnt
12896 eval $inlibc
12897
12898 : see if getmntent exists
12899 set getmntent d_getmntent
12900 eval $inlibc
12901
12902 : see if getnetbyaddr exists
12903 set getnetbyaddr d_getnbyaddr
12904 eval $inlibc
12905
12906 : see if getnetbyname exists
12907 set getnetbyname d_getnbyname
12908 eval $inlibc
12909
12910 : see if getnetent exists
12911 set getnetent d_getnent
12912 eval $inlibc
12913
12914 : see if getnetbyaddr_r exists
12915 set getnetbyaddr_r d_getnetbyaddr_r
12916 eval $inlibc
12917 case "$d_getnetbyaddr_r" in
12918 "$define")
12919         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12920         case "$d_getnetbyaddr_r_proto:$usethreads" in
12921         ":define")      d_getnetbyaddr_r_proto=define
12922                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12923                 eval $hasproto ;;
12924         *)      ;;
12925         esac
12926         case "$d_getnetbyaddr_r_proto" in
12927         define)
12928         case "$getnetbyaddr_r_proto" in
12929         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12930         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12931         esac
12932         case "$getnetbyaddr_r_proto" in
12933         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12934         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12935         esac
12936         case "$getnetbyaddr_r_proto" in
12937         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12938         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12939         esac
12940         case "$getnetbyaddr_r_proto" in
12941         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12942         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12943         esac
12944         case "$getnetbyaddr_r_proto" in
12945         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12946         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12947         esac
12948         case "$getnetbyaddr_r_proto" in
12949         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12950         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12951         esac
12952         case "$getnetbyaddr_r_proto" in
12953         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12954         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12955         esac
12956         case "$getnetbyaddr_r_proto" in
12957         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12958         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12959         esac
12960         case "$getnetbyaddr_r_proto" in
12961         ''|0)   d_getnetbyaddr_r=undef
12962                 getnetbyaddr_r_proto=0
12963                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12964         * )     case "$getnetbyaddr_r_proto" in
12965                 REENTRANT_PROTO*) ;;
12966                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12967                 esac
12968                 echo "Prototype: $try" ;;
12969         esac
12970         ;;
12971         *)      case "$usethreads" in
12972                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12973                 esac
12974                 d_getnetbyaddr_r=undef
12975                 getnetbyaddr_r_proto=0
12976                 ;;
12977         esac
12978         ;;
12979 *)      getnetbyaddr_r_proto=0
12980         ;;
12981 esac
12982
12983 : see if getnetbyname_r exists
12984 set getnetbyname_r d_getnetbyname_r
12985 eval $inlibc
12986 case "$d_getnetbyname_r" in
12987 "$define")
12988         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12989         case "$d_getnetbyname_r_proto:$usethreads" in
12990         ":define")      d_getnetbyname_r_proto=define
12991                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12992                 eval $hasproto ;;
12993         *)      ;;
12994         esac
12995         case "$d_getnetbyname_r_proto" in
12996         define)
12997         case "$getnetbyname_r_proto" in
12998         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12999         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
13000         esac
13001         case "$getnetbyname_r_proto" in
13002         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13003         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13004         esac
13005         case "$getnetbyname_r_proto" in
13006         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13007         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13008         esac
13009         case "$getnetbyname_r_proto" in
13010         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13011         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13012         esac
13013         case "$getnetbyname_r_proto" in
13014         ''|0)   d_getnetbyname_r=undef
13015                 getnetbyname_r_proto=0
13016                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13017         * )     case "$getnetbyname_r_proto" in
13018                 REENTRANT_PROTO*) ;;
13019                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13020                 esac
13021                 echo "Prototype: $try" ;;
13022         esac
13023         ;;
13024         *)      case "$usethreads" in
13025                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13026                 esac
13027                 d_getnetbyname_r=undef
13028                 getnetbyname_r_proto=0
13029                 ;;
13030         esac
13031         ;;
13032 *)      getnetbyname_r_proto=0
13033         ;;
13034 esac
13035
13036 : see if getnetent_r exists
13037 set getnetent_r d_getnetent_r
13038 eval $inlibc
13039 case "$d_getnetent_r" in
13040 "$define")
13041         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13042         case "$d_getnetent_r_proto:$usethreads" in
13043         ":define")      d_getnetent_r_proto=define
13044                 set d_getnetent_r_proto getnetent_r $hdrs
13045                 eval $hasproto ;;
13046         *)      ;;
13047         esac
13048         case "$d_getnetent_r_proto" in
13049         define)
13050         case "$getnetent_r_proto" in
13051         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13052         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13053         esac
13054         case "$getnetent_r_proto" in
13055         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13056         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13057         esac
13058         case "$getnetent_r_proto" in
13059         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13060         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13061         esac
13062         case "$getnetent_r_proto" in
13063         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13064         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13065         esac
13066         case "$getnetent_r_proto" in
13067         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13068         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13069         esac
13070         case "$getnetent_r_proto" in
13071         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13072         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13073         esac
13074         case "$getnetent_r_proto" in
13075         ''|0)   d_getnetent_r=undef
13076                 getnetent_r_proto=0
13077                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13078         * )     case "$getnetent_r_proto" in
13079                 REENTRANT_PROTO*) ;;
13080                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13081                 esac
13082                 echo "Prototype: $try" ;;
13083         esac
13084         ;;
13085         *)      case "$usethreads" in
13086                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13087                 esac
13088                 d_getnetent_r=undef
13089                 getnetent_r_proto=0
13090                 ;;
13091         esac
13092         ;;
13093 *)      getnetent_r_proto=0
13094         ;;
13095 esac
13096
13097 : see if prototypes for various getnetxxx netdb.h functions are available
13098 echo " "
13099 set d_getnetprotos getnetent $i_netdb netdb.h
13100 eval $hasproto
13101
13102 : see if getpagesize exists
13103 set getpagesize d_getpagsz
13104 eval $inlibc
13105
13106
13107 : see if getprotobyname exists
13108 set getprotobyname d_getpbyname
13109 eval $inlibc
13110
13111 : see if getprotobynumber exists
13112 set getprotobynumber d_getpbynumber
13113 eval $inlibc
13114
13115 : see if getprotoent exists
13116 set getprotoent d_getpent
13117 eval $inlibc
13118
13119 : see if getpgid exists
13120 set getpgid d_getpgid
13121 eval $inlibc
13122
13123 : see if getpgrp2 exists
13124 set getpgrp2 d_getpgrp2
13125 eval $inlibc
13126
13127 : see if getppid exists
13128 set getppid d_getppid
13129 eval $inlibc
13130
13131 : see if getpriority exists
13132 set getpriority d_getprior
13133 eval $inlibc
13134
13135 : see if getprotobyname_r exists
13136 set getprotobyname_r d_getprotobyname_r
13137 eval $inlibc
13138 case "$d_getprotobyname_r" in
13139 "$define")
13140         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13141         case "$d_getprotobyname_r_proto:$usethreads" in
13142         ":define")      d_getprotobyname_r_proto=define
13143                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13144                 eval $hasproto ;;
13145         *)      ;;
13146         esac
13147         case "$d_getprotobyname_r_proto" in
13148         define)
13149         case "$getprotobyname_r_proto" in
13150         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13151         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13152         esac
13153         case "$getprotobyname_r_proto" in
13154         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13155         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13156         esac
13157         case "$getprotobyname_r_proto" in
13158         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13159         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13160         esac
13161         case "$getprotobyname_r_proto" in
13162         ''|0)   d_getprotobyname_r=undef
13163                 getprotobyname_r_proto=0
13164                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13165         * )     case "$getprotobyname_r_proto" in
13166                 REENTRANT_PROTO*) ;;
13167                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13168                 esac
13169                 echo "Prototype: $try" ;;
13170         esac
13171         ;;
13172         *)      case "$usethreads" in
13173                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13174                 esac
13175                 d_getprotobyname_r=undef
13176                 getprotobyname_r_proto=0
13177                 ;;
13178         esac
13179         ;;
13180 *)      getprotobyname_r_proto=0
13181         ;;
13182 esac
13183
13184 : see if getprotobynumber_r exists
13185 set getprotobynumber_r d_getprotobynumber_r
13186 eval $inlibc
13187 case "$d_getprotobynumber_r" in
13188 "$define")
13189         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13190         case "$d_getprotobynumber_r_proto:$usethreads" in
13191         ":define")      d_getprotobynumber_r_proto=define
13192                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13193                 eval $hasproto ;;
13194         *)      ;;
13195         esac
13196         case "$d_getprotobynumber_r_proto" in
13197         define)
13198         case "$getprotobynumber_r_proto" in
13199         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13200         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13201         esac
13202         case "$getprotobynumber_r_proto" in
13203         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13204         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13205         esac
13206         case "$getprotobynumber_r_proto" in
13207         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13208         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13209         esac
13210         case "$getprotobynumber_r_proto" in
13211         ''|0)   d_getprotobynumber_r=undef
13212                 getprotobynumber_r_proto=0
13213                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13214         * )     case "$getprotobynumber_r_proto" in
13215                 REENTRANT_PROTO*) ;;
13216                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13217                 esac
13218                 echo "Prototype: $try" ;;
13219         esac
13220         ;;
13221         *)      case "$usethreads" in
13222                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13223                 esac
13224                 d_getprotobynumber_r=undef
13225                 getprotobynumber_r_proto=0
13226                 ;;
13227         esac
13228         ;;
13229 *)      getprotobynumber_r_proto=0
13230         ;;
13231 esac
13232
13233 : see if getprotoent_r exists
13234 set getprotoent_r d_getprotoent_r
13235 eval $inlibc
13236 case "$d_getprotoent_r" in
13237 "$define")
13238         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13239         case "$d_getprotoent_r_proto:$usethreads" in
13240         ":define")      d_getprotoent_r_proto=define
13241                 set d_getprotoent_r_proto getprotoent_r $hdrs
13242                 eval $hasproto ;;
13243         *)      ;;
13244         esac
13245         case "$d_getprotoent_r_proto" in
13246         define)
13247         case "$getprotoent_r_proto" in
13248         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13249         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13250         esac
13251         case "$getprotoent_r_proto" in
13252         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13253         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13254         esac
13255         case "$getprotoent_r_proto" in
13256         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13257         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13258         esac
13259         case "$getprotoent_r_proto" in
13260         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13261         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13262         esac
13263         case "$getprotoent_r_proto" in
13264         ''|0)   d_getprotoent_r=undef
13265                 getprotoent_r_proto=0
13266                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13267         * )     case "$getprotoent_r_proto" in
13268                 REENTRANT_PROTO*) ;;
13269                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13270                 esac
13271                 echo "Prototype: $try" ;;
13272         esac
13273         ;;
13274         *)      case "$usethreads" in
13275                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13276                 esac
13277                 d_getprotoent_r=undef
13278                 getprotoent_r_proto=0
13279                 ;;
13280         esac
13281         ;;
13282 *)      getprotoent_r_proto=0
13283         ;;
13284 esac
13285
13286 : see if prototypes for various getprotoxxx netdb.h functions are available
13287 echo " "
13288 set d_getprotoprotos getprotoent $i_netdb netdb.h
13289 eval $hasproto
13290
13291 : see if getprpwnam exists
13292 set getprpwnam d_getprpwnam
13293 eval $inlibc
13294
13295 : see if getpwent exists
13296 set getpwent d_getpwent
13297 eval $inlibc
13298
13299 : see if getpwent_r exists
13300 set getpwent_r d_getpwent_r
13301 eval $inlibc
13302 case "$d_getpwent_r" in
13303 "$define")
13304         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13305         case "$d_getpwent_r_proto:$usethreads" in
13306         ":define")      d_getpwent_r_proto=define
13307                 set d_getpwent_r_proto getpwent_r $hdrs
13308                 eval $hasproto ;;
13309         *)      ;;
13310         esac
13311         case "$d_getpwent_r_proto" in
13312         define)
13313         case "$getpwent_r_proto" in
13314         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13315         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13316         esac
13317         case "$getpwent_r_proto" in
13318         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13319         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13320         esac
13321         case "$getpwent_r_proto" in
13322         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13323         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13324         esac
13325         case "$getpwent_r_proto" in
13326         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13327         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13328         esac
13329         case "$getpwent_r_proto" in
13330         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13331         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13332         esac
13333         case "$getpwent_r_proto" in
13334         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13335         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13336         esac
13337         case "$getpwent_r_proto" in
13338         ''|0)   d_getpwent_r=undef
13339                 getpwent_r_proto=0
13340                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13341         * )     case "$getpwent_r_proto" in
13342                 REENTRANT_PROTO*) ;;
13343                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13344                 esac
13345                 echo "Prototype: $try" ;;
13346         esac
13347         ;;
13348         *)      case "$usethreads" in
13349                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13350                 esac
13351                 d_getpwent_r=undef
13352                 getpwent_r_proto=0
13353                 ;;
13354         esac
13355         ;;
13356 *)      getpwent_r_proto=0
13357         ;;
13358 esac
13359
13360 : see if getpwnam_r exists
13361 set getpwnam_r d_getpwnam_r
13362 eval $inlibc
13363 case "$d_getpwnam_r" in
13364 "$define")
13365         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13366         case "$d_getpwnam_r_proto:$usethreads" in
13367         ":define")      d_getpwnam_r_proto=define
13368                 set d_getpwnam_r_proto getpwnam_r $hdrs
13369                 eval $hasproto ;;
13370         *)      ;;
13371         esac
13372         case "$d_getpwnam_r_proto" in
13373         define)
13374         case "$getpwnam_r_proto" in
13375         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13376         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13377         esac
13378         case "$getpwnam_r_proto" in
13379         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13380         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13381         esac
13382         case "$getpwnam_r_proto" in
13383         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13384         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13385         esac
13386         case "$getpwnam_r_proto" in
13387         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13388         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13389         esac
13390         case "$getpwnam_r_proto" in
13391         ''|0)   d_getpwnam_r=undef
13392                 getpwnam_r_proto=0
13393                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13394         * )     case "$getpwnam_r_proto" in
13395                 REENTRANT_PROTO*) ;;
13396                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13397                 esac
13398                 echo "Prototype: $try" ;;
13399         esac
13400         ;;
13401         *)      case "$usethreads" in
13402                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13403                 esac
13404                 d_getpwnam_r=undef
13405                 getpwnam_r_proto=0
13406                 ;;
13407         esac
13408         ;;
13409 *)      getpwnam_r_proto=0
13410         ;;
13411 esac
13412
13413 : see if getpwuid_r exists
13414 set getpwuid_r d_getpwuid_r
13415 eval $inlibc
13416 case "$d_getpwuid_r" in
13417 "$define")
13418         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13419         case "$d_getpwuid_r_proto:$usethreads" in
13420         ":define")      d_getpwuid_r_proto=define
13421                 set d_getpwuid_r_proto getpwuid_r $hdrs
13422                 eval $hasproto ;;
13423         *)      ;;
13424         esac
13425         case "$d_getpwuid_r_proto" in
13426         define)
13427         case "$getpwuid_r_proto" in
13428         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13429         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13430         esac
13431         case "$getpwuid_r_proto" in
13432         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13433         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13434         esac
13435         case "$getpwuid_r_proto" in
13436         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13437         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13438         esac
13439         case "$getpwuid_r_proto" in
13440         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13441         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13442         esac
13443         case "$getpwuid_r_proto" in
13444         ''|0)   d_getpwuid_r=undef
13445                 getpwuid_r_proto=0
13446                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13447         * )     case "$getpwuid_r_proto" in
13448                 REENTRANT_PROTO*) ;;
13449                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13450                 esac
13451                 echo "Prototype: $try" ;;
13452         esac
13453         ;;
13454         *)      case "$usethreads" in
13455                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13456                 esac
13457                 d_getpwuid_r=undef
13458                 getpwuid_r_proto=0
13459                 ;;
13460         esac
13461         ;;
13462 *)      getpwuid_r_proto=0
13463         ;;
13464 esac
13465
13466
13467 : see if getservbyname exists
13468 set getservbyname d_getsbyname
13469 eval $inlibc
13470
13471 : see if getservbyport exists
13472 set getservbyport d_getsbyport
13473 eval $inlibc
13474
13475 : see if getservent exists
13476 set getservent d_getsent
13477 eval $inlibc
13478
13479 : see if getservbyname_r exists
13480 set getservbyname_r d_getservbyname_r
13481 eval $inlibc
13482 case "$d_getservbyname_r" in
13483 "$define")
13484         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13485         case "$d_getservbyname_r_proto:$usethreads" in
13486         ":define")      d_getservbyname_r_proto=define
13487                 set d_getservbyname_r_proto getservbyname_r $hdrs
13488                 eval $hasproto ;;
13489         *)      ;;
13490         esac
13491         case "$d_getservbyname_r_proto" in
13492         define)
13493         case "$getservbyname_r_proto" in
13494         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13495         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13496         esac
13497         case "$getservbyname_r_proto" in
13498         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13499         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13500         esac
13501         case "$getservbyname_r_proto" in
13502         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13503         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13504         esac
13505         case "$getservbyname_r_proto" in
13506         ''|0)   d_getservbyname_r=undef
13507                 getservbyname_r_proto=0
13508                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13509         * )     case "$getservbyname_r_proto" in
13510                 REENTRANT_PROTO*) ;;
13511                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13512                 esac
13513                 echo "Prototype: $try" ;;
13514         esac
13515         ;;
13516         *)      case "$usethreads" in
13517                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13518                 esac
13519                 d_getservbyname_r=undef
13520                 getservbyname_r_proto=0
13521                 ;;
13522         esac
13523         ;;
13524 *)      getservbyname_r_proto=0
13525         ;;
13526 esac
13527
13528 : see if getservbyport_r exists
13529 set getservbyport_r d_getservbyport_r
13530 eval $inlibc
13531 case "$d_getservbyport_r" in
13532 "$define")
13533         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13534         case "$d_getservbyport_r_proto:$usethreads" in
13535         ":define")      d_getservbyport_r_proto=define
13536                 set d_getservbyport_r_proto getservbyport_r $hdrs
13537                 eval $hasproto ;;
13538         *)      ;;
13539         esac
13540         case "$d_getservbyport_r_proto" in
13541         define)
13542         case "$getservbyport_r_proto" in
13543         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13544         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13545         esac
13546         case "$getservbyport_r_proto" in
13547         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13548         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13549         esac
13550         case "$getservbyport_r_proto" in
13551         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13552         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13553         esac
13554         case "$getservbyport_r_proto" in
13555         ''|0)   d_getservbyport_r=undef
13556                 getservbyport_r_proto=0
13557                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13558         * )     case "$getservbyport_r_proto" in
13559                 REENTRANT_PROTO*) ;;
13560                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13561                 esac
13562                 echo "Prototype: $try" ;;
13563         esac
13564         ;;
13565         *)      case "$usethreads" in
13566                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13567                 esac
13568                 d_getservbyport_r=undef
13569                 getservbyport_r_proto=0
13570                 ;;
13571         esac
13572         ;;
13573 *)      getservbyport_r_proto=0
13574         ;;
13575 esac
13576
13577 : see if getservent_r exists
13578 set getservent_r d_getservent_r
13579 eval $inlibc
13580 case "$d_getservent_r" in
13581 "$define")
13582         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13583         case "$d_getservent_r_proto:$usethreads" in
13584         ":define")      d_getservent_r_proto=define
13585                 set d_getservent_r_proto getservent_r $hdrs
13586                 eval $hasproto ;;
13587         *)      ;;
13588         esac
13589         case "$d_getservent_r_proto" in
13590         define)
13591         case "$getservent_r_proto" in
13592         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13593         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13594         esac
13595         case "$getservent_r_proto" in
13596         ''|0) try='int getservent_r(struct servent*, char*, int);'
13597         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13598         esac
13599         case "$getservent_r_proto" in
13600         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13601         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13602         esac
13603         case "$getservent_r_proto" in
13604         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13605         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13606         esac
13607         case "$getservent_r_proto" in
13608         ''|0)   d_getservent_r=undef
13609                 getservent_r_proto=0
13610                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13611         * )     case "$getservent_r_proto" in
13612                 REENTRANT_PROTO*) ;;
13613                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13614                 esac
13615                 echo "Prototype: $try" ;;
13616         esac
13617         ;;
13618         *)      case "$usethreads" in
13619                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13620                 esac
13621                 d_getservent_r=undef
13622                 getservent_r_proto=0
13623                 ;;
13624         esac
13625         ;;
13626 *)      getservent_r_proto=0
13627         ;;
13628 esac
13629
13630 : see if prototypes for various getservxxx netdb.h functions are available
13631 echo " "
13632 set d_getservprotos getservent $i_netdb netdb.h
13633 eval $hasproto
13634
13635 : see if getspnam exists
13636 set getspnam d_getspnam
13637 eval $inlibc
13638
13639 : see if this is a shadow.h system
13640 set shadow.h i_shadow
13641 eval $inhdr
13642
13643 : see if getspnam_r exists
13644 set getspnam_r d_getspnam_r
13645 eval $inlibc
13646 case "$d_getspnam_r" in
13647 "$define")
13648         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13649         case "$d_getspnam_r_proto:$usethreads" in
13650         ":define")      d_getspnam_r_proto=define
13651                 set d_getspnam_r_proto getspnam_r $hdrs
13652                 eval $hasproto ;;
13653         *)      ;;
13654         esac
13655         case "$d_getspnam_r_proto" in
13656         define)
13657         case "$getspnam_r_proto" in
13658         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13659         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13660         esac
13661         case "$getspnam_r_proto" in
13662         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13663         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13664         esac
13665         case "$getspnam_r_proto" in
13666         ''|0)   d_getspnam_r=undef
13667                 getspnam_r_proto=0
13668                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13669         * )     case "$getspnam_r_proto" in
13670                 REENTRANT_PROTO*) ;;
13671                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13672                 esac
13673                 echo "Prototype: $try" ;;
13674         esac
13675         ;;
13676         *)      case "$usethreads" in
13677                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13678                 esac
13679                 d_getspnam_r=undef
13680                 getspnam_r_proto=0
13681                 ;;
13682         esac
13683         ;;
13684 *)      getspnam_r_proto=0
13685         ;;
13686 esac
13687
13688 : see if gettimeofday or ftime exists
13689 set gettimeofday d_gettimeod
13690 eval $inlibc
13691 case "$d_gettimeod" in
13692 "$undef")
13693         set ftime d_ftime 
13694         eval $inlibc
13695         ;;
13696 *)
13697         val="$undef"; set d_ftime; eval $setvar
13698         ;;
13699 esac
13700 case "$d_gettimeod$d_ftime" in
13701 "$undef$undef")
13702         echo " "
13703         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13704         ;;
13705 esac
13706
13707 : see if gmtime_r exists
13708 set gmtime_r d_gmtime_r
13709 eval $inlibc
13710 case "$d_gmtime_r" in
13711 "$define")
13712         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13713         case "$d_gmtime_r_proto:$usethreads" in
13714         ":define")      d_gmtime_r_proto=define
13715                 set d_gmtime_r_proto gmtime_r $hdrs
13716                 eval $hasproto ;;
13717         *)      ;;
13718         esac
13719         case "$d_gmtime_r_proto" in
13720         define)
13721         case "$gmtime_r_proto" in
13722         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13723         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13724         esac
13725         case "$gmtime_r_proto" in
13726         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13727         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13728         esac
13729         case "$gmtime_r_proto" in
13730         ''|0)   d_gmtime_r=undef
13731                 gmtime_r_proto=0
13732                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13733         * )     case "$gmtime_r_proto" in
13734                 REENTRANT_PROTO*) ;;
13735                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13736                 esac
13737                 echo "Prototype: $try" ;;
13738         esac
13739         ;;
13740         *)      case "$usethreads" in
13741                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13742                 esac
13743                 d_gmtime_r=undef
13744                 gmtime_r_proto=0
13745                 ;;
13746         esac
13747         ;;
13748 *)      gmtime_r_proto=0
13749         ;;
13750 esac
13751
13752 : see if hasmntopt exists
13753 set hasmntopt d_hasmntopt
13754 eval $inlibc
13755
13756 : see if this is a netinet/in.h or sys/in.h system
13757 set netinet/in.h i_niin sys/in.h i_sysin
13758 eval $inhdr
13759
13760 : see if arpa/inet.h has to be included
13761 set arpa/inet.h i_arpainet
13762 eval $inhdr
13763
13764 : see if htonl --and friends-- exists
13765 val=''
13766 set htonl val
13767 eval $inlibc
13768
13769 : Maybe they are macros.
13770 case "$val" in
13771 $undef)
13772         $cat >htonl.c <<EOM
13773 #include <stdio.h>
13774 #include <sys/types.h>
13775 #$i_niin I_NETINET_IN
13776 #$i_sysin I_SYS_IN
13777 #$i_arpainet I_ARPA_INET
13778 #ifdef I_NETINET_IN
13779 #include <netinet/in.h>
13780 #endif
13781 #ifdef I_SYS_IN
13782 #include <sys/in.h>
13783 #endif
13784 #ifdef I_ARPA_INET
13785 #include <arpa/inet.h>
13786 #endif
13787 #ifdef htonl
13788 printf("Defined as a macro.");
13789 #endif
13790 EOM
13791         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13792         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13793                 val="$define"
13794                 echo "But it seems to be defined as a macro." >&4
13795         fi
13796         $rm -f htonl.?
13797         ;;
13798 esac
13799 set d_htonl
13800 eval $setvar
13801
13802 : see if ilogbl exists
13803 set ilogbl d_ilogbl
13804 eval $inlibc
13805
13806 : index or strchr
13807 echo " "
13808 if set index val -f; eval $csym; $val; then
13809         if set strchr val -f d_strchr; eval $csym; $val; then
13810                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13811                         val="$define"
13812                         vali="$undef"
13813                         echo "strchr() found." >&4
13814                 else
13815                         val="$undef"
13816                         vali="$define"
13817                         echo "index() found." >&4
13818                 fi
13819         else
13820                 val="$undef"
13821                 vali="$define"
13822                 echo "index() found." >&4
13823         fi
13824 else
13825         if set strchr val -f d_strchr; eval $csym; $val; then
13826                 val="$define"
13827                 vali="$undef"
13828                 echo "strchr() found." >&4
13829         else
13830                 echo "No index() or strchr() found!" >&4
13831                 val="$undef"
13832                 vali="$undef"
13833         fi
13834 fi
13835 set d_strchr; eval $setvar
13836 val="$vali"
13837 set d_index; eval $setvar
13838
13839 : check whether inet_aton exists
13840 set inet_aton d_inetaton
13841 eval $inlibc
13842
13843 : Look for isascii
13844 echo " "
13845 $cat >isascii.c <<EOCP
13846 #include <stdio.h>
13847 #include <ctype.h>
13848 #$i_stdlib I_STDLIB
13849 #ifdef I_STDLIB
13850 #include <stdlib.h>
13851 #endif
13852 int main() {
13853         int c = 'A';
13854         if (isascii(c))
13855                 exit(0);
13856         else
13857                 exit(1);
13858 }
13859 EOCP
13860 set isascii
13861 if eval $compile; then
13862         echo "isascii() found." >&4
13863         val="$define"
13864 else
13865         echo "isascii() NOT found." >&4
13866         val="$undef"
13867 fi
13868 set d_isascii
13869 eval $setvar
13870 $rm -f isascii*
13871
13872 : see if isfinite exists
13873 set isfinite d_isfinite
13874 eval $inlibc
13875
13876 : see if isinf exists
13877 set isinf d_isinf
13878 eval $inlibc
13879
13880 : see if isnan exists
13881 set isnan d_isnan
13882 eval $inlibc
13883
13884 : see if isnanl exists
13885 set isnanl d_isnanl
13886 eval $inlibc
13887
13888 : see if killpg exists
13889 set killpg d_killpg
13890 eval $inlibc
13891
13892 : see if lchown exists
13893 echo " "
13894 $cat > try.c <<'EOCP'
13895 /* System header to define __stub macros and hopefully few prototypes,
13896     which can conflict with char lchown(); below.  */
13897 #include <assert.h>
13898 /* Override any gcc2 internal prototype to avoid an error.  */
13899 /* We use char because int might match the return type of a gcc2
13900    builtin and then its argument prototype would still apply.  */
13901 char lchown();
13902 int main() {
13903     /*  The GNU C library defines this for functions which it implements
13904         to always fail with ENOSYS.  Some functions are actually named
13905         something starting with __ and the normal name is an alias.  */
13906 #if defined (__stub_lchown) || defined (__stub___lchown)
13907 choke me
13908 #else
13909 lchown();
13910 #endif
13911 ; return 0; }
13912 EOCP
13913 set try
13914 if eval $compile; then
13915     $echo "lchown() found." >&4
13916     val="$define"
13917 else
13918     $echo "lchown() NOT found." >&4
13919     val="$undef"
13920 fi
13921 set d_lchown
13922 eval $setvar
13923
13924 : See if number of significant digits in a double precision number is known
13925 echo " "
13926 $cat >ldbl_dig.c <<EOM
13927 #$i_limits I_LIMITS
13928 #$i_float I_FLOAT
13929 #ifdef I_LIMITS
13930 #include <limits.h>
13931 #endif
13932 #ifdef I_FLOAT
13933 #include <float.h>
13934 #endif
13935 #ifdef LDBL_DIG
13936 printf("Contains LDBL_DIG");
13937 #endif
13938 EOM
13939 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13940 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13941         echo "LDBL_DIG found." >&4
13942         val="$define"
13943 else
13944         echo "LDBL_DIG NOT found." >&4
13945         val="$undef"
13946 fi
13947 $rm -f ldbl_dig.?
13948 set d_ldbl_dig
13949 eval $setvar
13950
13951 : see if link exists
13952 set link d_link
13953 eval $inlibc
13954
13955 : see if localtime_r exists
13956 set localtime_r d_localtime_r
13957 eval $inlibc
13958 case "$d_localtime_r" in
13959 "$define")
13960         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13961         case "$d_localtime_r_proto:$usethreads" in
13962         ":define")      d_localtime_r_proto=define
13963                 set d_localtime_r_proto localtime_r $hdrs
13964                 eval $hasproto ;;
13965         *)      ;;
13966         esac
13967         case "$d_localtime_r_proto" in
13968         define)
13969         case "$localtime_r_proto" in
13970         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13971         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13972         esac
13973         case "$localtime_r_proto" in
13974         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13975         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13976         esac
13977         case "$localtime_r_proto" in
13978         ''|0)   d_localtime_r=undef
13979                 localtime_r_proto=0
13980                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13981         * )     case "$localtime_r_proto" in
13982                 REENTRANT_PROTO*) ;;
13983                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13984                 esac
13985                 echo "Prototype: $try" ;;
13986         esac
13987         ;;
13988         *)      case "$usethreads" in
13989                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13990                 esac
13991                 d_localtime_r=undef
13992                 localtime_r_proto=0
13993                 ;;
13994         esac
13995         ;;
13996 *)      localtime_r_proto=0
13997         ;;
13998 esac
13999
14000 : see if localeconv exists
14001 set localeconv d_locconv
14002 eval $inlibc
14003
14004 : see if lockf exists
14005 set lockf d_lockf
14006 eval $inlibc
14007
14008 : see if prototype for lseek is available
14009 echo " "
14010 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
14011 eval $hasproto
14012
14013 : see if lstat exists
14014 set lstat d_lstat
14015 eval $inlibc
14016
14017 : see if madvise exists
14018 set madvise d_madvise
14019 eval $inlibc
14020
14021 : see if mblen exists
14022 set mblen d_mblen
14023 eval $inlibc
14024
14025 : see if mbstowcs exists
14026 set mbstowcs d_mbstowcs
14027 eval $inlibc
14028
14029 : see if mbtowc exists
14030 set mbtowc d_mbtowc
14031 eval $inlibc
14032
14033 : see if memchr exists
14034 set memchr d_memchr
14035 eval $inlibc
14036
14037 : see if memcmp exists
14038 set memcmp d_memcmp
14039 eval $inlibc
14040
14041 : see if memcpy exists
14042 set memcpy d_memcpy
14043 eval $inlibc
14044
14045 : see if memmove exists
14046 set memmove d_memmove
14047 eval $inlibc
14048
14049 : see if memset exists
14050 set memset d_memset
14051 eval $inlibc
14052
14053 : see if mkdir exists
14054 set mkdir d_mkdir
14055 eval $inlibc
14056
14057 : see if mkdtemp exists
14058 set mkdtemp d_mkdtemp
14059 eval $inlibc
14060
14061 : see if mkfifo exists
14062 set mkfifo d_mkfifo
14063 eval $inlibc
14064
14065 : see if mkstemp exists
14066 set mkstemp d_mkstemp
14067 eval $inlibc
14068
14069 : see if mkstemps exists
14070 set mkstemps d_mkstemps
14071 eval $inlibc
14072
14073 : see if mktime exists
14074 set mktime d_mktime
14075 eval $inlibc
14076
14077 : see if this is a sys/mman.h system
14078 set sys/mman.h i_sysmman
14079 eval $inhdr
14080
14081 : see if mmap exists
14082 set mmap d_mmap
14083 eval $inlibc
14084 : see what shmat returns
14085 : default to something harmless
14086 mmaptype='void *'
14087 case "$i_sysmman$d_mmap" in
14088 "$define$define")
14089         $cat >mmap.c <<'END'
14090 #include <sys/mman.h>
14091 void *mmap();
14092 END
14093         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14094                 mmaptype='void *'
14095         else
14096                 mmaptype='caddr_t'
14097         fi
14098         echo "and it returns ($mmaptype)." >&4
14099         ;;
14100 esac
14101
14102
14103
14104 : see if this is a math.h system
14105 set math.h i_math
14106 eval $inhdr
14107
14108 : see if sqrtl exists
14109 set sqrtl d_sqrtl
14110 eval $inlibc
14111
14112 : see if scalbnl exists
14113 set scalbnl d_scalbnl
14114 eval $inlibc
14115
14116 : see if modfl exists
14117 set modfl d_modfl
14118 eval $inlibc
14119
14120 : see if prototype for modfl is available
14121 echo " "
14122 set d_modflproto modfl $i_math math.h
14123 eval $hasproto
14124
14125 d_modfl_pow32_bug="$undef"
14126
14127 case "$d_longdbl$d_modfl" in
14128 $define$define)
14129         $cat <<EOM
14130 Checking to see whether your modfl() is okay for large values...
14131 EOM
14132 $cat >try.c <<EOCP
14133 #include <math.h> 
14134 #include <stdio.h>
14135 EOCP
14136 if $test "X$d_modflproto" != "X$define"; then
14137         $cat >>try.c <<EOCP
14138 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
14139 long double modfl (long double, long double *);
14140 EOCP
14141 fi
14142 $cat >>try.c <<EOCP
14143 int main() {
14144     long double nv = 4294967303.15;
14145     long double v, w;
14146     v = modfl(nv, &w);         
14147 #ifdef __GLIBC__
14148     printf("glibc");
14149 #endif
14150     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14151     return 0;
14152 }
14153 EOCP
14154         case "$osname:$gccversion" in
14155         aix:)   saveccflags="$ccflags"
14156                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14157         esac
14158         set try
14159         if eval $compile; then
14160                 foo=`$run ./try`
14161                 case "$foo" in
14162                 *" 4294967303.150000 1.150000 4294967302.000000")
14163                         echo >&4 "Your modfl() is broken for large values."
14164                         d_modfl_pow32_bug="$define"
14165                         case "$foo" in
14166                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14167                         ;;
14168                         esac
14169                         ;;
14170                 *" 4294967303.150000 0.150000 4294967303.000000")
14171                         echo >&4 "Your modfl() seems okay for large values."
14172                         ;;
14173                 *)      echo >&4 "I don't understand your modfl() at all."
14174                         d_modfl="$undef"
14175                         ;;
14176                 esac
14177                 $rm -f try.* try core core.try.*
14178         else
14179                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14180                 d_modfl="$undef"
14181         fi
14182         case "$osname:$gccversion" in
14183         aix:)   ccflags="$saveccflags" ;; # restore
14184         esac
14185         ;;
14186 esac
14187
14188 if $test "$uselongdouble" = "$define"; then
14189     message=""
14190     if $test "$d_sqrtl" != "$define"; then
14191         message="$message sqrtl"
14192     fi
14193     if $test "$d_modfl" != "$define"; then
14194         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14195             echo "You have both aintl and copysignl, so I can emulate modfl."
14196         else
14197             message="$message modfl"
14198         fi
14199     fi
14200     if $test "$d_frexpl" != "$define"; then
14201         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14202             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14203         else
14204             message="$message frexpl"
14205         fi
14206     fi
14207
14208     if $test "$message" != ""; then
14209         $cat <<EOM >&4
14210
14211 *** You requested the use of long doubles but you do not seem to have
14212 *** the following mathematical functions needed for long double support:
14213 ***    $message
14214 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14215 *** Cannot continue, aborting.
14216
14217 EOM
14218
14219         exit 1
14220     fi
14221 fi
14222
14223 : see if mprotect exists
14224 set mprotect d_mprotect
14225 eval $inlibc
14226
14227 : see if msgctl exists
14228 set msgctl d_msgctl
14229 eval $inlibc
14230
14231 : see if msgget exists
14232 set msgget d_msgget
14233 eval $inlibc
14234
14235 : see if msgsnd exists
14236 set msgsnd d_msgsnd
14237 eval $inlibc
14238
14239 : see if msgrcv exists
14240 set msgrcv d_msgrcv
14241 eval $inlibc
14242
14243 : see how much of the 'msg*(2)' library is present.
14244 h_msg=true
14245 echo " "
14246 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14247 *"$undef"*) h_msg=false;;
14248 esac
14249 case "$osname" in
14250 freebsd)
14251     case "`ipcs 2>&1`" in
14252     "SVID messages"*"not configured"*)
14253         echo "Your $osname does not have the msg*(2) configured." >&4
14254         h_msg=false
14255         val="$undef"
14256         set msgctl d_msgctl
14257         eval $setvar
14258         set msgget d_msgget
14259         eval $setvar
14260         set msgsnd d_msgsnd
14261         eval $setvar
14262         set msgrcv d_msgrcv
14263         eval $setvar
14264         ;;
14265     esac
14266     ;;
14267 esac
14268 : we could also check for sys/ipc.h ...
14269 if $h_msg && $test `./findhdr sys/msg.h`; then
14270         echo "You have the full msg*(2) library." >&4
14271         val="$define"
14272 else
14273         echo "You don't have the full msg*(2) library." >&4
14274         val="$undef"
14275 fi
14276 set d_msg
14277 eval $setvar
14278
14279
14280 echo " "
14281 echo "Checking to see if your system supports struct msghdr..." >&4
14282 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14283 eval $hasstruct
14284 case "$d_msghdr_s" in
14285 "$define")      echo "Yes, it does."   ;;
14286 *)              echo "No, it doesn't." ;;
14287 esac
14288
14289
14290 : see if msync exists
14291 set msync d_msync
14292 eval $inlibc
14293
14294 : see if munmap exists
14295 set munmap d_munmap
14296 eval $inlibc
14297
14298 : see if nice exists
14299 set nice d_nice
14300 eval $inlibc
14301
14302 : see if this is a langinfo.h system
14303 set langinfo.h i_langinfo
14304 eval $inhdr
14305
14306 : see if nl_langinfo exists
14307 set nl_langinfo d_nl_langinfo
14308 eval $inlibc
14309
14310 : check for length of character
14311 echo " "
14312 case "$charsize" in
14313 '')
14314         echo "Checking to see how big your characters are (hey, you never know)..." >&4
14315         $cat >try.c <<EOCP
14316 #include <stdio.h>
14317 #$i_stdlib I_STDLIB
14318 #ifdef I_STDLIB
14319 #include <stdlib.h>
14320 #endif
14321 int main()
14322 {
14323     printf("%d\n", (int)sizeof(char));
14324     exit(0);
14325 }
14326 EOCP
14327         set try
14328         if eval $compile_ok; then
14329                 dflt=`$run ./try`
14330         else
14331                 dflt='1'
14332                 echo "(I can't seem to compile the test program.  Guessing...)"
14333         fi
14334         ;;
14335 *)
14336         dflt="$charsize"
14337         ;;
14338 esac
14339 rp="What is the size of a character (in bytes)?"
14340 . ./myread
14341 charsize="$ans"
14342 $rm -f try.c try
14343
14344 : check for volatile keyword
14345 echo " "
14346 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14347 $cat >try.c <<'EOCP'
14348 int main()
14349 {
14350         typedef struct _goo_struct goo_struct;
14351         goo_struct * volatile goo = ((goo_struct *)0);
14352         struct _goo_struct {
14353                 long long_int;
14354                 int reg_int;
14355                 char char_var;
14356         };
14357         typedef unsigned short foo_t;
14358         char *volatile foo;
14359         volatile int bar;
14360         volatile foo_t blech;
14361         foo = foo;
14362 }
14363 EOCP
14364 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14365         val="$define"
14366         echo "Yup, it does."
14367 else
14368         val="$undef"
14369         echo "Nope, it doesn't."
14370 fi
14371 set d_volatile
14372 eval $setvar
14373 $rm -f try.*
14374
14375
14376 echo " "
14377 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14378
14379 case "$use64bitint:$d_quad:$quadtype" in
14380 define:define:?*)
14381         ivtype="$quadtype"
14382         uvtype="$uquadtype"
14383         ivsize=8
14384         uvsize=8
14385         ;;
14386 *)      ivtype="long"
14387         uvtype="unsigned long"
14388         ivsize=$longsize
14389         uvsize=$longsize
14390         ;;
14391 esac
14392
14393 case "$uselongdouble:$d_longdbl" in
14394 define:define)
14395         nvtype="long double"
14396         nvsize=$longdblsize
14397         ;;
14398 *)      nvtype=double
14399         nvsize=$doublesize
14400         ;;
14401 esac
14402
14403 $echo "(IV will be "$ivtype", $ivsize bytes)"
14404 $echo "(UV will be "$uvtype", $uvsize bytes)"
14405 $echo "(NV will be "$nvtype", $nvsize bytes)"
14406
14407 $cat >try.c <<EOCP
14408 #$i_inttypes I_INTTYPES
14409 #ifdef I_INTTYPES
14410 #include <inttypes.h>
14411 #endif
14412 #include <stdio.h>
14413 int main() {
14414 #ifdef INT8
14415    int8_t i =  INT8_MAX;
14416   uint8_t u = UINT8_MAX;
14417   printf("int8_t\n");
14418 #endif
14419 #ifdef INT16
14420    int16_t i =  INT16_MAX;
14421   uint16_t i = UINT16_MAX;
14422   printf("int16_t\n");
14423 #endif
14424 #ifdef INT32
14425    int32_t i =  INT32_MAX;
14426   uint32_t u = UINT32_MAX;
14427   printf("int32_t\n");
14428 #endif
14429 }
14430 EOCP
14431
14432 case "$i8type" in
14433 '')     case "$charsize" in
14434         1)      i8type=char
14435                 u8type="unsigned char"
14436                 i8size=$charsize
14437                 u8size=$charsize
14438                 ;;
14439         esac
14440         ;;
14441 esac
14442 case "$i8type" in
14443 '')     set try -DINT8
14444         if eval $compile; then
14445                 case "`$run ./try`" in
14446                 int8_t) i8type=int8_t
14447                         u8type=uint8_t
14448                         i8size=1
14449                         u8size=1
14450                         ;;
14451                 esac
14452         fi
14453         ;;
14454 esac
14455 case "$i8type" in
14456 '')     if $test $charsize -ge 1; then
14457                 i8type=char
14458                 u8type="unsigned char"
14459                 i8size=$charsize
14460                 u8size=$charsize
14461         fi
14462         ;;
14463 esac
14464
14465 case "$i16type" in
14466 '')     case "$shortsize" in
14467         2)      i16type=short
14468                 u16type="unsigned short"
14469                 i16size=$shortsize
14470                 u16size=$shortsize
14471                 ;;
14472         esac
14473         ;;
14474 esac
14475 case "$i16type" in
14476 '')     set try -DINT16
14477         if eval $compile; then
14478                 case "`$run ./try`" in
14479                 int16_t)
14480                         i16type=int16_t
14481                         u16type=uint16_t
14482                         i16size=2
14483                         u16size=2
14484                         ;;
14485                 esac
14486         fi
14487         ;;
14488 esac
14489 case "$i16type" in
14490 '')     if $test $shortsize -ge 2; then
14491                 i16type=short
14492                 u16type="unsigned short"
14493                 i16size=$shortsize
14494                 u16size=$shortsize
14495         fi
14496         ;;
14497 esac
14498
14499 case "$i32type" in
14500 '')     case "$longsize" in
14501         4)      i32type=long
14502                 u32type="unsigned long"
14503                 i32size=$longsize
14504                 u32size=$longsize
14505                 ;;
14506         *)      case "$intsize" in
14507                 4)      i32type=int
14508                         u32type="unsigned int"
14509                         i32size=$intsize
14510                         u32size=$intsize
14511                         ;;
14512                 esac
14513                 ;;
14514         esac
14515         ;;
14516 esac
14517 case "$i32type" in
14518 '')     set try -DINT32
14519         if eval $compile; then
14520                 case "`$run ./try`" in
14521                 int32_t)
14522                         i32type=int32_t
14523                         u32type=uint32_t
14524                         i32size=4
14525                         u32size=4
14526                         ;;
14527                 esac
14528         fi
14529         ;;
14530 esac
14531 case "$i32type" in
14532 '')     if $test $intsize -ge 4; then
14533                 i32type=int
14534                 u32type="unsigned int"
14535                 i32size=$intsize
14536                 u32size=$intsize
14537         fi
14538         ;;
14539 esac
14540
14541 case "$i64type" in
14542 '')     case "$d_quad:$quadtype" in
14543         define:?*)
14544                 i64type="$quadtype"
14545                 u64type="$uquadtype"
14546                 i64size=8
14547                 u64size=8
14548                 ;;
14549         esac
14550         ;;
14551 esac
14552
14553 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14554 : volatile so that the compiler has to store it out to memory.
14555 if test X"$d_volatile" = X"$define"; then
14556         volatile=volatile
14557 fi
14558 $cat <<EOP >try.c
14559 #include <stdio.h>
14560 #$i_stdlib I_STDLIB
14561 #ifdef I_STDLIB
14562 #include <stdlib.h>
14563 #endif
14564 #include <sys/types.h>
14565 #include <signal.h>
14566 #ifdef SIGFPE
14567 $volatile int bletched = 0;
14568 $signal_t blech(s) int s; { bletched = 1; }
14569 #endif
14570 int main() {
14571     $uvtype u = 0;
14572     $nvtype d;
14573     int     n = 8 * $uvsize;
14574     int     i;
14575 #ifdef SIGFPE
14576     signal(SIGFPE, blech);
14577 #endif
14578
14579     for (i = 0; i < n; i++) {
14580       u = u << 1 | ($uvtype)1;
14581       d = ($nvtype)u;
14582       if (($uvtype)d != u)
14583         break;
14584       if (d <= 0)
14585         break;
14586       d = ($nvtype)(u - 1);
14587       if (($uvtype)d != (u - 1))
14588         break;
14589 #ifdef SIGFPE
14590       if (bletched) {
14591         break;
14592 #endif
14593       } 
14594     }
14595     printf("%d\n", ((i == n) ? -n : i));
14596     exit(0);
14597 }
14598 EOP
14599 set try
14600
14601 d_nv_preserves_uv="$undef"
14602 if eval $compile; then
14603         nv_preserves_uv_bits="`$run ./try`"
14604 fi
14605 case "$nv_preserves_uv_bits" in
14606 \-[1-9]*)       
14607         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14608         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14609         d_nv_preserves_uv="$define"
14610         ;;
14611 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14612         d_nv_preserves_uv="$undef" ;;
14613 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14614         nv_preserves_uv_bits="$undef" ;;
14615 esac
14616
14617 $rm -f try.* try
14618
14619
14620 : check for off64_t
14621 echo " "
14622 echo "Checking to see if you have off64_t..." >&4
14623 $cat >try.c <<EOCP
14624 #include <sys/types.h>
14625 #include <unistd.h>
14626 int main() { off64_t x = 7; }
14627 EOCP
14628 set try
14629 if eval $compile; then
14630         val="$define"
14631         echo "You have off64_t."
14632 else
14633         val="$undef"
14634         echo "You do not have off64_t."
14635         case "$lseeksize" in
14636         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14637         esac
14638 fi
14639 $rm -f try.* try
14640 set d_off64_t
14641 eval $setvar
14642
14643 : how to create joinable pthreads
14644 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14645         echo " "
14646         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14647         $cat >try.c <<'EOCP'
14648 #include <pthread.h>
14649 int main() {
14650     int detachstate = JOINABLE;
14651 }
14652 EOCP
14653         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14654         if eval $compile; then
14655                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14656                 val="$undef" # Yes, undef.
14657                 set d_old_pthread_create_joinable
14658                 eval $setvar
14659                 val=""
14660                 set old_pthread_create_joinable
14661                 eval $setvar
14662         else
14663                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14664                 if eval $compile; then
14665                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14666                         val="$define"
14667                         set d_old_pthread_create_joinable
14668                         eval $setvar
14669                         val=PTHREAD_CREATE_UNDETACHED
14670                         set old_pthread_create_joinable
14671                         eval $setvar
14672                 else            
14673                         set try -DJOINABLE=__UNDETACHED
14674                         if eval $compile; then
14675                                 echo "You seem to use __UNDETACHED." >&4
14676                                 val="$define"
14677                                 set d_old_pthread_create_joinable
14678                                 eval $setvar
14679                                 val=__UNDETACHED
14680                                 set old_pthread_create_joinable
14681                                 eval $setvar
14682                         else
14683                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14684                                 val="$define"
14685                                 set d_old_pthread_create_joinable
14686                                 eval $setvar
14687                                 val=0
14688                                 set old_pthread_create_joinable
14689                                 eval $setvar
14690                         fi
14691                 fi
14692         fi
14693         $rm -f try try.*
14694 else
14695     d_old_pthread_create_joinable="$undef"
14696     old_pthread_create_joinable=""
14697 fi
14698
14699 : see if pause exists
14700 set pause d_pause
14701 eval $inlibc
14702
14703 : see if pipe exists
14704 set pipe d_pipe
14705 eval $inlibc
14706
14707 : see if poll exists
14708 set poll d_poll
14709 eval $inlibc
14710
14711 : see if readlink exists
14712 set readlink d_readlink
14713 eval $inlibc
14714
14715 echo " "
14716 procselfexe=''
14717 val="$undef"
14718 case "$d_readlink" in
14719 "$define")
14720         if $issymlink /proc/self/exe ; then
14721                 $ls -l /proc/self/exe > reflect
14722                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14723                         echo "You have Linux-like /proc/self/exe."
14724                         procselfexe='"/proc/self/exe"'
14725                         val="$define"
14726                 fi
14727         fi
14728         if $issymlink /proc/curproc/file ; then
14729                 $ls -l /proc/curproc/file > reflect
14730                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14731                         echo "You have BSD-like /proc/curproc/file."
14732                         procselfexe='"/proc/curproc/file"'
14733                         val="$define"
14734                 fi
14735         fi
14736         ;;
14737 esac
14738 $rm -f reflect
14739 set d_procselfexe
14740 eval $setvar
14741
14742 : see whether the pthread_atfork exists
14743 $cat >try.c <<EOP
14744 #include <pthread.h>
14745 #include <stdio.h>
14746 int main() {
14747 #ifdef  PTHREAD_ATFORK
14748         pthread_atfork(NULL,NULL,NULL);
14749 #endif
14750 }
14751 EOP
14752
14753 : see if pthread_atfork exists
14754 set try -DPTHREAD_ATFORK
14755 if eval $compile; then
14756     val="$define"
14757 else
14758     val="$undef"
14759 fi
14760 case "$usethreads" in
14761 $define)
14762         case "$val" in
14763         $define) echo 'pthread_atfork found.' >&4        ;;
14764         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14765         esac
14766 esac
14767 set d_pthread_atfork
14768 eval $setvar
14769
14770 : see if pthread_attr_setscope exists
14771 set pthread_attr_setscope d_pthread_attr_setscope
14772 eval $inlibc
14773
14774
14775 : see whether the various POSIXish _yields exist
14776 $cat >try.c <<EOP
14777 #include <pthread.h>
14778 #include <stdio.h>
14779 int main() {
14780 #ifdef SCHED_YIELD
14781         sched_yield();
14782 #else
14783 #ifdef PTHREAD_YIELD
14784         pthread_yield();
14785 #else
14786 #ifdef PTHREAD_YIELD_NULL
14787         pthread_yield(NULL);
14788 #endif
14789 #endif
14790 #endif
14791 }
14792 EOP
14793 : see if sched_yield exists
14794 set try -DSCHED_YIELD
14795 if eval $compile; then
14796     val="$define"
14797     sched_yield='sched_yield()'
14798 else
14799     val="$undef"
14800 fi
14801 case "$usethreads" in
14802 $define)
14803         case "$val" in
14804         $define) echo 'sched_yield() found.' >&4        ;;
14805         *)       echo 'sched_yield() NOT found.' >&4    ;;
14806         esac
14807 esac
14808 set d_sched_yield
14809 eval $setvar
14810
14811 : see if pthread_yield exists
14812 set try -DPTHREAD_YIELD
14813 if eval $compile; then
14814     val="$define"
14815     case "$sched_yield" in
14816     '') sched_yield='pthread_yield()' ;;
14817     esac
14818 else
14819     set try -DPTHREAD_YIELD_NULL
14820     if eval $compile; then
14821         val="$define"
14822         case "$sched_yield" in
14823         '') sched_yield='pthread_yield(NULL)' ;;
14824         esac
14825     else
14826         val="$undef"
14827     fi
14828 fi
14829 case "$usethreads" in
14830 $define)
14831         case "$val" in
14832         $define) echo 'pthread_yield() found.' >&4      ;;
14833         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14834         esac
14835         ;;
14836 esac
14837 set d_pthread_yield
14838 eval $setvar
14839
14840 case "$sched_yield" in
14841 '') sched_yield=undef ;;
14842 esac
14843
14844 $rm -f try try.*
14845
14846 : see if random_r exists
14847 set random_r d_random_r
14848 eval $inlibc
14849 case "$d_random_r" in
14850 "$define")
14851         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14852         case "$d_random_r_proto:$usethreads" in
14853         ":define")      d_random_r_proto=define
14854                 set d_random_r_proto random_r $hdrs
14855                 eval $hasproto ;;
14856         *)      ;;
14857         esac
14858         case "$d_random_r_proto" in
14859         define)
14860         case "$random_r_proto" in
14861         ''|0) try='int random_r(int*, struct random_data*);'
14862         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14863         esac
14864         case "$random_r_proto" in
14865         ''|0) try='int random_r(long*, struct random_data*);'
14866         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14867         esac
14868         case "$random_r_proto" in
14869         ''|0) try='int random_r(struct random_data*, int32_t*);'
14870         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14871         esac
14872         case "$random_r_proto" in
14873         ''|0)   d_random_r=undef
14874                 random_r_proto=0
14875                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14876         * )     case "$random_r_proto" in
14877                 REENTRANT_PROTO*) ;;
14878                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14879                 esac
14880                 echo "Prototype: $try" ;;
14881         esac
14882         ;;
14883         *)      case "$usethreads" in
14884                 define) echo "random_r has no prototype, not using it." >&4 ;;
14885                 esac
14886                 d_random_r=undef
14887                 random_r_proto=0
14888                 ;;
14889         esac
14890         ;;
14891 *)      random_r_proto=0
14892         ;;
14893 esac
14894
14895 : see if readdir and friends exist
14896 set readdir d_readdir
14897 eval $inlibc
14898 set seekdir d_seekdir
14899 eval $inlibc
14900 set telldir d_telldir
14901 eval $inlibc
14902 set rewinddir d_rewinddir
14903 eval $inlibc
14904
14905 : see if readdir64_r exists
14906 set readdir64_r d_readdir64_r
14907 eval $inlibc
14908 case "$d_readdir64_r" in
14909 "$define")
14910         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14911         case "$d_readdir64_r_proto:$usethreads" in
14912         ":define")      d_readdir64_r_proto=define
14913                 set d_readdir64_r_proto readdir64_r $hdrs
14914                 eval $hasproto ;;
14915         *)      ;;
14916         esac
14917         case "$d_readdir64_r_proto" in
14918         define)
14919         case "$readdir64_r_proto" in
14920         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14921         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14922         esac
14923         case "$readdir64_r_proto" in
14924         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14925         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14926         esac
14927         case "$readdir64_r_proto" in
14928         ''|0)   d_readdir64_r=undef
14929                 readdir64_r_proto=0
14930                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14931         * )     case "$readdir64_r_proto" in
14932                 REENTRANT_PROTO*) ;;
14933                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14934                 esac
14935                 echo "Prototype: $try" ;;
14936         esac
14937         ;;
14938         *)      case "$usethreads" in
14939                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14940                 esac
14941                 d_readdir64_r=undef
14942                 readdir64_r_proto=0
14943                 ;;
14944         esac
14945         ;;
14946 *)      readdir64_r_proto=0
14947         ;;
14948 esac
14949
14950 : see if readdir_r exists
14951 set readdir_r d_readdir_r
14952 eval $inlibc
14953 case "$d_readdir_r" in
14954 "$define")
14955         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14956         case "$d_readdir_r_proto:$usethreads" in
14957         ":define")      d_readdir_r_proto=define
14958                 set d_readdir_r_proto readdir_r $hdrs
14959                 eval $hasproto ;;
14960         *)      ;;
14961         esac
14962         case "$d_readdir_r_proto" in
14963         define)
14964         case "$readdir_r_proto" in
14965         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14966         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14967         esac
14968         case "$readdir_r_proto" in
14969         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14970         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14971         esac
14972         case "$readdir_r_proto" in
14973         ''|0)   d_readdir_r=undef
14974                 readdir_r_proto=0
14975                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14976         * )     case "$readdir_r_proto" in
14977                 REENTRANT_PROTO*) ;;
14978                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14979                 esac
14980                 echo "Prototype: $try" ;;
14981         esac
14982         ;;
14983         *)      case "$usethreads" in
14984                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14985                 esac
14986                 d_readdir_r=undef
14987                 readdir_r_proto=0
14988                 ;;
14989         esac
14990         ;;
14991 *)      readdir_r_proto=0
14992         ;;
14993 esac
14994
14995 : see if readv exists
14996 set readv d_readv
14997 eval $inlibc
14998
14999 : see if recvmsg exists
15000 set recvmsg d_recvmsg
15001 eval $inlibc
15002
15003 : see if rename exists
15004 set rename d_rename
15005 eval $inlibc
15006
15007 : see if rmdir exists
15008 set rmdir d_rmdir
15009 eval $inlibc
15010
15011 : see if memory.h is available.
15012 val=''
15013 set memory.h val
15014 eval $inhdr
15015
15016 : See if it conflicts with string.h
15017 case "$val" in
15018 $define)
15019         case "$strings" in
15020         '') ;;
15021         *)
15022                 $cppstdin $cppflags $cppminus < $strings > mem.h
15023                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
15024                         echo " "
15025                         echo "We won't be including <memory.h>."
15026                         val="$undef"
15027                 fi
15028                 $rm -f mem.h
15029                 ;;
15030         esac
15031 esac
15032 set i_memory
15033 eval $setvar
15034
15035 : can bcopy handle overlapping blocks?
15036 echo " "
15037 val="$undef"
15038 case "$d_memmove" in
15039 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
15040 *)      case "$d_bcopy" in
15041         "$define")
15042                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15043                 $cat >try.c <<EOCP
15044 #$i_memory I_MEMORY
15045 #$i_stdlib I_STDLIB
15046 #$i_string I_STRING
15047 #$i_unistd I_UNISTD
15048 EOCP
15049         $cat >>try.c <<'EOCP'
15050 #include <stdio.h>
15051 #ifdef I_MEMORY
15052 #  include <memory.h>
15053 #endif
15054 #ifdef I_STDLIB
15055 #  include <stdlib.h>
15056 #endif
15057 #ifdef I_STRING
15058 #  include <string.h>
15059 #else
15060 #  include <strings.h>
15061 #endif
15062 #ifdef I_UNISTD
15063 #  include <unistd.h>  /* Needed for NetBSD */
15064 #endif
15065 int main()
15066 {
15067 char buf[128], abc[128];
15068 char *b;
15069 int len;
15070 int off;
15071 int align;
15072
15073 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15074    try to store the string in read-only memory. */
15075 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15076
15077 for (align = 7; align >= 0; align--) {
15078         for (len = 36; len; len--) {
15079                 b = buf+align;
15080                 bcopy(abc, b, len);
15081                 for (off = 1; off <= len; off++) {
15082                         bcopy(b, b+off, len);
15083                         bcopy(b+off, b, len);
15084                         if (bcmp(b, abc, len))
15085                                 exit(1);
15086                 }
15087         }
15088 }
15089 exit(0);
15090 }
15091 EOCP
15092                 set try
15093                 if eval $compile_ok; then
15094                         if ./try 2>/dev/null; then
15095                                 echo "Yes, it can."
15096                                 val="$define"
15097                         else
15098                                 echo "It can't, sorry."
15099                         fi
15100                 else
15101                         echo "(I can't compile the test program, so we'll assume not...)"
15102                 fi
15103                 ;;
15104         esac
15105         $rm -f try.* try core
15106         ;;
15107 esac
15108 set d_safebcpy
15109 eval $setvar
15110
15111 : can memcpy handle overlapping blocks?
15112 echo " "
15113 val="$undef"
15114 case "$d_memmove" in
15115 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15116 *)      case "$d_memcpy" in
15117         "$define")
15118                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15119                 $cat >try.c <<EOCP
15120 #$i_memory I_MEMORY
15121 #$i_stdlib I_STDLIB
15122 #$i_string I_STRING
15123 #$i_unistd I_UNISTD
15124 EOCP
15125         $cat >>try.c <<'EOCP'
15126 #include <stdio.h>
15127 #ifdef I_MEMORY
15128 #  include <memory.h>
15129 #endif
15130 #ifdef I_STDLIB
15131 #  include <stdlib.h>
15132 #endif
15133 #ifdef I_STRING
15134 #  include <string.h>
15135 #else
15136 #  include <strings.h>
15137 #endif
15138 #ifdef I_UNISTD
15139 #  include <unistd.h>  /* Needed for NetBSD */
15140 #endif
15141 int main()
15142 {
15143 char buf[128], abc[128];
15144 char *b;
15145 int len;
15146 int off;
15147 int align;
15148
15149 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15150    try to store the string in read-only memory. */
15151 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15152
15153 for (align = 7; align >= 0; align--) {
15154         for (len = 36; len; len--) {
15155                 b = buf+align;
15156                 memcpy(b, abc, len);
15157                 for (off = 1; off <= len; off++) {
15158                         memcpy(b+off, b, len);
15159                         memcpy(b, b+off, len);
15160                         if (memcmp(b, abc, len))
15161                                 exit(1);
15162                 }
15163         }
15164 }
15165 exit(0);
15166 }
15167 EOCP
15168                 set try
15169                 if eval $compile_ok; then
15170                         if ./try 2>/dev/null; then
15171                                 echo "Yes, it can."
15172                                 val="$define"
15173                         else
15174                                 echo "It can't, sorry."
15175                         fi
15176                 else
15177                         echo "(I can't compile the test program, so we'll assume not...)"
15178                 fi
15179                 ;;
15180         esac
15181         $rm -f try.* try core
15182         ;;
15183 esac
15184 set d_safemcpy
15185 eval $setvar
15186
15187 : can memcmp be trusted to compare relative magnitude?
15188 val="$undef"
15189 case "$d_memcmp" in
15190 "$define")
15191         echo " "
15192         echo "Checking if your memcmp() can compare relative magnitude..." >&4
15193         $cat >try.c <<EOCP
15194 #$i_memory I_MEMORY
15195 #$i_stdlib I_STDLIB
15196 #$i_string I_STRING
15197 #$i_unistd I_UNISTD
15198 EOCP
15199         $cat >>try.c <<'EOCP'
15200 #include <stdio.h>
15201 #ifdef I_MEMORY
15202 #  include <memory.h>
15203 #endif
15204 #ifdef I_STDLIB
15205 #  include <stdlib.h>
15206 #endif
15207 #ifdef I_STRING
15208 #  include <string.h>
15209 #else
15210 #  include <strings.h>
15211 #endif
15212 #ifdef I_UNISTD
15213 #  include <unistd.h>  /* Needed for NetBSD */
15214 #endif
15215 int main()
15216 {
15217 char a = -1;
15218 char b = 0;
15219 if ((a < b) && memcmp(&a, &b, 1) < 0)
15220         exit(1);
15221 exit(0);
15222 }
15223 EOCP
15224         set try
15225         if eval $compile_ok; then
15226                 if $run ./try 2>/dev/null; then
15227                         echo "Yes, it can."
15228                         val="$define"
15229                 else
15230                         echo "No, it can't (it uses signed chars)."
15231                 fi
15232         else
15233                 echo "(I can't compile the test program, so we'll assume not...)"
15234         fi
15235         ;;
15236 esac
15237 $rm -f try.* try core
15238 set d_sanemcmp
15239 eval $setvar
15240
15241 : see if prototype for sbrk is available
15242 echo " "
15243 set d_sbrkproto sbrk $i_unistd unistd.h
15244 eval $hasproto
15245
15246 : see if select exists
15247 set select d_select
15248 eval $inlibc
15249
15250 : see if semctl exists
15251 set semctl d_semctl
15252 eval $inlibc
15253
15254 : see if semget exists
15255 set semget d_semget
15256 eval $inlibc
15257
15258 : see if semop exists
15259 set semop d_semop
15260 eval $inlibc
15261
15262 : see how much of the 'sem*(2)' library is present.
15263 h_sem=true
15264 echo " "
15265 case "$d_semctl$d_semget$d_semop" in
15266 *"$undef"*) h_sem=false;;
15267 esac
15268 case "$osname" in
15269 freebsd)
15270     case "`ipcs 2>&1`" in
15271     "SVID messages"*"not configured"*)
15272         echo "Your $osname does not have the sem*(2) configured." >&4
15273         h_sem=false
15274         val="$undef"
15275         set semctl d_semctl
15276         eval $setvar
15277         set semget d_semget
15278         eval $setvar
15279         set semop d_semop
15280         eval $setvar
15281         ;;
15282     esac
15283     ;;
15284 esac
15285 : we could also check for sys/ipc.h ...
15286 if $h_sem && $test `./findhdr sys/sem.h`; then
15287         echo "You have the full sem*(2) library." >&4
15288         val="$define"
15289 else
15290         echo "You don't have the full sem*(2) library." >&4
15291         val="$undef"
15292 fi
15293 set d_sem
15294 eval $setvar
15295
15296 : see whether sys/sem.h defines union semun
15297 echo " "
15298 $cat > try.c <<'END'
15299 #include <sys/types.h>
15300 #include <sys/ipc.h>
15301 #include <sys/sem.h>
15302 int main () { union semun semun; semun.buf = 0; }
15303 END
15304 set try
15305 if eval $compile; then
15306     echo "You have union semun in <sys/sem.h>." >&4
15307     val="$define"
15308 else
15309     echo "You do not have union semun in <sys/sem.h>." >&4
15310     val="$undef"
15311 fi
15312 $rm -f try try.c
15313 set d_union_semun
15314 eval $setvar
15315
15316 : see how to do semctl IPC_STAT
15317 case "$d_sem" in
15318 $define)
15319     echo " "
15320     $cat > try.h <<END
15321 #ifndef S_IRUSR
15322 #   ifdef S_IREAD
15323 #       define S_IRUSR S_IREAD
15324 #       define S_IWUSR S_IWRITE
15325 #       define S_IXUSR S_IEXEC
15326 #   else
15327 #       define S_IRUSR 0400
15328 #       define S_IWUSR 0200
15329 #       define S_IXUSR 0100
15330 #   endif
15331 #   define S_IRGRP (S_IRUSR>>3)
15332 #   define S_IWGRP (S_IWUSR>>3)
15333 #   define S_IXGRP (S_IXUSR>>3)
15334 #   define S_IROTH (S_IRUSR>>6)
15335 #   define S_IWOTH (S_IWUSR>>6)
15336 #   define S_IXOTH (S_IXUSR>>6)
15337 #endif
15338 #ifndef S_IRWXU
15339 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15340 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15341 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15342 #endif
15343 END
15344     : see whether semctl IPC_STAT can use union semun
15345     val="$undef"
15346     case "$d_semctl_semun" in
15347     '')
15348       $cat > try.c <<END
15349 #include <sys/types.h>
15350 #include <sys/ipc.h>
15351 #include <sys/sem.h>
15352 #include <sys/stat.h>
15353 #include <stdio.h>
15354 #include <errno.h>
15355 #include "try.h"
15356 #ifndef errno
15357 extern int errno;
15358 #endif
15359 #$d_union_semun HAS_UNION_SEMUN
15360 int main() {
15361     union semun
15362 #ifndef HAS_UNION_SEMUN
15363     {
15364         int val;
15365         struct semid_ds *buf;
15366         unsigned short *array;
15367     }
15368 #endif
15369     arg;
15370     int sem, st;
15371
15372 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15373     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15374     if (sem > -1) {
15375         struct semid_ds argbuf;
15376         arg.buf = &argbuf;
15377 #       ifdef IPC_STAT
15378         st = semctl(sem, 0, IPC_STAT, arg);
15379         if (st == 0)
15380             printf("semun\n");
15381         else
15382 #       endif /* IPC_STAT */
15383             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15384 #       ifdef IPC_RMID
15385         if (semctl(sem, 0, IPC_RMID, arg) != 0)
15386 #       endif /* IPC_RMID */
15387             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15388     } else
15389 #endif /* IPC_PRIVATE && ... */
15390         printf("semget failed: errno = %d\n", errno);
15391   return 0;
15392 }
15393 END
15394       set try
15395       if eval $compile; then
15396           xxx=`$run ./try`
15397           case "$xxx" in
15398           semun) val="$define" ;;
15399           esac
15400       fi
15401       $rm -f try try.c
15402       ;;
15403     esac
15404     set d_semctl_semun
15405     eval $setvar
15406     case "$d_semctl_semun" in
15407     $define)
15408         echo "You can use union semun for semctl IPC_STAT." >&4
15409         also='also'
15410         ;;
15411     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15412         also=''
15413         ;;
15414     esac
15415
15416     : see whether semctl IPC_STAT can use struct semid_ds pointer
15417     val="$undef"
15418     case "$d_semctl_semid_ds" in
15419     '')
15420       $cat > try.c <<'END'
15421 #include <sys/types.h>
15422 #include <sys/ipc.h>
15423 #include <sys/sem.h>
15424 #include <sys/stat.h>
15425 #include "try.h"
15426 #include <stdio.h>
15427 #include <errno.h>
15428 #ifndef errno
15429 extern int errno;
15430 #endif
15431 int main() {
15432     struct semid_ds arg;
15433     int sem, st;
15434
15435 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15436     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15437     if (sem > -1) {
15438 #       ifdef IPC_STAT
15439         st = semctl(sem, 0, IPC_STAT, &arg);
15440         if (st == 0)
15441             printf("semid_ds\n");
15442         else
15443 #       endif /* IPC_STAT */
15444             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15445 #       ifdef IPC_RMID
15446         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15447 #       endif /* IPC_RMID */
15448             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15449     } else
15450 #endif /* IPC_PRIVATE && ... */
15451         printf("semget failed: errno = %d\n", errno);
15452
15453     return 0;
15454 }
15455 END
15456       set try
15457       if eval $compile; then
15458           xxx=`$run ./try`
15459           case "$xxx" in
15460           semid_ds) val="$define" ;;
15461           esac
15462       fi
15463       $rm -f try try.c
15464       ;;
15465     esac
15466     set d_semctl_semid_ds
15467     eval $setvar
15468     case "$d_semctl_semid_ds" in
15469     $define)
15470         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15471         ;;
15472     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15473         ;;
15474     esac
15475     $rm -f try.h
15476     ;;
15477 *)  val="$undef"
15478
15479     # We do not have the full sem*(2) library, so assume we can not
15480     # use either.
15481
15482     set d_semctl_semun
15483     eval $setvar
15484
15485     set d_semctl_semid_ds
15486     eval $setvar
15487     ;;
15488 esac
15489
15490 : see if sendmsg exists
15491 set sendmsg d_sendmsg
15492 eval $inlibc
15493
15494 : see if setegid exists
15495 set setegid d_setegid
15496 eval $inlibc
15497
15498 : see if seteuid exists
15499 set seteuid d_seteuid
15500 eval $inlibc
15501
15502 : see if setgrent exists
15503 set setgrent d_setgrent
15504 eval $inlibc
15505
15506 : see if setgrent_r exists
15507 set setgrent_r d_setgrent_r
15508 eval $inlibc
15509 case "$d_setgrent_r" in
15510 "$define")
15511         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15512         case "$d_setgrent_r_proto:$usethreads" in
15513         ":define")      d_setgrent_r_proto=define
15514                 set d_setgrent_r_proto setgrent_r $hdrs
15515                 eval $hasproto ;;
15516         *)      ;;
15517         esac
15518         case "$d_setgrent_r_proto" in
15519         define)
15520         case "$setgrent_r_proto" in
15521         ''|0) try='int setgrent_r(FILE**);'
15522         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15523         esac
15524         case "$setgrent_r_proto" in
15525         ''|0) try='void setgrent_r(FILE**);'
15526         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15527         esac
15528         case "$setgrent_r_proto" in
15529         ''|0)   d_setgrent_r=undef
15530                 setgrent_r_proto=0
15531                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15532         * )     case "$setgrent_r_proto" in
15533                 REENTRANT_PROTO*) ;;
15534                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15535                 esac
15536                 echo "Prototype: $try" ;;
15537         esac
15538         ;;
15539         *)      case "$usethreads" in
15540                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15541                 esac
15542                 d_setgrent_r=undef
15543                 setgrent_r_proto=0
15544                 ;;
15545         esac
15546         ;;
15547 *)      setgrent_r_proto=0
15548         ;;
15549 esac
15550
15551 : see if sethostent exists
15552 set sethostent d_sethent
15553 eval $inlibc
15554
15555 : see if sethostent_r exists
15556 set sethostent_r d_sethostent_r
15557 eval $inlibc
15558 case "$d_sethostent_r" in
15559 "$define")
15560         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15561         case "$d_sethostent_r_proto:$usethreads" in
15562         ":define")      d_sethostent_r_proto=define
15563                 set d_sethostent_r_proto sethostent_r $hdrs
15564                 eval $hasproto ;;
15565         *)      ;;
15566         esac
15567         case "$d_sethostent_r_proto" in
15568         define)
15569         case "$sethostent_r_proto" in
15570         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15571         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15572         esac
15573         case "$sethostent_r_proto" in
15574         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15575         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15576         esac
15577         case "$sethostent_r_proto" in
15578         ''|0)   d_sethostent_r=undef
15579                 sethostent_r_proto=0
15580                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15581         * )     case "$sethostent_r_proto" in
15582                 REENTRANT_PROTO*) ;;
15583                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15584                 esac
15585                 echo "Prototype: $try" ;;
15586         esac
15587         ;;
15588         *)      case "$usethreads" in
15589                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15590                 esac
15591                 d_sethostent_r=undef
15592                 sethostent_r_proto=0
15593                 ;;
15594         esac
15595         ;;
15596 *)      sethostent_r_proto=0
15597         ;;
15598 esac
15599
15600 : see if setitimer exists
15601 set setitimer d_setitimer
15602 eval $inlibc
15603
15604 : see if setlinebuf exists
15605 set setlinebuf d_setlinebuf
15606 eval $inlibc
15607
15608 : see if setlocale exists
15609 set setlocale d_setlocale
15610 eval $inlibc
15611
15612 : see if locale.h is available
15613 set locale.h i_locale
15614 eval $inhdr
15615
15616 : see if setlocale_r exists
15617 set setlocale_r d_setlocale_r
15618 eval $inlibc
15619 case "$d_setlocale_r" in
15620 "$define")
15621         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15622         case "$d_setlocale_r_proto:$usethreads" in
15623         ":define")      d_setlocale_r_proto=define
15624                 set d_setlocale_r_proto setlocale_r $hdrs
15625                 eval $hasproto ;;
15626         *)      ;;
15627         esac
15628         case "$d_setlocale_r_proto" in
15629         define)
15630         case "$setlocale_r_proto" in
15631         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15632         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15633         esac
15634         case "$setlocale_r_proto" in
15635         ''|0)   d_setlocale_r=undef
15636                 setlocale_r_proto=0
15637                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15638         * )     case "$setlocale_r_proto" in
15639                 REENTRANT_PROTO*) ;;
15640                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15641                 esac
15642                 echo "Prototype: $try" ;;
15643         esac
15644         ;;
15645         *)      case "$usethreads" in
15646                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15647                 esac
15648                 d_setlocale_r=undef
15649                 setlocale_r_proto=0
15650                 ;;
15651         esac
15652         ;;
15653 *)      setlocale_r_proto=0
15654         ;;
15655 esac
15656
15657 : see if setnetent exists
15658 set setnetent d_setnent
15659 eval $inlibc
15660
15661 : see if setnetent_r exists
15662 set setnetent_r d_setnetent_r
15663 eval $inlibc
15664 case "$d_setnetent_r" in
15665 "$define")
15666         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15667         case "$d_setnetent_r_proto:$usethreads" in
15668         ":define")      d_setnetent_r_proto=define
15669                 set d_setnetent_r_proto setnetent_r $hdrs
15670                 eval $hasproto ;;
15671         *)      ;;
15672         esac
15673         case "$d_setnetent_r_proto" in
15674         define)
15675         case "$setnetent_r_proto" in
15676         ''|0) try='int setnetent_r(int, struct netent_data*);'
15677         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15678         esac
15679         case "$setnetent_r_proto" in
15680         ''|0) try='void setnetent_r(int, struct netent_data*);'
15681         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15682         esac
15683         case "$setnetent_r_proto" in
15684         ''|0)   d_setnetent_r=undef
15685                 setnetent_r_proto=0
15686                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15687         * )     case "$setnetent_r_proto" in
15688                 REENTRANT_PROTO*) ;;
15689                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15690                 esac
15691                 echo "Prototype: $try" ;;
15692         esac
15693         ;;
15694         *)      case "$usethreads" in
15695                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15696                 esac
15697                 d_setnetent_r=undef
15698                 setnetent_r_proto=0
15699                 ;;
15700         esac
15701         ;;
15702 *)      setnetent_r_proto=0
15703         ;;
15704 esac
15705
15706 : see if setprotoent exists
15707 set setprotoent d_setpent
15708 eval $inlibc
15709
15710 : see if setpgid exists
15711 set setpgid d_setpgid
15712 eval $inlibc
15713
15714 : see if setpgrp2 exists
15715 set setpgrp2 d_setpgrp2
15716 eval $inlibc
15717
15718 : see if setpriority exists
15719 set setpriority d_setprior
15720 eval $inlibc
15721
15722 : see if setproctitle exists
15723 set setproctitle d_setproctitle
15724 eval $inlibc
15725
15726 : see if setprotoent_r exists
15727 set setprotoent_r d_setprotoent_r
15728 eval $inlibc
15729 case "$d_setprotoent_r" in
15730 "$define")
15731         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15732         case "$d_setprotoent_r_proto:$usethreads" in
15733         ":define")      d_setprotoent_r_proto=define
15734                 set d_setprotoent_r_proto setprotoent_r $hdrs
15735                 eval $hasproto ;;
15736         *)      ;;
15737         esac
15738         case "$d_setprotoent_r_proto" in
15739         define)
15740         case "$setprotoent_r_proto" in
15741         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15742         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15743         esac
15744         case "$setprotoent_r_proto" in
15745         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15746         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15747         esac
15748         case "$setprotoent_r_proto" in
15749         ''|0)   d_setprotoent_r=undef
15750                 setprotoent_r_proto=0
15751                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15752         * )     case "$setprotoent_r_proto" in
15753                 REENTRANT_PROTO*) ;;
15754                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15755                 esac
15756                 echo "Prototype: $try" ;;
15757         esac
15758         ;;
15759         *)      case "$usethreads" in
15760                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15761                 esac
15762                 d_setprotoent_r=undef
15763                 setprotoent_r_proto=0
15764                 ;;
15765         esac
15766         ;;
15767 *)      setprotoent_r_proto=0
15768         ;;
15769 esac
15770
15771 : see if setpwent exists
15772 set setpwent d_setpwent
15773 eval $inlibc
15774
15775 : see if setpwent_r exists
15776 set setpwent_r d_setpwent_r
15777 eval $inlibc
15778 case "$d_setpwent_r" in
15779 "$define")
15780         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15781         case "$d_setpwent_r_proto:$usethreads" in
15782         ":define")      d_setpwent_r_proto=define
15783                 set d_setpwent_r_proto setpwent_r $hdrs
15784                 eval $hasproto ;;
15785         *)      ;;
15786         esac
15787         case "$d_setpwent_r_proto" in
15788         define)
15789         case "$setpwent_r_proto" in
15790         ''|0) try='int setpwent_r(FILE**);'
15791         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15792         esac
15793         case "$setpwent_r_proto" in
15794         ''|0) try='void setpwent_r(FILE**);'
15795         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15796         esac
15797         case "$setpwent_r_proto" in
15798         ''|0)   d_setpwent_r=undef
15799                 setpwent_r_proto=0
15800                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15801         * )     case "$setpwent_r_proto" in
15802                 REENTRANT_PROTO*) ;;
15803                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15804                 esac
15805                 echo "Prototype: $try" ;;
15806         esac
15807         ;;
15808         *)      case "$usethreads" in
15809                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15810                 esac
15811                 d_setpwent_r=undef
15812                 setpwent_r_proto=0
15813                 ;;
15814         esac
15815         ;;
15816 *)      setpwent_r_proto=0
15817         ;;
15818 esac
15819
15820 : see if setregid exists
15821 set setregid d_setregid
15822 eval $inlibc
15823 set setresgid d_setresgid
15824 eval $inlibc
15825
15826 : see if setreuid exists
15827 set setreuid d_setreuid
15828 eval $inlibc
15829 set setresuid d_setresuid
15830 eval $inlibc
15831
15832 : see if setrgid exists
15833 set setrgid d_setrgid
15834 eval $inlibc
15835
15836 : see if setruid exists
15837 set setruid d_setruid
15838 eval $inlibc
15839
15840 : see if setservent exists
15841 set setservent d_setsent
15842 eval $inlibc
15843
15844 : see if setservent_r exists
15845 set setservent_r d_setservent_r
15846 eval $inlibc
15847 case "$d_setservent_r" in
15848 "$define")
15849         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15850         case "$d_setservent_r_proto:$usethreads" in
15851         ":define")      d_setservent_r_proto=define
15852                 set d_setservent_r_proto setservent_r $hdrs
15853                 eval $hasproto ;;
15854         *)      ;;
15855         esac
15856         case "$d_setservent_r_proto" in
15857         define)
15858         case "$setservent_r_proto" in
15859         ''|0) try='int setservent_r(int, struct servent_data*);'
15860         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15861         esac
15862         case "$setservent_r_proto" in
15863         ''|0) try='void setservent_r(int, struct servent_data*);'
15864         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15865         esac
15866         case "$setservent_r_proto" in
15867         ''|0)   d_setservent_r=undef
15868                 setservent_r_proto=0
15869                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15870         * )     case "$setservent_r_proto" in
15871                 REENTRANT_PROTO*) ;;
15872                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15873                 esac
15874                 echo "Prototype: $try" ;;
15875         esac
15876         ;;
15877         *)      case "$usethreads" in
15878                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15879                 esac
15880                 d_setservent_r=undef
15881                 setservent_r_proto=0
15882                 ;;
15883         esac
15884         ;;
15885 *)      setservent_r_proto=0
15886         ;;
15887 esac
15888
15889 : see if setsid exists
15890 set setsid d_setsid
15891 eval $inlibc
15892
15893 : see if setvbuf exists
15894 set setvbuf d_setvbuf
15895 eval $inlibc
15896
15897 : see if sfio.h is available
15898 set sfio.h i_sfio
15899 eval $inhdr
15900
15901
15902 : see if sfio library is available
15903 case "$i_sfio" in
15904 $define)
15905         val=''
15906         set sfreserve val
15907         eval $inlibc
15908         ;;
15909 *)
15910         val="$undef"
15911         ;;
15912 esac
15913 : Ok, but do we want to use it.
15914 case "$val" in
15915 $define)
15916         case "$usesfio" in
15917         true|$define|[yY]*) dflt='y';;
15918         *) dflt='n';;
15919         esac
15920         echo "$package can use the sfio library, but it is experimental."
15921         case "$useperlio" in
15922         "$undef")
15923             echo "For sfio also the PerlIO abstraction layer is needed."
15924             echo "Earlier you said you wouldn't want that."
15925             ;;
15926         esac
15927         rp="You seem to have sfio available, do you want to try using it?"
15928         . ./myread
15929         case "$ans" in
15930         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15931                 useperlio="$define"
15932                 val="$define"
15933                 ;;
15934         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15935                 val="$undef"
15936                 ;;
15937         esac
15938         ;;
15939 *)      case "$usesfio" in
15940         true|$define|[yY]*)
15941                 echo "Sorry, cannot find sfio on this machine." >&4
15942                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15943                 val="$undef"
15944                 ;;
15945         esac
15946         ;;
15947 esac
15948 set d_sfio
15949 eval $setvar
15950 case "$d_sfio" in
15951 $define) usesfio='true';;
15952 *) usesfio='false';;
15953 esac
15954 case "$d_sfio" in
15955 $define) ;;
15956 *)      : Remove sfio from list of libraries to use
15957         case "$libs" in
15958         *-lsfio*)
15959                 echo "Removing unneeded -lsfio from library list" >&4
15960                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15961                 shift
15962                 libs="$*"
15963                 echo "libs = $libs" >&4
15964                 ;;
15965         esac
15966 ;;
15967 esac
15968
15969
15970 : see if shmctl exists
15971 set shmctl d_shmctl
15972 eval $inlibc
15973
15974 : see if shmget exists
15975 set shmget d_shmget
15976 eval $inlibc
15977
15978 : see if shmat exists
15979 set shmat d_shmat
15980 eval $inlibc
15981 : see what shmat returns
15982 case "$d_shmat" in
15983 "$define")
15984         $cat >shmat.c <<'END'
15985 #include <sys/shm.h>
15986 void *shmat();
15987 END
15988         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15989                 shmattype='void *'
15990         else
15991                 shmattype='char *'
15992         fi
15993         echo "and it returns ($shmattype)." >&4
15994         : see if a prototype for shmat is available
15995         xxx=`./findhdr sys/shm.h`
15996         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15997         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15998                 val="$define"
15999         else
16000                 val="$undef"
16001         fi
16002         $rm -f shmat.[co]
16003         ;;
16004 *)
16005         val="$undef"
16006         ;;
16007 esac
16008 set d_shmatprototype
16009 eval $setvar
16010
16011 : see if shmdt exists
16012 set shmdt d_shmdt
16013 eval $inlibc
16014
16015 : see how much of the 'shm*(2)' library is present.
16016 h_shm=true
16017 echo " "
16018 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
16019 *"$undef"*) h_shm=false;;
16020 esac
16021 case "$osname" in
16022 freebsd)
16023     case "`ipcs 2>&1`" in
16024     "SVID shared memory"*"not configured"*)
16025         echo "Your $osname does not have the shm*(2) configured." >&4
16026         h_shm=false
16027         val="$undef"
16028         set shmctl d_shmctl
16029         evat $setvar
16030         set shmget d_shmget
16031         evat $setvar
16032         set shmat d_shmat
16033         evat $setvar
16034         set shmdt d_shmdt
16035         evat $setvar
16036         ;;
16037     esac
16038     ;;
16039 esac
16040 : we could also check for sys/ipc.h ...
16041 if $h_shm && $test `./findhdr sys/shm.h`; then
16042         echo "You have the full shm*(2) library." >&4
16043         val="$define"
16044 else
16045         echo "You don't have the full shm*(2) library." >&4
16046         val="$undef"
16047 fi
16048 set d_shm
16049 eval $setvar
16050
16051 echo " "
16052 : see if we have sigaction
16053 if set sigaction val -f d_sigaction; eval $csym; $val; then
16054         echo 'sigaction() found.' >&4
16055         $cat > try.c <<EOP
16056 #include <stdio.h>
16057 #include <sys/types.h>
16058 #include <signal.h>
16059 #$i_stdlib I_STDLIB
16060 #ifdef I_STDLIB
16061 #include <stdlib.h>
16062 #endif
16063 int main()
16064 {
16065     struct sigaction act, oact;
16066     act.sa_flags = 0;
16067     oact.sa_handler = 0;
16068     /* so that act and oact are used */
16069     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16070 }
16071 EOP
16072         set try
16073         if eval $compile_ok; then
16074                 val="$define"
16075         else
16076                 echo "But you don't seem to have a useable struct sigaction." >&4
16077                 val="$undef"
16078         fi
16079 else
16080         echo 'sigaction NOT found.' >&4
16081         val="$undef"
16082 fi
16083 set d_sigaction; eval $setvar
16084 $rm -f try try$_o try.c
16085
16086 : see if sigprocmask exists
16087 set sigprocmask d_sigprocmask
16088 eval $inlibc
16089
16090 : see if sigsetjmp exists
16091 echo " "
16092 case "$d_sigsetjmp" in
16093 '')
16094         $cat >try.c <<EOP
16095 #include <setjmp.h>
16096 #$i_stdlib I_STDLIB
16097 #ifdef I_STDLIB
16098 #include <stdlib.h>
16099 #endif
16100 sigjmp_buf env;
16101 int set = 1;
16102 int main()
16103 {
16104         if (sigsetjmp(env,1))
16105                 exit(set);
16106         set = 0;
16107         siglongjmp(env, 1);
16108         exit(1);
16109 }
16110 EOP
16111         set try
16112         if eval $compile; then
16113                 if $run ./try >/dev/null 2>&1; then
16114                         echo "POSIX sigsetjmp found." >&4
16115                         val="$define"
16116                 else
16117                         $cat >&4 <<EOM
16118 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16119 I'll ignore them.
16120 EOM
16121                         val="$undef"
16122                 fi
16123         else
16124                 echo "sigsetjmp not found." >&4
16125                 val="$undef"
16126         fi
16127         ;;
16128 *) val="$d_sigsetjmp"
16129         case "$d_sigsetjmp" in
16130         $define) echo "POSIX sigsetjmp found." >&4;;
16131         $undef) echo "sigsetjmp not found." >&4;;
16132         esac
16133         ;;
16134 esac
16135 set d_sigsetjmp
16136 eval $setvar
16137 $rm -f try.c try
16138
16139 : see if sockatmark exists
16140 set sockatmark d_sockatmark
16141 eval $inlibc
16142
16143 : see if prototype for sockatmark is available
16144 echo " "
16145 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16146 eval $hasproto
16147
16148 : see if socks5_init exists
16149 set socks5_init d_socks5_init
16150 eval $inlibc
16151
16152 : see if srand48_r exists
16153 set srand48_r d_srand48_r
16154 eval $inlibc
16155 case "$d_srand48_r" in
16156 "$define")
16157         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16158         case "$d_srand48_r_proto:$usethreads" in
16159         ":define")      d_srand48_r_proto=define
16160                 set d_srand48_r_proto srand48_r $hdrs
16161                 eval $hasproto ;;
16162         *)      ;;
16163         esac
16164         case "$d_srand48_r_proto" in
16165         define)
16166         case "$srand48_r_proto" in
16167         ''|0) try='int srand48_r(long, struct drand48_data*);'
16168         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16169         esac
16170         case "$srand48_r_proto" in
16171         ''|0)   d_srand48_r=undef
16172                 srand48_r_proto=0
16173                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16174         * )     case "$srand48_r_proto" in
16175                 REENTRANT_PROTO*) ;;
16176                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16177                 esac
16178                 echo "Prototype: $try" ;;
16179         esac
16180         ;;
16181         *)      case "$usethreads" in
16182                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16183                 esac
16184                 d_srand48_r=undef
16185                 srand48_r_proto=0
16186                 ;;
16187         esac
16188         ;;
16189 *)      srand48_r_proto=0
16190         ;;
16191 esac
16192
16193 : see if srandom_r exists
16194 set srandom_r d_srandom_r
16195 eval $inlibc
16196 case "$d_srandom_r" in
16197 "$define")
16198         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16199         case "$d_srandom_r_proto:$usethreads" in
16200         ":define")      d_srandom_r_proto=define
16201                 set d_srandom_r_proto srandom_r $hdrs
16202                 eval $hasproto ;;
16203         *)      ;;
16204         esac
16205         case "$d_srandom_r_proto" in
16206         define)
16207         case "$srandom_r_proto" in
16208         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16209         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16210         esac
16211         case "$srandom_r_proto" in
16212         ''|0)   d_srandom_r=undef
16213                 srandom_r_proto=0
16214                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16215         * )     case "$srandom_r_proto" in
16216                 REENTRANT_PROTO*) ;;
16217                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16218                 esac
16219                 echo "Prototype: $try" ;;
16220         esac
16221         ;;
16222         *)      case "$usethreads" in
16223                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16224                 esac
16225                 d_srandom_r=undef
16226                 srandom_r_proto=0
16227                 ;;
16228         esac
16229         ;;
16230 *)      srandom_r_proto=0
16231         ;;
16232 esac
16233
16234 : see if prototype for setresgid is available
16235 echo " "
16236 set d_sresgproto setresgid $i_unistd unistd.h
16237 eval $hasproto
16238
16239 : see if prototype for setresuid is available
16240 echo " "
16241 set d_sresuproto setresuid $i_unistd unistd.h
16242 eval $hasproto
16243
16244 : see if sys/stat.h is available
16245 set sys/stat.h i_sysstat
16246 eval $inhdr
16247
16248
16249 : see if stat knows about block sizes
16250 echo " "
16251 echo "Checking to see if your struct stat has st_blocks field..." >&4
16252 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16253 eval $hasfield
16254
16255
16256 : see if this is a sys/vfs.h system
16257 set sys/vfs.h i_sysvfs
16258 eval $inhdr
16259
16260
16261 : see if this is a sys/statfs.h system
16262 set sys/statfs.h i_sysstatfs
16263 eval $inhdr
16264
16265
16266 echo " "
16267 echo "Checking to see if your system supports struct statfs..." >&4
16268 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
16269 eval $hasstruct
16270 case "$d_statfs_s" in
16271 "$define")      echo "Yes, it does."   ;;
16272 *)              echo "No, it doesn't." ;;
16273 esac
16274
16275
16276
16277 : see if struct statfs knows about f_flags
16278 case "$d_statfs_s" in
16279 define) 
16280         echo " "
16281         echo "Checking to see if your struct statfs has f_flags field..." >&4
16282         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
16283         eval $hasfield
16284         ;;
16285 *)      val="$undef"
16286         set d_statfs_f_flags
16287         eval $setvar
16288         ;;
16289 esac
16290 case "$d_statfs_f_flags" in
16291 "$define")      echo "Yes, it does."   ;;
16292 *)              echo "No, it doesn't." ;;
16293 esac
16294
16295 $cat >&4 <<EOM
16296 Checking how to access stdio streams by file descriptor number...
16297 EOM
16298 case "$stdio_stream_array" in
16299 '')     $cat >try.c <<EOCP
16300 #include <stdio.h>
16301 int main() {
16302   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16303     printf("yes\n");
16304 }
16305 EOCP
16306         for s in _iob __iob __sF
16307         do
16308                 set try -DSTDIO_STREAM_ARRAY=$s
16309                 if eval $compile; then
16310                         case "`$run ./try`" in
16311                         yes)    stdio_stream_array=$s; break ;;
16312                         esac
16313                 fi
16314         done
16315         $rm -f try.* try$exe_ext
16316 esac
16317 case "$stdio_stream_array" in
16318 '')     $cat >&4 <<EOM
16319 I can't figure out how to access stdio streams by file descriptor number.
16320 EOM
16321         d_stdio_stream_array="$undef"
16322         ;;
16323 *)      $cat >&4 <<EOM
16324 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16325 EOM
16326         d_stdio_stream_array="$define"
16327         ;;
16328 esac
16329
16330 : see if strcoll exists
16331 set strcoll d_strcoll
16332 eval $inlibc
16333
16334 : check for structure copying
16335 echo " "
16336 echo "Checking to see if your C compiler can copy structs..." >&4
16337 $cat >try.c <<'EOCP'
16338 int main()
16339 {
16340         struct blurfl {
16341                 int dyick;
16342         } foo, bar;
16343
16344         foo = bar;
16345 }
16346 EOCP
16347 if $cc -c try.c >/dev/null 2>&1 ; then
16348         val="$define"
16349         echo "Yup, it can."
16350 else
16351         val="$undef"
16352         echo "Nope, it can't."
16353 fi
16354 set d_strctcpy
16355 eval $setvar
16356 $rm -f try.*
16357
16358 : see if strerror and/or sys_errlist[] exist
16359 echo " "
16360 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16361     if set strerror val -f d_strerror; eval $csym; $val; then
16362                 echo 'strerror() found.' >&4
16363                 d_strerror="$define"
16364                 d_strerrm='strerror(e)'
16365                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16366                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16367                         d_syserrlst="$define"
16368                 else
16369                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16370                         d_syserrlst="$undef"
16371                 fi
16372     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16373                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16374                 echo 'strerror() found in string header.' >&4
16375                 d_strerror="$define"
16376                 d_strerrm='strerror(e)'
16377                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16378                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16379                                 d_syserrlst="$define"
16380                 else
16381                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16382                         d_syserrlst="$undef"
16383                 fi
16384     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16385                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16386                 d_strerror="$undef"
16387                 d_syserrlst="$define"
16388                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16389     else
16390                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16391                 d_strerror="$undef"
16392                 d_syserrlst="$undef"
16393                 d_strerrm='"unknown"'
16394     fi
16395 fi
16396
16397 : see if strerror_r exists
16398 set strerror_r d_strerror_r
16399 eval $inlibc
16400 case "$d_strerror_r" in
16401 "$define")
16402         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16403         case "$d_strerror_r_proto:$usethreads" in
16404         ":define")      d_strerror_r_proto=define
16405                 set d_strerror_r_proto strerror_r $hdrs
16406                 eval $hasproto ;;
16407         *)      ;;
16408         esac
16409         case "$d_strerror_r_proto" in
16410         define)
16411         case "$strerror_r_proto" in
16412         ''|0) try='int strerror_r(int, char*, size_t);'
16413         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16414         esac
16415         case "$strerror_r_proto" in
16416         ''|0) try='int strerror_r(int, char*, int);'
16417         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16418         esac
16419         case "$strerror_r_proto" in
16420         ''|0) try='char* strerror_r(int, char*, size_t);'
16421         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16422         esac
16423         case "$strerror_r_proto" in
16424         ''|0)   d_strerror_r=undef
16425                 strerror_r_proto=0
16426                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16427         * )     case "$strerror_r_proto" in
16428                 REENTRANT_PROTO*) ;;
16429                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16430                 esac
16431                 echo "Prototype: $try" ;;
16432         esac
16433         ;;
16434         *)      case "$usethreads" in
16435                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16436                 esac
16437                 d_strerror_r=undef
16438                 strerror_r_proto=0
16439                 ;;
16440         esac
16441         ;;
16442 *)      strerror_r_proto=0
16443         ;;
16444 esac
16445
16446 : see if strftime exists
16447 set strftime d_strftime
16448 eval $inlibc
16449
16450 : see if strlcat exists
16451 set strlcat d_strlcat
16452 eval $inlibc
16453
16454 : see if strlcpy exists
16455 set strlcpy d_strlcpy
16456 eval $inlibc
16457
16458 : see if strtod exists
16459 set strtod d_strtod
16460 eval $inlibc
16461
16462 : see if strtol exists
16463 set strtol d_strtol
16464 eval $inlibc
16465
16466 : see if strtold exists
16467 set strtold d_strtold
16468 eval $inlibc
16469
16470 : see if strtoll exists
16471 set strtoll d_strtoll
16472 eval $inlibc
16473
16474 case "$d_longlong-$d_strtoll" in
16475 "$define-$define")
16476         $cat <<EOM
16477 Checking whether your strtoll() works okay...
16478 EOM
16479         $cat >try.c <<'EOCP'
16480 #include <errno.h>
16481 #ifdef __hpux
16482 #define strtoll __strtoll
16483 #endif
16484 #ifdef __EMX__
16485 #define strtoll _strtoll
16486 #endif
16487 #include <stdio.h>
16488 extern long long int strtoll(char *s, char **, int); 
16489 static int bad = 0;
16490 int check(char *s, long long ell, int een) {
16491         long long gll;
16492         errno = 0;
16493         gll = strtoll(s, 0, 10);
16494         if (!((gll == ell) && (errno == een)))
16495                 bad++;
16496 }
16497 int main() {
16498         check(" 1",                                      1LL, 0);
16499         check(" 0",                                      0LL, 0);
16500         check("-1",                                     -1LL, 0);
16501         check("-9223372036854775808", -9223372036854775808LL, 0);
16502         check("-9223372036854775808", -9223372036854775808LL, 0);
16503         check(" 9223372036854775807",  9223372036854775807LL, 0);
16504         check("-9223372036854775808", -9223372036854775808LL, 0);
16505         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16506         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16507         if (!bad)
16508                 printf("ok\n");
16509 }
16510 EOCP
16511         set try
16512         if eval $compile; then
16513                 yyy=`$run ./try`
16514                 case "$yyy" in
16515                 ok) echo "Your strtoll() seems to be working okay." ;;
16516                 *) cat <<EOM >&4
16517 Your strtoll() doesn't seem to be working okay.
16518 EOM
16519                    d_strtoll="$undef"
16520                    ;;
16521                 esac
16522         else
16523                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16524                 d_strtoll="$undef"
16525         fi
16526         ;;
16527 esac
16528
16529 : see if strtoq exists
16530 set strtoq d_strtoq
16531 eval $inlibc
16532
16533 : see if strtoul exists
16534 set strtoul d_strtoul
16535 eval $inlibc
16536
16537 case "$d_strtoul" in
16538 "$define")
16539         $cat <<EOM
16540 Checking whether your strtoul() works okay...
16541 EOM
16542         $cat >try.c <<'EOCP'
16543 #include <errno.h>
16544 #include <stdio.h>
16545 extern unsigned long int strtoul(char *s, char **, int); 
16546 static int bad = 0;
16547 void check(char *s, unsigned long eul, int een) {
16548         unsigned long gul;
16549         errno = 0;
16550         gul = strtoul(s, 0, 10);
16551         if (!((gul == eul) && (errno == een)))
16552                 bad++;
16553 }
16554 int main() {
16555         check(" 1", 1L, 0);
16556         check(" 0", 0L, 0);
16557 EOCP
16558         case "$longsize" in
16559         8)
16560             $cat >>try.c <<'EOCP'
16561         check("18446744073709551615", 18446744073709551615UL, 0);
16562         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16563 #if 0 /* strtoul() for /^-/ strings is undefined. */
16564         check("-1", 18446744073709551615UL, 0);
16565         check("-18446744073709551614", 2, 0);
16566         check("-18446744073709551615", 1, 0);
16567         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16568         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16569 #endif
16570 EOCP
16571                 ;;
16572         4)
16573                     $cat >>try.c <<'EOCP'
16574         check("4294967295", 4294967295UL, 0);
16575         check("4294967296", 4294967295UL, ERANGE);
16576 #if 0 /* strtoul() for /^-/ strings is undefined. */
16577         check("-1", 4294967295UL, 0);
16578         check("-4294967294", 2, 0);
16579         check("-4294967295", 1, 0);
16580         check("-4294967296", 4294967295UL, ERANGE);
16581         check("-4294967297", 4294967295UL, ERANGE);
16582 #endif
16583 EOCP
16584                 ;;
16585         *)
16586 : Should we write these tests to be more portable by sprintf-ing
16587 : ~0 and then manipulating that char string as input for strtol?
16588                 ;;
16589         esac
16590         $cat >>try.c <<'EOCP'
16591         if (!bad)
16592                 printf("ok\n");
16593         return 0;
16594 }
16595 EOCP
16596         set try
16597         if eval $compile; then
16598                 case "`$run ./try`" in
16599                 ok) echo "Your strtoul() seems to be working okay." ;;
16600                 *) cat <<EOM >&4
16601 Your strtoul() doesn't seem to be working okay.
16602 EOM
16603                    d_strtoul="$undef"
16604                    ;;
16605                 esac
16606         fi
16607         ;;
16608 esac
16609
16610 : see if strtoull exists
16611 set strtoull d_strtoull
16612 eval $inlibc
16613
16614 case "$d_longlong-$d_strtoull" in
16615 "$define-$define")
16616         $cat <<EOM
16617 Checking whether your strtoull() works okay...
16618 EOM
16619         $cat >try.c <<'EOCP'
16620 #include <errno.h>
16621 #ifdef __hpux
16622 #define strtoull __strtoull
16623 #endif
16624 #include <stdio.h>
16625 extern unsigned long long int strtoull(char *s, char **, int); 
16626 static int bad = 0;
16627 int check(char *s, long long eull, int een) {
16628         long long gull;
16629         errno = 0;
16630         gull = strtoull(s, 0, 10);
16631         if (!((gull == eull) && (errno == een)))
16632                 bad++;
16633 }
16634 int main() {
16635         check(" 1",                                        1LL, 0);
16636         check(" 0",                                        0LL, 0);
16637         check("18446744073709551615",  18446744073709551615ULL, 0);
16638         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16639 #if 0 /* strtoull() for /^-/ strings is undefined. */
16640         check("-1",                    18446744073709551615ULL, 0);
16641         check("-18446744073709551614",                     2LL, 0);
16642         check("-18446744073709551615",                     1LL, 0);
16643         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16644         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16645 #endif
16646         if (!bad)
16647                 printf("ok\n");
16648 }
16649 EOCP
16650         set try
16651         if eval $compile; then
16652                 case "`$run ./try`" in
16653                 ok) echo "Your strtoull() seems to be working okay." ;;
16654                 *) cat <<EOM >&4
16655 Your strtoull() doesn't seem to be working okay.
16656 EOM
16657                    d_strtoull="$undef"
16658                    ;;
16659                 esac
16660         fi
16661         ;;
16662 esac
16663
16664 : see if strtouq exists
16665 set strtouq d_strtouq
16666 eval $inlibc
16667
16668 case "$d_strtouq" in
16669 "$define")
16670         $cat <<EOM
16671 Checking whether your strtouq() works okay...
16672 EOM
16673         $cat >try.c <<'EOCP'
16674 #include <errno.h>
16675 #include <stdio.h>
16676 extern unsigned long long int strtouq(char *s, char **, int); 
16677 static int bad = 0;
16678 void check(char *s, unsigned long long eull, int een) {
16679         unsigned long long gull;
16680         errno = 0;
16681         gull = strtouq(s, 0, 10);
16682         if (!((gull == eull) && (errno == een)))
16683                 bad++;
16684 }
16685 int main() {
16686         check(" 1",                                        1LL, 0);
16687         check(" 0",                                        0LL, 0);
16688         check("18446744073709551615",  18446744073709551615ULL, 0);
16689         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16690 #if 0 /* strtouq() for /^-/ strings is undefined. */
16691         check("-1",                    18446744073709551615ULL, 0);
16692         check("-18446744073709551614",                     2LL, 0);
16693         check("-18446744073709551615",                     1LL, 0);
16694         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16695         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16696 #endif
16697         if (!bad)
16698                 printf("ok\n");
16699         return 0;
16700 }
16701 EOCP
16702         set try
16703         if eval $compile; then
16704                 case "`$run ./try`" in
16705                 ok) echo "Your strtouq() seems to be working okay." ;;
16706                 *) cat <<EOM >&4
16707 Your strtouq() doesn't seem to be working okay.
16708 EOM
16709                    d_strtouq="$undef"
16710                    ;;
16711                 esac
16712         fi
16713         ;;
16714 esac
16715
16716 : see if strxfrm exists
16717 set strxfrm d_strxfrm
16718 eval $inlibc
16719
16720 : see if symlink exists
16721 set symlink d_symlink
16722 eval $inlibc
16723
16724 : see if syscall exists
16725 set syscall d_syscall
16726 eval $inlibc
16727
16728 : see if prototype for syscall is available
16729 echo " "
16730 set d_syscallproto syscall $i_unistd unistd.h
16731 eval $hasproto
16732
16733 : see if sysconf exists
16734 set sysconf d_sysconf
16735 eval $inlibc
16736
16737 : see if system exists
16738 set system d_system
16739 eval $inlibc
16740
16741 : see if tcgetpgrp exists
16742 set tcgetpgrp d_tcgetpgrp
16743 eval $inlibc
16744
16745 : see if tcsetpgrp exists
16746 set tcsetpgrp d_tcsetpgrp
16747 eval $inlibc
16748
16749 : see if prototype for telldir is available
16750 echo " "
16751 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16752 eval $hasproto
16753
16754 : see if time exists
16755 echo " "
16756 if test "X$d_time" = X -o X"$timetype" = X; then
16757     if set time val -f d_time; eval $csym; $val; then
16758                 echo 'time() found.' >&4
16759                 val="$define"
16760                 rp="What is the type returned by time() on this system?"
16761                 set time_t timetype long stdio.h sys/types.h
16762                 eval $typedef_ask
16763     else
16764                 echo 'time() not found, hope that will do.' >&4
16765                 val="$undef"
16766                 timetype='int';
16767     fi
16768     set d_time
16769     eval $setvar
16770 fi
16771
16772 : see if this is a sys/times.h system
16773 set sys/times.h i_systimes
16774 eval $inhdr
16775
16776 : see if times exists
16777 echo " "
16778 if set times val -f d_times; eval $csym; $val; then
16779         echo 'times() found.' >&4
16780         d_times="$define"
16781         inc=''
16782         case "$i_systimes" in
16783         "$define") inc='sys/times.h';;
16784         esac
16785         rp="What is the type returned by times() on this system?"
16786         set clock_t clocktype long stdio.h sys/types.h $inc
16787         eval $typedef_ask
16788 else
16789         echo 'times() NOT found, hope that will do.' >&4
16790         d_times="$undef"
16791         clocktype='int'
16792 fi
16793
16794 : see if tmpnam_r exists
16795 set tmpnam_r d_tmpnam_r
16796 eval $inlibc
16797 case "$d_tmpnam_r" in
16798 "$define")
16799         hdrs="$i_systypes sys/types.h define stdio.h "
16800         case "$d_tmpnam_r_proto:$usethreads" in
16801         ":define")      d_tmpnam_r_proto=define
16802                 set d_tmpnam_r_proto tmpnam_r $hdrs
16803                 eval $hasproto ;;
16804         *)      ;;
16805         esac
16806         case "$d_tmpnam_r_proto" in
16807         define)
16808         case "$tmpnam_r_proto" in
16809         ''|0) try='char* tmpnam_r(char*);'
16810         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16811         esac
16812         case "$tmpnam_r_proto" in
16813         ''|0)   d_tmpnam_r=undef
16814                 tmpnam_r_proto=0
16815                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16816         * )     case "$tmpnam_r_proto" in
16817                 REENTRANT_PROTO*) ;;
16818                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16819                 esac
16820                 echo "Prototype: $try" ;;
16821         esac
16822         ;;
16823         *)      case "$usethreads" in
16824                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16825                 esac
16826                 d_tmpnam_r=undef
16827                 tmpnam_r_proto=0
16828                 ;;
16829         esac
16830         ;;
16831 *)      tmpnam_r_proto=0
16832         ;;
16833 esac
16834
16835 : see if truncate exists
16836 set truncate d_truncate
16837 eval $inlibc
16838
16839 : see if ttyname_r exists
16840 set ttyname_r d_ttyname_r
16841 eval $inlibc
16842 case "$d_ttyname_r" in
16843 "$define")
16844         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16845         case "$d_ttyname_r_proto:$usethreads" in
16846         ":define")      d_ttyname_r_proto=define
16847                 set d_ttyname_r_proto ttyname_r $hdrs
16848                 eval $hasproto ;;
16849         *)      ;;
16850         esac
16851         case "$d_ttyname_r_proto" in
16852         define)
16853         case "$ttyname_r_proto" in
16854         ''|0) try='int ttyname_r(int, char*, size_t);'
16855         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16856         esac
16857         case "$ttyname_r_proto" in
16858         ''|0) try='int ttyname_r(int, char*, int);'
16859         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16860         esac
16861         case "$ttyname_r_proto" in
16862         ''|0) try='char* ttyname_r(int, char*, int);'
16863         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16864         esac
16865         case "$ttyname_r_proto" in
16866         ''|0)   d_ttyname_r=undef
16867                 ttyname_r_proto=0
16868                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16869         * )     case "$ttyname_r_proto" in
16870                 REENTRANT_PROTO*) ;;
16871                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16872                 esac
16873                 echo "Prototype: $try" ;;
16874         esac
16875         ;;
16876         *)      case "$usethreads" in
16877                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16878                 esac
16879                 d_ttyname_r=undef
16880                 ttyname_r_proto=0
16881                 ;;
16882         esac
16883         ;;
16884 *)      ttyname_r_proto=0
16885         ;;
16886 esac
16887
16888 : see if tzname[] exists
16889 echo " "
16890 if set tzname val -a d_tzname; eval $csym; $val; then
16891         val="$define"
16892         echo 'tzname[] found.' >&4
16893 else
16894         val="$undef"
16895         echo 'tzname[] NOT found.' >&4
16896 fi
16897 set d_tzname
16898 eval $setvar
16899
16900 case "$osname" in
16901 next|rhapsody|darwin) multiarch="$define" ;;
16902 esac
16903 case "$multiarch" in
16904 ''|[nN]*) multiarch="$undef" ;;
16905 esac
16906
16907 : check for ordering of bytes in a UV
16908 echo " "
16909 case "$usecrosscompile$multiarch" in
16910 *$define*)
16911         $cat <<EOM
16912 You seem to be either cross-compiling or doing a multiarchitecture build,
16913 skipping the byteorder check.
16914
16915 EOM
16916         byteorder='ffff'
16917         ;;
16918 *)
16919         case "$byteorder" in
16920         '')
16921                 $cat <<'EOM'
16922 In the following, larger digits indicate more significance.  A big-endian
16923 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16924 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16925 machines may have weird orders like 3412.  A Cray will report 87654321,
16926 an Alpha will report 12345678. If the test program works the default is
16927 probably right.
16928 I'm now running the test program...
16929 EOM
16930                 $cat >try.c <<EOCP
16931 #include <stdio.h>
16932 #$i_stdlib I_STDLIB
16933 #ifdef I_STDLIB
16934 #include <stdlib.h>
16935 #endif
16936 #include <sys/types.h>
16937 typedef $uvtype UV;
16938 int main()
16939 {
16940         int i;
16941         union {
16942                 UV l;
16943                 char c[$uvsize];
16944         } u;
16945
16946         if ($uvsize > 4)
16947                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16948         else
16949                 u.l = (UV)0x04030201;
16950         for (i = 0; i < $uvsize; i++)
16951                 printf("%c", u.c[i]+'0');
16952         printf("\n");
16953         exit(0);
16954 }
16955 EOCP
16956                 xxx_prompt=y
16957                 set try
16958                 if eval $compile && ./try > /dev/null; then
16959                         dflt=`$run ./try`
16960                         case "$dflt" in
16961                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16962                                 echo "(The test program ran ok.)"
16963                                 echo "byteorder=$dflt"
16964                                 xxx_prompt=n
16965                         ;;
16966                         ????|????????) echo "(The test program ran ok.)" ;;
16967                         *) echo "(The test program didn't run right for some reason.)" ;;
16968                         esac
16969                 else
16970                         dflt='4321'
16971                         cat <<'EOM'
16972 (I can't seem to compile the test program.  Guessing big-endian...)
16973 EOM
16974                 fi
16975                 case "$xxx_prompt" in
16976                 y)
16977                         rp="What is the order of bytes in $uvtype?"
16978                         . ./myread
16979                         byteorder="$ans"
16980                         ;;
16981                 *)      byteorder=$dflt
16982                         ;;
16983                 esac
16984                 ;;
16985         esac
16986         $rm -f try.c try
16987         ;;
16988 esac
16989
16990
16991 $cat <<EOM
16992
16993 Checking to see whether you can access character data unalignedly...
16994 EOM
16995 case "$d_u32align" in
16996 '')   $cat >try.c <<EOCP
16997 #include <stdio.h>
16998 #$i_stdlib I_STDLIB
16999 #ifdef I_STDLIB
17000 #include <stdlib.h>
17001 #endif
17002 #define U32 $u32type
17003 #define BYTEORDER 0x$byteorder
17004 #define U8 $u8type
17005 #include <signal.h>
17006 #ifdef SIGBUS
17007 $signal_t bletch(s) int s; { exit(4); }
17008 #endif
17009 int main() {
17010 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
17011     U8 buf[8];
17012     U32 *up;
17013     int i;
17014
17015     if (sizeof(U32) != 4) {
17016         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
17017         exit(1);
17018     }
17019
17020     fflush(stdout);
17021
17022 #ifdef SIGBUS
17023     signal(SIGBUS, bletch);
17024 #endif
17025
17026     buf[0] = 0;
17027     buf[1] = 0;
17028     buf[2] = 0;
17029     buf[3] = 1;
17030     buf[4] = 0;
17031     buf[5] = 0;
17032     buf[6] = 0;
17033     buf[7] = 1;
17034
17035     for (i = 0; i < 4; i++) {
17036         up = (U32*)(buf + i);
17037         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
17038                (*up == 1 << (8*(3-i)))  /* little-endian */
17039               )
17040            )
17041         {
17042             printf("read failed (%x)\n", *up);
17043             exit(2);
17044         }
17045     }
17046
17047     /* write test */
17048     for (i = 0; i < 4; i++) {
17049         up = (U32*)(buf + i);
17050         *up = 0xBeef;
17051         if (*up != 0xBeef) {
17052             printf("write failed (%x)\n", *up);
17053             exit(3);
17054         }
17055     }
17056
17057     exit(0);
17058 #else
17059     printf("1\n");
17060     exit(1);
17061 #endif
17062     return 0;
17063 }
17064 EOCP
17065 set try
17066 if eval $compile_ok; then
17067         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
17068         $run ./try 2>&1 >/dev/null
17069         case "$?" in
17070         0)      cat >&4 <<EOM
17071 You can access character data pretty unalignedly.
17072 EOM
17073                 d_u32align="$undef"
17074                 ;;
17075         *)      cat >&4 <<EOM
17076 It seems that you must access character data in an aligned manner.
17077 EOM
17078                 d_u32align="$define"
17079                 ;;
17080         esac
17081 else
17082         rp='Can you access character data at unaligned addresses?'
17083         dflt='n'
17084         . ./myread
17085         case "$ans" in
17086         [yY]*)  d_u32align="$undef"  ;;
17087         *)      d_u32align="$define" ;;
17088         esac
17089 fi
17090 $rm -f core core.try.* try.core
17091 ;;
17092 esac
17093
17094 : see if ualarm exists
17095 set ualarm d_ualarm
17096 eval $inlibc
17097
17098 : see if umask exists
17099 set umask d_umask
17100 eval $inlibc
17101
17102 : see if unordered exists
17103 set unordered d_unordered
17104 eval $inlibc
17105
17106 : see if usleep exists
17107 set usleep d_usleep
17108 eval $inlibc
17109
17110 : see if prototype for usleep is available
17111 echo " "
17112 set d_usleepproto usleep $i_unistd unistd.h
17113 eval $hasproto
17114
17115 : see if ustat exists
17116 set ustat d_ustat
17117 eval $inlibc
17118
17119 : backward compatibility for d_hvfork
17120 if test X$d_hvfork != X; then
17121         d_vfork="$d_hvfork"
17122         d_hvfork=''
17123 fi
17124 : see if there is a vfork
17125 val=''
17126 set vfork val
17127 eval $inlibc
17128
17129 : Ok, but do we want to use it. vfork is reportedly unreliable in 
17130 : perl on Solaris 2.x, and probably elsewhere.
17131 case "$val" in
17132 $define)
17133         echo " "
17134         case "$usevfork" in
17135         false) dflt='n';;
17136         *) dflt='y';;
17137         esac
17138         cat <<'EOM'
17139  
17140 Perl can only use a vfork() that doesn't suffer from strict
17141 restrictions on calling functions or modifying global data in
17142 the child.  For example, glibc-2.1 contains such a vfork()
17143 that is unsuitable.  If your system provides a proper fork()
17144 call, chances are that you do NOT want perl to use vfork().
17145
17146 EOM
17147         rp="Do you still want to use vfork()?"
17148         . ./myread
17149         case "$ans" in
17150         y|Y) ;;
17151         *)
17152                 echo "Ok, we won't use vfork()."
17153                 val="$undef"
17154                 ;;
17155         esac
17156         ;;
17157 esac
17158 set d_vfork
17159 eval $setvar
17160 case "$d_vfork" in
17161 $define) usevfork='true';;
17162 *) usevfork='false';;
17163 esac
17164
17165 : see if closedir exists
17166 set closedir d_closedir
17167 eval $inlibc
17168
17169 case "$d_closedir" in
17170 "$define")
17171         echo " "
17172         echo "Checking whether closedir() returns a status..." >&4
17173         cat > try.c <<EOM
17174 #$i_dirent I_DIRENT             /**/
17175 #$i_sysdir I_SYS_DIR            /**/
17176 #$i_sysndir I_SYS_NDIR          /**/
17177 #$i_systypes I_SYS_TYPES        /**/
17178
17179 #if defined(I_SYS_TYPES)
17180 #include <sys/types.h>
17181 #endif
17182 #if defined(I_DIRENT)
17183 #include <dirent.h>
17184 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17185 #include <sys/dir.h>
17186 #endif
17187 #else
17188 #ifdef I_SYS_NDIR
17189 #include <sys/ndir.h>
17190 #else
17191 #ifdef I_SYS_DIR
17192 #ifdef hp9000s500
17193 #include <ndir.h>       /* may be wrong in the future */
17194 #else
17195 #include <sys/dir.h>
17196 #endif
17197 #endif
17198 #endif
17199 #endif 
17200 int main() { return closedir(opendir(".")); }
17201 EOM
17202         set try
17203         if eval $compile_ok; then
17204                 if $run ./try > /dev/null 2>&1 ; then
17205                         echo "Yes, it does."
17206                         val="$undef"
17207                 else
17208                         echo "No, it doesn't."
17209                         val="$define"
17210                 fi
17211         else
17212                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17213                 val="$define"
17214         fi
17215         ;;
17216 *)
17217         val="$undef";
17218         ;;
17219 esac
17220 set d_void_closedir
17221 eval $setvar
17222 $rm -f try try.*
17223 : see if there is a wait4
17224 set wait4 d_wait4
17225 eval $inlibc
17226
17227 : see if waitpid exists
17228 set waitpid d_waitpid
17229 eval $inlibc
17230
17231 : see if wcstombs exists
17232 set wcstombs d_wcstombs
17233 eval $inlibc
17234
17235 : see if wctomb exists
17236 set wctomb d_wctomb
17237 eval $inlibc
17238
17239 : see if writev exists
17240 set writev d_writev
17241 eval $inlibc
17242
17243 : preserve RCS keywords in files with variable substitution, grrr
17244 Date='$Date'
17245 Id='$Id'
17246 Log='$Log'
17247 RCSfile='$RCSfile'
17248 Revision='$Revision'
17249
17250 : check for alignment requirements
17251 echo " "
17252 case "$usecrosscompile$multiarch" in
17253 *$define*)
17254         $cat <<EOM
17255 You seem to be either cross-compiling or doing a multiarchitecture build,
17256 skipping the memory alignment check.
17257
17258 EOM
17259         case "$alignbytes" in
17260         '') alignbytes=8 ;;
17261         esac
17262         ;;
17263 *)
17264         case "$alignbytes" in
17265         '') echo "Checking alignment constraints..." >&4
17266                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17267                         $cat >try.c <<'EOCP'
17268 typedef long double NV;
17269 EOCP
17270                 else
17271                         $cat >try.c <<'EOCP'
17272 typedef double NV;
17273 EOCP
17274                 fi
17275                 $cat >>try.c <<'EOCP'
17276 #include <stdio.h>
17277 struct foobar {
17278         char foo;
17279         NV bar;
17280 } try_algn;
17281 int main()
17282 {
17283     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17284     return(0);
17285 }
17286 EOCP
17287                 set try
17288                 if eval $compile_ok; then
17289                         dflt=`$run ./try`
17290                 else
17291                         dflt='8'
17292                         echo "(I can't seem to compile the test program...)"
17293                 fi
17294                 ;;
17295         *) dflt="$alignbytes"
17296                 ;;
17297         esac
17298         rp="Doubles must be aligned on a how-many-byte boundary?"
17299         . ./myread
17300         alignbytes="$ans"
17301         $rm -f try.c try
17302         ;;
17303 esac
17304
17305
17306 : set the base revision
17307 baserev=5.0
17308
17309 : how do we concatenate cpp tokens here?
17310 echo " "
17311 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
17312 $cat >cpp_stuff.c <<'EOCP'
17313 #define RCAT(a,b)a/**/b
17314 #define ACAT(a,b)a ## b
17315 RCAT(Rei,ser)
17316 ACAT(Cir,cus)
17317 EOCP
17318 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17319 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17320         echo "Oh!  Smells like ANSI's been here." >&4
17321         echo "We can catify or stringify, separately or together!"
17322         cpp_stuff=42
17323 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17324         echo "Ah, yes!  The good old days!" >&4
17325         echo "However, in the good old days we don't know how to stringify and"
17326         echo "catify at the same time."
17327         cpp_stuff=1
17328 else
17329         $cat >&4 <<EOM
17330 Hmm, I don't seem to be able to concatenate tokens with your cpp.
17331 You're going to have to edit the values of CAT[2-5] in config.h...
17332 EOM
17333         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17334 fi
17335 $rm -f cpp_stuff.*
17336
17337 : see if this is a db.h system
17338 set db.h i_db
17339 eval $inhdr
17340
17341 case "$i_db" in
17342 $define)
17343         : Check db version.
17344         echo " "
17345         echo "Checking Berkeley DB version ..." >&4
17346         $cat >try.c <<EOCP
17347 #$d_const HASCONST
17348 #ifndef HASCONST
17349 #define const
17350 #endif
17351 #include <sys/types.h>
17352 #include <stdio.h>
17353 #$i_stdlib I_STDLIB
17354 #ifdef I_STDLIB
17355 #include <stdlib.h>
17356 #endif
17357 #include <db.h>
17358 int main(int argc, char *argv[])
17359 {
17360 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17361     int Major, Minor, Patch ;
17362     unsigned long Version ;
17363     (void)db_version(&Major, &Minor, &Patch) ;
17364     if (argc == 2) {
17365         printf("%d %d %d %d %d %d\n",
17366                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17367                Major, Minor, Patch);
17368         exit(0);
17369     }
17370     printf("You have Berkeley DB Version 2 or greater.\n");
17371
17372     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17373                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17374     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17375                 Major, Minor, Patch) ;
17376
17377     /* check that db.h & libdb are compatible */
17378     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17379         printf("db.h and libdb are incompatible.\n") ;
17380         exit(3);        
17381     }
17382
17383     printf("db.h and libdb are compatible.\n") ;
17384
17385     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17386                 + DB_VERSION_PATCH ;
17387
17388     /* needs to be >= 2.3.4 */
17389     if (Version < 2003004) {
17390     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17391         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17392         exit(2);        
17393     }
17394
17395     exit(0);
17396 #else
17397 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17398     if (argc == 2) {
17399         printf("1 0 0\n");
17400         exit(0);
17401     }
17402     printf("You have Berkeley DB Version 1.\n");
17403     exit(0);    /* DB version < 2: the coast is clear. */
17404 #else
17405     exit(1);    /* <db.h> not Berkeley DB? */
17406 #endif
17407 #endif
17408 }
17409 EOCP
17410         set try
17411         if eval $compile_ok && $run ./try; then
17412                 echo 'Looks OK.' >&4
17413                 set `$run ./try 1`
17414                 db_version_major=$1
17415                 db_version_minor=$2
17416                 db_version_patch=$3
17417         else
17418                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17419                 i_db=$undef
17420                 case " $libs " in
17421                 *"-ldb "*)
17422                         : Remove db from list of libraries to use
17423                         echo "Removing unusable -ldb from library list" >&4
17424                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17425                         shift
17426                         libs="$*"
17427                         echo "libs = $libs" >&4
17428                         ;;
17429                 esac
17430         fi
17431         $rm -f try.*
17432         ;;
17433 esac
17434
17435 case "$i_db" in
17436 define)
17437         : Check the return type needed for hash 
17438         echo " "
17439         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17440         $cat >try.c <<EOCP
17441 #$d_const HASCONST
17442 #ifndef HASCONST
17443 #define const
17444 #endif
17445 #include <sys/types.h>
17446 #include <db.h>
17447
17448 #ifndef DB_VERSION_MAJOR
17449 u_int32_t hash_cb (ptr, size)
17450 const void *ptr;
17451 size_t size;
17452 {
17453 }
17454 HASHINFO info;
17455 int main()
17456 {
17457         info.hash = hash_cb;
17458 }
17459 #endif
17460 EOCP
17461         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17462                 if $contains warning try.out >>/dev/null 2>&1 ; then
17463                         db_hashtype='int'
17464                 else
17465                         db_hashtype='u_int32_t'
17466                 fi
17467         else
17468                 : XXX Maybe we should just give up here.
17469                 db_hashtype=u_int32_t
17470                 $cat try.out >&4
17471                 echo "Help:  I can't seem to compile the db test program." >&4
17472                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17473         fi
17474         $rm -f try.*
17475         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17476         ;;
17477 *)      db_hashtype=u_int32_t
17478         ;;
17479 esac
17480 case "$i_db" in
17481 define)
17482         : Check the return type needed for prefix 
17483         echo " "
17484         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17485         cat >try.c <<EOCP
17486 #$d_const HASCONST
17487 #ifndef HASCONST
17488 #define const
17489 #endif
17490 #include <sys/types.h>
17491 #include <db.h>
17492
17493 #ifndef DB_VERSION_MAJOR
17494 size_t prefix_cb (key1, key2)
17495 const DBT *key1;
17496 const DBT *key2;
17497 {
17498 }
17499 BTREEINFO info;
17500 int main()
17501 {
17502         info.prefix = prefix_cb;
17503 }
17504 #endif
17505 EOCP
17506         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17507                 if $contains warning try.out >>/dev/null 2>&1 ; then
17508                         db_prefixtype='int'
17509                 else
17510                         db_prefixtype='size_t'
17511                 fi
17512         else
17513                 db_prefixtype='size_t'
17514                 : XXX Maybe we should just give up here.
17515                 $cat try.out >&4
17516                 echo "Help:  I can't seem to compile the db test program." >&4
17517                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17518         fi
17519         $rm -f try.*
17520         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17521         ;;
17522 *)      db_prefixtype='size_t'
17523         ;;
17524 esac
17525
17526
17527 : How can we generate normalized random numbers ?
17528 echo " "
17529 echo "Looking for a random number function..." >&4
17530 case "$randfunc" in
17531 '')
17532         if set drand48 val -f; eval $csym; $val; then
17533                 dflt="drand48"
17534                 echo "Good, found drand48()." >&4
17535         elif set random val -f; eval $csym; $val; then
17536                 dflt="random"
17537                 echo "OK, found random()." >&4
17538         else
17539                 dflt="rand"
17540                 echo "Yick, looks like I have to use rand()." >&4
17541         fi
17542         echo " "
17543         ;;
17544 *)
17545         dflt="$randfunc"
17546         ;;
17547 esac
17548 cont=true
17549
17550 case "$ccflags" in
17551 *-Dmy_rand=*|*-Dmy_srand=*)
17552         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17553         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17554         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17555         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17556         ;;
17557 esac
17558
17559 while $test "$cont"; do
17560         rp="Use which function to generate random numbers?"
17561         . ./myread
17562         if $test "$ans" = "$dflt"; then
17563                 : null
17564         else
17565                 randbits=''
17566         fi
17567         randfunc="$ans"
17568         if set $ans val -f; eval $csym; $val; then
17569                 cont=''
17570         else
17571                 dflt=y
17572                 rp="I cannot find function $ans. Use that name anyway?"
17573                 . ./myread
17574                 dflt=rand
17575                 case "$ans" in
17576                         [yY]*) cont='';;
17577                 esac
17578         fi
17579         case "$cont" in
17580         '')
17581                 case "$randfunc" in
17582                 drand48)
17583                         drand01="drand48()"
17584                         seedfunc="srand48"
17585                         randbits=48
17586                         randseedtype=long
17587                         ;;
17588                 rand|random)
17589                         case "$randbits" in
17590                         '')
17591 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17592                                 $cat >try.c <<EOCP
17593 #$i_unistd I_UNISTD
17594 #$i_stdlib I_STDLIB
17595 #include <stdio.h>
17596 #ifdef I_UNISTD
17597 #  include <unistd.h>
17598 #endif
17599 #ifdef I_STDLIB
17600 #  include <stdlib.h>
17601 #endif
17602 int main()
17603 {
17604         register int i;
17605         register unsigned long tmp;
17606         register unsigned long max = 0L;
17607
17608         for (i = 1000; i; i--) {
17609                 tmp = (unsigned long) $randfunc();
17610                 if (tmp > max) max = tmp;
17611         }
17612         for (i = 0; max; i++)
17613                 max /= 2;
17614         printf("%d\n",i);
17615 }
17616 EOCP
17617                                 set try
17618                                 if eval $compile_ok; then
17619                                         dflt=`try`
17620                                 else
17621                                         dflt='?'
17622                                         echo "(I can't seem to compile the test program...)"
17623                                 fi
17624                                 ;;
17625                         *)
17626                                 dflt="$randbits"
17627                                 ;;
17628                         esac
17629                         rp="How many bits does your $randfunc() function produce?"
17630                         . ./myread
17631                         randbits="$ans"
17632                         $rm -f try.c try
17633                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17634                         seedfunc="s$randfunc"
17635                         randseedtype=unsigned
17636                         ;;
17637                 *)
17638                         dflt="31"
17639                         rp="How many bits does your $randfunc() function produce?"
17640                         . ./myread
17641                         randbits="$ans"
17642                         seedfunc="s$randfunc"
17643                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17644                         if set $seedfunc val -f; eval $csym; $val; then
17645                                 echo "(Using $seedfunc() to seed random generator)"
17646                         else
17647                                 echo "(Warning: no $seedfunc() to seed random generator)"
17648                                 seedfunc=rand
17649                         fi
17650                         randseedtype=unsigned
17651                         ;;
17652                 esac
17653                 ;;
17654         esac
17655 done
17656
17657 echo " "
17658 echo "Determining whether or not we are on an EBCDIC system..." >&4
17659 $cat >try.c <<'EOM'
17660 int main()
17661 {
17662   if ('M'==0xd4) return 0;
17663   return 1;
17664 }
17665 EOM
17666
17667 val=$undef
17668 set try
17669 if eval $compile_ok; then
17670         if $run ./try; then
17671                 echo "You seem to speak EBCDIC." >&4
17672                 val="$define"
17673         else
17674                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17675         fi
17676 else
17677         echo "I'm unable to compile the test program." >&4
17678         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17679 fi
17680 $rm -f try try.*
17681 set ebcdic
17682 eval $setvar
17683
17684 echo " "
17685 $cat >&4 <<EOM
17686 Checking how to flush all pending stdio output...
17687 EOM
17688 # I only know how to find the first 32 possibly open files on SunOS.
17689 # See also hints/sunos_4_1.sh and util.c  --AD
17690 case "$osname" in
17691 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17692 esac
17693 $cat >>try.c <<EOCP
17694 #include <stdio.h>
17695 #$i_stdlib I_STDLIB
17696 #ifdef I_STDLIB
17697 #include <stdlib.h>
17698 #endif
17699 #$i_unistd I_UNISTD
17700 #ifdef I_UNISTD
17701 # include <unistd.h>
17702 #endif
17703 #$d_sysconf HAS_SYSCONF
17704 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17705 #ifdef HAS_STDIO_STREAM_ARRAY
17706 # define STDIO_STREAM_ARRAY $stdio_stream_array
17707 #endif
17708 int main() {
17709   FILE* p;
17710   unlink("try.out");
17711   p = fopen("try.out", "w");
17712 #ifdef TRY_FPUTC
17713   fputc('x', p);
17714 #else
17715 # ifdef TRY_FPRINTF
17716   fprintf(p, "x");
17717 # endif
17718 #endif
17719 #ifdef TRY_FFLUSH_NULL
17720   fflush(NULL);
17721 #endif
17722 #ifdef TRY_FFLUSH_ALL
17723   {
17724     long open_max = -1;
17725 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17726     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17727 # else
17728 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17729     open_max = sysconf(_SC_OPEN_MAX);
17730 #  else
17731 #   ifdef FOPEN_MAX
17732     open_max = FOPEN_MAX;
17733 #   else
17734 #    ifdef OPEN_MAX
17735     open_max = OPEN_MAX;
17736 #    else
17737 #     ifdef _NFILE
17738     open_max = _NFILE;
17739 #     endif
17740 #    endif
17741 #   endif
17742 #  endif
17743 # endif 
17744 # ifdef HAS_STDIO_STREAM_ARRAY
17745     if (open_max > 0) {
17746       long i;
17747       for (i = 0; i < open_max; i++)
17748             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17749                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17750                 STDIO_STREAM_ARRAY[i]._flag)
17751                 fflush(&STDIO_STREAM_ARRAY[i]);
17752     }   
17753   }
17754 # endif
17755 #endif
17756   _exit(42);
17757 }
17758 EOCP
17759 : first we have to find out how _not_ to flush
17760 $to try.c
17761 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17762     output=''
17763     set try -DTRY_FPUTC
17764     if eval $compile; then
17765             $run ./try 2>/dev/null
17766             code="$?"
17767             $from try.out
17768             if $test ! -s try.out -a "X$code" = X42; then
17769                 output=-DTRY_FPUTC
17770             fi
17771     fi
17772     case "$output" in
17773     '')
17774             set try -DTRY_FPRINTF
17775             if eval $compile; then
17776                     $run ./try 2>/dev/null
17777                     code="$?"
17778                     $from try.out
17779                     if $test ! -s try.out -a "X$code" = X42; then
17780                         output=-DTRY_FPRINTF
17781                     fi
17782             fi
17783         ;;
17784     esac
17785 fi
17786 : check for fflush NULL behaviour
17787 case "$fflushNULL" in
17788 '')     set try -DTRY_FFLUSH_NULL $output
17789         if eval $compile; then
17790                 $run ./try 2>/dev/null
17791                 code="$?"
17792                 $from try.out
17793                 if $test -s try.out -a "X$code" = X42; then
17794                         fflushNULL="`$cat try.out`"
17795                 else
17796                         if $test "X$code" != X42; then
17797                                 $cat >&4 <<EOM
17798 (If this test failed, don't worry, we'll try another method shortly.)
17799 EOM
17800                         fi
17801                 fi
17802         fi
17803         $rm -f core try.core core.try.*
17804         case "$fflushNULL" in
17805         x)      $cat >&4 <<EOM
17806 Your fflush(NULL) works okay for output streams.
17807 Let's see if it clobbers input pipes...
17808 EOM
17809 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17810 # bug that improperly flushes the input end of pipes.  So we avoid the
17811 # autoflush on fork/system/exec support for now. :-(
17812 $cat >tryp.c <<EOCP
17813 #include <stdio.h>
17814 int
17815 main(int argc, char **argv)
17816 {
17817     char buf[1024];
17818     int i;
17819     char *bp = buf;
17820     while (1) {
17821         while ((i = getc(stdin)) != -1
17822                && (*bp++ = i) != '\n'
17823                && bp < &buf[1024])
17824         /* DO NOTHING */ ;
17825         *bp = '\0';
17826         fprintf(stdout, "%s", buf);
17827         fflush(NULL);
17828         if (i == -1)
17829             return 0;
17830         bp = buf;
17831     }
17832 }
17833 EOCP
17834                 fflushNULL="$define"
17835                 set tryp
17836                 if eval $compile; then
17837                     $rm -f tryp.out
17838                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17839                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17840                        $cat >&4 <<EOM
17841 fflush(NULL) seems to behave okay with input streams.
17842 EOM
17843                         fflushNULL="$define"
17844                     else
17845                         $cat >&4 <<EOM
17846 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17847 EOM
17848                         fflushNULL="$undef"
17849                     fi
17850                 fi
17851                 $rm -f core tryp.c tryp.core core.tryp.*
17852                 ;;
17853         '')     $cat >&4 <<EOM
17854 Your fflush(NULL) isn't working (contrary to ANSI C).
17855 EOM
17856                 fflushNULL="$undef"
17857                 ;;
17858         *)      $cat >&4 <<EOM
17859 Cannot figure out whether your fflush(NULL) works or not.
17860 I'm assuming it doesn't (contrary to ANSI C).
17861 EOM
17862                 fflushNULL="$undef"
17863                 ;;
17864         esac
17865         ;;
17866 $define|true|[yY]*)
17867         fflushNULL="$define"
17868         ;;
17869 *)
17870         fflushNULL="$undef"
17871         ;;
17872 esac
17873 : check explicit looping only if NULL did not work, and if the pipe
17874 : bug does not show up on an explicit flush too
17875 case "$fflushNULL" in
17876 "$undef")
17877         $cat >tryp.c <<EOCP
17878 #include <stdio.h>
17879 int
17880 main(int argc, char **argv)
17881 {
17882     char buf[1024];
17883     int i;
17884     char *bp = buf;
17885     while (1) {
17886         while ((i = getc(stdin)) != -1
17887                && (*bp++ = i) != '\n'
17888                && bp < &buf[1024])
17889         /* DO NOTHING */ ;
17890         *bp = '\0';
17891         fprintf(stdout, "%s", buf);
17892         fflush(stdin);
17893         if (i == -1)
17894             return 0;
17895         bp = buf;
17896     }
17897 }
17898 EOCP
17899         set tryp
17900         if eval $compile; then
17901             $rm -f tryp.out
17902             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17903             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17904                $cat >&4 <<EOM
17905 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17906 EOM
17907                 : now check for fflushall behaviour
17908                 case "$fflushall" in
17909                 '')     set try -DTRY_FFLUSH_ALL $output
17910                         if eval $compile; then
17911                                 $cat >&4 <<EOM
17912 (Now testing the other method--but note that this also may fail.)
17913 EOM
17914                                 $run ./try 2>/dev/null
17915                                 code=$?
17916                                 $from try.out
17917                                 if $test -s try.out -a "X$code" = X42; then
17918                                         fflushall="`$cat try.out`"
17919                                 fi
17920                         fi
17921                         $rm -f core try.core core.try.*
17922                         case "$fflushall" in
17923                         x)      $cat >&4 <<EOM
17924 Whew. Flushing explicitly all the stdio streams works.
17925 EOM
17926                                 fflushall="$define"
17927                                 ;;
17928                         '')     $cat >&4 <<EOM
17929 Sigh. Flushing explicitly all the stdio streams doesn't work.
17930 EOM
17931                                 fflushall="$undef"
17932                                 ;;
17933                         *)      $cat >&4 <<EOM
17934 Cannot figure out whether flushing stdio streams explicitly works or not.
17935 I'm assuming it doesn't.
17936 EOM
17937                                 fflushall="$undef"
17938                                 ;;
17939                         esac
17940                         ;;
17941                 "$define"|true|[yY]*)
17942                         fflushall="$define"
17943                         ;;
17944                 *)
17945                         fflushall="$undef"
17946                         ;;
17947                 esac
17948             else
17949                 $cat >&4 <<EOM
17950 All is futile.  Even fflush(stdin) clobbers input pipes!
17951 EOM
17952                 fflushall="$undef"
17953             fi
17954         else
17955             fflushall="$undef"
17956         fi
17957         $rm -f core tryp.c tryp.core core.tryp.*
17958         ;;
17959 *)      fflushall="$undef"
17960         ;;
17961 esac
17962
17963 case "$fflushNULL$fflushall" in
17964 undefundef)
17965         $cat <<EOM
17966 OK, I give up.  I cannot figure out how to flush pending stdio output.
17967 We won't be flushing handles at all before fork/exec/popen.
17968 EOM
17969         ;;
17970 esac
17971 $rm -f try.* try$exe_ext
17972
17973 : Store the full pathname to the ar program for use in the C program
17974 : Respect a hint or command line value for full_ar.
17975 case "$full_ar" in
17976 '') full_ar=$ar ;;
17977 esac
17978
17979 : Store the full pathname to the sed program for use in the C program
17980 full_sed=$sed
17981
17982 : see what type gids are declared as in the kernel
17983 echo " "
17984 echo "Looking for the type for group ids returned by getgid()."
17985 set gid_t gidtype xxx stdio.h sys/types.h
17986 eval $typedef
17987 case "$gidtype" in
17988 xxx)
17989         xxx=`./findhdr sys/user.h`
17990         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17991         case $1 in
17992         unsigned) dflt="$1 $2" ;;
17993         *) dflt="$1" ;;
17994         esac
17995         ;;
17996 *) dflt="$gidtype";;
17997 esac
17998 case "$gidtype" in
17999 gid_t) echo "gid_t found." ;;
18000 *)      rp="What is the type for group ids returned by getgid()?"
18001         . ./myread
18002         gidtype="$ans"
18003         ;;
18004 esac
18005
18006 echo " "
18007 case "$gidtype" in
18008 *_t) zzz="$gidtype"     ;;
18009 *)   zzz="gid"          ;;
18010 esac
18011 echo "Checking the size of $zzz..." >&4 
18012 cat > try.c <<EOCP
18013 #include <sys/types.h>
18014 #include <stdio.h>
18015 #$i_stdlib I_STDLIB
18016 #ifdef I_STDLIB
18017 #include <stdlib.h>
18018 #endif
18019 int main() {
18020     printf("%d\n", (int)sizeof($gidtype));
18021     exit(0);
18022 }
18023 EOCP
18024 set try
18025 if eval $compile_ok; then
18026         yyy=`$run ./try`
18027         case "$yyy" in
18028         '')     gidsize=4
18029                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
18030                 ;;
18031         *)      gidsize=$yyy
18032                 echo "Your $zzz is $gidsize bytes long."
18033                 ;;
18034         esac
18035 else
18036         gidsize=4
18037         echo "(I can't compile the test program--guessing $gidsize.)" >&4
18038 fi
18039
18040
18041 echo " "
18042 case "$gidtype" in
18043 *_t) zzz="$gidtype"     ;;
18044 *)   zzz="gid"          ;;
18045 esac
18046 echo "Checking the sign of $zzz..." >&4 
18047 cat > try.c <<EOCP
18048 #include <sys/types.h>
18049 #include <stdio.h>
18050 int main() {
18051         $gidtype foo = -1;
18052         if (foo < 0)
18053                 printf("-1\n");
18054         else
18055                 printf("1\n");
18056 }
18057 EOCP
18058 set try
18059 if eval $compile; then
18060         yyy=`$run ./try`
18061         case "$yyy" in
18062         '')     gidsign=1
18063                 echo "(I can't execute the test program--guessing unsigned.)" >&4
18064                 ;;
18065         *)      gidsign=$yyy
18066                 case "$gidsign" in
18067                  1) echo "Your $zzz is unsigned." ;;
18068                 -1) echo "Your $zzz is signed."   ;;
18069                 esac
18070                 ;;
18071         esac
18072 else
18073         gidsign=1
18074         echo "(I can't compile the test program--guessing unsigned.)" >&4
18075 fi
18076
18077
18078 echo " "
18079
18080 if $test X"$quadtype" != X; then
18081
18082 echo "Checking how to print 64-bit integers..." >&4
18083
18084 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18085         $cat >try.c <<'EOCP'
18086 #include <sys/types.h>
18087 #include <stdio.h>
18088 int main() {
18089   int q = 12345678901;
18090   printf("%ld\n", q);
18091 }
18092 EOCP
18093         set try
18094         if eval $compile; then
18095                 yyy=`$run ./try`
18096                 case "$yyy" in
18097                 12345678901)
18098                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18099                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18100                         echo "We will use %d."
18101                         ;;
18102                 esac
18103         fi
18104 fi
18105
18106 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18107         $cat >try.c <<'EOCP'
18108 #include <sys/types.h>
18109 #include <stdio.h>
18110 int main() {
18111   long q = 12345678901;
18112   printf("%ld\n", q);
18113 }
18114 EOCP
18115         set try
18116         if eval $compile; then
18117                 yyy=`$run ./try`
18118                 case "$yyy" in
18119                 12345678901)
18120                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18121                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18122                         echo "We will use %ld."
18123                         ;;
18124                 esac
18125         fi
18126 fi
18127
18128 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18129         $cat >try.c <<'EOCP'
18130 #include <sys/types.h>
18131 #include <inttypes.h>
18132 #include <stdio.h>
18133 int main() {
18134   int64_t q = 12345678901;
18135   printf("%" PRId64 "\n", q);
18136 }
18137 EOCP
18138         set try
18139         if eval $compile; then
18140                 yyy=`$run ./try`
18141                 case "$yyy" in
18142                 12345678901)
18143                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18144                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18145                         echo "We will use the C9X style."
18146                         ;;
18147                 esac
18148         fi
18149 fi
18150
18151 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18152         $cat >try.c <<EOCP
18153 #include <sys/types.h>
18154 #include <stdio.h>
18155 int main() {
18156   $quadtype q = 12345678901;
18157   printf("%Ld\n", q);
18158 }
18159 EOCP
18160         set try
18161         if eval $compile; then
18162                 yyy=`$run ./try`
18163                 case "$yyy" in
18164                 12345678901)
18165                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18166                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18167                         echo "We will use %Ld."
18168                         ;;
18169                 esac
18170         fi
18171 fi
18172
18173 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18174         $cat >try.c <<'EOCP'
18175 #include <sys/types.h>
18176 #include <stdio.h>
18177 int main() {
18178   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18179   printf("%lld\n", q);
18180 }
18181 EOCP
18182         set try
18183         if eval $compile; then
18184                 yyy=`$run ./try`
18185                 case "$yyy" in
18186                 12345678901)
18187                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18188                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18189                         echo "We will use the %lld style."
18190                         ;;
18191                 esac
18192         fi
18193 fi
18194
18195 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18196         $cat >try.c <<EOCP
18197 #include <sys/types.h>
18198 #include <stdio.h>
18199 int main() {
18200   $quadtype q = 12345678901;
18201   printf("%qd\n", q);
18202 }
18203 EOCP
18204         set try
18205         if eval $compile; then
18206                 yyy=`$run ./try`
18207                 case "$yyy" in
18208                 12345678901)
18209                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18210                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18211                         echo "We will use %qd."
18212                         ;;
18213                 esac
18214         fi
18215 fi
18216
18217 if $test X"$sPRId64" = X; then
18218         echo "Cannot figure out how to print 64-bit integers." >&4
18219 fi
18220
18221 $rm -f try try.*
18222
18223 fi
18224
18225 case "$sPRId64" in
18226 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18227         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18228         ;;
18229 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18230         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18231         ;;
18232 esac
18233
18234
18235 echo " "
18236 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18237
18238 if $test X"$ivsize" = X8; then
18239         ivdformat="$sPRId64"
18240         uvuformat="$sPRIu64"
18241         uvoformat="$sPRIo64"
18242         uvxformat="$sPRIx64"
18243         uvXUformat="$sPRIXU64"
18244 else
18245         if $test X"$ivsize" = X"$longsize"; then
18246                 ivdformat='"ld"'
18247                 uvuformat='"lu"'
18248                 uvoformat='"lo"'
18249                 uvxformat='"lx"'
18250                 uvXUformat='"lX"'
18251         else
18252                 if $test X"$ivsize" = X"$intsize"; then
18253                         ivdformat='"d"'
18254                         uvuformat='"u"'
18255                         uvoformat='"o"'
18256                         uvxformat='"x"'
18257                         uvXUformat='"X"'
18258                 else
18259                         : far out
18260                         if $test X"$ivsize" = X"$shortsize"; then
18261                                 ivdformat='"hd"'
18262                                 uvuformat='"hu"'
18263                                 uvoformat='"ho"'
18264                                 uvxformat='"hx"'
18265                                 uvXUformat='"hX"'
18266                         fi
18267                 fi
18268         fi
18269 fi
18270
18271 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18272         nveformat="$sPRIeldbl"
18273         nvfformat="$sPRIfldbl"
18274         nvgformat="$sPRIgldbl"
18275         nvEUformat="$sPRIEUldbl"
18276         nvFUformat="$sPRIFUldbl"
18277         nvGUformat="$sPRIGUldbl"
18278 else
18279         nveformat='"e"'
18280         nvfformat='"f"'
18281         nvgformat='"g"'
18282         nvEUformat='"E"'
18283         nvFUformat='"F"'
18284         nvGUformat='"G"'
18285 fi
18286
18287 case "$ivdformat" in
18288 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18289     exit 1
18290     ;;
18291 esac
18292
18293
18294 echo " "
18295 $echo "Checking the format string to be used for gids..." >&4
18296
18297 case "$gidsign" in
18298 -1)     if $test X"$gidsize" = X"$ivsize"; then
18299                 gidformat="$ivdformat"
18300         else
18301                 if $test X"$gidsize" = X"$longsize"; then
18302                         gidformat='"ld"'
18303                 else
18304                         if $test X"$gidsize" = X"$intsize"; then
18305                                 gidformat='"d"'
18306                         else
18307                                 if $test X"$gidsize" = X"$shortsize"; then
18308                                         gidformat='"hd"'
18309                                 fi
18310                         fi
18311                 fi
18312         fi
18313         ;;
18314 *)      if $test X"$gidsize" = X"$uvsize"; then
18315                 gidformat="$uvuformat"
18316         else
18317                 if $test X"$gidsize" = X"$longsize"; then
18318                         gidformat='"lu"'
18319                 else
18320                         if $test X"$gidsize" = X"$intsize"; then
18321                                 gidformat='"u"'
18322                         else
18323                                 if $test X"$gidsize" = X"$shortsize"; then
18324                                         gidformat='"hu"'
18325                                 fi
18326                         fi
18327                 fi
18328         fi
18329         ;;
18330 esac
18331
18332 : see if getgroups exists
18333 set getgroups d_getgrps
18334 eval $inlibc
18335
18336 : see if setgroups exists
18337 set setgroups d_setgrps
18338 eval $inlibc
18339
18340
18341 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18342 echo " "
18343 case "$d_getgrps$d_setgrps" in
18344 *define*)
18345         case "$groupstype" in
18346         '') dflt="$gidtype" ;;
18347         *)  dflt="$groupstype" ;;
18348         esac
18349         $cat <<EOM
18350 What type of pointer is the second argument to getgroups() and setgroups()?
18351 Usually this is the same as group ids, $gidtype, but not always.
18352
18353 EOM
18354         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18355         . ./myread
18356         groupstype="$ans"
18357         ;;
18358 *)  groupstype="$gidtype";;
18359 esac
18360
18361 echo " "
18362 echo "Checking if your $make program sets \$(MAKE)..." >&4
18363 case "$make_set_make" in
18364 '')
18365         $sed 's/^X //' > testmake.mak << 'EOF'
18366 Xall:
18367 X       @echo 'maketemp="$(MAKE)"'
18368 EOF
18369         case "`$make -f testmake.mak 2>/dev/null`" in
18370         *maketemp=*) make_set_make='#' ;;
18371         *)      make_set_make="MAKE=$make" ;;
18372         esac
18373         $rm -f testmake.mak
18374         ;;
18375 esac
18376 case "$make_set_make" in
18377 '#') echo "Yup, it does.";;
18378 *) echo "Nope, it doesn't.";;
18379 esac
18380
18381 : see what type is used for mode_t
18382 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18383 set mode_t modetype int stdio.h sys/types.h
18384 eval $typedef_ask
18385
18386 : see if stdarg is available
18387 echo " "
18388 if $test `./findhdr stdarg.h`; then
18389         echo "<stdarg.h> found." >&4
18390         valstd="$define"
18391 else
18392         echo "<stdarg.h> NOT found." >&4
18393         valstd="$undef"
18394 fi
18395
18396 : see if varags is available
18397 echo " "
18398 if $test `./findhdr varargs.h`; then
18399         echo "<varargs.h> found." >&4
18400 else
18401         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18402 fi
18403
18404 : set up the varargs testing programs
18405 $cat > varargs.c <<EOP
18406 #ifdef I_STDARG
18407 #include <stdarg.h>
18408 #endif
18409 #ifdef I_VARARGS
18410 #include <varargs.h>
18411 #endif
18412
18413 #ifdef I_STDARG
18414 int f(char *p, ...)
18415 #else
18416 int f(va_alist)
18417 va_dcl
18418 #endif
18419 {
18420         va_list ap;
18421 #ifndef I_STDARG
18422         char *p;
18423 #endif
18424 #ifdef I_STDARG
18425         va_start(ap,p);
18426 #else
18427         va_start(ap);
18428         p = va_arg(ap, char *);
18429 #endif
18430         va_end(ap);
18431 }
18432 EOP
18433 $cat > varargs <<EOP
18434 $startsh
18435 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18436         echo "true"
18437 else
18438         echo "false"
18439 fi
18440 $rm -f varargs$_o
18441 EOP
18442 chmod +x varargs
18443
18444 : now check which varargs header should be included
18445 echo " "
18446 i_varhdr=''
18447 case "$valstd" in
18448 "$define")
18449         if `./varargs I_STDARG`; then
18450                 val='stdarg.h'
18451         elif `./varargs I_VARARGS`; then
18452                 val='varargs.h'
18453         fi
18454         ;;
18455 *)
18456         if `./varargs I_VARARGS`; then
18457                 val='varargs.h'
18458         fi
18459         ;;
18460 esac
18461 case "$val" in
18462 '')
18463 echo "I could not find the definition for va_dcl... You have problems..." >&4
18464         val="$undef"; set i_stdarg; eval $setvar
18465         val="$undef"; set i_varargs; eval $setvar
18466         ;;
18467 *) 
18468         set i_varhdr
18469         eval $setvar
18470         case "$i_varhdr" in
18471         stdarg.h)
18472                 val="$define"; set i_stdarg; eval $setvar
18473                 val="$undef"; set i_varargs; eval $setvar
18474                 ;;
18475         varargs.h)
18476                 val="$undef"; set i_stdarg; eval $setvar
18477                 val="$define"; set i_varargs; eval $setvar
18478                 ;;
18479         esac
18480         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18481 esac
18482 $rm -f varargs*
18483
18484 : see if we need va_copy
18485 echo " "
18486 case "$i_stdarg" in
18487 "$define")
18488         $cat >try.c <<EOCP
18489 #include <stdarg.h>
18490 #include <stdio.h>
18491 #$i_stdlib I_STDLIB
18492 #ifdef I_STDLIB
18493 #include <stdlib.h>
18494 #endif
18495 #include <signal.h>
18496
18497 int
18498 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18499 {
18500   return vfprintf(f, fmt, *valp);
18501 }
18502  
18503 int    
18504 myvfprintf(FILE *f, const  char *fmt, va_list val)
18505 {
18506   return ivfprintf(f, fmt, &val);
18507 }
18508       
18509 int
18510 myprintf(char *fmt, ...) 
18511 {
18512   va_list val;
18513   va_start(val, fmt);
18514   return myvfprintf(stdout, fmt, val); 
18515 }         
18516
18517 int
18518 main(int ac, char **av)
18519 {
18520   signal(SIGSEGV, exit);
18521
18522   myprintf("%s%cs all right, then\n", "that", '\'');                            
18523   exit(0);      
18524 }
18525 EOCP
18526         set try
18527         if eval $compile && $run ./try 2>&1 >/dev/null; then
18528                 case "`$run ./try`" in
18529                 "that's all right, then")
18530                         okay=yes
18531                         ;;
18532                 esac
18533         fi
18534         case "$okay" in
18535         yes)    echo "It seems that you don't need va_copy()." >&4
18536                 need_va_copy="$undef"
18537                 ;;
18538         *)      echo "It seems that va_copy() or similar will be needed." >&4
18539                 need_va_copy="$define"
18540                 ;;
18541         esac
18542         $rm -f try.* core core.* *.core *.core.*
18543         ;;
18544 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18545         ;;
18546 esac
18547
18548 : see what type is used for size_t
18549 rp="What is the type used for the length parameter for string functions?"
18550 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18551 eval $typedef_ask
18552
18553 : check for type of arguments to gethostbyaddr. 
18554 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18555         case "$d_gethbyaddr" in
18556         $define)
18557                 $cat <<EOM
18558
18559 Checking to see what type of arguments are accepted by gethostbyaddr().
18560 EOM
18561                 hdrs="$define sys/types.h
18562                         $d_socket sys/socket.h 
18563                         $i_niin netinet/in.h 
18564                         $i_netdb netdb.h
18565                         $i_unistd unistd.h"
18566                 : The first arg can 'char *' or 'void *'
18567                 : The second arg is some of integral type
18568                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18569                         for yyy in size_t long int; do
18570                                 case "$netdb_host_type" in
18571                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18572                                         if ./protochk "$try" $hdrs; then
18573                                                 echo "Your system accepts $xxx for the first arg."
18574                                                 echo "...and $yyy for the second arg."
18575                                                 netdb_host_type="$xxx"
18576                                                 netdb_hlen_type="$yyy"
18577                                         fi
18578                                         ;;
18579                                 esac
18580                         done
18581                 done
18582                 : In case none of those worked, prompt the user.
18583                 case "$netdb_host_type" in
18584                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18585                         dflt='char *'
18586                         . ./myread
18587                         netdb_host_type=$ans
18588                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18589                         dflt="$sizetype"
18590                         . ./myread
18591                         netdb_hlen_type=$ans
18592                         ;;
18593                 esac
18594                 ;;
18595         *)      : no gethostbyaddr, so pick harmless defaults
18596                 netdb_host_type='char *'
18597                 netdb_hlen_type="$sizetype"
18598                 ;;
18599         esac
18600         # Remove the "const" if needed. -- but then we'll have a 
18601         # prototype clash!
18602         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18603 fi
18604
18605 : check for type of argument to gethostbyname. 
18606 if test "X$netdb_name_type" = X ; then
18607         case "$d_gethbyname" in
18608         $define)
18609                 $cat <<EOM
18610
18611 Checking to see what type of argument is accepted by gethostbyname().
18612 EOM
18613                 hdrs="$define sys/types.h
18614                         $d_socket sys/socket.h 
18615                         $i_niin netinet/in.h 
18616                         $i_netdb netdb.h
18617                         $i_unistd unistd.h"
18618                 for xxx in "const char *" "char *"; do
18619                         case "$netdb_name_type" in
18620                         '')     try="extern struct hostent *gethostbyname($xxx);"
18621                                 if ./protochk "$try" $hdrs; then
18622                                         echo "Your system accepts $xxx."
18623                                         netdb_name_type="$xxx"
18624                                 fi
18625                                 ;;
18626                         esac
18627                 done
18628                 : In case none of those worked, prompt the user.
18629                 case "$netdb_name_type" in
18630                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18631                         dflt='char *'
18632                         . ./myread
18633                         netdb_name_type=$ans
18634                         ;;
18635                 esac
18636                 ;;
18637         *)      : no gethostbyname, so pick harmless default
18638                 netdb_name_type='char *'
18639                 ;;
18640         esac
18641 fi
18642
18643 : check for type of 1st argument to getnetbyaddr. 
18644 if test "X$netdb_net_type" = X ; then
18645         case "$d_getnbyaddr" in
18646         $define)
18647                 $cat <<EOM
18648
18649 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18650 EOM
18651                 hdrs="$define sys/types.h
18652                         $d_socket sys/socket.h 
18653                         $i_niin netinet/in.h 
18654                         $i_netdb netdb.h
18655                         $i_unistd unistd.h"
18656                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18657                         case "$netdb_net_type" in
18658                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18659                                 if ./protochk "$try" $hdrs; then
18660                                         echo "Your system accepts $xxx."
18661                                         netdb_net_type="$xxx"
18662                                 fi
18663                                 ;;
18664                         esac
18665                 done
18666                 : In case none of those worked, prompt the user.
18667                 case "$netdb_net_type" in
18668                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18669                         dflt='long'
18670                         . ./myread
18671                         netdb_net_type=$ans
18672                         ;;
18673                 esac
18674                 ;;
18675         *)      : no getnetbyaddr, so pick harmless default
18676                 netdb_net_type='long'
18677                 ;;
18678         esac
18679 fi
18680 : locate the preferred pager for this system
18681 fn=f/
18682 case "$pager" in
18683 '')
18684         dflt=''
18685         case "$pg" in
18686         /*) dflt=$pg;;
18687         [a-zA-Z]:/*) dflt=$pg;;
18688         esac
18689         case "$more" in
18690         /*) dflt=$more;;
18691         [a-zA-Z]:/*) dflt=$more;;
18692         esac
18693         case "$less" in
18694         /*) dflt=$less;;
18695         [a-zA-Z]:/*) dflt=$less;;
18696         esac
18697         case "$dflt" in
18698         '') dflt=/usr/ucb/more;;
18699         esac
18700         ;;
18701 *)      dflt="$pager"
18702         : Instruct ./getfile to trust the hinted or previous pager value,
18703         : even if it does not begin with a slash.  For example, on os2,
18704         : pager might be cmd /c more.  See comments in UU/getfile.
18705         fn="f/($pager)"
18706         ;;
18707 esac
18708 echo " "
18709 rp='What pager is used on your system?'
18710 . ./getfile
18711 pager="$ans"
18712
18713 : see what type pids are declared as in the kernel
18714 rp="What is the type of process ids on this system?"
18715 set pid_t pidtype int stdio.h sys/types.h
18716 eval $typedef_ask
18717
18718 : see if ar generates random libraries by itself
18719 echo " "
18720 echo "Checking how to generate random libraries on your machine..." >&4
18721 echo 'int bar1() { return bar2(); }' > bar1.c
18722 echo 'int bar2() { return 2; }' > bar2.c
18723 $cat > foo.c <<EOP
18724 #$i_stdlib I_STDLIB
18725 #ifdef I_STDLIB
18726 #include <stdlib.h>
18727 #endif
18728 int main() { printf("%d\n", bar1()); exit(0); }
18729 EOP
18730 $cc $ccflags -c bar1.c >/dev/null 2>&1
18731 $cc $ccflags -c bar2.c >/dev/null 2>&1
18732 $cc $ccflags -c foo.c >/dev/null 2>&1
18733 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18734 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18735         $run ./foobar >/dev/null 2>&1; then
18736         echo "$ar appears to generate random libraries itself."
18737         orderlib=false
18738         ranlib=":"
18739 elif $ar ts bar$_a >/dev/null 2>&1 &&
18740         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18741         $run ./foobar >/dev/null 2>&1; then
18742                 echo "a table of contents needs to be added with '$ar ts'."
18743                 orderlib=false
18744                 ranlib="$ar ts"
18745 else
18746         case "$ranlib" in
18747         :) ranlib='';;
18748         '')
18749                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18750                 $test -f $ranlib || ranlib=''
18751                 ;;
18752         esac
18753         if $test -n "$ranlib"; then
18754                 echo "your system has '$ranlib'; we'll use that."
18755                 orderlib=false
18756         else
18757                 echo "your system doesn't seem to support random libraries"
18758                 echo "so we'll use lorder and tsort to order the libraries."
18759                 orderlib=true
18760                 ranlib=":"
18761         fi
18762 fi
18763 $rm -f foo* bar* 
18764
18765 : check for type of arguments to select. 
18766 case "$selecttype" in
18767 '') case "$d_select" in
18768         $define)
18769                 echo " "
18770                 $cat <<EOM
18771 Checking to see what type of arguments are accepted by select().
18772 EOM
18773                 hdrs="$define sys/types.h
18774                         $i_systime sys/time.h 
18775                         $i_sysselct sys/select.h
18776                         $d_socket sys/socket.h"
18777                 : The first arg can be int, unsigned, or size_t
18778                 : The last arg may or may not be 'const'
18779                 val=''
18780                 : void pointer has been seen but using that
18781                 : breaks the selectminbits test
18782                 for xxx in 'fd_set *' 'int *'; do
18783                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18784                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18785                                         case "$val" in
18786                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18787                                                 if ./protochk "$try" $hdrs; then
18788                                                         echo "Your system accepts $xxx."
18789                                                         val="$xxx"
18790                                                 fi
18791                                                 ;;
18792                                         esac
18793                                 done
18794                         done
18795                 done
18796                 case "$val" in
18797                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18798                         case "$d_fd_set" in
18799                                 $define) dflt="fd_set *" ;;
18800                                 *)              dflt="int *" ;;
18801                         esac
18802                         . ./myread
18803                         val=$ans
18804                         ;;
18805                 esac
18806                 selecttype="$val"
18807                 ;;
18808         *)      : no select, so pick a harmless default
18809                 selecttype='int *'
18810                 ;;
18811         esac
18812         ;;
18813 esac
18814
18815 : check for the select 'width'
18816 case "$selectminbits" in
18817 '') safebits=`expr $ptrsize \* 8`
18818     case "$d_select" in
18819         $define)
18820                 $cat <<EOM
18821
18822 Checking to see on how many bits at a time your select() operates...
18823 EOM
18824                 $cat >try.c <<EOCP
18825 #include <sys/types.h>
18826 #$i_time I_TIME
18827 #$i_systime I_SYS_TIME
18828 #$i_systimek I_SYS_TIME_KERNEL
18829 #ifdef I_TIME
18830 #   include <time.h>
18831 #endif
18832 #ifdef I_SYS_TIME
18833 #   ifdef I_SYS_TIME_KERNEL
18834 #       define KERNEL
18835 #   endif
18836 #   include <sys/time.h>
18837 #   ifdef I_SYS_TIME_KERNEL
18838 #       undef KERNEL
18839 #   endif
18840 #endif
18841 #$i_sysselct I_SYS_SELECT
18842 #ifdef I_SYS_SELECT
18843 #include <sys/select.h>
18844 #endif
18845 #$d_socket HAS_SOCKET
18846 #ifdef HAS_SOCKET
18847 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18848 #endif
18849 #include <stdio.h>
18850 #$i_stdlib I_STDLIB
18851 #ifdef I_STDLIB
18852 #include <stdlib.h>
18853 #endif
18854 $selecttype b;
18855 #define S sizeof(*(b))
18856 #define MINBITS 64
18857 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18858 #define NBITS  (NBYTES * 8)
18859 int main() {
18860     char *s = malloc(NBYTES);
18861     struct timeval t;
18862     int i;
18863     FILE* fp;
18864     int fd;
18865
18866     if (!s)
18867         exit(1);
18868     fclose(stdin);
18869     fp = fopen("try.c", "r");
18870     if (fp == 0)
18871       exit(2);
18872     fd = fileno(fp);
18873     if (fd < 0)
18874       exit(3);
18875     b = ($selecttype)s;
18876     for (i = 0; i < NBITS; i++)
18877         FD_SET(i, b);
18878     t.tv_sec  = 0;
18879     t.tv_usec = 0;
18880     select(fd + 1, b, 0, 0, &t);
18881     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18882     free(s);
18883     printf("%d\n", i + 1);
18884     return 0;
18885 }
18886 EOCP
18887                 set try
18888                 if eval $compile_ok; then
18889                         selectminbits=`$run ./try`
18890                         case "$selectminbits" in
18891                         '')     cat >&4 <<EOM
18892 Cannot figure out on how many bits at a time your select() operates.
18893 I'll play safe and guess it is $safebits bits.
18894 EOM
18895                                 selectminbits=$safebits
18896                                 bits="$safebits bits"
18897                                 ;;
18898                         1)      bits="1 bit" ;;
18899                         *)      bits="$selectminbits bits" ;;
18900                         esac
18901                         echo "Your select() operates on $bits at a time." >&4
18902                 else
18903                         rp='What is the minimum number of bits your select() operates on?'
18904                         case "$byteorder" in
18905                         12345678)       dflt=64 ;;
18906                         1234)           dflt=32 ;;
18907                         *)              dflt=1  ;;
18908                         esac
18909                         . ./myread
18910                         val=$ans
18911                         selectminbits="$val"
18912                 fi
18913                 $rm -f try.* try
18914                 ;;
18915         *)      : no select, so pick a harmless default
18916                 selectminbits=$safebits
18917                 ;;
18918         esac
18919         ;;
18920 esac
18921
18922 : Trace out the files included by signal.h, then look for SIGxxx names.
18923 : Remove SIGARRAYSIZE used by HPUX.
18924 : Remove SIGSTKSIZE used by Linux.
18925 : Remove SIGSTKSZ used by Posix.
18926 : Remove SIGTYP void lines used by OS2.
18927 : Some cpps, like os390, dont give the file name anywhere
18928 if [ "X$fieldn" = X ]; then
18929         : Just make some guesses.  We check them later.
18930         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18931 else
18932         xxx=`echo '#include <signal.h>' |
18933         $cppstdin $cppminus $cppflags 2>/dev/null |
18934         $grep '^[       ]*#.*include' | 
18935         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18936 fi
18937 : Check this list of files to be sure we have parsed the cpp output ok.
18938 : This will also avoid potentially non-existent files, such 
18939 : as ../foo/bar.h
18940 xxxfiles=''
18941 for xx in $xxx /dev/null ; do
18942         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18943 done
18944 : If we have found no files, at least try signal.h
18945 case "$xxxfiles" in
18946 '')     xxxfiles=`./findhdr signal.h` ;;
18947 esac
18948 xxx=`awk '
18949 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18950         print substr($2, 4, 20)
18951 }
18952 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18953         print substr($3, 4, 20)
18954 }' $xxxfiles`
18955 : Append some common names just in case the awk scan failed.
18956 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18957 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18958 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18959 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18960 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18961
18962 : generate a few handy files for later
18963 $cat > signal.c <<EOCP
18964 #include <sys/types.h>
18965 #include <signal.h>
18966 #$i_stdlib I_STDLIB
18967 #ifdef I_STDLIB
18968 #include <stdlib.h>
18969 #endif
18970 #include <stdio.h>
18971 int main() {
18972
18973 /* Strange style to avoid deeply-nested #if/#else/#endif */
18974 #ifndef NSIG
18975 #  ifdef _NSIG
18976 #    define NSIG (_NSIG)
18977 #  endif
18978 #endif
18979
18980 #ifndef NSIG
18981 #  ifdef SIGMAX
18982 #    define NSIG (SIGMAX+1)
18983 #  endif
18984 #endif
18985
18986 #ifndef NSIG
18987 #  ifdef SIG_MAX
18988 #    define NSIG (SIG_MAX+1)
18989 #  endif
18990 #endif
18991
18992 #ifndef NSIG
18993 #  ifdef MAXSIG
18994 #    define NSIG (MAXSIG+1)
18995 #  endif
18996 #endif
18997
18998 #ifndef NSIG
18999 #  ifdef MAX_SIG
19000 #    define NSIG (MAX_SIG+1)
19001 #  endif
19002 #endif
19003
19004 #ifndef NSIG
19005 #  ifdef SIGARRAYSIZE
19006 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
19007 #  endif
19008 #endif
19009
19010 #ifndef NSIG
19011 #  ifdef _sys_nsig
19012 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
19013 #  endif
19014 #endif
19015
19016 /* Default to some arbitrary number that's big enough to get most
19017    of the common signals.
19018 */
19019 #ifndef NSIG
19020 #    define NSIG 50
19021 #endif
19022
19023 printf("NSIG %d\n", NSIG);
19024
19025 #ifndef JUST_NSIG
19026
19027 EOCP
19028
19029 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
19030 {
19031         printf "#ifdef SIG"; printf $1; printf "\n"
19032         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
19033         printf $1; printf ");\n"
19034         printf "#endif\n"
19035 }
19036 END {
19037         printf "#endif /* JUST_NSIG */\n";
19038         printf "exit(0);\n}\n";
19039 }
19040 ' >>signal.c
19041 $cat >signal.awk <<'EOP'
19042 BEGIN { ndups = 0 }
19043 $1 ~ /^NSIG$/ { nsig = $2 }
19044 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
19045     if ($2 > maxsig) { maxsig = $2 }
19046     if (sig_name[$2]) {
19047         dup_name[ndups] = $1
19048         dup_num[ndups] = $2
19049         ndups++ 
19050     }
19051     else {
19052         sig_name[$2] = $1
19053         sig_num[$2] = $2
19054     }
19055 }
19056 END { 
19057     if (nsig == 0) {
19058         nsig = maxsig + 1
19059     }
19060     printf("NSIG %d\n", nsig);
19061     for (n = 1; n < nsig; n++) {
19062         if (sig_name[n]) {
19063             printf("%s %d\n", sig_name[n], sig_num[n])
19064         }
19065         else {
19066             printf("NUM%d %d\n", n, n) 
19067         }
19068     }
19069     for (n = 0; n < ndups; n++) {
19070         printf("%s %d\n", dup_name[n], dup_num[n])
19071     }
19072 }
19073 EOP
19074 $cat >signal_cmd <<EOS
19075 $startsh
19076 if $test -s signal.lst; then
19077     echo "Using your existing signal.lst file"
19078         exit 0
19079 fi
19080 xxx="$xxx"
19081 EOS
19082 $cat >>signal_cmd <<'EOS'
19083
19084 set signal
19085 if eval $compile_ok; then
19086         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19087 else
19088         echo "(I can't seem be able to compile the whole test program)" >&4
19089         echo "(I'll try it in little pieces.)" >&4
19090         set signal -DJUST_NSIG
19091         if eval $compile_ok; then
19092                 $run ./signal$_exe > signal.nsg
19093                 $cat signal.nsg
19094         else
19095                 echo "I can't seem to figure out how many signals you have." >&4
19096                 echo "Guessing 50." >&4
19097                 echo 'NSIG 50' > signal.nsg
19098         fi
19099         : Now look at all the signal names, one at a time.
19100         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19101                 $cat > signal.c <<EOCP
19102 #include <sys/types.h>
19103 #include <signal.h>
19104 #include <stdio.h>
19105 int main() {
19106 printf("$xx %d\n", SIG${xx});
19107 return 0;
19108 }
19109 EOCP
19110                 set signal
19111                 if eval $compile; then
19112                         echo "SIG${xx} found."
19113                         $run ./signal$_exe  >> signal.ls1
19114                 else
19115                         echo "SIG${xx} NOT found."
19116                 fi
19117         done
19118         if $test -s signal.ls1; then
19119                 $cat signal.nsg signal.ls1 |
19120                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
19121         fi
19122
19123 fi
19124 if $test -s signal.lst; then
19125         :
19126 else
19127         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19128         echo 'kill -l' >signal
19129         set X `csh -f <signal`
19130         $rm -f signal
19131         shift
19132         case $# in
19133         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19134         esac
19135         echo $@ | $tr ' ' $trnl | \
19136             $awk '{ printf "%s %d\n", $1, ++s; }
19137                   END { printf "NSIG %d\n", ++s }' >signal.lst
19138 fi
19139 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19140 EOS
19141 chmod a+x signal_cmd
19142 $eunicefix signal_cmd
19143
19144 : generate list of signal names
19145 echo " "
19146 case "$sig_name_init" in
19147 '') doinit=yes ;;
19148 *)  case "$sig_num_init" in
19149     ''|*,*) doinit=yes ;;
19150     esac ;;
19151 esac
19152 case "$doinit" in
19153 yes)
19154         echo "Generating a list of signal names and numbers..." >&4
19155         . ./signal_cmd
19156         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19157         sig_name=`$awk 'BEGIN { printf "ZERO " }
19158                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19159         sig_num=`$awk  'BEGIN { printf "0 " }
19160                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19161         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19162                              !/^NSIG/   { printf "\"%s\", ", $1 }
19163                              END        { printf "0\n" }' signal.lst`
19164         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19165                              !/^NSIG/   { printf "%d, ", $2}
19166                              END        { printf "0\n"}' signal.lst`
19167         ;;
19168 esac
19169 echo "The following $sig_count signals are available:"
19170 echo " "
19171 echo $sig_name | $awk \
19172 'BEGIN { linelen = 0 }
19173 {
19174         for (i = 1; i <= NF; i++) {
19175                 name = "SIG" $i " "
19176                 linelen = linelen + length(name)
19177                 if (linelen > 70) {
19178                         printf "\n"
19179                         linelen = length(name)
19180                 }
19181                 printf "%s", name
19182         }
19183         printf "\n"
19184 }'
19185 sig_size=`echo $sig_name | awk '{print NF}'`
19186 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19187
19188 echo " "
19189 case "$sizetype" in
19190 *_t) zzz="$sizetype"    ;;
19191 *)   zzz="filesize"     ;;
19192 esac
19193 echo "Checking the size of $zzz..." >&4 
19194 cat > try.c <<EOCP
19195 #include <sys/types.h>
19196 #include <stdio.h>
19197 #$i_stdlib I_STDLIB
19198 #ifdef I_STDLIB
19199 #include <stdlib.h>
19200 #endif
19201 int main() {
19202     printf("%d\n", (int)sizeof($sizetype));
19203     exit(0);
19204 }
19205 EOCP
19206 set try
19207 if eval $compile_ok; then
19208         yyy=`$run ./try`
19209         case "$yyy" in
19210         '')     sizesize=4
19211                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19212                 ;;
19213         *)      sizesize=$yyy
19214                 echo "Your $zzz size is $sizesize bytes."
19215                 ;;
19216         esac
19217 else
19218         sizesize=4
19219         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19220 fi
19221
19222
19223 : check for socklen_t
19224 echo " "
19225 echo "Checking to see if you have socklen_t..." >&4
19226 $cat >try.c <<EOCP
19227 #include <sys/types.h>
19228 #$d_socket HAS_SOCKET
19229 #ifdef HAS_SOCKET
19230 #include <sys/socket.h>
19231 #endif
19232 int main() { socklen_t x = 16; }
19233 EOCP
19234 set try
19235 if eval $compile; then
19236         val="$define"
19237         echo "You have socklen_t."
19238 else
19239         val="$undef"
19240         echo "You do not have socklen_t."
19241         case "$sizetype" in
19242         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19243         esac
19244 fi
19245 $rm -f try try.*
19246 set d_socklen_t
19247 eval $setvar
19248
19249 : see if this is a socks.h system
19250 set socks.h i_socks
19251 eval $inhdr
19252
19253 : check for type of the size argument to socket calls
19254 case "$d_socket" in
19255 "$define")
19256         $cat <<EOM
19257
19258 Checking to see what type is the last argument of accept().
19259 EOM
19260         yyy=''
19261         case "$d_socklen_t" in
19262         "$define") yyy="$yyy socklen_t"
19263         esac
19264         yyy="$yyy $sizetype int long unsigned"
19265         for xxx in $yyy; do
19266                 case "$socksizetype" in
19267                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19268                         case "$usesocks" in
19269                         "$define")
19270                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19271                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19272                                         socksizetype="$xxx"
19273                                 fi
19274                                 ;;
19275                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19276                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19277                                         socksizetype="$xxx"
19278                                 fi
19279                                 ;;
19280                         esac
19281                         ;;
19282                 esac
19283         done
19284 : In case none of those worked, prompt the user.
19285         case "$socksizetype" in
19286         '')     rp='What is the type for socket address structure sizes?'
19287                 dflt='int'
19288                 . ./myread
19289                 socksizetype=$ans
19290                 ;;
19291         esac
19292         ;;
19293 *)      : no sockets, so pick relatively harmless default
19294         socksizetype='int'
19295         ;;
19296 esac
19297
19298 : see what type is used for signed size_t
19299 set ssize_t ssizetype int stdio.h sys/types.h
19300 eval $typedef
19301 dflt="$ssizetype"
19302 $cat > try.c <<EOM
19303 #include <stdio.h>
19304 #$i_stdlib I_STDLIB
19305 #ifdef I_STDLIB
19306 #include <stdlib.h>
19307 #endif
19308 #include <sys/types.h>
19309 #define Size_t $sizetype
19310 #define SSize_t $dflt
19311 int main()
19312 {
19313         if (sizeof(Size_t) == sizeof(SSize_t))
19314                 printf("$dflt\n");
19315         else if (sizeof(Size_t) == sizeof(int))
19316                 printf("int\n");
19317         else 
19318                 printf("long\n");
19319         exit(0);
19320 }
19321 EOM
19322 echo " "
19323 set try
19324 if eval $compile_ok && $run ./try > /dev/null; then
19325         ssizetype=`$run ./try`
19326         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19327 else
19328         $cat >&4 <<EOM
19329 Help! I can't compile and run the ssize_t test program: please enlighten me!
19330 (This is probably a misconfiguration in your system or libraries, and
19331 you really ought to fix it.  Still, I'll try anyway.)
19332
19333 I need a type that is the same size as $sizetype, but is guaranteed to
19334 be signed.  Common values are ssize_t, int and long.
19335
19336 EOM
19337         rp="What signed type is the same size as $sizetype?"
19338         . ./myread
19339         ssizetype="$ans"
19340 fi
19341 $rm -f try try.*
19342
19343 : see what type of char stdio uses.
19344 echo " "
19345 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19346 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19347         echo "Your stdio uses unsigned chars." >&4
19348         stdchar="unsigned char"
19349 else
19350         echo "Your stdio uses signed chars." >&4
19351         stdchar="char"
19352 fi
19353 $rm -f stdioh
19354
19355
19356
19357 : see what type uids are declared as in the kernel
19358 echo " "
19359 echo "Looking for the type for user ids returned by getuid()."
19360 set uid_t uidtype xxx stdio.h sys/types.h
19361 eval $typedef
19362 case "$uidtype" in
19363 xxx)
19364         xxx=`./findhdr sys/user.h`
19365         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19366         case $1 in
19367         unsigned) dflt="$1 $2" ;;
19368         *) dflt="$1" ;;
19369         esac
19370         ;;
19371 *) dflt="$uidtype";;
19372 esac
19373 case "$uidtype" in
19374 uid_t)  echo "uid_t found." ;;
19375 *)      rp="What is the type for user ids returned by getuid()?"
19376         . ./myread
19377         uidtype="$ans"
19378         ;;
19379 esac
19380
19381 echo " "
19382 case "$uidtype" in
19383 *_t) zzz="$uidtype"     ;;
19384 *)   zzz="uid"          ;;
19385 esac
19386 echo "Checking the size of $zzz..." >&4 
19387 cat > try.c <<EOCP
19388 #include <sys/types.h>
19389 #include <stdio.h>
19390 #$i_stdlib I_STDLIB
19391 #ifdef I_STDLIB
19392 #include <stdlib.h>
19393 #endif
19394 int main() {
19395     printf("%d\n", (int)sizeof($uidtype));
19396     exit(0);
19397 }
19398 EOCP
19399 set try
19400 if eval $compile_ok; then
19401         yyy=`$run ./try`
19402         case "$yyy" in
19403         '')     uidsize=4
19404                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19405                 ;;
19406         *)      uidsize=$yyy
19407                 echo "Your $zzz is $uidsize bytes long."
19408                 ;;
19409         esac
19410 else
19411         uidsize=4
19412         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19413 fi
19414
19415 echo " "
19416 case "$uidtype" in
19417 *_t) zzz="$uidtype"     ;;
19418 *)   zzz="uid"          ;;
19419 esac
19420 echo "Checking the sign of $zzz..." >&4
19421 cat > try.c <<EOCP
19422 #include <sys/types.h>
19423 #include <stdio.h>
19424 int main() {
19425         $uidtype foo = -1;
19426         if (foo < 0)
19427                 printf("-1\n");
19428         else
19429                 printf("1\n");
19430 }
19431 EOCP
19432 set try
19433 if eval $compile; then
19434         yyy=`$run ./try`
19435         case "$yyy" in
19436         '')     uidsign=1
19437                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19438                 ;;
19439         *)      uidsign=$yyy
19440                 case "$uidsign" in
19441                  1) echo "Your $zzz is unsigned." ;;
19442                 -1) echo "Your $zzz is signed."   ;;
19443                 esac
19444                 ;;
19445         esac
19446 else
19447         uidsign=1
19448         echo "(I can't compile the test program--guessing unsigned.)" >&4
19449 fi
19450
19451
19452
19453 echo " "
19454 $echo "Checking the format string to be used for uids..." >&4
19455
19456 case "$uidsign" in
19457 -1)     if $test X"$uidsize" = X"$ivsize"; then
19458                 uidformat="$ivdformat"
19459         else
19460                 if $test X"$uidsize" = X"$longsize"; then
19461                         uidformat='"ld"'
19462                 else
19463                         if $test X"$uidsize" = X"$intsize"; then
19464                                 uidformat='"d"'
19465                         else
19466                                 if $test X"$uidsize" = X"$shortsize"; then
19467                                         uidformat='"hd"'
19468                                 fi
19469                         fi
19470                 fi
19471         fi
19472         ;;
19473 *)      if $test X"$uidsize" = X"$uvsize"; then
19474                 uidformat="$uvuformat"
19475         else
19476                 if $test X"$uidsize" = X"$longsize"; then
19477                         uidformat='"lu"'
19478                 else
19479                         if $test X"$uidsize" = X"$intsize"; then
19480                                 uidformat='"u"'
19481                         else
19482                                 if $test X"$uidsize" = X"$shortsize"; then
19483                                         uidformat='"hu"'
19484                                 fi
19485                         fi
19486                 fi
19487         fi
19488         ;;
19489 esac
19490
19491
19492 case "$usesitecustomize" in
19493     $define|true|[Yy]*)
19494         usesitecustomize="$define"
19495         ;;
19496     *)
19497         usesitecustomize="$undef"
19498         ;;
19499     esac
19500
19501 : determine compiler compiler
19502 case "$yacc" in
19503 '')
19504         dflt=yacc;;
19505 *)
19506         dflt="$yacc";;
19507 esac
19508 echo " "
19509 comp='yacc'
19510 if $test -f "$byacc$_exe"; then
19511         dflt="$byacc"
19512         comp="byacc or $comp"
19513 fi
19514 if $test -f "$bison$_exe"; then
19515         comp="$comp or bison -y"
19516 fi
19517 rp="Which compiler compiler ($comp) shall I use?"
19518 . ./myread
19519 yacc="$ans"
19520 case "$yacc" in
19521 *bis*)
19522         case "$yacc" in
19523         *-y*) ;;
19524         *)
19525                 yacc="$yacc -y"
19526                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19527                 ;;
19528         esac
19529         ;;
19530 esac
19531
19532 : see if this is a fp.h system
19533 set fp.h i_fp
19534 eval $inhdr
19535
19536 : see if this is a fp_class.h system
19537 set fp_class.h i_fp_class
19538 eval $inhdr
19539
19540 : see if this is a ieeefp.h system
19541 case "$i_ieeefp" in
19542 '' ) set ieeefp.h i_ieeefp
19543      eval $inhdr
19544      ;;
19545 esac
19546
19547 : see if this is a libutil.h system
19548 set libutil.h i_libutil
19549 eval $inhdr
19550
19551 : see if mach cthreads are available
19552 if test "X$usethreads" = "X$define"; then
19553         set mach/cthreads.h i_machcthr
19554         eval $inhdr
19555 else
19556         i_machcthr="$undef"
19557 fi
19558
19559
19560
19561 : see if this is a mntent.h system
19562 set mntent.h i_mntent
19563 eval $inhdr
19564
19565 : see if ndbm.h is available
19566 set ndbm.h t_ndbm
19567 eval $inhdr
19568
19569 case "$t_ndbm" in
19570 $undef)
19571     # Some Linux distributions such as RedHat 7.1 put the
19572     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19573     if $test -f /usr/include/gdbm/ndbm.h; then
19574         echo '<gdbm/ndbm.h> found.'
19575         ccflags="$ccflags -I/usr/include/gdbm"
19576         cppflags="$cppflags -I/usr/include/gdbm"
19577         t_ndbm=$define
19578     fi
19579     ;;
19580 esac
19581
19582 case "$t_ndbm" in
19583 $define)
19584         : see if dbm_open exists
19585         set dbm_open d_dbm_open
19586         eval $inlibc
19587         case "$d_dbm_open" in
19588         $undef)
19589                 t_ndbm="$undef"
19590                 echo "We won't be including <ndbm.h>"
19591                 ;;
19592         esac
19593         ;;
19594 esac
19595 val="$t_ndbm"
19596 set i_ndbm
19597 eval $setvar
19598
19599 : see if net/errno.h is available
19600 val=''
19601 set net/errno.h val
19602 eval $inhdr
19603
19604 : Unfortunately, it causes problems on some systems.  Arrgh.
19605 case "$val" in
19606 $define)
19607         cat > try.c <<'EOM'
19608 #include <stdio.h>
19609 #include <errno.h>
19610 #include <net/errno.h>
19611 int func()
19612 {
19613         return ENOTSOCK;
19614 }
19615 EOM
19616         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19617                 echo "We'll be including <net/errno.h>." >&4
19618         else
19619                 echo "We won't be including <net/errno.h>." >&4
19620                 val="$undef"
19621         fi
19622         $rm -f try.* try
19623         ;;
19624 esac
19625 set i_neterrno
19626 eval $setvar
19627
19628 : see if netinet/tcp.h is available
19629 set netinet/tcp.h i_netinettcp
19630 eval $inhdr
19631
19632 : see if this is a poll.h system
19633 set poll.h i_poll
19634 eval $inhdr
19635
19636 : see if this is a prot.h system
19637 set prot.h i_prot
19638 eval $inhdr
19639
19640 echo " "
19641 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19642 $cat <<'EOSH' > Cppsym.know
19643 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19644 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19645 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19646 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19647 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19648 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19649 bull c cadmus clipper CMU COFF COMPILER_VERSION
19650 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19651 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19652 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19653 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19654 GLIBC GLIBC_MINOR
19655 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19656 H3050R H3050RX hbullx20 hcx host_mips
19657 hp200 hp300 hp700 HP700 hp800 hp9000
19658 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19659 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19660 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19661 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19662 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19663 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19664 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19665 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19666 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19667 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19668 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19669 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19670 MATH_HAS_NO_SIDE_EFFECTS
19671 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19672 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19673 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19674 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19675 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19676 NetBSD news1500 news1700 news1800 news1900 news3700
19677 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19678 ns32016 ns32332 ns32k nsc32000
19679 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19680 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19681 pc532 pdp11 PGC PIC plexus PORTAR posix
19682 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19683 POSIX_C_SOURCE POSIX_SOURCE POWER
19684 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19685 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19686 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19687 sony sony_news sonyrisc sparc sparclite spectrum
19688 stardent stdc STDC_EXT stratos sun sun3 sun386
19689 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19690 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19691 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19692 sysV68 sysV88 Tek4132 Tek4300 titan
19693 TM3200 TM5400 TM5600
19694 tower tower32 tower32_200 tower32_600 tower32_700
19695 tower32_800 tower32_850 tss
19696 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19697 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19698 unix UNIX95 UNIX99 unixpc unos
19699 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19700 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19701 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19702 USGr4 USGr4_2
19703 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19704 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19705 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19706 z8000
19707 EOSH
19708 # Maybe put other stuff here too.
19709 cat <<EOSH >>Cppsym.know
19710 $osname
19711 EOSH
19712 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19713 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19714 $cat Cppsym.know > Cppsym.c
19715 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19716 $rm -f Cppsym.a Cppsym.b Cppsym.c
19717 cat <<EOSH > Cppsym
19718 $startsh
19719 if $test \$# -gt 0; then
19720     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19721     if $test -s Cppsym.got; then
19722         $rm -f Cppsym.got
19723         exit 0
19724     fi
19725     $rm -f Cppsym.got
19726     exit 1
19727 else
19728     $tr " " "$trnl" | ./Cppsym.try
19729     exit 0
19730 fi
19731 EOSH
19732 chmod +x Cppsym
19733 $eunicefix Cppsym
19734 cat <<EOSH > Cppsym.try
19735 $startsh
19736 cat <<'EOCP' > try.c
19737 #include <stdio.h>
19738 int main() {
19739 EOCP
19740 $awk \\
19741 EOSH
19742 cat <<'EOSH' >> Cppsym.try
19743 'length($1) > 0 {
19744     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
19745     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
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 }'       >> try.c
19749 echo 'return 0;}' >> try.c
19750 EOSH
19751 cat <<EOSH >> Cppsym.try
19752 ccflags="$ccflags"
19753 case "$osname-$gccversion" in
19754 irix-) ccflags="\$ccflags -woff 1178" ;;
19755 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19756 esac
19757 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19758 EOSH
19759 chmod +x Cppsym.try
19760 $eunicefix Cppsym.try
19761 ./Cppsym < Cppsym.know > Cppsym.true
19762 : now check the C compiler for additional symbols
19763 postprocess_cc_v=''
19764 case "$osname" in
19765 aix) postprocess_cc_v="|$tr , ' '" ;;
19766 esac
19767 $cat >ccsym <<EOS
19768 $startsh
19769 $cat >tmp.c <<EOF
19770 extern int foo;
19771 EOF
19772 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19773 do
19774         case "\$i" in
19775         -D*) echo "\$i" | $sed 's/^-D//';;
19776         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19777         esac
19778 done
19779 $rm -f try.c
19780 EOS
19781 postprocess_cc_v=''
19782 chmod +x ccsym
19783 $eunicefix ccsym
19784 ./ccsym > ccsym1.raw
19785 if $test -s ccsym1.raw; then
19786        $sort ccsym1.raw | $uniq >ccsym.raw
19787 else
19788        mv ccsym1.raw ccsym.raw
19789 fi
19790
19791 $awk '/\=/ { print $0; next }
19792         { print $0"=1" }' ccsym.raw >ccsym.list
19793 $awk '/\=/ { print $0; next }
19794         { print $0"=1" }' Cppsym.true >ccsym.true
19795 $comm -13 ccsym.true ccsym.list >ccsym.own
19796 $comm -12 ccsym.true ccsym.list >ccsym.com
19797 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19798 also=''
19799 if $test -z ccsym.raw; then
19800         echo "Your C compiler doesn't seem to define any symbols!" >&4
19801         echo " "
19802         echo "However, your C preprocessor defines the following symbols:"
19803         $cat Cppsym.true
19804         ccsymbols=''
19805         cppsymbols=`$cat Cppsym.true`
19806         cppsymbols=`echo $cppsymbols`
19807         cppccsymbols="$cppsymbols"
19808 else
19809         if $test -s ccsym.com; then
19810                 echo "Your C compiler and pre-processor define these symbols:"
19811                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19812                 also='also '
19813                 symbols='ones'
19814                 cppccsymbols=`$cat ccsym.com`
19815                 cppccsymbols=`echo $cppccsymbols`
19816                 $test "$silent" || sleep 1
19817         fi
19818         if $test -s ccsym.cpp; then
19819                 $test "$also" && echo " "
19820                 echo "Your C pre-processor ${also}defines the following symbols:"
19821                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19822                 also='further '
19823                 cppsymbols=`$cat ccsym.cpp`
19824                 cppsymbols=`echo $cppsymbols`
19825                 $test "$silent" || sleep 1
19826         fi
19827         if $test -s ccsym.own; then
19828                 $test "$also" && echo " "
19829                 echo "Your C compiler ${also}defines the following cpp symbols:"
19830                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19831                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19832                 ccsymbols=`$cat ccsym.own`
19833                 ccsymbols=`echo $ccsymbols`
19834                 $test "$silent" || sleep 1
19835         fi
19836 fi
19837
19838 : see if this is a termio system
19839 val="$undef"
19840 val2="$undef"
19841 val3="$undef"
19842 if $test `./findhdr termios.h`; then
19843         set tcsetattr i_termios
19844         eval $inlibc
19845         val3="$i_termios"
19846 fi
19847 echo " "
19848 case "$val3" in
19849 "$define") echo "You have POSIX termios.h... good!" >&4;;
19850 *) if ./Cppsym pyr; then
19851                 case "`/bin/universe`" in
19852                 ucb) if $test `./findhdr sgtty.h`; then
19853                                 val2="$define"
19854                                 echo "<sgtty.h> found." >&4
19855                         else
19856                                 echo "System is pyramid with BSD universe."
19857                                 echo "<sgtty.h> not found--you could have problems." >&4
19858                         fi;;
19859                 *) if $test `./findhdr termio.h`; then
19860                                 val="$define"
19861                                 echo "<termio.h> found." >&4
19862                         else
19863                                 echo "System is pyramid with USG universe."
19864                                 echo "<termio.h> not found--you could have problems." >&4
19865                         fi;;
19866                 esac
19867         elif ./usg; then
19868                 if $test `./findhdr termio.h`; then
19869                         echo "<termio.h> found." >&4
19870                         val="$define"
19871                 elif $test `./findhdr sgtty.h`; then
19872                         echo "<sgtty.h> found." >&4
19873                         val2="$define"
19874                 else
19875 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19876                 fi
19877         else
19878                 if $test `./findhdr sgtty.h`; then
19879                         echo "<sgtty.h> found." >&4
19880                         val2="$define"
19881                 elif $test `./findhdr termio.h`; then
19882                         echo "<termio.h> found." >&4
19883                         val="$define"
19884                 else
19885 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19886                 fi
19887         fi;;
19888 esac
19889 set i_termio; eval $setvar
19890 val=$val2; set i_sgtty; eval $setvar
19891 val=$val3; set i_termios; eval $setvar
19892
19893 : see if stddef is available
19894 set stddef.h i_stddef
19895 eval $inhdr
19896
19897 : see if this is a sunmath.h system
19898 set sunmath.h i_sunmath
19899 eval $inhdr
19900
19901 : see if sys/access.h is available
19902 set sys/access.h i_sysaccess
19903 eval $inhdr
19904
19905 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19906 set sys/filio.h i_sysfilio
19907 eval $inhdr
19908 echo " "
19909 if $test `./findhdr sys/ioctl.h`; then
19910         val="$define"
19911         echo '<sys/ioctl.h> found.' >&4
19912 else
19913         val="$undef"
19914         if $test $i_sysfilio = "$define"; then
19915             echo '<sys/ioctl.h> NOT found.' >&4
19916         else
19917                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19918                 $test $i_termio = "$define" && xxx="termio.h"
19919                 $test $i_termios = "$define" && xxx="termios.h"
19920 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19921         fi
19922 fi
19923 set i_sysioctl
19924 eval $setvar
19925
19926 : see if socket ioctl defs are in sys/sockio.h
19927 echo " "
19928 xxx=`./findhdr sys/sockio.h`
19929 if $test "$xxx"; then
19930         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19931                 val="$define"
19932                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19933         else
19934                 val="$undef"
19935                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19936         fi
19937 else
19938         val="$undef"
19939         $cat <<EOM
19940 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19941 EOM
19942 fi
19943 set i_syssockio
19944 eval $setvar
19945
19946
19947 : see if this is a syslog.h system
19948 set syslog.h i_syslog
19949 eval $inhdr
19950
19951
19952 : see if this is a sys/mode.h system
19953 set sys/mode.h i_sysmode
19954 eval $inhdr
19955
19956 : see if sys/resource.h has to be included
19957 set sys/resource.h i_sysresrc
19958 eval $inhdr
19959
19960 : see if sys/security.h is available
19961 set sys/security.h i_syssecrt
19962 eval $inhdr
19963
19964 : see if this is a sys/statvfs.h system
19965 set sys/statvfs.h i_sysstatvfs
19966 eval $inhdr
19967
19968 : see if this is a sys/un.h system
19969 set sys/un.h i_sysun
19970 eval $inhdr
19971
19972
19973 : see if this is a sys/utsname.h system
19974 set sys/utsname.h i_sysutsname
19975 eval $inhdr
19976
19977 : see if this is a syswait system
19978 set sys/wait.h i_syswait
19979 eval $inhdr
19980
19981 : see if this is a ustat.h system
19982 set ustat.h i_ustat
19983 eval $inhdr
19984
19985 : see if this is an utime system
19986 set utime.h i_utime
19987 eval $inhdr
19988
19989 : see if this is a values.h system
19990 set values.h i_values
19991 eval $inhdr
19992
19993 : see if this is a vfork system
19994 case "$d_vfork" in
19995 "$define")
19996         set vfork.h i_vfork
19997         eval $inhdr
19998         ;;
19999 *)
20000         i_vfork="$undef"
20001         ;;
20002 esac
20003
20004 : see if gdbm.h is available
20005 set gdbm.h t_gdbm
20006 eval $inhdr
20007 case "$t_gdbm" in
20008 $define)
20009         : see if gdbm_open exists
20010         set gdbm_open d_gdbm_open
20011         eval $inlibc
20012         case "$d_gdbm_open" in
20013         $undef)
20014                 t_gdbm="$undef"
20015                 echo "We won't be including <gdbm.h>"
20016                 ;;
20017         esac
20018         ;;
20019 esac
20020 val="$t_gdbm"
20021 set i_gdbm
20022 eval $setvar
20023
20024 echo " "
20025 echo "Looking for extensions..." >&4
20026 : If we are using the old config.sh, known_extensions may contain
20027 : old or inaccurate or duplicate values.
20028 known_extensions=''
20029 nonxs_extensions=''
20030 : We do not use find because it might not be available.
20031 : We do not just use MANIFEST because the user may have dropped
20032 : some additional extensions into the source tree and expect them
20033 : to be built.
20034
20035 : Function to recursively find available extensions, ignoring DynaLoader
20036 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
20037 find_extensions='
20038     for xxx in *; do
20039        case "$xxx" in
20040            DynaLoader|dynaload) ;;
20041            *)
20042            if $test -f $xxx/$xxx.xs; then
20043                known_extensions="$known_extensions $1$xxx";
20044            elif $test -f $xxx/Makefile.PL; then
20045                nonxs_extensions="$nonxs_extensions $1$xxx";
20046            else
20047                if $test -d $xxx -a $# -lt 10; then
20048                    set $1$xxx/ $*;
20049                    cd "$xxx";
20050                    eval $find_extensions;
20051                    cd ..;
20052                    shift;
20053                fi;
20054            fi
20055            ;;
20056        esac;
20057     done'
20058 tdir=`pwd`
20059 cd "$rsrc/ext"
20060 set X
20061 shift
20062 eval $find_extensions
20063 # Special case:  Add in threads/shared since it is not picked up by the
20064 # recursive find above (and adding in general recursive finding breaks
20065 # SDBM_File/sdbm).  A.D.  10/25/2001.
20066 known_extensions="$known_extensions threads/shared"
20067 set X $nonxs_extensions
20068 shift
20069 nonxs_extensions="$*"
20070 set X $known_extensions
20071 shift
20072 known_extensions="$*"
20073 cd "$tdir"
20074
20075 : Now see which are supported on this system.
20076 avail_ext=''
20077 for xxx in $known_extensions ; do
20078         case "$xxx" in
20079         DB_File|db_file)
20080                 case "$i_db" in
20081                 $define) avail_ext="$avail_ext $xxx" ;;
20082                 esac
20083                 ;;
20084         GDBM_File|gdbm_fil)
20085                 case "$i_gdbm" in 
20086                 $define) avail_ext="$avail_ext $xxx" ;;
20087                 esac
20088                 ;;
20089         I18N/Langinfo|i18n_lan)
20090                 case "$i_langinfo$d_nl_langinfo" in 
20091                 $define$define) avail_ext="$avail_ext $xxx" ;;
20092                 esac
20093                 ;;
20094         NDBM_File|ndbm_fil)
20095                 case "$i_ndbm" in
20096                 $define)
20097                     case "$osname-$use64bitint" in
20098                     hpux-define)
20099                         case "$libs" in
20100                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20101                         esac
20102                         ;;
20103                     *) avail_ext="$avail_ext $xxx" ;;
20104                     esac
20105                     ;;
20106                 esac
20107                 ;;
20108         ODBM_File|odbm_fil) 
20109                 case "${i_dbm}${i_rpcsvcdbm}" in
20110                 *"${define}"*)
20111                     case "$osname-$use64bitint" in
20112                     hpux-define)
20113                         case "$libs" in
20114                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20115                         esac
20116                         ;;
20117                     *) avail_ext="$avail_ext $xxx" ;;
20118                     esac
20119                     ;;
20120                 esac
20121                 ;;
20122         POSIX|posix)
20123                 case "$useposix" in
20124                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20125                 esac
20126                 ;;
20127         Opcode|opcode)
20128                 case "$useopcode" in
20129                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20130                 esac
20131                 ;;
20132         Socket|socket)
20133                 case "$d_socket" in 
20134                 true|$define|y)
20135                     case "$osname" in
20136                     beos) ;; # not unless BONE
20137                     *) avail_ext="$avail_ext $xxx" ;;
20138                     esac
20139                     ;;
20140                 esac
20141                 ;;
20142         Sys/Syslog|sys/syslog)
20143                 : XXX syslog requires socket
20144                 case "$d_socket" in 
20145                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20146                 esac
20147                 ;;
20148         Thread|thread)
20149                 case "$usethreads" in
20150                 true|$define|y)
20151                         case "$useithreads" in
20152                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20153                         esac
20154                 esac
20155                 ;;
20156         XS/APItest|xs/apitest)
20157                 # This is just for testing.  Skip it unless we have dynamic loading.
20158
20159                 case "$usedl" in
20160                 $define) avail_ext="$avail_ext $xxx" ;;
20161                 esac
20162                 ;;
20163         XS/Typemap|xs/typemap)
20164                 # This is just for testing.  Skip it unless we have dynamic loading.
20165                 case "$usedl" in
20166                 $define) avail_ext="$avail_ext $xxx" ;;
20167                 esac
20168                 ;;
20169         threads|threads/shared)
20170                 # threads and threads::shared are special cases.
20171                 # To stop people from asking "Perl 5.8.0 was supposed
20172                 # to have this new fancy threads implementation but my
20173                 # perl doesn't have it" and from people trying to
20174                 # (re)install the threads module using CPAN.pm and
20175                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20176                 # the threads.pm and threads/shared.pm will always be
20177                 # there, croaking informatively ("you need to rebuild
20178                 # all of Perl with threads, sorry") when threads haven't
20179                 # been compiled in.
20180                 # --jhi
20181                 avail_ext="$avail_ext $xxx"
20182                 ;;
20183         IPC/SysV|ipc/sysv)
20184                 : XXX Do we need a useipcsysv variable here
20185                 case "${d_msg}${d_sem}${d_shm}" in 
20186                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20187                 esac
20188                 ;;
20189         *)      avail_ext="$avail_ext $xxx"
20190                 ;;
20191         esac
20192 done
20193
20194 set X $avail_ext
20195 shift
20196 avail_ext="$*"
20197
20198 case "$onlyextensions" in
20199 '') ;;
20200 *)  keepextensions=''
20201     echo "You have requested that only certains extensions be included..." >&4
20202     for i in $onlyextensions; do
20203         case " $avail_ext " in
20204         *" $i "*)
20205             echo "Keeping extension $i."
20206             keepextensions="$keepextensions $i"
20207             ;;
20208         *) echo "Ignoring extension $i." ;;
20209         esac
20210     done
20211     avail_ext="$keepextensions"
20212     ;;
20213 esac
20214
20215 case "$noextensions" in
20216 '') ;;
20217 *)  keepextensions=''
20218     echo "You have requested that certain extensions be ignored..." >&4
20219     for i in $avail_ext; do
20220         case " $noextensions " in
20221         *" $i "*) echo "Ignoring extension $i." ;;
20222         *) echo "Keeping extension $i.";
20223            keepextensions="$keepextensions $i"
20224            ;;
20225         esac
20226     done
20227     avail_ext="$keepextensions"
20228     ;;
20229 esac
20230
20231 : Now see which nonxs extensions are supported on this system.
20232 : For now assume all are.
20233 nonxs_ext=''
20234 for xxx in $nonxs_extensions ; do
20235         case "$xxx" in
20236         *)      nonxs_ext="$nonxs_ext $xxx"
20237                 ;;
20238         esac
20239 done
20240
20241 set X $nonxs_ext
20242 shift
20243 nonxs_ext="$*"
20244
20245 case $usedl in
20246 $define)
20247         $cat <<EOM
20248 A number of extensions are supplied with $package.  You may choose to
20249 compile these extensions for dynamic loading (the default), compile
20250 them into the $package executable (static loading), or not include
20251 them at all.  Answer "none" to include no extensions.
20252 Note that DynaLoader is always built and need not be mentioned here.
20253
20254 EOM
20255         case "$dynamic_ext" in
20256         '')
20257                 : Exclude those listed in static_ext
20258                 dflt=''
20259                 for xxx in $avail_ext; do
20260                         case " $static_ext " in
20261                         *" $xxx "*) ;;
20262                         *) dflt="$dflt $xxx" ;;
20263                         esac
20264                 done
20265                 set X $dflt
20266                 shift
20267                 dflt="$*"
20268                 ;;
20269         *)      dflt="$dynamic_ext"
20270                 # Perhaps we are reusing an old out-of-date config.sh.
20271                 case "$hint" in
20272                 previous)
20273                         if test X"$dynamic_ext" != X"$avail_ext"; then
20274                                 $cat <<EOM
20275 NOTICE:  Your previous config.sh list may be incorrect. 
20276 The extensions now available to you are 
20277         ${avail_ext}
20278 but the default list from your previous config.sh is
20279         ${dynamic_ext} 
20280
20281 EOM
20282                         fi
20283                         ;;
20284                 esac
20285                 ;;
20286         esac
20287         case "$dflt" in
20288         '')     dflt=none;;
20289         esac
20290         rp="What extensions do you wish to load dynamically?"
20291         . ./myread
20292         case "$ans" in
20293         none) dynamic_ext=' ' ;;
20294         *) dynamic_ext="$ans" ;;
20295         esac
20296
20297         case "$static_ext" in
20298         '')
20299                 : Exclude those already listed in dynamic linking
20300                 dflt=''
20301                 for xxx in $avail_ext; do
20302                         case " $dynamic_ext " in
20303                         *" $xxx "*) ;;
20304                         *) dflt="$dflt $xxx" ;;
20305                         esac
20306                 done
20307                 set X $dflt
20308                 shift
20309                 dflt="$*"
20310                 ;;
20311         *)  dflt="$static_ext" 
20312                 ;;
20313         esac
20314
20315         case "$dflt" in
20316         '')     dflt=none;;
20317         esac
20318         rp="What extensions do you wish to load statically?"
20319         . ./myread
20320         case "$ans" in
20321         none) static_ext=' ' ;;
20322         *) static_ext="$ans" ;;
20323         esac
20324         ;;
20325 *)
20326         $cat <<EOM
20327 A number of extensions are supplied with $package.  Answer "none" 
20328 to include no extensions. 
20329 Note that DynaLoader is always built and need not be mentioned here.
20330
20331 EOM
20332         case "$static_ext" in
20333         '') dflt="$avail_ext" ;;
20334         *)      dflt="$static_ext"
20335                 # Perhaps we are reusing an old out-of-date config.sh.
20336                 case "$hint" in
20337                 previous)
20338                         if test X"$static_ext" != X"$avail_ext"; then
20339                                 $cat <<EOM
20340 NOTICE:  Your previous config.sh list may be incorrect. 
20341 The extensions now available to you are 
20342         ${avail_ext}
20343 but the default list from your previous config.sh is
20344         ${static_ext} 
20345
20346 EOM
20347                         fi
20348                         ;;
20349                 esac
20350                 ;;
20351         esac
20352         : Exclude those that are not xs extensions
20353         case "$dflt" in
20354         '')     dflt=none;;
20355         esac
20356         rp="What extensions do you wish to include?"
20357         . ./myread
20358         case "$ans" in
20359         none) static_ext=' ' ;;
20360         *) static_ext="$ans" ;;
20361         esac
20362         ;;
20363 esac
20364 #        
20365 # Encode is a special case.  If we are building Encode as a static
20366 # extension, we need to explicitly list its subextensions as well.
20367 # For other nested extensions, this is handled automatically by
20368 # the appropriate Makefile.PL.
20369 case " $static_ext " in
20370         *" Encode "*) # Add the subextensions of Encode
20371         cd "$rsrc/ext"
20372         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20373                 static_ext="$static_ext Encode/$xxx"
20374         done
20375         cd "$tdir"
20376         ;;
20377 esac
20378
20379 set X $dynamic_ext $static_ext $nonxs_ext
20380 shift
20381 extensions="$*"
20382
20383 # Sanity check:  We require an extension suitable for use with
20384 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
20385 # should show up as failures in the test suite, but it's helpful to
20386 # catch them now.) The 'extensions' list is normally sorted
20387 # alphabetically, so we need to accept either
20388 #    DB_File ... Fcntl ... IO  ....
20389 # or something like
20390 #    Fcntl ... NDBM_File ... IO  ....
20391 case " $extensions"  in
20392 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
20393 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20394 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
20395 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20396    echo "WARNING: The Perl you are building will be quite crippled." >& 4
20397    ;;
20398 esac
20399
20400 : Remove libraries needed only for extensions
20401 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20402 : The exception is SunOS 4.x, which needs them.
20403 case "${osname}X${osvers}" in
20404 sunos*X4*)
20405     perllibs="$libs"
20406     ;;
20407 *) case "$usedl" in
20408     $define|true|[yY]*)
20409             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20410             shift
20411             perllibs="$*"
20412             ;;
20413     *)  perllibs="$libs"
20414             ;;
20415     esac
20416     ;;
20417 esac
20418
20419 : Remove build directory name from cppstdin so it can be used from
20420 : either the present location or the final installed location.
20421 echo " "
20422 : Get out of the UU directory to get correct path name.
20423 cd ..
20424 case "$cppstdin" in
20425 `pwd`/cppstdin)
20426         echo "Stripping down cppstdin path name"
20427         cppstdin=cppstdin
20428         ;;
20429 esac
20430 cd UU
20431
20432 : end of configuration questions
20433 echo " "
20434 echo "End of configuration questions."
20435 echo " "
20436
20437 : back to where it started
20438 if test -d ../UU; then
20439         cd ..
20440 fi
20441
20442 : configuration may be patched via a 'config.arch' file
20443 if $test -f config.arch; then
20444         echo "I see a config.arch file, loading it."
20445         . ./config.arch
20446 fi
20447
20448 : configuration may be patched via a 'config.over' file
20449 if $test -f config.over; then
20450         echo " "
20451         dflt=y
20452         rp='I see a config.over file.  Do you wish to load it?'
20453         . UU/myread
20454         case "$ans" in
20455         n*) echo "OK, I'll ignore it.";;
20456         *)      . ./config.over
20457                 echo "Configuration override changes have been loaded."
20458                 ;;
20459         esac
20460 fi
20461
20462 : in case they want portability, strip down executable paths
20463 case "$d_portable" in
20464 "$define")
20465         echo " "
20466         echo "Stripping down executable paths..." >&4
20467         for file in $loclist $trylist; do
20468                 eval temp=\$$file
20469                 eval $file=`basename $temp`
20470         done
20471         ;;
20472 esac
20473
20474 : create config.sh file
20475 echo " "
20476 echo "Creating config.sh..." >&4
20477 $spitshell <<EOT >config.sh
20478 $startsh
20479 #
20480 # This file was produced by running the Configure script. It holds all the
20481 # definitions figured out by Configure. Should you modify one of these values,
20482 # do not forget to propagate your changes by running "Configure -der". You may
20483 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20484 #
20485
20486 # Package name      : $package
20487 # Source directory  : $src
20488 # Configuration time: $cf_time
20489 # Configured by     : $cf_by
20490 # Target system     : $myuname
20491
20492 Author='$Author'
20493 Date='$Date'
20494 Header='$Header'
20495 Id='$Id'
20496 Locker='$Locker'
20497 Log='$Log'
20498 Mcc='$Mcc'
20499 RCSfile='$RCSfile'
20500 Revision='$Revision'
20501 Source='$Source'
20502 State='$State'
20503 _a='$_a'
20504 _exe='$_exe'
20505 _o='$_o'
20506 afs='$afs'
20507 afsroot='$afsroot'
20508 alignbytes='$alignbytes'
20509 ansi2knr='$ansi2knr'
20510 aphostname='$aphostname'
20511 api_revision='$api_revision'
20512 api_subversion='$api_subversion'
20513 api_version='$api_version'
20514 api_versionstring='$api_versionstring'
20515 ar='$ar'
20516 archlib='$archlib'
20517 archlibexp='$archlibexp'
20518 archname64='$archname64'
20519 archname='$archname'
20520 archobjs='$archobjs'
20521 asctime_r_proto='$asctime_r_proto'
20522 awk='$awk'
20523 baserev='$baserev'
20524 bash='$bash'
20525 bin='$bin'
20526 binexp='$binexp'
20527 bison='$bison'
20528 byacc='$byacc'
20529 byteorder='$byteorder'
20530 c='$c'
20531 castflags='$castflags'
20532 cat='$cat'
20533 cc='$cc'
20534 cccdlflags='$cccdlflags'
20535 ccdlflags='$ccdlflags'
20536 ccflags='$ccflags'
20537 ccflags_uselargefiles='$ccflags_uselargefiles'
20538 ccname='$ccname'
20539 ccsymbols='$ccsymbols'
20540 ccversion='$ccversion'
20541 cf_by='$cf_by'
20542 cf_email='$cf_email'
20543 cf_time='$cf_time'
20544 charsize='$charsize'
20545 chgrp='$chgrp'
20546 chmod='$chmod'
20547 chown='$chown'
20548 clocktype='$clocktype'
20549 comm='$comm'
20550 compress='$compress'
20551 contains='$contains'
20552 cp='$cp'
20553 cpio='$cpio'
20554 cpp='$cpp'
20555 cpp_stuff='$cpp_stuff'
20556 cppccsymbols='$cppccsymbols'
20557 cppflags='$cppflags'
20558 cpplast='$cpplast'
20559 cppminus='$cppminus'
20560 cpprun='$cpprun'
20561 cppstdin='$cppstdin'
20562 cppsymbols='$cppsymbols'
20563 crypt_r_proto='$crypt_r_proto'
20564 cryptlib='$cryptlib'
20565 csh='$csh'
20566 ctermid_r_proto='$ctermid_r_proto'
20567 ctime_r_proto='$ctime_r_proto'
20568 d_Gconvert='$d_Gconvert'
20569 d_PRIEUldbl='$d_PRIEUldbl'
20570 d_PRIFUldbl='$d_PRIFUldbl'
20571 d_PRIGUldbl='$d_PRIGUldbl'
20572 d_PRIXU64='$d_PRIXU64'
20573 d_PRId64='$d_PRId64'
20574 d_PRIeldbl='$d_PRIeldbl'
20575 d_PRIfldbl='$d_PRIfldbl'
20576 d_PRIgldbl='$d_PRIgldbl'
20577 d_PRIi64='$d_PRIi64'
20578 d_PRIo64='$d_PRIo64'
20579 d_PRIu64='$d_PRIu64'
20580 d_PRIx64='$d_PRIx64'
20581 d_SCNfldbl='$d_SCNfldbl'
20582 d__fwalk='$d__fwalk'
20583 d_access='$d_access'
20584 d_accessx='$d_accessx'
20585 d_aintl='$d_aintl'
20586 d_alarm='$d_alarm'
20587 d_archlib='$d_archlib'
20588 d_asctime_r='$d_asctime_r'
20589 d_atolf='$d_atolf'
20590 d_atoll='$d_atoll'
20591 d_attribut='$d_attribut'
20592 d_bcmp='$d_bcmp'
20593 d_bcopy='$d_bcopy'
20594 d_bsd='$d_bsd'
20595 d_bsdgetpgrp='$d_bsdgetpgrp'
20596 d_bsdsetpgrp='$d_bsdsetpgrp'
20597 d_bzero='$d_bzero'
20598 d_casti32='$d_casti32'
20599 d_castneg='$d_castneg'
20600 d_charvspr='$d_charvspr'
20601 d_chown='$d_chown'
20602 d_chroot='$d_chroot'
20603 d_chsize='$d_chsize'
20604 d_class='$d_class'
20605 d_closedir='$d_closedir'
20606 d_cmsghdr_s='$d_cmsghdr_s'
20607 d_const='$d_const'
20608 d_copysignl='$d_copysignl'
20609 d_crypt='$d_crypt'
20610 d_crypt_r='$d_crypt_r'
20611 d_csh='$d_csh'
20612 d_ctermid_r='$d_ctermid_r'
20613 d_ctime_r='$d_ctime_r'
20614 d_cuserid='$d_cuserid'
20615 d_dbl_dig='$d_dbl_dig'
20616 d_dbminitproto='$d_dbminitproto'
20617 d_difftime='$d_difftime'
20618 d_dirfd='$d_dirfd'
20619 d_dirnamlen='$d_dirnamlen'
20620 d_dlerror='$d_dlerror'
20621 d_dlopen='$d_dlopen'
20622 d_dlsymun='$d_dlsymun'
20623 d_dosuid='$d_dosuid'
20624 d_drand48_r='$d_drand48_r'
20625 d_drand48proto='$d_drand48proto'
20626 d_dup2='$d_dup2'
20627 d_eaccess='$d_eaccess'
20628 d_endgrent='$d_endgrent'
20629 d_endgrent_r='$d_endgrent_r'
20630 d_endhent='$d_endhent'
20631 d_endhostent_r='$d_endhostent_r'
20632 d_endnent='$d_endnent'
20633 d_endnetent_r='$d_endnetent_r'
20634 d_endpent='$d_endpent'
20635 d_endprotoent_r='$d_endprotoent_r'
20636 d_endpwent='$d_endpwent'
20637 d_endpwent_r='$d_endpwent_r'
20638 d_endsent='$d_endsent'
20639 d_endservent_r='$d_endservent_r'
20640 d_eofnblk='$d_eofnblk'
20641 d_eunice='$d_eunice'
20642 d_faststdio='$d_faststdio'
20643 d_fchdir='$d_fchdir'
20644 d_fchmod='$d_fchmod'
20645 d_fchown='$d_fchown'
20646 d_fcntl='$d_fcntl'
20647 d_fcntl_can_lock='$d_fcntl_can_lock'
20648 d_fd_macros='$d_fd_macros'
20649 d_fd_set='$d_fd_set'
20650 d_fds_bits='$d_fds_bits'
20651 d_fgetpos='$d_fgetpos'
20652 d_finite='$d_finite'
20653 d_finitel='$d_finitel'
20654 d_flexfnam='$d_flexfnam'
20655 d_flock='$d_flock'
20656 d_flockproto='$d_flockproto'
20657 d_fork='$d_fork'
20658 d_fp_class='$d_fp_class'
20659 d_fpathconf='$d_fpathconf'
20660 d_fpclass='$d_fpclass'
20661 d_fpclassify='$d_fpclassify'
20662 d_fpclassl='$d_fpclassl'
20663 d_fpos64_t='$d_fpos64_t'
20664 d_frexpl='$d_frexpl'
20665 d_fs_data_s='$d_fs_data_s'
20666 d_fseeko='$d_fseeko'
20667 d_fsetpos='$d_fsetpos'
20668 d_fstatfs='$d_fstatfs'
20669 d_fstatvfs='$d_fstatvfs'
20670 d_fsync='$d_fsync'
20671 d_ftello='$d_ftello'
20672 d_ftime='$d_ftime'
20673 d_getcwd='$d_getcwd'
20674 d_getespwnam='$d_getespwnam'
20675 d_getfsstat='$d_getfsstat'
20676 d_getgrent='$d_getgrent'
20677 d_getgrent_r='$d_getgrent_r'
20678 d_getgrgid_r='$d_getgrgid_r'
20679 d_getgrnam_r='$d_getgrnam_r'
20680 d_getgrps='$d_getgrps'
20681 d_gethbyaddr='$d_gethbyaddr'
20682 d_gethbyname='$d_gethbyname'
20683 d_gethent='$d_gethent'
20684 d_gethname='$d_gethname'
20685 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20686 d_gethostbyname_r='$d_gethostbyname_r'
20687 d_gethostent_r='$d_gethostent_r'
20688 d_gethostprotos='$d_gethostprotos'
20689 d_getitimer='$d_getitimer'
20690 d_getlogin='$d_getlogin'
20691 d_getlogin_r='$d_getlogin_r'
20692 d_getmnt='$d_getmnt'
20693 d_getmntent='$d_getmntent'
20694 d_getnbyaddr='$d_getnbyaddr'
20695 d_getnbyname='$d_getnbyname'
20696 d_getnent='$d_getnent'
20697 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20698 d_getnetbyname_r='$d_getnetbyname_r'
20699 d_getnetent_r='$d_getnetent_r'
20700 d_getnetprotos='$d_getnetprotos'
20701 d_getpagsz='$d_getpagsz'
20702 d_getpbyname='$d_getpbyname'
20703 d_getpbynumber='$d_getpbynumber'
20704 d_getpent='$d_getpent'
20705 d_getpgid='$d_getpgid'
20706 d_getpgrp2='$d_getpgrp2'
20707 d_getpgrp='$d_getpgrp'
20708 d_getppid='$d_getppid'
20709 d_getprior='$d_getprior'
20710 d_getprotobyname_r='$d_getprotobyname_r'
20711 d_getprotobynumber_r='$d_getprotobynumber_r'
20712 d_getprotoent_r='$d_getprotoent_r'
20713 d_getprotoprotos='$d_getprotoprotos'
20714 d_getprpwnam='$d_getprpwnam'
20715 d_getpwent='$d_getpwent'
20716 d_getpwent_r='$d_getpwent_r'
20717 d_getpwnam_r='$d_getpwnam_r'
20718 d_getpwuid_r='$d_getpwuid_r'
20719 d_getsbyname='$d_getsbyname'
20720 d_getsbyport='$d_getsbyport'
20721 d_getsent='$d_getsent'
20722 d_getservbyname_r='$d_getservbyname_r'
20723 d_getservbyport_r='$d_getservbyport_r'
20724 d_getservent_r='$d_getservent_r'
20725 d_getservprotos='$d_getservprotos'
20726 d_getspnam='$d_getspnam'
20727 d_getspnam_r='$d_getspnam_r'
20728 d_gettimeod='$d_gettimeod'
20729 d_gmtime_r='$d_gmtime_r'
20730 d_gnulibc='$d_gnulibc'
20731 d_grpasswd='$d_grpasswd'
20732 d_hasmntopt='$d_hasmntopt'
20733 d_htonl='$d_htonl'
20734 d_ilogbl='$d_ilogbl'
20735 d_index='$d_index'
20736 d_inetaton='$d_inetaton'
20737 d_int64_t='$d_int64_t'
20738 d_isascii='$d_isascii'
20739 d_isfinite='$d_isfinite'
20740 d_isinf='$d_isinf'
20741 d_isnan='$d_isnan'
20742 d_isnanl='$d_isnanl'
20743 d_killpg='$d_killpg'
20744 d_lchown='$d_lchown'
20745 d_ldbl_dig='$d_ldbl_dig'
20746 d_link='$d_link'
20747 d_localtime_r='$d_localtime_r'
20748 d_locconv='$d_locconv'
20749 d_lockf='$d_lockf'
20750 d_longdbl='$d_longdbl'
20751 d_longlong='$d_longlong'
20752 d_lseekproto='$d_lseekproto'
20753 d_lstat='$d_lstat'
20754 d_madvise='$d_madvise'
20755 d_mblen='$d_mblen'
20756 d_mbstowcs='$d_mbstowcs'
20757 d_mbtowc='$d_mbtowc'
20758 d_memchr='$d_memchr'
20759 d_memcmp='$d_memcmp'
20760 d_memcpy='$d_memcpy'
20761 d_memmove='$d_memmove'
20762 d_memset='$d_memset'
20763 d_mkdir='$d_mkdir'
20764 d_mkdtemp='$d_mkdtemp'
20765 d_mkfifo='$d_mkfifo'
20766 d_mkstemp='$d_mkstemp'
20767 d_mkstemps='$d_mkstemps'
20768 d_mktime='$d_mktime'
20769 d_mmap='$d_mmap'
20770 d_modfl='$d_modfl'
20771 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20772 d_modflproto='$d_modflproto'
20773 d_mprotect='$d_mprotect'
20774 d_msg='$d_msg'
20775 d_msg_ctrunc='$d_msg_ctrunc'
20776 d_msg_dontroute='$d_msg_dontroute'
20777 d_msg_oob='$d_msg_oob'
20778 d_msg_peek='$d_msg_peek'
20779 d_msg_proxy='$d_msg_proxy'
20780 d_msgctl='$d_msgctl'
20781 d_msgget='$d_msgget'
20782 d_msghdr_s='$d_msghdr_s'
20783 d_msgrcv='$d_msgrcv'
20784 d_msgsnd='$d_msgsnd'
20785 d_msync='$d_msync'
20786 d_munmap='$d_munmap'
20787 d_mymalloc='$d_mymalloc'
20788 d_nice='$d_nice'
20789 d_nl_langinfo='$d_nl_langinfo'
20790 d_nv_preserves_uv='$d_nv_preserves_uv'
20791 d_off64_t='$d_off64_t'
20792 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20793 d_oldpthreads='$d_oldpthreads'
20794 d_oldsock='$d_oldsock'
20795 d_open3='$d_open3'
20796 d_pathconf='$d_pathconf'
20797 d_pause='$d_pause'
20798 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20799 d_phostname='$d_phostname'
20800 d_pipe='$d_pipe'
20801 d_poll='$d_poll'
20802 d_portable='$d_portable'
20803 d_procselfexe='$d_procselfexe'
20804 d_pthread_atfork='$d_pthread_atfork'
20805 d_pthread_attr_setscope='$d_pthread_attr_setscope'
20806 d_pthread_yield='$d_pthread_yield'
20807 d_pwage='$d_pwage'
20808 d_pwchange='$d_pwchange'
20809 d_pwclass='$d_pwclass'
20810 d_pwcomment='$d_pwcomment'
20811 d_pwexpire='$d_pwexpire'
20812 d_pwgecos='$d_pwgecos'
20813 d_pwpasswd='$d_pwpasswd'
20814 d_pwquota='$d_pwquota'
20815 d_qgcvt='$d_qgcvt'
20816 d_quad='$d_quad'
20817 d_random_r='$d_random_r'
20818 d_readdir64_r='$d_readdir64_r'
20819 d_readdir='$d_readdir'
20820 d_readdir_r='$d_readdir_r'
20821 d_readlink='$d_readlink'
20822 d_readv='$d_readv'
20823 d_recvmsg='$d_recvmsg'
20824 d_rename='$d_rename'
20825 d_rewinddir='$d_rewinddir'
20826 d_rmdir='$d_rmdir'
20827 d_safebcpy='$d_safebcpy'
20828 d_safemcpy='$d_safemcpy'
20829 d_sanemcmp='$d_sanemcmp'
20830 d_sbrkproto='$d_sbrkproto'
20831 d_scalbnl='$d_scalbnl'
20832 d_sched_yield='$d_sched_yield'
20833 d_scm_rights='$d_scm_rights'
20834 d_seekdir='$d_seekdir'
20835 d_select='$d_select'
20836 d_sem='$d_sem'
20837 d_semctl='$d_semctl'
20838 d_semctl_semid_ds='$d_semctl_semid_ds'
20839 d_semctl_semun='$d_semctl_semun'
20840 d_semget='$d_semget'
20841 d_semop='$d_semop'
20842 d_sendmsg='$d_sendmsg'
20843 d_setegid='$d_setegid'
20844 d_seteuid='$d_seteuid'
20845 d_setgrent='$d_setgrent'
20846 d_setgrent_r='$d_setgrent_r'
20847 d_setgrps='$d_setgrps'
20848 d_sethent='$d_sethent'
20849 d_sethostent_r='$d_sethostent_r'
20850 d_setitimer='$d_setitimer'
20851 d_setlinebuf='$d_setlinebuf'
20852 d_setlocale='$d_setlocale'
20853 d_setlocale_r='$d_setlocale_r'
20854 d_setnent='$d_setnent'
20855 d_setnetent_r='$d_setnetent_r'
20856 d_setpent='$d_setpent'
20857 d_setpgid='$d_setpgid'
20858 d_setpgrp2='$d_setpgrp2'
20859 d_setpgrp='$d_setpgrp'
20860 d_setprior='$d_setprior'
20861 d_setproctitle='$d_setproctitle'
20862 d_setprotoent_r='$d_setprotoent_r'
20863 d_setpwent='$d_setpwent'
20864 d_setpwent_r='$d_setpwent_r'
20865 d_setregid='$d_setregid'
20866 d_setresgid='$d_setresgid'
20867 d_setresuid='$d_setresuid'
20868 d_setreuid='$d_setreuid'
20869 d_setrgid='$d_setrgid'
20870 d_setruid='$d_setruid'
20871 d_setsent='$d_setsent'
20872 d_setservent_r='$d_setservent_r'
20873 d_setsid='$d_setsid'
20874 d_setvbuf='$d_setvbuf'
20875 d_sfio='$d_sfio'
20876 d_shm='$d_shm'
20877 d_shmat='$d_shmat'
20878 d_shmatprototype='$d_shmatprototype'
20879 d_shmctl='$d_shmctl'
20880 d_shmdt='$d_shmdt'
20881 d_shmget='$d_shmget'
20882 d_sigaction='$d_sigaction'
20883 d_sigprocmask='$d_sigprocmask'
20884 d_sigsetjmp='$d_sigsetjmp'
20885 d_sockatmark='$d_sockatmark'
20886 d_sockatmarkproto='$d_sockatmarkproto'
20887 d_socket='$d_socket'
20888 d_socklen_t='$d_socklen_t'
20889 d_sockpair='$d_sockpair'
20890 d_socks5_init='$d_socks5_init'
20891 d_sqrtl='$d_sqrtl'
20892 d_srand48_r='$d_srand48_r'
20893 d_srandom_r='$d_srandom_r'
20894 d_sresgproto='$d_sresgproto'
20895 d_sresuproto='$d_sresuproto'
20896 d_statblks='$d_statblks'
20897 d_statfs_f_flags='$d_statfs_f_flags'
20898 d_statfs_s='$d_statfs_s'
20899 d_statvfs='$d_statvfs'
20900 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20901 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20902 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20903 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20904 d_stdio_stream_array='$d_stdio_stream_array'
20905 d_stdiobase='$d_stdiobase'
20906 d_stdstdio='$d_stdstdio'
20907 d_strchr='$d_strchr'
20908 d_strcoll='$d_strcoll'
20909 d_strctcpy='$d_strctcpy'
20910 d_strerrm='$d_strerrm'
20911 d_strerror='$d_strerror'
20912 d_strerror_r='$d_strerror_r'
20913 d_strftime='$d_strftime'
20914 d_strlcat='$d_strlcat'
20915 d_strlcpy='$d_strlcpy'
20916 d_strtod='$d_strtod'
20917 d_strtol='$d_strtol'
20918 d_strtold='$d_strtold'
20919 d_strtoll='$d_strtoll'
20920 d_strtoq='$d_strtoq'
20921 d_strtoul='$d_strtoul'
20922 d_strtoull='$d_strtoull'
20923 d_strtouq='$d_strtouq'
20924 d_strxfrm='$d_strxfrm'
20925 d_suidsafe='$d_suidsafe'
20926 d_symlink='$d_symlink'
20927 d_syscall='$d_syscall'
20928 d_syscallproto='$d_syscallproto'
20929 d_sysconf='$d_sysconf'
20930 d_sysernlst='$d_sysernlst'
20931 d_syserrlst='$d_syserrlst'
20932 d_system='$d_system'
20933 d_tcgetpgrp='$d_tcgetpgrp'
20934 d_tcsetpgrp='$d_tcsetpgrp'
20935 d_telldir='$d_telldir'
20936 d_telldirproto='$d_telldirproto'
20937 d_time='$d_time'
20938 d_times='$d_times'
20939 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20940 d_tm_tm_zone='$d_tm_tm_zone'
20941 d_tmpnam_r='$d_tmpnam_r'
20942 d_truncate='$d_truncate'
20943 d_ttyname_r='$d_ttyname_r'
20944 d_tzname='$d_tzname'
20945 d_u32align='$d_u32align'
20946 d_ualarm='$d_ualarm'
20947 d_umask='$d_umask'
20948 d_uname='$d_uname'
20949 d_union_semun='$d_union_semun'
20950 d_unordered='$d_unordered'
20951 d_usleep='$d_usleep'
20952 d_usleepproto='$d_usleepproto'
20953 d_ustat='$d_ustat'
20954 d_vendorarch='$d_vendorarch'
20955 d_vendorbin='$d_vendorbin'
20956 d_vendorlib='$d_vendorlib'
20957 d_vendorscript='$d_vendorscript'
20958 d_vfork='$d_vfork'
20959 d_void_closedir='$d_void_closedir'
20960 d_voidsig='$d_voidsig'
20961 d_voidtty='$d_voidtty'
20962 d_volatile='$d_volatile'
20963 d_vprintf='$d_vprintf'
20964 d_wait4='$d_wait4'
20965 d_waitpid='$d_waitpid'
20966 d_wcstombs='$d_wcstombs'
20967 d_wctomb='$d_wctomb'
20968 d_writev='$d_writev'
20969 d_xenix='$d_xenix'
20970 date='$date'
20971 db_hashtype='$db_hashtype'
20972 db_prefixtype='$db_prefixtype'
20973 db_version_major='$db_version_major'
20974 db_version_minor='$db_version_minor'
20975 db_version_patch='$db_version_patch'
20976 defvoidused='$defvoidused'
20977 direntrytype='$direntrytype'
20978 dlext='$dlext'
20979 dlsrc='$dlsrc'
20980 doublesize='$doublesize'
20981 drand01='$drand01'
20982 drand48_r_proto='$drand48_r_proto'
20983 dynamic_ext='$dynamic_ext'
20984 eagain='$eagain'
20985 ebcdic='$ebcdic'
20986 echo='$echo'
20987 egrep='$egrep'
20988 emacs='$emacs'
20989 endgrent_r_proto='$endgrent_r_proto'
20990 endhostent_r_proto='$endhostent_r_proto'
20991 endnetent_r_proto='$endnetent_r_proto'
20992 endprotoent_r_proto='$endprotoent_r_proto'
20993 endpwent_r_proto='$endpwent_r_proto'
20994 endservent_r_proto='$endservent_r_proto'
20995 eunicefix='$eunicefix'
20996 exe_ext='$exe_ext'
20997 expr='$expr'
20998 extensions='$extensions'
20999 extras='$extras'
21000 fflushNULL='$fflushNULL'
21001 fflushall='$fflushall'
21002 find='$find'
21003 firstmakefile='$firstmakefile'
21004 flex='$flex'
21005 fpossize='$fpossize'
21006 fpostype='$fpostype'
21007 freetype='$freetype'
21008 from='$from'
21009 full_ar='$full_ar'
21010 full_csh='$full_csh'
21011 full_sed='$full_sed'
21012 gccansipedantic='$gccansipedantic'
21013 gccosandvers='$gccosandvers'
21014 gccversion='$gccversion'
21015 getgrent_r_proto='$getgrent_r_proto'
21016 getgrgid_r_proto='$getgrgid_r_proto'
21017 getgrnam_r_proto='$getgrnam_r_proto'
21018 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
21019 gethostbyname_r_proto='$gethostbyname_r_proto'
21020 gethostent_r_proto='$gethostent_r_proto'
21021 getlogin_r_proto='$getlogin_r_proto'
21022 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
21023 getnetbyname_r_proto='$getnetbyname_r_proto'
21024 getnetent_r_proto='$getnetent_r_proto'
21025 getprotobyname_r_proto='$getprotobyname_r_proto'
21026 getprotobynumber_r_proto='$getprotobynumber_r_proto'
21027 getprotoent_r_proto='$getprotoent_r_proto'
21028 getpwent_r_proto='$getpwent_r_proto'
21029 getpwnam_r_proto='$getpwnam_r_proto'
21030 getpwuid_r_proto='$getpwuid_r_proto'
21031 getservbyname_r_proto='$getservbyname_r_proto'
21032 getservbyport_r_proto='$getservbyport_r_proto'
21033 getservent_r_proto='$getservent_r_proto'
21034 getspnam_r_proto='$getspnam_r_proto'
21035 gidformat='$gidformat'
21036 gidsign='$gidsign'
21037 gidsize='$gidsize'
21038 gidtype='$gidtype'
21039 glibpth='$glibpth'
21040 gmake='$gmake'
21041 gmtime_r_proto='$gmtime_r_proto'
21042 gnulibc_version='$gnulibc_version'
21043 grep='$grep'
21044 groupcat='$groupcat'
21045 groupstype='$groupstype'
21046 gzip='$gzip'
21047 h_fcntl='$h_fcntl'
21048 h_sysfile='$h_sysfile'
21049 hint='$hint'
21050 hostcat='$hostcat'
21051 html1dir='$html1dir'
21052 html1direxp='$html1direxp'
21053 html3dir='$html3dir'
21054 html3direxp='$html3direxp'
21055 i16size='$i16size'
21056 i16type='$i16type'
21057 i32size='$i32size'
21058 i32type='$i32type'
21059 i64size='$i64size'
21060 i64type='$i64type'
21061 i8size='$i8size'
21062 i8type='$i8type'
21063 i_arpainet='$i_arpainet'
21064 i_bsdioctl='$i_bsdioctl'
21065 i_crypt='$i_crypt'
21066 i_db='$i_db'
21067 i_dbm='$i_dbm'
21068 i_dirent='$i_dirent'
21069 i_dld='$i_dld'
21070 i_dlfcn='$i_dlfcn'
21071 i_fcntl='$i_fcntl'
21072 i_float='$i_float'
21073 i_fp='$i_fp'
21074 i_fp_class='$i_fp_class'
21075 i_gdbm='$i_gdbm'
21076 i_grp='$i_grp'
21077 i_ieeefp='$i_ieeefp'
21078 i_inttypes='$i_inttypes'
21079 i_langinfo='$i_langinfo'
21080 i_libutil='$i_libutil'
21081 i_limits='$i_limits'
21082 i_locale='$i_locale'
21083 i_machcthr='$i_machcthr'
21084 i_malloc='$i_malloc'
21085 i_math='$i_math'
21086 i_memory='$i_memory'
21087 i_mntent='$i_mntent'
21088 i_ndbm='$i_ndbm'
21089 i_netdb='$i_netdb'
21090 i_neterrno='$i_neterrno'
21091 i_netinettcp='$i_netinettcp'
21092 i_niin='$i_niin'
21093 i_poll='$i_poll'
21094 i_prot='$i_prot'
21095 i_pthread='$i_pthread'
21096 i_pwd='$i_pwd'
21097 i_rpcsvcdbm='$i_rpcsvcdbm'
21098 i_sfio='$i_sfio'
21099 i_sgtty='$i_sgtty'
21100 i_shadow='$i_shadow'
21101 i_socks='$i_socks'
21102 i_stdarg='$i_stdarg'
21103 i_stddef='$i_stddef'
21104 i_stdlib='$i_stdlib'
21105 i_string='$i_string'
21106 i_sunmath='$i_sunmath'
21107 i_sysaccess='$i_sysaccess'
21108 i_sysdir='$i_sysdir'
21109 i_sysfile='$i_sysfile'
21110 i_sysfilio='$i_sysfilio'
21111 i_sysin='$i_sysin'
21112 i_sysioctl='$i_sysioctl'
21113 i_syslog='$i_syslog'
21114 i_sysmman='$i_sysmman'
21115 i_sysmode='$i_sysmode'
21116 i_sysmount='$i_sysmount'
21117 i_sysndir='$i_sysndir'
21118 i_sysparam='$i_sysparam'
21119 i_sysresrc='$i_sysresrc'
21120 i_syssecrt='$i_syssecrt'
21121 i_sysselct='$i_sysselct'
21122 i_syssockio='$i_syssockio'
21123 i_sysstat='$i_sysstat'
21124 i_sysstatfs='$i_sysstatfs'
21125 i_sysstatvfs='$i_sysstatvfs'
21126 i_systime='$i_systime'
21127 i_systimek='$i_systimek'
21128 i_systimes='$i_systimes'
21129 i_systypes='$i_systypes'
21130 i_sysuio='$i_sysuio'
21131 i_sysun='$i_sysun'
21132 i_sysutsname='$i_sysutsname'
21133 i_sysvfs='$i_sysvfs'
21134 i_syswait='$i_syswait'
21135 i_termio='$i_termio'
21136 i_termios='$i_termios'
21137 i_time='$i_time'
21138 i_unistd='$i_unistd'
21139 i_ustat='$i_ustat'
21140 i_utime='$i_utime'
21141 i_values='$i_values'
21142 i_varargs='$i_varargs'
21143 i_varhdr='$i_varhdr'
21144 i_vfork='$i_vfork'
21145 ignore_versioned_solibs='$ignore_versioned_solibs'
21146 inc_version_list='$inc_version_list'
21147 inc_version_list_init='$inc_version_list_init'
21148 incpath='$incpath'
21149 inews='$inews'
21150 installarchlib='$installarchlib'
21151 installbin='$installbin'
21152 installhtml1dir='$installhtml1dir'
21153 installhtml3dir='$installhtml3dir'
21154 installman1dir='$installman1dir'
21155 installman3dir='$installman3dir'
21156 installprefix='$installprefix'
21157 installprefixexp='$installprefixexp'
21158 installprivlib='$installprivlib'
21159 installscript='$installscript'
21160 installsitearch='$installsitearch'
21161 installsitebin='$installsitebin'
21162 installsitehtml1dir='$installsitehtml1dir'
21163 installsitehtml3dir='$installsitehtml3dir'
21164 installsitelib='$installsitelib'
21165 installsiteman1dir='$installsiteman1dir'
21166 installsiteman3dir='$installsiteman3dir'
21167 installsitescript='$installsitescript'
21168 installstyle='$installstyle'
21169 installusrbinperl='$installusrbinperl'
21170 installvendorarch='$installvendorarch'
21171 installvendorbin='$installvendorbin'
21172 installvendorhtml1dir='$installvendorhtml1dir'
21173 installvendorhtml3dir='$installvendorhtml3dir'
21174 installvendorlib='$installvendorlib'
21175 installvendorman1dir='$installvendorman1dir'
21176 installvendorman3dir='$installvendorman3dir'
21177 installvendorscript='$installvendorscript'
21178 intsize='$intsize'
21179 issymlink='$issymlink'
21180 ivdformat='$ivdformat'
21181 ivsize='$ivsize'
21182 ivtype='$ivtype'
21183 known_extensions='$known_extensions'
21184 ksh='$ksh'
21185 ld='$ld'
21186 lddlflags='$lddlflags'
21187 ldflags='$ldflags'
21188 ldflags_uselargefiles='$ldflags_uselargefiles'
21189 ldlibpthname='$ldlibpthname'
21190 less='$less'
21191 lib_ext='$lib_ext'
21192 libc='$libc'
21193 libperl='$libperl'
21194 libpth='$libpth'
21195 libs='$libs'
21196 libsdirs='$libsdirs'
21197 libsfiles='$libsfiles'
21198 libsfound='$libsfound'
21199 libspath='$libspath'
21200 libswanted='$libswanted'
21201 libswanted_uselargefiles='$libswanted_uselargefiles'
21202 line='$line'
21203 lint='$lint'
21204 lkflags='$lkflags'
21205 ln='$ln'
21206 lns='$lns'
21207 localtime_r_proto='$localtime_r_proto'
21208 locincpth='$locincpth'
21209 loclibpth='$loclibpth'
21210 longdblsize='$longdblsize'
21211 longlongsize='$longlongsize'
21212 longsize='$longsize'
21213 lp='$lp'
21214 lpr='$lpr'
21215 ls='$ls'
21216 lseeksize='$lseeksize'
21217 lseektype='$lseektype'
21218 mail='$mail'
21219 mailx='$mailx'
21220 make='$make'
21221 make_set_make='$make_set_make'
21222 mallocobj='$mallocobj'
21223 mallocsrc='$mallocsrc'
21224 malloctype='$malloctype'
21225 man1dir='$man1dir'
21226 man1direxp='$man1direxp'
21227 man1ext='$man1ext'
21228 man3dir='$man3dir'
21229 man3direxp='$man3direxp'
21230 man3ext='$man3ext'
21231 mips_type='$mips_type'
21232 mistrustnm='$mistrustnm'
21233 mkdir='$mkdir'
21234 mmaptype='$mmaptype'
21235 modetype='$modetype'
21236 more='$more'
21237 multiarch='$multiarch'
21238 mv='$mv'
21239 myarchname='$myarchname'
21240 mydomain='$mydomain'
21241 myhostname='$myhostname'
21242 myuname='$myuname'
21243 n='$n'
21244 need_va_copy='$need_va_copy'
21245 netdb_hlen_type='$netdb_hlen_type'
21246 netdb_host_type='$netdb_host_type'
21247 netdb_name_type='$netdb_name_type'
21248 netdb_net_type='$netdb_net_type'
21249 nm='$nm'
21250 nm_opt='$nm_opt'
21251 nm_so_opt='$nm_so_opt'
21252 nonxs_ext='$nonxs_ext'
21253 nroff='$nroff'
21254 nvEUformat='$nvEUformat'
21255 nvFUformat='$nvFUformat'
21256 nvGUformat='$nvGUformat'
21257 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21258 nveformat='$nveformat'
21259 nvfformat='$nvfformat'
21260 nvgformat='$nvgformat'
21261 nvsize='$nvsize'
21262 nvtype='$nvtype'
21263 o_nonblock='$o_nonblock'
21264 obj_ext='$obj_ext'
21265 old_pthread_create_joinable='$old_pthread_create_joinable'
21266 optimize='$optimize'
21267 orderlib='$orderlib'
21268 osname='$osname'
21269 osvers='$osvers'
21270 otherlibdirs='$otherlibdirs'
21271 package='$package'
21272 pager='$pager'
21273 passcat='$passcat'
21274 patchlevel='$patchlevel'
21275 path_sep='$path_sep'
21276 perl5='$perl5'
21277 perl='$perl'
21278 perl_patchlevel='$perl_patchlevel'
21279 perladmin='$perladmin'
21280 perllibs='$perllibs'
21281 perlpath='$perlpath'
21282 pg='$pg'
21283 phostname='$phostname'
21284 pidtype='$pidtype'
21285 plibpth='$plibpth'
21286 pmake='$pmake'
21287 pr='$pr'
21288 prefix='$prefix'
21289 prefixexp='$prefixexp'
21290 privlib='$privlib'
21291 privlibexp='$privlibexp'
21292 procselfexe='$procselfexe'
21293 prototype='$prototype'
21294 ptrsize='$ptrsize'
21295 quadkind='$quadkind'
21296 quadtype='$quadtype'
21297 randbits='$randbits'
21298 randfunc='$randfunc'
21299 random_r_proto='$random_r_proto'
21300 randseedtype='$randseedtype'
21301 ranlib='$ranlib'
21302 rd_nodata='$rd_nodata'
21303 readdir64_r_proto='$readdir64_r_proto'
21304 readdir_r_proto='$readdir_r_proto'
21305 revision='$revision'
21306 rm='$rm'
21307 rmail='$rmail'
21308 run='$run'
21309 runnm='$runnm'
21310 sPRIEUldbl='$sPRIEUldbl'
21311 sPRIFUldbl='$sPRIFUldbl'
21312 sPRIGUldbl='$sPRIGUldbl'
21313 sPRIXU64='$sPRIXU64'
21314 sPRId64='$sPRId64'
21315 sPRIeldbl='$sPRIeldbl'
21316 sPRIfldbl='$sPRIfldbl'
21317 sPRIgldbl='$sPRIgldbl'
21318 sPRIi64='$sPRIi64'
21319 sPRIo64='$sPRIo64'
21320 sPRIu64='$sPRIu64'
21321 sPRIx64='$sPRIx64'
21322 sSCNfldbl='$sSCNfldbl'
21323 sched_yield='$sched_yield'
21324 scriptdir='$scriptdir'
21325 scriptdirexp='$scriptdirexp'
21326 sed='$sed'
21327 seedfunc='$seedfunc'
21328 selectminbits='$selectminbits'
21329 selecttype='$selecttype'
21330 sendmail='$sendmail'
21331 setgrent_r_proto='$setgrent_r_proto'
21332 sethostent_r_proto='$sethostent_r_proto'
21333 setlocale_r_proto='$setlocale_r_proto'
21334 setnetent_r_proto='$setnetent_r_proto'
21335 setprotoent_r_proto='$setprotoent_r_proto'
21336 setpwent_r_proto='$setpwent_r_proto'
21337 setservent_r_proto='$setservent_r_proto'
21338 sh='$sh'
21339 shar='$shar'
21340 sharpbang='$sharpbang'
21341 shmattype='$shmattype'
21342 shortsize='$shortsize'
21343 shrpenv='$shrpenv'
21344 shsharp='$shsharp'
21345 sig_count='$sig_count'
21346 sig_name='$sig_name'
21347 sig_name_init='$sig_name_init'
21348 sig_num='$sig_num'
21349 sig_num_init='$sig_num_init'
21350 sig_size='$sig_size'
21351 signal_t='$signal_t'
21352 sitearch='$sitearch'
21353 sitearchexp='$sitearchexp'
21354 sitebin='$sitebin'
21355 sitebinexp='$sitebinexp'
21356 sitehtml1dir='$sitehtml1dir'
21357 sitehtml1direxp='$sitehtml1direxp'
21358 sitehtml3dir='$sitehtml3dir'
21359 sitehtml3direxp='$sitehtml3direxp'
21360 sitelib='$sitelib'
21361 sitelib_stem='$sitelib_stem'
21362 sitelibexp='$sitelibexp'
21363 siteman1dir='$siteman1dir'
21364 siteman1direxp='$siteman1direxp'
21365 siteman3dir='$siteman3dir'
21366 siteman3direxp='$siteman3direxp'
21367 siteprefix='$siteprefix'
21368 siteprefixexp='$siteprefixexp'
21369 sitescript='$sitescript'
21370 sitescriptexp='$sitescriptexp'
21371 sizesize='$sizesize'
21372 sizetype='$sizetype'
21373 sleep='$sleep'
21374 smail='$smail'
21375 so='$so'
21376 sockethdr='$sockethdr'
21377 socketlib='$socketlib'
21378 socksizetype='$socksizetype'
21379 sort='$sort'
21380 spackage='$spackage'
21381 spitshell='$spitshell'
21382 srand48_r_proto='$srand48_r_proto'
21383 srandom_r_proto='$srandom_r_proto'
21384 src='$src'
21385 ssizetype='$ssizetype'
21386 startperl='$startperl'
21387 startsh='$startsh'
21388 static_ext='$static_ext'
21389 stdchar='$stdchar'
21390 stdio_base='$stdio_base'
21391 stdio_bufsiz='$stdio_bufsiz'
21392 stdio_cnt='$stdio_cnt'
21393 stdio_filbuf='$stdio_filbuf'
21394 stdio_ptr='$stdio_ptr'
21395 stdio_stream_array='$stdio_stream_array'
21396 strerror_r_proto='$strerror_r_proto'
21397 strings='$strings'
21398 submit='$submit'
21399 subversion='$subversion'
21400 sysman='$sysman'
21401 tail='$tail'
21402 tar='$tar'
21403 targetarch='$targetarch'
21404 tbl='$tbl'
21405 tee='$tee'
21406 test='$test'
21407 timeincl='$timeincl'
21408 timetype='$timetype'
21409 tmpnam_r_proto='$tmpnam_r_proto'
21410 to='$to'
21411 touch='$touch'
21412 tr='$tr'
21413 trnl='$trnl'
21414 troff='$troff'
21415 ttyname_r_proto='$ttyname_r_proto'
21416 u16size='$u16size'
21417 u16type='$u16type'
21418 u32size='$u32size'
21419 u32type='$u32type'
21420 u64size='$u64size'
21421 u64type='$u64type'
21422 u8size='$u8size'
21423 u8type='$u8type'
21424 uidformat='$uidformat'
21425 uidsign='$uidsign'
21426 uidsize='$uidsize'
21427 uidtype='$uidtype'
21428 uname='$uname'
21429 uniq='$uniq'
21430 uquadtype='$uquadtype'
21431 use5005threads='$use5005threads'
21432 use64bitall='$use64bitall'
21433 use64bitint='$use64bitint'
21434 usecrosscompile='$usecrosscompile'
21435 usedl='$usedl'
21436 usefaststdio='$usefaststdio'
21437 useithreads='$useithreads'
21438 uselargefiles='$uselargefiles'
21439 uselongdouble='$uselongdouble'
21440 usemallocwrap='$usemallocwrap'
21441 usemorebits='$usemorebits'
21442 usemultiplicity='$usemultiplicity'
21443 usemymalloc='$usemymalloc'
21444 usenm='$usenm'
21445 useopcode='$useopcode'
21446 useperlio='$useperlio'
21447 useposix='$useposix'
21448 usereentrant='$usereentrant'
21449 userelocatableinc='$userelocatableinc'
21450 usesfio='$usesfio'
21451 useshrplib='$useshrplib'
21452 usesitecustomize='$usesitecustomize'
21453 usesocks='$usesocks'
21454 usethreads='$usethreads'
21455 usevendorprefix='$usevendorprefix'
21456 usevfork='$usevfork'
21457 usrinc='$usrinc'
21458 uuname='$uuname'
21459 uvXUformat='$uvXUformat'
21460 uvoformat='$uvoformat'
21461 uvsize='$uvsize'
21462 uvtype='$uvtype'
21463 uvuformat='$uvuformat'
21464 uvxformat='$uvxformat'
21465 vendorarch='$vendorarch'
21466 vendorarchexp='$vendorarchexp'
21467 vendorbin='$vendorbin'
21468 vendorbinexp='$vendorbinexp'
21469 vendorhtml1dir='$vendorhtml1dir'
21470 vendorhtml1direxp='$vendorhtml1direxp'
21471 vendorhtml3dir='$vendorhtml3dir'
21472 vendorhtml3direxp='$vendorhtml3direxp'
21473 vendorlib='$vendorlib'
21474 vendorlib_stem='$vendorlib_stem'
21475 vendorlibexp='$vendorlibexp'
21476 vendorman1dir='$vendorman1dir'
21477 vendorman1direxp='$vendorman1direxp'
21478 vendorman3dir='$vendorman3dir'
21479 vendorman3direxp='$vendorman3direxp'
21480 vendorprefix='$vendorprefix'
21481 vendorprefixexp='$vendorprefixexp'
21482 vendorscript='$vendorscript'
21483 vendorscriptexp='$vendorscriptexp'
21484 version='$version'
21485 version_patchlevel_string='$version_patchlevel_string'
21486 versiononly='$versiononly'
21487 vi='$vi'
21488 voidflags='$voidflags'
21489 xlibpth='$xlibpth'
21490 yacc='$yacc'
21491 yaccflags='$yaccflags'
21492 zcat='$zcat'
21493 zip='$zip'
21494 EOT
21495
21496 : Add in command line options if available
21497 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21498
21499 : add special variables
21500 $test -f $src/patchlevel.h && \
21501 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21502 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21503 echo "PERL_CONFIG_SH=true" >>config.sh
21504
21505 : propagate old symbols
21506 if $test -f UU/config.sh; then
21507         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21508         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21509         $sort | $uniq -u >UU/oldsyms
21510         set X `cat UU/oldsyms`
21511         shift
21512         case $# in
21513         0) ;;
21514         *)
21515                 cat <<EOM
21516 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21517 EOM
21518                 echo "# Variables propagated from previous config.sh file." >>config.sh
21519                 for sym in `cat UU/oldsyms`; do
21520                         echo "    Propagating $hint variable "'$'"$sym..."
21521                         eval 'tmp="$'"${sym}"'"'
21522                         echo "$tmp" | \
21523                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21524                 done
21525                 ;;
21526         esac
21527 fi
21528
21529 : Finish up by extracting the .SH files
21530 case "$alldone" in
21531 exit)
21532         $rm -rf UU
21533         echo "Extraction done."
21534         exit 0
21535         ;;
21536 cont)
21537         ;;
21538 '')
21539         dflt=''
21540         nostick=true
21541         $cat <<EOM
21542
21543 If you'd like to make any changes to the config.sh file before I begin
21544 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21545
21546 EOM
21547         rp="Press return or use a shell escape to edit config.sh:"
21548         . UU/myread
21549         nostick=''
21550         case "$ans" in
21551         '') ;;
21552         *) : in case they cannot read
21553                 sh 1>&4 -c "$ans";;
21554         esac
21555         ;;
21556 esac
21557
21558 : if this fails, just run all the .SH files by hand
21559 . ./config.sh
21560
21561 echo " "
21562 exec 1>&4
21563 pwd=`pwd`
21564 . ./UU/extract
21565 cd "$pwd"
21566
21567 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21568         dflt=y
21569         case "$silent" in
21570         true) ;;
21571         *)
21572                 $cat <<EOM
21573
21574 Now you need to generate make dependencies by running "$make depend".
21575 You might prefer to run it in background: "$make depend > makedepend.out &"
21576 It can take a while, so you might not want to run it right now.
21577
21578 EOM
21579                 ;;
21580         esac
21581         rp="Run $make depend now?"
21582         . UU/myread
21583         case "$ans" in
21584         y*)
21585                 $make depend && echo "Now you must run '$make'."
21586                 ;;
21587         *)
21588                 echo "You must run '$make depend' then '$make'."
21589                 ;;
21590         esac
21591 elif test -f [Mm]akefile; then
21592         echo " "
21593         echo "Now you must run a $make."
21594 else
21595         echo "Configure done."
21596 fi
21597
21598 if $test -f Policy.sh; then
21599     $cat <<EOM
21600
21601 If you compile $package on a different machine or from a different object
21602 directory, copy the Policy.sh file from this object directory to the
21603 new one before you run Configure -- this will help you with most of
21604 the policy defaults.
21605
21606 EOM
21607 fi
21608 if $test -f config.msg; then
21609     echo "Hmm.  I also noted the following information while running:"
21610     echo " "
21611     $cat config.msg >&4
21612     $rm -f config.msg
21613 fi
21614 $rm -f kit*isdone ark*isdone
21615 $rm -rf UU
21616
21617 : End of Configure
21618