d1af579986a4600f672fa31281b6fdbccca34a8d
[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 Dec  5 12:57:38 MET 2003 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ c2$$
49
50 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
51         cat >&4 <<EOF
52 ***
53 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
54 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
55 *** Please read the README.plan9 for further instructions.
56 *** Cannot continue, aborting.
57 ***
58 EOF
59         exit 1
60 fi
61
62 : compute my invocation name
63 me=$0
64 case "$0" in
65 */*)
66         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
67         test "$me" || me=$0
68         ;;
69 esac
70
71 : Proper separator for the PATH environment variable
72 p_=:
73 : On OS/2 this directory should exist if this is not floppy only system :-]
74 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
75     if test -n "$OS2_SHELL"; then
76                 p_=\;
77                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
78                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
79                 is_os2=yes
80         elif test -n "$DJGPP"; then
81                 case "X${MACHTYPE:-nonesuchmach}" in
82                 *cygwin) ;;
83                 *) p_=\; ;;
84                 esac
85         fi
86 fi
87
88 : Proper PATH setting
89 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
90 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
91 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
92 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
93 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
94 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
95 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
96 paths="$paths /sbin /usr/sbin /usr/libexec"
97 paths="$paths /system/gnu_library/bin"
98
99 for p in $paths
100 do
101         case "$p_$PATH$p_" in
102         *$p_$p$p_*) ;;
103         *) test -d $p && PATH=$PATH$p_$p ;;
104         esac
105 done
106
107 PATH=.$p_$PATH
108 export PATH
109
110 : shall we be using ksh?
111 inksh=''
112 needksh=''
113 avoidksh=''
114 newsh=/bin/ksh
115 changesh=''
116 if (PATH=.; alias -x) >/dev/null 2>&1; then
117                 inksh=true
118 fi
119 if test -f /hp-ux -a -f /bin/ksh; then
120         needksh='to avoid sh bug in "here document" expansion'
121 fi
122 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
123         if test X`/usr/bin/uname -v` = X4; then
124                 avoidksh="to avoid AIX 4's /bin/sh"
125                 newsh=/usr/bin/bsh
126         fi
127 fi
128 if test -f /osf_boot -a -f /usr/sbin/setld; then
129         if test X`/usr/bin/uname -s` = XOSF1; then
130                 avoidksh="to avoid Digital UNIX' ksh"
131                 newsh=/bin/sh
132                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
133         fi
134 fi
135 case "$inksh/$needksh" in
136 /[a-z]*)
137                 ENV=''
138                 changesh=true
139                 reason="$needksh"
140         ;;
141 esac
142 case "$inksh/$avoidksh" in
143 true/[a-z]*)
144         changesh=true
145         reason="$avoidksh"
146         ;;
147 esac
148 case "$inksh/$needksh-$avoidksh-" in
149 true/--)
150                 cat <<EOM
151 (I see you are using the Korn shell.  Some ksh's blow up on $me,
152 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
153 EOM
154         ;;
155 esac
156 case "$changesh" in
157 true)
158         export newsh
159         echo "(Feeding myself to $newsh $reason.)"
160         case "$0" in
161         Configure|*/Configure) exec $newsh $0 "$@";;
162         *) exec $newsh Configure "$@";;
163         esac
164         ;;
165 esac
166
167 : if needed set CDPATH to a harmless value that is not chatty
168 : avoid bash 2.02 problems with empty CDPATH.
169 case "$CDPATH" in
170 '')     ;;
171 *)      case "$SHELL" in
172         *bash*) CDPATH='.' ;;
173         *)              CDPATH='' ;;
174         esac
175         ;;
176 esac
177 : Configure runs within the UU subdirectory
178 test -d UU || mkdir UU
179 cd UU && rm -f ./*
180
181 ccname=''
182 ccversion=''
183 ccsymbols=''
184 cppccsymbols=''
185 cppsymbols=''
186 from=''
187 run=''
188 targetarch=''
189 to=''
190 usecrosscompile=''
191 mistrustnm=''
192 perllibs=''
193 dynamic_ext=''
194 extensions=''
195 known_extensions=''
196 nonxs_ext=''
197 static_ext=''
198 useopcode=''
199 useposix=''
200 extras=''
201 d_bsd=''
202 d_eunice=''
203 d_xenix=''
204 eunicefix=''
205 Mcc=''
206 ar=''
207 awk=''
208 bash=''
209 bison=''
210 byacc=''
211 cat=''
212 chgrp=''
213 chmod=''
214 chown=''
215 comm=''
216 compress=''
217 cp=''
218 cpio=''
219 cpp=''
220 csh=''
221 date=''
222 echo=''
223 egrep=''
224 emacs=''
225 expr=''
226 find=''
227 flex=''
228 gmake=''
229 grep=''
230 gzip=''
231 inews=''
232 ksh=''
233 less=''
234 line=''
235 lint=''
236 ln=''
237 lp=''
238 lpr=''
239 ls=''
240 mail=''
241 mailx=''
242 make=''
243 mkdir=''
244 more=''
245 mv=''
246 nm=''
247 nroff=''
248 perl=''
249 pg=''
250 pmake=''
251 pr=''
252 rm=''
253 rmail=''
254 sed=''
255 sendmail=''
256 shar=''
257 sleep=''
258 smail=''
259 sort=''
260 submit=''
261 tail=''
262 tar=''
263 tbl=''
264 tee=''
265 test=''
266 touch=''
267 tr=''
268 troff=''
269 uname=''
270 uniq=''
271 uuname=''
272 vi=''
273 zcat=''
274 zip=''
275 full_ar=''
276 full_sed=''
277 libswanted=''
278 hint=''
279 myuname=''
280 osname=''
281 osvers=''
282 Author=''
283 Date=''
284 Header=''
285 Id=''
286 Locker=''
287 Log=''
288 RCSfile=''
289 Revision=''
290 Source=''
291 State=''
292 _a=''
293 _exe=''
294 _o=''
295 archobjs=''
296 exe_ext=''
297 firstmakefile=''
298 lib_ext=''
299 obj_ext=''
300 path_sep=''
301 afs=''
302 afsroot=''
303 alignbytes=''
304 ansi2knr=''
305 archlib=''
306 archlibexp=''
307 d_archlib=''
308 installarchlib=''
309 archname=''
310 myarchname=''
311 d_atolf=''
312 d_atoll=''
313 baserev=''
314 bin=''
315 binexp=''
316 installbin=''
317 byteorder=''
318 cc=''
319 ccflags=''
320 cppflags=''
321 ldflags=''
322 lkflags=''
323 locincpth=''
324 optimize=''
325 cf_email=''
326 cf_by=''
327 cf_time=''
328 charsize=''
329 contains=''
330 cpp_stuff=''
331 cpplast=''
332 cppminus=''
333 cpprun=''
334 cppstdin=''
335 d__fwalk=''
336 d_access=''
337 d_accessx=''
338 d_aintl=''
339 d_alarm=''
340 asctime_r_proto=''
341 d_asctime_r=''
342 d_attribut=''
343 d_bcmp=''
344 d_bcopy=''
345 d_bzero=''
346 d_casti32=''
347 castflags=''
348 d_castneg=''
349 d_chown=''
350 d_chroot=''
351 d_chsize=''
352 d_class=''
353 d_closedir=''
354 d_void_closedir=''
355 d_cmsghdr_s=''
356 d_const=''
357 d_copysignl=''
358 cryptlib=''
359 d_crypt=''
360 crypt_r_proto=''
361 d_crypt_r=''
362 d_csh=''
363 full_csh=''
364 ctermid_r_proto=''
365 d_ctermid_r=''
366 ctime_r_proto=''
367 d_ctime_r=''
368 d_cuserid=''
369 d_dbl_dig=''
370 d_dbminitproto=''
371 d_difftime=''
372 d_dirfd=''
373 d_dlerror=''
374 d_dlopen=''
375 d_dlsymun=''
376 d_dosuid=''
377 d_suidsafe=''
378 d_drand48_r=''
379 drand48_r_proto=''
380 d_drand48proto=''
381 d_dup2=''
382 d_eaccess=''
383 d_endgrent=''
384 d_endgrent_r=''
385 endgrent_r_proto=''
386 d_endhent=''
387 d_endhostent_r=''
388 endhostent_r_proto=''
389 d_endnent=''
390 d_endnetent_r=''
391 endnetent_r_proto=''
392 d_endpent=''
393 d_endprotoent_r=''
394 endprotoent_r_proto=''
395 d_endpwent=''
396 d_endpwent_r=''
397 endpwent_r_proto=''
398 d_endsent=''
399 d_endservent_r=''
400 endservent_r_proto=''
401 d_faststdio=''
402 d_fchdir=''
403 d_fchmod=''
404 d_fchown=''
405 d_fcntl=''
406 d_fcntl_can_lock=''
407 d_fd_macros=''
408 d_fd_set=''
409 d_fds_bits=''
410 d_fgetpos=''
411 d_finite=''
412 d_finitel=''
413 d_flexfnam=''
414 d_flock=''
415 d_flockproto=''
416 d_fork=''
417 d_fp_class=''
418 d_fpclass=''
419 d_fpclassify=''
420 d_fpclassl=''
421 d_fpos64_t=''
422 d_frexpl=''
423 d_fs_data_s=''
424 d_fseeko=''
425 d_fsetpos=''
426 d_fstatfs=''
427 d_fsync=''
428 d_ftello=''
429 d_ftime=''
430 d_gettimeod=''
431 d_Gconvert=''
432 d_getcwd=''
433 d_getespwnam=''
434 d_getfsstat=''
435 d_getgrent=''
436 d_getgrent_r=''
437 getgrent_r_proto=''
438 d_getgrgid_r=''
439 getgrgid_r_proto=''
440 d_getgrnam_r=''
441 getgrnam_r_proto=''
442 d_getgrps=''
443 d_gethbyaddr=''
444 d_gethbyname=''
445 d_gethent=''
446 aphostname=''
447 d_gethname=''
448 d_phostname=''
449 d_uname=''
450 d_gethostbyaddr_r=''
451 gethostbyaddr_r_proto=''
452 d_gethostbyname_r=''
453 gethostbyname_r_proto=''
454 d_gethostent_r=''
455 gethostent_r_proto=''
456 d_gethostprotos=''
457 d_getitimer=''
458 d_getlogin=''
459 d_getlogin_r=''
460 getlogin_r_proto=''
461 d_getmnt=''
462 d_getmntent=''
463 d_getnbyaddr=''
464 d_getnbyname=''
465 d_getnent=''
466 d_getnetbyaddr_r=''
467 getnetbyaddr_r_proto=''
468 d_getnetbyname_r=''
469 getnetbyname_r_proto=''
470 d_getnetent_r=''
471 getnetent_r_proto=''
472 d_getnetprotos=''
473 d_getpagsz=''
474 d_getpent=''
475 d_getpgid=''
476 d_getpgrp2=''
477 d_bsdgetpgrp=''
478 d_getpgrp=''
479 d_getppid=''
480 d_getprior=''
481 d_getpbyname=''
482 d_getpbynumber=''
483 d_getprotobyname_r=''
484 getprotobyname_r_proto=''
485 d_getprotobynumber_r=''
486 getprotobynumber_r_proto=''
487 d_getprotoent_r=''
488 getprotoent_r_proto=''
489 d_getprotoprotos=''
490 d_getprpwnam=''
491 d_getpwent=''
492 d_getpwent_r=''
493 getpwent_r_proto=''
494 d_getpwnam_r=''
495 getpwnam_r_proto=''
496 d_getpwuid_r=''
497 getpwuid_r_proto=''
498 d_getsent=''
499 d_getservbyname_r=''
500 getservbyname_r_proto=''
501 d_getservbyport_r=''
502 getservbyport_r_proto=''
503 d_getservent_r=''
504 getservent_r_proto=''
505 d_getservprotos=''
506 d_getspnam=''
507 d_getspnam_r=''
508 getspnam_r_proto=''
509 d_getsbyname=''
510 d_getsbyport=''
511 d_gmtime_r=''
512 gmtime_r_proto=''
513 d_gnulibc=''
514 gnulibc_version=''
515 d_hasmntopt=''
516 d_htonl=''
517 d_ilogbl=''
518 d_inetaton=''
519 d_int64_t=''
520 d_isascii=''
521 d_isfinite=''
522 d_isinf=''
523 d_isnan=''
524 d_isnanl=''
525 d_killpg=''
526 d_lchown=''
527 d_ldbl_dig=''
528 d_link=''
529 d_localtime_r=''
530 localtime_r_proto=''
531 d_locconv=''
532 d_lockf=''
533 d_longdbl=''
534 longdblsize=''
535 d_longlong=''
536 longlongsize=''
537 d_lseekproto=''
538 d_lstat=''
539 d_madvise=''
540 d_mblen=''
541 d_mbstowcs=''
542 d_mbtowc=''
543 d_memchr=''
544 d_memcmp=''
545 d_memcpy=''
546 d_memmove=''
547 d_memset=''
548 d_mkdir=''
549 d_mkdtemp=''
550 d_mkfifo=''
551 d_mkstemp=''
552 d_mkstemps=''
553 d_mktime=''
554 d_mmap=''
555 mmaptype=''
556 d_modfl=''
557 d_modfl_pow32_bug=''
558 d_modflproto=''
559 d_mprotect=''
560 d_msg=''
561 d_msgctl=''
562 d_msgget=''
563 d_msghdr_s=''
564 d_msgrcv=''
565 d_msgsnd=''
566 d_msync=''
567 d_munmap=''
568 d_nice=''
569 d_nl_langinfo=''
570 d_off64_t=''
571 d_open3=''
572 d_fpathconf=''
573 d_pathconf=''
574 d_pause=''
575 d_pipe=''
576 d_poll=''
577 d_portable=''
578 d_procselfexe=''
579 procselfexe=''
580 d_old_pthread_create_joinable=''
581 old_pthread_create_joinable=''
582 d_pthread_atfork=''
583 d_pthread_attr_setscope=''
584 d_pthread_yield=''
585 d_sched_yield=''
586 sched_yield=''
587 d_qgcvt=''
588 d_random_r=''
589 random_r_proto=''
590 d_readdir64_r=''
591 readdir64_r_proto=''
592 d_readdir=''
593 d_rewinddir=''
594 d_seekdir=''
595 d_telldir=''
596 d_readdir_r=''
597 readdir_r_proto=''
598 d_readlink=''
599 d_readv=''
600 d_recvmsg=''
601 d_rename=''
602 d_rmdir=''
603 d_safebcpy=''
604 d_safemcpy=''
605 d_sanemcmp=''
606 d_sbrkproto=''
607 d_scalbnl=''
608 d_select=''
609 d_sem=''
610 d_semctl=''
611 d_semget=''
612 d_semop=''
613 d_sendmsg=''
614 d_setegid=''
615 d_seteuid=''
616 d_setgrent=''
617 d_setgrent_r=''
618 setgrent_r_proto=''
619 d_setgrps=''
620 d_sethent=''
621 d_sethostent_r=''
622 sethostent_r_proto=''
623 d_setitimer=''
624 d_setlinebuf=''
625 d_setlocale=''
626 d_setlocale_r=''
627 setlocale_r_proto=''
628 d_setnent=''
629 d_setnetent_r=''
630 setnetent_r_proto=''
631 d_setpent=''
632 d_setpgid=''
633 d_setpgrp2=''
634 d_bsdsetpgrp=''
635 d_setpgrp=''
636 d_setprior=''
637 d_setproctitle=''
638 d_setprotoent_r=''
639 setprotoent_r_proto=''
640 d_setpwent=''
641 d_setpwent_r=''
642 setpwent_r_proto=''
643 d_setregid=''
644 d_setresgid=''
645 d_setresuid=''
646 d_setreuid=''
647 d_setrgid=''
648 d_setruid=''
649 d_setsent=''
650 d_setservent_r=''
651 setservent_r_proto=''
652 d_setsid=''
653 d_setvbuf=''
654 d_sfio=''
655 usesfio=''
656 d_shm=''
657 d_shmat=''
658 d_shmatprototype=''
659 shmattype=''
660 d_shmctl=''
661 d_shmdt=''
662 d_shmget=''
663 d_sigaction=''
664 d_sigprocmask=''
665 d_sigsetjmp=''
666 d_sockatmark=''
667 d_sockatmarkproto=''
668 d_msg_ctrunc=''
669 d_msg_dontroute=''
670 d_msg_oob=''
671 d_msg_peek=''
672 d_msg_proxy=''
673 d_oldsock=''
674 d_scm_rights=''
675 d_socket=''
676 d_sockpair=''
677 sockethdr=''
678 socketlib=''
679 d_socklen_t=''
680 d_socks5_init=''
681 d_sqrtl=''
682 d_srand48_r=''
683 srand48_r_proto=''
684 d_srandom_r=''
685 srandom_r_proto=''
686 d_sresgproto=''
687 d_sresuproto=''
688 d_statblks=''
689 d_statfs_f_flags=''
690 d_statfs_s=''
691 d_fstatvfs=''
692 d_statvfs=''
693 d_stdio_cnt_lval=''
694 d_stdio_ptr_lval=''
695 d_stdio_ptr_lval_nochange_cnt=''
696 d_stdio_ptr_lval_sets_cnt=''
697 d_stdiobase=''
698 d_stdstdio=''
699 stdio_base=''
700 stdio_bufsiz=''
701 stdio_cnt=''
702 stdio_filbuf=''
703 stdio_ptr=''
704 d_index=''
705 d_strchr=''
706 d_strcoll=''
707 d_strctcpy=''
708 d_strerrm=''
709 d_strerror=''
710 d_sysernlst=''
711 d_syserrlst=''
712 d_strerror_r=''
713 strerror_r_proto=''
714 d_strftime=''
715 d_strtod=''
716 d_strtol=''
717 d_strtold=''
718 d_strtoll=''
719 d_strtoq=''
720 d_strtoul=''
721 d_strtoull=''
722 d_strtouq=''
723 d_strxfrm=''
724 d_symlink=''
725 d_syscall=''
726 d_syscallproto=''
727 d_sysconf=''
728 d_system=''
729 d_tcgetpgrp=''
730 d_tcsetpgrp=''
731 d_telldirproto=''
732 d_time=''
733 timetype=''
734 clocktype=''
735 d_times=''
736 d_tmpnam_r=''
737 tmpnam_r_proto=''
738 d_truncate=''
739 d_ttyname_r=''
740 ttyname_r_proto=''
741 d_tzname=''
742 d_u32align=''
743 d_ualarm=''
744 d_umask=''
745 d_semctl_semid_ds=''
746 d_semctl_semun=''
747 d_union_semun=''
748 d_unordered=''
749 d_usleep=''
750 d_usleepproto=''
751 d_ustat=''
752 d_vfork=''
753 usevfork=''
754 d_voidsig=''
755 signal_t=''
756 d_volatile=''
757 d_charvspr=''
758 d_vprintf=''
759 d_wait4=''
760 d_waitpid=''
761 d_wcstombs=''
762 d_wctomb=''
763 d_writev=''
764 dlext=''
765 cccdlflags=''
766 ccdlflags=''
767 dlsrc=''
768 ld=''
769 lddlflags=''
770 usedl=''
771 doublesize=''
772 ebcdic=''
773 fflushNULL=''
774 fflushall=''
775 fpossize=''
776 fpostype=''
777 gccansipedantic=''
778 gccosandvers=''
779 gccversion=''
780 gidformat=''
781 gidsign=''
782 gidsize=''
783 gidtype=''
784 groupstype=''
785 h_fcntl=''
786 h_sysfile=''
787 html1dir=''
788 html1direxp=''
789 installhtml1dir=''
790 html3dir=''
791 html3direxp=''
792 installhtml3dir=''
793 i_arpainet=''
794 i_crypt=''
795 db_hashtype=''
796 db_prefixtype=''
797 db_version_major=''
798 db_version_minor=''
799 db_version_patch=''
800 i_db=''
801 i_dbm=''
802 i_rpcsvcdbm=''
803 d_dirnamlen=''
804 direntrytype=''
805 i_dirent=''
806 i_dld=''
807 i_dlfcn=''
808 i_fcntl=''
809 i_float=''
810 i_fp=''
811 i_fp_class=''
812 i_gdbm=''
813 d_grpasswd=''
814 i_grp=''
815 i_ieeefp=''
816 i_inttypes=''
817 i_langinfo=''
818 i_libutil=''
819 i_limits=''
820 i_locale=''
821 i_machcthr=''
822 i_malloc=''
823 i_math=''
824 i_memory=''
825 i_mntent=''
826 i_ndbm=''
827 i_netdb=''
828 i_neterrno=''
829 i_netinettcp=''
830 i_niin=''
831 i_sysin=''
832 i_poll=''
833 i_prot=''
834 i_pthread=''
835 d_pwage=''
836 d_pwchange=''
837 d_pwclass=''
838 d_pwcomment=''
839 d_pwexpire=''
840 d_pwgecos=''
841 d_pwpasswd=''
842 d_pwquota=''
843 i_pwd=''
844 i_sfio=''
845 i_shadow=''
846 i_socks=''
847 i_stddef=''
848 i_stdlib=''
849 i_string=''
850 strings=''
851 i_sunmath=''
852 i_sysaccess=''
853 i_sysdir=''
854 i_sysfile=''
855 d_voidtty=''
856 i_bsdioctl=''
857 i_sysfilio=''
858 i_sysioctl=''
859 i_syssockio=''
860 i_syslog=''
861 i_sysmman=''
862 i_sysmode=''
863 i_sysmount=''
864 i_sysndir=''
865 i_sysparam=''
866 i_sysresrc=''
867 i_syssecrt=''
868 i_sysselct=''
869 i_sysstat=''
870 i_sysstatfs=''
871 i_sysstatvfs=''
872 i_systimes=''
873 i_systypes=''
874 i_sysuio=''
875 i_sysun=''
876 i_sysutsname=''
877 i_sysvfs=''
878 i_syswait=''
879 i_sgtty=''
880 i_termio=''
881 i_termios=''
882 d_tm_tm_gmtoff=''
883 d_tm_tm_zone=''
884 i_systime=''
885 i_systimek=''
886 i_time=''
887 timeincl=''
888 i_unistd=''
889 i_ustat=''
890 i_utime=''
891 i_values=''
892 i_stdarg=''
893 i_varargs=''
894 i_varhdr=''
895 i_vfork=''
896 inc_version_list=''
897 inc_version_list_init=''
898 installprefix=''
899 installprefixexp=''
900 installstyle=''
901 installusrbinperl=''
902 intsize=''
903 longsize=''
904 shortsize=''
905 issymlink=''
906 libc=''
907 ldlibpthname=''
908 libperl=''
909 shrpenv=''
910 useshrplib=''
911 glibpth=''
912 libpth=''
913 loclibpth=''
914 plibpth=''
915 xlibpth=''
916 ignore_versioned_solibs=''
917 libs=''
918 libsdirs=''
919 libsfiles=''
920 libsfound=''
921 libspath=''
922 lns=''
923 d_PRIEUldbl=''
924 d_PRIFUldbl=''
925 d_PRIGUldbl=''
926 d_PRIeldbl=''
927 d_PRIfldbl=''
928 d_PRIgldbl=''
929 d_SCNfldbl=''
930 sPRIEUldbl=''
931 sPRIFUldbl=''
932 sPRIGUldbl=''
933 sPRIeldbl=''
934 sPRIfldbl=''
935 sPRIgldbl=''
936 sSCNfldbl=''
937 lseeksize=''
938 lseektype=''
939 make_set_make=''
940 d_mymalloc=''
941 freetype=''
942 mallocobj=''
943 mallocsrc=''
944 malloctype=''
945 usemymalloc=''
946 installman1dir=''
947 man1dir=''
948 man1direxp=''
949 man1ext=''
950 installman3dir=''
951 man3dir=''
952 man3direxp=''
953 man3ext=''
954 modetype=''
955 multiarch=''
956 mydomain=''
957 myhostname=''
958 phostname=''
959 c=''
960 n=''
961 d_eofnblk=''
962 eagain=''
963 o_nonblock=''
964 rd_nodata=''
965 need_va_copy=''
966 netdb_hlen_type=''
967 netdb_host_type=''
968 netdb_name_type=''
969 netdb_net_type=''
970 groupcat=''
971 hostcat=''
972 passcat=''
973 orderlib=''
974 ranlib=''
975 d_perl_otherlibdirs=''
976 otherlibdirs=''
977 package=''
978 spackage=''
979 pager=''
980 api_revision=''
981 api_subversion=''
982 api_version=''
983 api_versionstring=''
984 patchlevel=''
985 perl_patchlevel=''
986 revision=''
987 subversion=''
988 version=''
989 version_patchlevel_string=''
990 perl5=''
991 perladmin=''
992 perlpath=''
993 d_nv_preserves_uv=''
994 i16size=''
995 i16type=''
996 i32size=''
997 i32type=''
998 i64size=''
999 i64type=''
1000 i8size=''
1001 i8type=''
1002 ivsize=''
1003 ivtype=''
1004 nv_preserves_uv_bits=''
1005 nvsize=''
1006 nvtype=''
1007 u16size=''
1008 u16type=''
1009 u32size=''
1010 u32type=''
1011 u64size=''
1012 u64type=''
1013 u8size=''
1014 u8type=''
1015 uvsize=''
1016 uvtype=''
1017 ivdformat=''
1018 nvEUformat=''
1019 nvFUformat=''
1020 nvGUformat=''
1021 nveformat=''
1022 nvfformat=''
1023 nvgformat=''
1024 uvXUformat=''
1025 uvoformat=''
1026 uvuformat=''
1027 uvxformat=''
1028 pidtype=''
1029 prefix=''
1030 prefixexp=''
1031 installprivlib=''
1032 privlib=''
1033 privlibexp=''
1034 prototype=''
1035 ptrsize=''
1036 d_PRIXU64=''
1037 d_PRId64=''
1038 d_PRIi64=''
1039 d_PRIo64=''
1040 d_PRIu64=''
1041 d_PRIx64=''
1042 sPRIXU64=''
1043 sPRId64=''
1044 sPRIi64=''
1045 sPRIo64=''
1046 sPRIu64=''
1047 sPRIx64=''
1048 d_quad=''
1049 quadkind=''
1050 quadtype=''
1051 uquadtype=''
1052 drand01=''
1053 randbits=''
1054 randfunc=''
1055 randseedtype=''
1056 seedfunc=''
1057 installscript=''
1058 scriptdir=''
1059 scriptdirexp=''
1060 selectminbits=''
1061 selecttype=''
1062 sh=''
1063 sig_count=''
1064 sig_name=''
1065 sig_name_init=''
1066 sig_num=''
1067 sig_num_init=''
1068 sig_size=''
1069 installsitearch=''
1070 sitearch=''
1071 sitearchexp=''
1072 installsitebin=''
1073 sitebin=''
1074 sitebinexp=''
1075 installsitehtml1dir=''
1076 sitehtml1dir=''
1077 sitehtml1direxp=''
1078 installsitehtml3dir=''
1079 sitehtml3dir=''
1080 sitehtml3direxp=''
1081 installsitelib=''
1082 sitelib=''
1083 sitelib_stem=''
1084 sitelibexp=''
1085 installsiteman1dir=''
1086 siteman1dir=''
1087 siteman1direxp=''
1088 installsiteman3dir=''
1089 siteman3dir=''
1090 siteman3direxp=''
1091 siteprefix=''
1092 siteprefixexp=''
1093 installsitescript=''
1094 sitescript=''
1095 sitescriptexp=''
1096 sizesize=''
1097 sizetype=''
1098 so=''
1099 socksizetype=''
1100 sharpbang=''
1101 shsharp=''
1102 spitshell=''
1103 src=''
1104 ssizetype=''
1105 startperl=''
1106 startsh=''
1107 stdchar=''
1108 d_stdio_stream_array=''
1109 stdio_stream_array=''
1110 sysman=''
1111 trnl=''
1112 uidformat=''
1113 uidsign=''
1114 uidsize=''
1115 uidtype=''
1116 archname64=''
1117 use64bitall=''
1118 use64bitint=''
1119 usefaststdio=''
1120 ccflags_uselargefiles=''
1121 ldflags_uselargefiles=''
1122 libswanted_uselargefiles=''
1123 uselargefiles=''
1124 uselongdouble=''
1125 usemorebits=''
1126 usemultiplicity=''
1127 nm_opt=''
1128 nm_so_opt=''
1129 runnm=''
1130 usenm=''
1131 useperlio=''
1132 usesocks=''
1133 d_oldpthreads=''
1134 use5005threads=''
1135 useithreads=''
1136 usereentrant=''
1137 usethreads=''
1138 incpath=''
1139 mips_type=''
1140 usrinc=''
1141 d_vendorarch=''
1142 installvendorarch=''
1143 vendorarch=''
1144 vendorarchexp=''
1145 d_vendorbin=''
1146 installvendorbin=''
1147 vendorbin=''
1148 vendorbinexp=''
1149 installvendorhtml1dir=''
1150 vendorhtml1dir=''
1151 vendorhtml1direxp=''
1152 installvendorhtml3dir=''
1153 vendorhtml3dir=''
1154 vendorhtml3direxp=''
1155 d_vendorlib=''
1156 installvendorlib=''
1157 vendorlib=''
1158 vendorlib_stem=''
1159 vendorlibexp=''
1160 installvendorman1dir=''
1161 vendorman1dir=''
1162 vendorman1direxp=''
1163 installvendorman3dir=''
1164 vendorman3dir=''
1165 vendorman3direxp=''
1166 usevendorprefix=''
1167 vendorprefix=''
1168 vendorprefixexp=''
1169 d_vendorscript=''
1170 installvendorscript=''
1171 vendorscript=''
1172 vendorscriptexp=''
1173 versiononly=''
1174 defvoidused=''
1175 voidflags=''
1176 pm_apiversion=''
1177 xs_apiversion=''
1178 yacc=''
1179 yaccflags=''
1180 CONFIG=''
1181
1182 define='define'
1183 undef='undef'
1184 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1185 rmlist=''
1186
1187 : We must find out about Eunice early
1188 eunicefix=':'
1189 if test -f /etc/unixtovms; then
1190         eunicefix=/etc/unixtovms
1191 fi
1192 if test -f /etc/unixtovms.exe; then
1193         eunicefix=/etc/unixtovms.exe
1194 fi
1195
1196 : Set executable suffix now -- needed before hints available
1197 if test -f "/libs/version.library"; then
1198 : Amiga OS
1199     _exe=""
1200 elif test -f "/system/gnu_library/bin/ar.pm"; then
1201 : Stratus VOS
1202     _exe=".pm"
1203 elif test -n "$DJGPP"; then
1204 : DOS DJGPP
1205     _exe=".exe"
1206 elif test -d c:/. -o -n "$is_os2" ; then
1207 : OS/2 or cygwin
1208     _exe=".exe"
1209 fi
1210
1211 i_whoami=''
1212 ccname=''
1213 ccversion=''
1214 perllibs=''
1215 : set useposix=false in your hint file to disable the POSIX extension.
1216 useposix=true
1217 : set useopcode=false in your hint file to disable the Opcode extension.
1218 useopcode=true
1219 : Trailing extension.  Override this in a hint file, if needed.
1220 : Extra object files, if any, needed on this platform.
1221 archobjs=''
1222 archname=''
1223 : Possible local include directories to search.
1224 : Set locincpth to "" in a hint file to defeat local include searches.
1225 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1226 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1227 :
1228 : no include file wanted by default
1229 inclwanted=''
1230
1231 groupstype=''
1232 libnames=''
1233 : change the next line if compiling for Xenix/286 on Xenix/386
1234 xlibpth='/usr/lib/386 /lib/386'
1235 : Possible local library directories to search.
1236 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1237 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1238
1239 : general looking path for locating libraries
1240 glibpth="/lib /usr/lib $xlibpth"
1241 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1242 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1243 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1244
1245 : Private path used by Configure to find libraries.  Its value
1246 : is prepended to libpth. This variable takes care of special
1247 : machines, like the mips.  Usually, it should be empty.
1248 plibpth=''
1249
1250 : default library list
1251 libswanted=''
1252 : some systems want to use only the non-versioned libso:s
1253 ignore_versioned_solibs=''
1254 siteman1dir=''
1255 siteman3dir=''
1256 sitescript=''
1257 archname64=''
1258 ccflags_uselargefiles=''
1259 ldflags_uselargefiles=''
1260 libswanted_uselargefiles=''
1261 : set usemultiplicity on the Configure command line to enable multiplicity.
1262 : set usesocks on the Configure command line to enable socks.
1263 : set usethreads on the Configure command line to enable threads.
1264 usereentrant='undef'
1265 : full support for void wanted by default
1266 defvoidused=15
1267
1268 : List of libraries we want.
1269 : If anyone needs extra -lxxx, put those in a hint file.
1270 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1271 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1272 : We probably want to search /usr/shlib before most other libraries.
1273 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1274 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1275 glibpth="/usr/shlib $glibpth"
1276 : Do not use vfork unless overridden by a hint file.
1277 usevfork=false
1278
1279 : Find the basic shell for Bourne shell scripts
1280 case "$sh" in
1281 '')
1282         case "$SYSTYPE" in
1283         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1284         *) xxx='/bin/sh';;
1285         esac
1286         if test -f "$xxx"; then
1287                 sh="$xxx"
1288         else
1289                 : Build up a list and do a single loop so we can 'break' out.
1290                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1291                 for xxx in sh bash ksh pdksh ash; do
1292                         for p in $pth; do
1293                                 try="$try ${p}/${xxx}"
1294                         done
1295                 done
1296                 for xxx in $try; do
1297                         if test -f "$xxx"; then
1298                                 sh="$xxx";
1299                                 break
1300                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1301                                 sh="$xxx";
1302                                 break
1303                         elif test -f "$xxx.exe"; then
1304                                 sh="$xxx";
1305                                 break
1306                         fi
1307                 done
1308         fi
1309         ;;
1310 esac
1311
1312 case "$sh" in
1313 '')     cat >&2 <<EOM
1314 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1315
1316 Usually it's in /bin/sh.  How did you even get this far?
1317 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1318 we'll try to straighten this all out.
1319 EOM
1320         exit 1
1321         ;;
1322 esac
1323
1324 : see if sh knows # comments
1325 if `$sh -c '#' >/dev/null 2>&1`; then
1326         shsharp=true
1327         spitshell=cat
1328         xcat=/bin/cat
1329         test -f $xcat$_exe || xcat=/usr/bin/cat
1330         if test ! -f $xcat$_exe; then
1331                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1332                         if test -f $p/cat$_exe; then
1333                                 xcat=$p/cat
1334                                 break
1335                         fi
1336                 done
1337                 if test ! -f $xcat$_exe; then
1338                         echo "Can't find cat anywhere!"
1339                         exit 1
1340                 fi
1341         fi
1342         echo "#!$xcat" >sharp
1343         $eunicefix sharp
1344         chmod +x sharp
1345         ./sharp > today
1346         if test -s today; then
1347                 sharpbang='#!'
1348         else
1349                 echo "#! $xcat" > sharp
1350                 $eunicefix sharp
1351                 chmod +x sharp
1352                 ./sharp > today
1353                 if test -s today; then
1354                         sharpbang='#! '
1355                 else
1356                         sharpbang=': use '
1357                 fi
1358         fi
1359 else
1360         echo " "
1361         echo "Your $sh doesn't grok # comments--I will strip them later on."
1362         shsharp=false
1363         cd ..
1364         echo "exec grep -v '^[  ]*#'" >spitshell
1365         chmod +x spitshell
1366         $eunicefix spitshell
1367         spitshell=`pwd`/spitshell
1368         cd UU
1369         echo "I presume that if # doesn't work, #! won't work either!"
1370         sharpbang=': use '
1371 fi
1372 rm -f sharp today
1373
1374 : figure out how to guarantee sh startup
1375 case "$startsh" in
1376 '') startsh=${sharpbang}${sh} ;;
1377 *)
1378 esac
1379 cat >sharp <<EOSS
1380 $startsh
1381 set abc
1382 test "$?abc" != 1
1383 EOSS
1384
1385 chmod +x sharp
1386 $eunicefix sharp
1387 if ./sharp; then
1388         : echo "Yup, it does."
1389 else
1390         echo "Hmm... '$startsh' does not guarantee sh startup..."
1391         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1392 fi
1393 rm -f sharp
1394
1395
1396 : Save command line options in file UU/cmdline.opt for later use in
1397 : generating config.sh.
1398 cat > cmdline.opt <<EOSH
1399 # Configure command line arguments.
1400 config_arg0='$0'
1401 config_args='$*'
1402 config_argc=$#
1403 EOSH
1404 argn=1
1405 args_exp=''
1406 args_sep=''
1407 for arg in "$@"; do
1408         cat >>cmdline.opt <<EOSH
1409 config_arg$argn='$arg'
1410 EOSH
1411         # Extreme backslashitis: replace each ' by '"'"'
1412         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1413 $arg
1414 EOC
1415         arg_exp=`cat cmdl.opt`
1416         args_exp="$args_exp$args_sep'$arg_exp'"
1417         argn=`expr $argn + 1`
1418         args_sep=' '
1419 done
1420 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1421 # used by ./hints/os2.sh
1422 rm -f cmdl.opt
1423
1424 : produce awk script to parse command line options
1425 cat >options.awk <<'EOF'
1426 BEGIN {
1427         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1428
1429         len = length(optstr);
1430         for (i = 1; i <= len; i++) {
1431                 c = substr(optstr, i, 1);
1432                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1433                 if (a == ":") {
1434                         arg[c] = 1;
1435                         i++;
1436                 }
1437                 opt[c] = 1;
1438         }
1439 }
1440 {
1441         expect = 0;
1442         str = $0;
1443         if (substr(str, 1, 1) != "-") {
1444                 printf("'%s'\n", str);
1445                 next;
1446         }
1447         len = length($0);
1448         for (i = 2; i <= len; i++) {
1449                 c = substr(str, i, 1);
1450                 if (!opt[c]) {
1451                         printf("-%s\n", substr(str, i));
1452                         next;
1453                 }
1454                 printf("-%s\n", c);
1455                 if (arg[c]) {
1456                         if (i < len)
1457                                 printf("'%s'\n", substr(str, i + 1));
1458                         else
1459                                 expect = 1;
1460                         next;
1461                 }
1462         }
1463 }
1464 END {
1465         if (expect)
1466                 print "?";
1467 }
1468 EOF
1469
1470 : process the command line options
1471 set X `for arg in "$@"; do echo "X$arg"; done |
1472         sed -e s/X// | awk -f options.awk`
1473 eval "set $*"
1474 shift
1475 rm -f options.awk
1476
1477 : set up default values
1478 fastread=''
1479 reuseval=false
1480 config_sh=''
1481 alldone=''
1482 error=''
1483 silent=''
1484 extractsh=''
1485 override=''
1486 knowitall=''
1487 rm -f optdef.sh posthint.sh
1488 cat >optdef.sh <<EOS
1489 $startsh
1490 EOS
1491
1492
1493 : option parsing
1494 while test $# -gt 0; do
1495         case "$1" in
1496         -d) shift; fastread=yes;;
1497         -e) shift; alldone=cont;;
1498         -f)
1499                 shift
1500                 cd ..
1501                 if test -r "$1"; then
1502                         config_sh="$1"
1503                 else
1504                         echo "$me: cannot read config file $1." >&2
1505                         error=true
1506                 fi
1507                 cd UU
1508                 shift;;
1509         -h) shift; error=true;;
1510         -r) shift; reuseval=true;;
1511         -s) shift; silent=true; realsilent=true;;
1512         -E) shift; alldone=exit;;
1513         -K) shift; knowitall=true;;
1514         -O) shift; override=true;;
1515         -S) shift; silent=true; extractsh=true;;
1516         -D)
1517                 shift
1518                 case "$1" in
1519                 *=)
1520                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1521                         echo "$me: ignoring -D $1" >&2
1522                         ;;
1523                 *=*) echo "$1" | \
1524                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1525                 *) echo "$1='define'" >> optdef.sh;;
1526                 esac
1527                 shift
1528                 ;;
1529         -U)
1530                 shift
1531                 case "$1" in
1532                 *=) echo "$1" >> optdef.sh;;
1533                 *=*)
1534                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1535                         echo "$me: ignoring -U $1" >&2
1536                         ;;
1537                 *) echo "$1='undef'" >> optdef.sh;;
1538                 esac
1539                 shift
1540                 ;;
1541         -A)
1542             shift
1543             xxx=''
1544             yyy="$1"
1545             zzz=''
1546             uuu=undef
1547             case "$yyy" in
1548             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1549                  case "$zzz" in
1550                  *:*) zzz='' ;;
1551                  *)   xxx=append
1552                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1553                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1554                  esac
1555                  ;;
1556             esac
1557             case "$xxx" in
1558             '')  case "$yyy" in
1559                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1560                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1561                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1562                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1563                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1564                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1565                  esac
1566                  ;;       
1567             esac
1568             case "$xxx" in
1569             append)
1570                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1571             clear)
1572                 echo "$yyy=''"                  >> posthint.sh ;;
1573             define)
1574                 case "$zzz" in
1575                 '') zzz=define ;;
1576                 esac
1577                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1578             eval)
1579                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1580             prepend)
1581                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1582             undef)
1583                 case "$zzz" in
1584                 '') zzz="$uuu" ;;
1585                 esac
1586                 echo "$yyy=$zzz"                >> posthint.sh ;;
1587             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1588             esac
1589             shift
1590             ;;
1591         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1592             exit 0;;
1593         --) break;;
1594         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1595         *) break;;
1596         esac
1597 done
1598
1599 case "$error" in
1600 true)
1601         cat >&2 <<EOM
1602 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1603                  [-U symbol] [-U symbol=] [-A command:symbol...]
1604   -d : use defaults for all answers.
1605   -e : go on without questioning past the production of config.sh.
1606   -f : specify an alternate default configuration file.
1607   -h : print this help message and exit (with an error status).
1608   -r : reuse C symbols value if possible (skips costly nm extraction).
1609   -s : silent mode, only echoes questions and essential information.
1610   -D : define symbol to have some value:
1611          -D symbol         symbol gets the value 'define'
1612          -D symbol=value   symbol gets the value 'value'
1613   -E : stop at the end of questions, after having produced config.sh.
1614   -K : do not use unless you know what you are doing.
1615   -O : let -D and -U override definitions from loaded configuration file.
1616   -S : perform variable substitutions on all .SH files (can mix with -f)
1617   -U : undefine symbol:
1618          -U symbol    symbol gets the value 'undef'
1619          -U symbol=   symbol gets completely empty
1620   -A : manipulate symbol after the platform specific hints have been applied:
1621          -A symbol=value                append " "value to symbol
1622          -A append:symbol=value         append value to symbol
1623          -A define:symbol=value         define symbol to have value
1624          -A clear:symbol                define symbol to be ''
1625          -A define:symbol               define symbol to be 'define'
1626          -A eval:symbol=value           define symbol to be eval of value
1627          -A prepend:symbol=value        prepend value to symbol
1628          -A undef:symbol                define symbol to be 'undef'
1629          -A undef:symbol=               define symbol to be ''
1630   -V : print version number and exit (with a zero status).
1631 EOM
1632         exit 1
1633         ;;
1634 esac
1635
1636 : Sanity checks
1637 case "$fastread$alldone" in
1638 yescont|yesexit) ;;
1639 *)
1640         case "$extractsh" in
1641         true) ;;
1642         *)
1643                 if test ! -t 0; then
1644                         echo "Say 'sh Configure', not 'sh <Configure'"
1645                         exit 1
1646                 fi
1647                 ;;
1648         esac
1649         ;;
1650 esac
1651
1652 exec 4>&1
1653 case "$silent" in
1654 true) exec 1>/dev/null;;
1655 esac
1656
1657 : run the defines and the undefines, if any, but leave the file out there...
1658 touch optdef.sh
1659 . ./optdef.sh
1660 : create the posthint manipulation script and leave the file out there...
1661 touch posthint.sh
1662
1663 : set package name
1664 package=perl5
1665 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1666 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1667 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1668 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1669 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1670 esac
1671
1672 : Some greps do not return status, grrr.
1673 echo "grimblepritz" >grimble
1674 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1675         contains=contains
1676 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1677         contains=grep
1678 else
1679         contains=contains
1680 fi
1681 rm -f grimble
1682 : the following should work in any shell
1683 case "$contains" in
1684 contains*)
1685         echo " "
1686         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1687         cat >contains <<'EOSS'
1688 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1689 EOSS
1690 chmod +x contains
1691 esac
1692
1693 : Find the path to the source tree
1694 case "$src" in
1695 '') case "$0" in
1696     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1697          case "$src" in
1698          /*)    ;;
1699          .)     ;;
1700          *)     src=`cd ../$src && pwd` ;;
1701          esac
1702          ;;
1703     *)   src='.';;
1704     esac;;
1705 esac
1706 case "$src" in
1707 '')     src=/
1708         rsrc=/
1709         ;;
1710 /*) rsrc="$src";;
1711 *) rsrc="../$src";;
1712 esac
1713 if test -f $rsrc/Configure && \
1714         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1715 then
1716    : found it, so we are ok.
1717 else
1718         rsrc=''
1719         for src in . .. ../.. ../../.. ../../../..; do
1720                 if test -f ../$src/Configure && \
1721                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1722                 then
1723                         rsrc=../$src
1724                         break
1725                 fi
1726         done
1727 fi
1728 case "$rsrc" in
1729 '')
1730         cat <<EOM >&4
1731
1732 Sorry, I can't seem to locate the source dir for $package.  Please start
1733 Configure with an explicit path -- i.e. /some/path/Configure.
1734
1735 EOM
1736         exit 1
1737         ;;
1738 ../.)   rsrc='..';;
1739 *)
1740         echo " "
1741         echo "Sources for $package found in \"$src\"." >&4
1742         ;;
1743 esac
1744
1745 : script used to extract .SH files with variable substitutions
1746 cat >extract <<'EOS'
1747 PERL_CONFIG_SH=true
1748 echo "Doing variable substitutions on .SH files..."
1749 if test -f MANIFEST; then
1750         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1751 else
1752         echo "(Looking for .SH files under the source directory.)"
1753         set x `(cd "$src"; find . -name "*.SH" -print)`
1754 fi
1755 shift
1756 case $# in
1757 0) set x `(cd "$src"; echo *.SH)`; shift;;
1758 esac
1759 if test ! -f "$src/$1"; then
1760         shift
1761 fi
1762 mkdir_p='
1763 name=$1;
1764 create="";
1765 while test $name; do
1766         if test ! -d "$name"; then
1767                 create="$name $create";
1768                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1769                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1770         else
1771                 name="";
1772         fi;
1773 done;
1774 for file in $create; do
1775         mkdir $file;
1776 done
1777 '
1778 for file in $*; do
1779         case "$src" in
1780         ".")
1781                 case "$file" in
1782                 */*)
1783                         dir=`expr X$file : 'X\(.*\)/'`
1784                         file=`expr X$file : 'X.*/\(.*\)'`
1785                         (cd "$dir" && . ./$file)
1786                         ;;
1787                 *)
1788                         . ./$file
1789                         ;;
1790                 esac
1791                 ;;
1792         *)
1793                 case "$file" in
1794                 */*)
1795                         dir=`expr X$file : 'X\(.*\)/'`
1796                         file=`expr X$file : 'X.*/\(.*\)'`
1797                         (set x $dir; shift; eval $mkdir_p)
1798                         sh <"$src/$dir/$file"
1799                         ;;
1800                 *)
1801                         sh <"$src/$file"
1802                         ;;
1803                 esac
1804                 ;;
1805         esac
1806 done
1807 if test -f "$src/config_h.SH"; then
1808         if test ! -f config.h; then
1809         : oops, they left it out of MANIFEST, probably, so do it anyway.
1810         . "$src/config_h.SH"
1811         fi
1812 fi
1813 EOS
1814
1815 : extract files and exit if asked to do so
1816 case "$extractsh" in
1817 true)
1818         case "$realsilent" in
1819         true) ;;
1820         *) exec 1>&4;;
1821         esac
1822         case "$config_sh" in
1823         '') config_sh='config.sh';;
1824         esac
1825         echo " "
1826         echo "Fetching answers from $config_sh..."
1827         cd ..
1828         . $config_sh
1829         test "$override" && . ./optdef.sh
1830         echo " "
1831         . UU/extract
1832         rm -rf UU
1833         echo "Extraction done."
1834         exit 0
1835         ;;
1836 esac
1837
1838 : Eunice requires " " instead of "", can you believe it
1839 echo " "
1840 : Here we go...
1841 echo "Beginning of configuration questions for $package."
1842
1843 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1844
1845 : first determine how to suppress newline on echo command
1846 echo " "
1847 echo "Checking echo to see how to suppress newlines..."
1848 (echo "hi there\c" ; echo " ") >.echotmp
1849 if $contains c .echotmp >/dev/null 2>&1 ; then
1850         echo "...using -n."
1851         n='-n'
1852         c=''
1853 else
1854         cat <<'EOM'
1855 ...using \c
1856 EOM
1857         n=''
1858         c='\c'
1859 fi
1860 echo $n "The star should be here-->$c"
1861 echo '*'
1862 rm -f .echotmp
1863
1864 : Now test for existence of everything in MANIFEST
1865 echo " "
1866 if test -f "$rsrc/MANIFEST"; then
1867         echo "First let's make sure your kit is complete.  Checking..." >&4
1868         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1869         rm -f missing
1870         tmppwd=`pwd`
1871         for filelist in x??; do
1872                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1873         done
1874         if test -s missing; then
1875                 cat missing >&4
1876                 cat >&4 <<'EOM'
1877
1878 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1879
1880 You have the option of continuing the configuration process, despite the
1881 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1882 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1883 and contact the author (perlbug@perl.org).
1884
1885 EOM
1886                 echo $n "Continue? [n] $c" >&4
1887                 read ans
1888                 case "$ans" in
1889                 y*)
1890                         echo "Continuing..." >&4
1891                         rm -f missing
1892                         ;;
1893                 *)
1894                         echo "ABORTING..." >&4
1895                         kill $$
1896                         ;;
1897                 esac
1898         else
1899                 echo "Looks good..."
1900         fi
1901 else
1902         echo "There is no MANIFEST file.  I hope your kit is complete !"
1903 fi
1904 rm -f missing x??
1905
1906 echo " "
1907 : Find the appropriate value for a newline for tr
1908 if test -n "$DJGPP"; then
1909        trnl='\012'
1910 fi
1911 if test X"$trnl" = X; then
1912         case "`echo foo|tr '\n' x 2>/dev/null`" in
1913         foox) trnl='\n' ;;
1914         esac
1915 fi
1916 if test X"$trnl" = X; then
1917         case "`echo foo|tr '\012' x 2>/dev/null`" in
1918         foox) trnl='\012' ;;
1919         esac
1920 fi
1921 if test X"$trnl" = X; then
1922        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1923        fooxy) trnl='\n\r' ;;
1924        esac
1925 fi
1926 if test X"$trnl" = X; then
1927         cat <<EOM >&2
1928
1929 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1930
1931 EOM
1932         exit 1
1933 fi
1934
1935 : compute the number of columns on the terminal for proper question formatting
1936 case "$COLUMNS" in
1937 '') COLUMNS='80';;
1938 esac
1939
1940 : set up the echo used in my read
1941 myecho="case \"\$xxxm\" in
1942 '') echo $n \"\$rp $c\" >&4;;
1943 *) case \"\$rp\" in
1944         '') echo $n \"[\$xxxm] $c\";;
1945         *)
1946                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1947                         echo \"\$rp\" >&4
1948                         echo $n \"[\$xxxm] $c\" >&4
1949                 else
1950                         echo $n \"\$rp [\$xxxm] $c\" >&4
1951                 fi
1952                 ;;
1953         esac;;
1954 esac"
1955
1956 : now set up to do reads with possible shell escape and default assignment
1957 cat <<EOSC >myread
1958 $startsh
1959 xxxm=\$dflt
1960 $myecho
1961 ans='!'
1962 case "\$fastread" in
1963 yes) case "\$dflt" in
1964         '') ;;
1965         *) ans='';
1966                 case "\$silent-\$rp" in
1967                 true-) ;;
1968                 *) echo " " >&4;;
1969                 esac;;
1970         esac;;
1971 *) case "\$silent" in
1972         true) case "\$rp" in
1973                 '') ans='';;
1974                 esac;;
1975         esac;;
1976 esac
1977 while expr "X\$ans" : "X!" >/dev/null; do
1978         read answ
1979         set x \$xxxm
1980         shift
1981         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1982         case  "\$answ" in
1983         "!")
1984                 sh 1>&4
1985                 echo " "
1986                 $myecho
1987                 ;;
1988         !*)
1989                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1990                 shift
1991                 sh 1>&4 -c "\$*"
1992                 echo " "
1993                 $myecho
1994                 ;;
1995         "\$ans")
1996                 case "\$ans" in
1997                 \\&*)
1998                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1999                         shift
2000                         case "\$1" in
2001                         -d)
2002                                 fastread=yes
2003                                 echo "(OK, I'll run with -d after this question.)" >&4
2004                                 ;;
2005                         -*)
2006                                 echo "*** Sorry, \$1 not supported yet." >&4
2007                                 ;;
2008                         esac
2009                         $myecho
2010                         ans=!
2011                         ;;
2012                 esac;;
2013         *)
2014                 case "\$aok" in
2015                 y)
2016                         echo "*** Substitution done -- please confirm."
2017                         xxxm="\$ans"
2018                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2019                         xxxm="\$ans"
2020                         ans=!
2021                         ;;
2022                 *)
2023                         echo "*** Error -- try again."
2024                         ans=!
2025                         ;;
2026                 esac
2027                 $myecho
2028                 ;;
2029         esac
2030         case "\$ans\$xxxm\$nostick" in
2031         '')
2032                 ans=!
2033                 $myecho
2034                 ;;
2035         esac
2036 done
2037 case "\$ans" in
2038 '') ans="\$xxxm";;
2039 esac
2040 EOSC
2041
2042 : create .config dir to save info across Configure sessions
2043 test -d ../.config || mkdir ../.config
2044 cat >../.config/README <<EOF
2045 This directory created by Configure to save information that should
2046 persist across sessions for $package.
2047
2048 You may safely delete it if you wish.
2049 EOF
2050
2051 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2052 case "$usedevel" in
2053 $define|true|[yY]*) ;;
2054 *) case "$xversion" in
2055    *[13579])
2056         cat >&4 <<EOH
2057 *** WHOA THERE!!! ***
2058
2059     This is an UNSTABLE DEVELOPMENT release.
2060     The version of this $package distribution is $xversion, that is, odd,
2061     (as opposed to even) and that signifies a development release.
2062     If you want a maintenance release, you want an even-numbered version.
2063
2064     Do ***NOT*** install this into production use.
2065     Data corruption and crashes are possible.
2066
2067     It is most seriously suggested that you do not continue any further
2068     unless you want to help in developing and debugging Perl.
2069
2070     If you *still* want to build perl, you can answer 'y' now,
2071     or pass -Dusedevel to Configure.
2072
2073 EOH
2074         rp='Do you really want to continue?'
2075         dflt='n'
2076         . ./myread
2077         case "$ans" in
2078         [yY]) echo >&4 "Okay, continuing."
2079               usedevel="$define" ;;
2080         *) echo >&4 "Okay, bye."
2081            exit 1
2082            ;;
2083         esac
2084         ;;
2085     esac
2086     ;;
2087 esac
2088 case "$usedevel" in
2089 $define|true|[yY]*)
2090         case "$versiononly" in
2091         '') versiononly="$define" ;;
2092         esac
2093         case "$installusrbinperl" in
2094         '') installusrbinperl="$undef" ;;
2095         esac
2096         ;;
2097 esac
2098
2099 : general instructions
2100 needman=true
2101 firsttime=true
2102 user=`(logname) 2>/dev/null`
2103 case "$user" in
2104 '') user=`whoami 2>&1`;;
2105 esac
2106 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2107         firsttime=false
2108         echo " "
2109         rp='Would you like to see the instructions?'
2110         dflt=n
2111         . ./myread
2112         case "$ans" in
2113         [yY]*) ;;
2114         *) needman=false;;
2115         esac
2116 fi
2117 if $needman; then
2118         cat <<EOH
2119
2120 This installation shell script will examine your system and ask you questions
2121 to determine how the perl5 package should be installed. If you get
2122 stuck on a question, you may use a ! shell escape to start a subshell or
2123 execute a command.  Many of the questions will have default answers in square
2124 brackets; typing carriage return will give you the default.
2125
2126 On some of the questions which ask for file or directory names you are allowed
2127 to use the ~name construct to specify the login directory belonging to "name",
2128 even if you don't have a shell which knows about that.  Questions where this is
2129 allowed will be marked "(~name ok)".
2130
2131 EOH
2132         rp=''
2133         dflt='Type carriage return to continue'
2134         . ./myread
2135         cat <<'EOH'
2136
2137 The prompter used in this script allows you to use shell variables and
2138 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2139 in the default answer, as if the default line was a set of arguments given to a
2140 script shell.  This means you may also use $* to repeat the whole default line,
2141 so you do not have to re-type everything to add something to the default.
2142
2143 Everytime there is a substitution, you will have to confirm.  If there is an
2144 error (e.g. an unmatched backtick), the default answer will remain unchanged
2145 and you will be prompted again.
2146
2147 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2148 the questions and use the computed defaults (or the previous answers if there
2149 was already a config.sh file). Type 'Configure -h' for a list of options.
2150 You may also start interactively and then answer '& -d' at any prompt to turn
2151 on the non-interactive behaviour for the remainder of the execution.
2152
2153 EOH
2154         . ./myread
2155         cat <<EOH
2156
2157 Much effort has been expended to ensure that this shell script will run on any
2158 Unix system.  If despite that it blows up on yours, your best bet is to edit
2159 Configure and run it again.  If you can't run Configure for some reason,
2160 you'll have to generate a config.sh file by hand.  Whatever problems you
2161 have, let me (perlbug@perl.org) know how I blew it.
2162
2163 This installation script affects things in two ways:
2164
2165 1) it may do direct variable substitutions on some of the files included
2166    in this kit.
2167 2) it builds a config.h file for inclusion in C programs.  You may edit
2168    any of these files as the need arises after running this script.
2169
2170 If you make a mistake on a question, there is no easy way to back up to it
2171 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2172 files.  Configure will offer to let you do this before it runs the SH files.
2173
2174 EOH
2175         dflt='Type carriage return to continue'
2176         . ./myread
2177         case "$firsttime" in
2178         true) echo $user >>../.config/instruct;;
2179         esac
2180 fi
2181
2182 : find out where common programs are
2183 echo " "
2184 echo "Locating common programs..." >&4
2185 cat <<EOSC >loc
2186 $startsh
2187 case \$# in
2188 0) exit 1;;
2189 esac
2190 thing=\$1
2191 shift
2192 dflt=\$1
2193 shift
2194 for dir in \$*; do
2195         case "\$thing" in
2196         .)
2197         if test -d \$dir/\$thing; then
2198                 echo \$dir
2199                 exit 0
2200         fi
2201         ;;
2202         *)
2203         for thisthing in \$dir/\$thing; do
2204                 : just loop through to pick last item
2205         done
2206         if test -f \$thisthing; then
2207                 echo \$thisthing
2208                 exit 0
2209         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2210                 echo \$thisthing
2211                 exit 0
2212         elif test -f \$dir/\$thing.exe; then
2213                 if test -n "$DJGPP"; then
2214                         echo \$dir/\$thing.exe
2215                 elif test "$eunicefix" != ":"; then
2216                         : on Eunice apparently
2217                         echo \$dir/\$thing
2218                         exit 0
2219                 fi
2220                 exit 0
2221         fi
2222         ;;
2223         esac
2224 done
2225 echo \$dflt
2226 exit 1
2227 EOSC
2228 chmod +x loc
2229 $eunicefix loc
2230 loclist="
2231 awk
2232 cat
2233 chmod
2234 comm
2235 cp
2236 echo
2237 expr
2238 grep
2239 ls
2240 mkdir
2241 rm
2242 sed
2243 sort
2244 touch
2245 tr
2246 uniq
2247 "
2248 trylist="
2249 Mcc
2250 ar
2251 bison
2252 byacc
2253 cpp
2254 csh
2255 date
2256 egrep
2257 gmake
2258 gzip
2259 less
2260 ln
2261 make
2262 more
2263 nm
2264 nroff
2265 pg
2266 test
2267 uname
2268 zip
2269 "
2270 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2271 pth="$pth /lib /usr/lib"
2272 for file in $loclist; do
2273         eval xxx=\$$file
2274         case "$xxx" in
2275         /*|?:[\\/]*)
2276                 if test -f "$xxx"; then
2277                         : ok
2278                 else
2279                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2280                         xxx=`./loc $file $file $pth`
2281                 fi
2282                 ;;
2283         '') xxx=`./loc $file $file $pth`;;
2284         *) xxx=`./loc $xxx $xxx $pth`;;
2285         esac
2286         eval $file=$xxx$_exe
2287         eval _$file=$xxx
2288         case "$xxx" in
2289         /*)
2290                 echo $file is in $xxx.
2291                 ;;
2292         ?:[\\/]*)
2293                 echo $file is in $xxx.
2294                 ;;
2295         *)
2296                 echo "I don't know where '$file' is, and my life depends on it." >&4
2297                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2298                 exit 1
2299                 ;;
2300         esac
2301 done
2302 echo " "
2303 echo "Don't worry if any of the following aren't found..."
2304 say=offhand
2305 for file in $trylist; do
2306         eval xxx=\$$file
2307         case "$xxx" in
2308         /*|?:[\\/]*)
2309                 if test -f "$xxx"; then
2310                         : ok
2311                 else
2312                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2313                         xxx=`./loc $file $file $pth`
2314                 fi
2315                 ;;
2316         '') xxx=`./loc $file $file $pth`;;
2317         *) xxx=`./loc $xxx $xxx $pth`;;
2318         esac
2319         eval $file=$xxx$_exe
2320         eval _$file=$xxx
2321         case "$xxx" in
2322         /*)
2323                 echo $file is in $xxx.
2324                 ;;
2325         ?:[\\/]*)
2326                 echo $file is in $xxx.
2327                 ;;
2328         *)
2329                 echo "I don't see $file out there, $say."
2330                 say=either
2331                 ;;
2332         esac
2333 done
2334 case "$egrep" in
2335 egrep)
2336         echo "Substituting grep for egrep."
2337         egrep=$grep
2338         _egrep=$grep
2339         ;;
2340 esac
2341 case "$ln" in
2342 ln)
2343         echo "Substituting cp for ln."
2344         ln=$cp
2345         _ln=$cp
2346         ;;
2347 esac
2348 case "$make" in
2349 make)   
2350         case "$gmake" in
2351         gmake)
2352         echo "I can't find make or gmake, and my life depends on it." >&4
2353         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2354         exit 1
2355         ;;
2356         esac
2357         ;;
2358 esac    
2359 case "$gmake" in
2360 gmake)  ;;
2361 *)      # We can't have osname yet.
2362         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2363                 # Assume that gmake, if found, is definitely GNU make
2364                 # and prefer it over the system make.
2365                 echo "Substituting gmake for make."
2366                 make=$gmake
2367                 _make=$gmake
2368         fi
2369         ;;
2370 esac
2371 case "$test" in
2372 test)
2373         echo "Hopefully test is built into your sh."
2374         ;;
2375 *)
2376         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2377                 echo "Using the test built into your sh."
2378                 test=test
2379                 _test=test
2380         fi
2381         ;;
2382 esac
2383 case "$echo" in
2384 echo)
2385         echo "Hopefully echo is built into your sh."
2386         ;;
2387 '') ;;
2388 *)
2389         echo " "
2390 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2391         $echo $n "hi there$c" >foo1
2392         echo $n "hi there$c" >foo2
2393         if cmp foo1 foo2 >/dev/null 2>&1; then
2394                 echo "They are compatible.  In fact, they may be identical."
2395         else
2396                 case "$n" in
2397                 '-n') n='' c='\c';;
2398                 *) n='-n' c='';;
2399                 esac
2400                 cat <<FOO
2401 They are not compatible!  You are probably running ksh on a non-USG system.
2402 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2403 have echo built in and we may have to run some Bourne shell scripts.  That
2404 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2405
2406 FOO
2407                 $echo $n "The star should be here-->$c"
2408                 $echo "*"
2409         fi
2410         $rm -f foo1 foo2
2411         ;;
2412 esac
2413
2414 cat <<EOS >trygcc
2415 $startsh
2416 EOS
2417 cat <<'EOSC' >>trygcc
2418 case "$cc" in
2419 '') ;;
2420 *)  $rm -f try try.*
2421     $cat >try.c <<EOM
2422 int main(int argc, char *argv[]) {
2423   return 0;
2424 }
2425 EOM
2426     if $cc -o try $ccflags $ldflags try.c; then
2427        :
2428     else
2429         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2430         despair=yes
2431         trygcc=yes
2432         case "$cc" in
2433         *gcc*) trygcc=no ;;
2434         esac
2435         case "`$cc -v -c try.c 2>&1`" in
2436         *gcc*) trygcc=no ;;
2437         esac
2438         if $test X"$trygcc" = Xyes; then
2439             if gcc -o try -c try.c; then
2440                 echo " "
2441                 echo "You seem to have a working gcc, though." >&4
2442                 rp="Would you like to use it?"
2443                 dflt=y
2444                 if $test -f myread; then
2445                     . ./myread
2446                 else
2447                     if $test -f UU/myread; then
2448                         . ./UU/myread
2449                     else
2450                         echo "Cannot find myread, sorry.  Aborting." >&2
2451                         exit 1
2452                     fi
2453                 fi  
2454                 case "$ans" in
2455                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2456                        if $test -f usethreads.cbu; then
2457                            $cat >&4 <<EOM 
2458
2459 *** However, any setting of the C compiler flags (e.g. for thread support)
2460 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2461 *** (together with e.g. -Dusethreads).
2462
2463 EOM
2464                        fi;;
2465                 esac
2466             fi
2467         fi
2468     fi
2469     $rm -f try try.*
2470     ;;
2471 esac
2472 EOSC
2473
2474 cat <<EOS >checkcc
2475 $startsh
2476 EOS
2477 cat <<'EOSC' >>checkcc
2478 case "$cc" in        
2479 '') ;;
2480 *)  $rm -f try try.*              
2481     $cat >try.c <<EOM
2482 int main(int argc, char *argv[]) {
2483   return 0;
2484 }
2485 EOM
2486     if $cc -o try $ccflags $ldflags try.c; then
2487        :
2488     else
2489         if $test X"$despair" = Xyes; then
2490            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2491         fi
2492         $cat >&4 <<EOM         
2493 You need to find a working C compiler.
2494 Either (purchase and) install the C compiler supplied by your OS vendor,
2495 or for a free C compiler try http://gcc.gnu.org/
2496 I cannot continue any further, aborting.
2497 EOM
2498         exit 1
2499     fi
2500     $rm -f try try.*
2501     ;;
2502 esac
2503 EOSC
2504
2505 : determine whether symbolic links are supported
2506 echo " "
2507 $touch blurfl
2508 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2509         echo "Symbolic links are supported." >&4
2510         lns="$ln -s"
2511 else
2512         echo "Symbolic links are NOT supported." >&4
2513         lns="$ln"
2514 fi
2515 $rm -f blurfl sym
2516
2517 : determine whether symbolic links are supported
2518 echo " "
2519 case "$lns" in
2520 *"ln"*" -s")
2521         echo "Checking how to test for symbolic links..." >&4
2522         $lns blurfl sym
2523         if $test "X$issymlink" = X; then
2524                 case "$newsh" in
2525                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2526                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2527                 esac
2528                 if test $? = 0; then
2529                         issymlink="test -h"
2530                 else
2531                         echo "Your builtin 'test -h' may be broken." >&4
2532                         case "$test" in
2533                         /*)     ;;
2534                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2535                                 for p in $pth
2536                                 do
2537                                         if test -f "$p/$test"; then
2538                                                 test="$p/$test"
2539                                                 break
2540                                         fi
2541                                 done
2542                                 ;;
2543                         esac
2544                         case "$test" in
2545                         /*)
2546                                 echo "Trying external '$test -h'." >&4
2547                                 issymlink="$test -h"
2548                                 if $test ! -h sym >/dev/null 2>&1; then
2549                                         echo "External '$test -h' is broken, too." >&4
2550                                         issymlink=''
2551                                 fi
2552                                 ;;
2553                         *)      issymlink='' ;;
2554                         esac
2555                 fi              
2556         fi
2557         if $test "X$issymlink" = X; then
2558                 if $test -L sym 2>/dev/null; then
2559                         issymlink="$test -L"
2560                         echo "The builtin '$test -L' worked." >&4
2561                 fi
2562         fi
2563         if $test "X$issymlink" != X; then
2564                 echo "You can test for symbolic links with '$issymlink'." >&4
2565         else
2566                 echo "I do not know how you can test for symbolic links." >&4
2567         fi
2568         $rm -f blurfl sym
2569         ;;
2570 *)      echo "No symbolic links, so not testing for their testing..." >&4
2571         ;;
2572 esac
2573 echo " "
2574
2575
2576 case "$mksymlinks" in
2577 $define|true|[yY]*)
2578         case "$src" in
2579         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2580                 exit 1
2581                 ;;
2582         *)      case "$lns:$issymlink" in
2583                 *"ln"*" -s:"*"test -"?)
2584                         echo "Creating the symbolic links..." >&4
2585                         echo "(First creating the subdirectories...)" >&4
2586                         cd ..
2587                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2588                                 read directory
2589                                 test -z "$directory" && break
2590                                 mkdir -p $directory
2591                         done
2592                         # Sanity check 1.
2593                         if test ! -d t/base; then
2594                                 echo "Failed to create the subdirectories.  Aborting." >&4
2595                                 exit 1
2596                         fi
2597                         echo "(Then creating the symlinks...)" >&4
2598                         awk '{print $1}' $src/MANIFEST | while true; do
2599                                 read filename
2600                                 test -z "$filename" && break
2601                                 if test -f $filename; then
2602                                         if $issymlink $filename; then
2603                                                 rm -f $filename
2604                                         fi
2605                                 fi
2606                                 if test -f $filename; then
2607                                         echo "$filename already exists, not symlinking."
2608                                 else
2609                                         ln -s $src/$filename $filename
2610                                 fi
2611                         done
2612                         # Sanity check 2.
2613                         if test ! -f t/base/lex.t; then
2614                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2615                                 exit 1
2616                         fi
2617                         cd UU
2618                         ;;
2619                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2620                         ;;
2621                 esac
2622                 ;;
2623         esac
2624         ;;
2625 esac
2626
2627
2628 case "$usecrosscompile" in
2629 $define|true|[yY]*)
2630         $echo "Cross-compiling..."
2631         croak=''
2632         case "$cc" in
2633         *-*-gcc) # A cross-compiling gcc, probably.
2634             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2635             ar=$targetarch-ar
2636             # leave out ld, choosing it is more complex
2637             nm=$targetarch-nm
2638             ranlib=$targetarch-ranlib
2639             $echo 'extern int foo;' > try.c
2640             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2641             shift
2642             if $test $# -gt 0; then
2643                 incpth="$incpth $*"
2644                 incpth="`$echo $incpth|$sed 's/^ //'`"
2645                 echo "Guessing incpth '$incpth'." >&4
2646                 for i in $*; do
2647                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2648                     if $test -d $j; then
2649                         libpth="$libpth $j"
2650                     fi
2651                 done   
2652                 libpth="`$echo $libpth|$sed 's/^ //'`"
2653                 echo "Guessing libpth '$libpth'." >&4
2654             fi
2655             $rm -f try.c
2656             ;;
2657         esac
2658         case "$targetarch" in
2659         '') echo "Targetarch not defined." >&4; croak=y ;;
2660         *)  echo "Using targetarch $targetarch." >&4 ;;
2661         esac
2662         case "$incpth" in
2663         '') echo "Incpth not defined." >&4; croak=y ;;
2664         *)  echo "Using incpth '$incpth'." >&4 ;;
2665         esac
2666         case "$libpth" in
2667         '') echo "Libpth not defined." >&4; croak=y ;;
2668         *)  echo "Using libpth '$libpth'." >&4 ;;
2669         esac
2670         case "$usrinc" in
2671         '') for i in $incpth; do
2672                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2673                     usrinc=$i
2674                     echo "Guessing usrinc $usrinc." >&4
2675                     break
2676                 fi
2677             done
2678             case "$usrinc" in
2679             '') echo "Usrinc not defined." >&4; croak=y ;;
2680             esac
2681             ;;
2682         *)  echo "Using usrinc $usrinc." >&4 ;;
2683         esac
2684         case "$targethost" in
2685         '') echo "Targethost not defined." >&4; croak=y ;;
2686         *)  echo "Using targethost $targethost." >&4
2687         esac
2688         locincpth=' '
2689         loclibpth=' '
2690         case "$croak" in
2691         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2692         esac
2693         case "$src" in
2694         /*) run=$src/Cross/run
2695             targetmkdir=$src/Cross/mkdir
2696             to=$src/Cross/to
2697             from=$src/Cross/from
2698             ;;
2699         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2700             run=$pwd/Cross/run
2701             targetmkdir=$pwd/Cross/mkdir
2702             to=$pwd/Cross/to
2703             from=$pwd/Cross/from
2704             ;;
2705         esac
2706         case "$targetrun" in
2707         '') targetrun=ssh ;;
2708         esac
2709         case "$targetto" in
2710         '') targetto=scp ;;
2711         esac
2712         case "$targetfrom" in
2713         '') targetfrom=scp ;;
2714         esac
2715         run=$run-$targetrun
2716         to=$to-$targetto
2717         from=$from-$targetfrom
2718         case "$targetdir" in
2719         '')  targetdir=/tmp
2720              echo "Guessing targetdir $targetdir." >&4
2721              ;;
2722         esac
2723         case "$targetuser" in
2724         '')  targetuser=root
2725              echo "Guessing targetuser $targetuser." >&4
2726              ;;
2727         esac
2728         case "$targetfrom" in
2729         scp)    q=-q ;;
2730         *)      q='' ;;
2731         esac
2732         case "$targetrun" in
2733         ssh|rsh)
2734             cat >$run <<EOF
2735 #!/bin/sh
2736 case "\$1" in
2737 -cwd)
2738   shift
2739   cwd=\$1
2740   shift
2741   ;;
2742 esac
2743 case "\$cwd" in
2744 '') cwd=$targetdir ;;
2745 esac
2746 exe=\$1
2747 shift
2748 if $test ! -f \$exe.xok; then
2749   $to \$exe
2750   $touch \$exe.xok
2751 fi
2752 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2753 EOF
2754             ;;
2755         *)  echo "Unknown targetrun '$targetrun'" >&4
2756             exit 1
2757             ;;
2758         esac
2759         case "$targetmkdir" in
2760         */Cross/mkdir)
2761             cat >$targetmkdir <<EOF
2762 #!/bin/sh
2763 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2764 EOF
2765             $chmod a+rx $targetmkdir
2766             ;;
2767         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2768             exit 1
2769             ;;
2770         esac
2771         case "$targetto" in
2772         scp|rcp)
2773             cat >$to <<EOF
2774 #!/bin/sh
2775 for f in \$@
2776 do
2777   case "\$f" in
2778   /*)
2779     $targetmkdir \`dirname \$f\`
2780     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2781     ;;
2782   *)
2783     $targetmkdir $targetdir/\`dirname \$f\`
2784     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2785     ;;
2786   esac
2787 done
2788 exit 0
2789 EOF
2790             ;;
2791         cp) cat >$to <<EOF
2792 #!/bin/sh
2793 for f in \$@
2794 do
2795   case "\$f" in
2796   /*)
2797     $mkdir -p $targetdir/\`dirname \$f\`
2798     $cp \$f $targetdir/\$f || exit 1
2799     ;;
2800   *)
2801     $targetmkdir $targetdir/\`dirname \$f\`
2802     $cp \$f $targetdir/\$f || exit 1
2803     ;;
2804   esac
2805 done
2806 exit 0
2807 EOF
2808             ;;
2809         *)  echo "Unknown targetto '$targetto'" >&4
2810             exit 1
2811             ;;
2812         esac
2813         case "$targetfrom" in
2814         scp|rcp)
2815           cat >$from <<EOF
2816 #!/bin/sh
2817 for f in \$@
2818 do
2819   $rm -f \$f
2820   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2821 done
2822 exit 0
2823 EOF
2824             ;;
2825         cp) cat >$from <<EOF
2826 #!/bin/sh
2827 for f in \$@
2828 do
2829   $rm -f \$f
2830   cp $targetdir/\$f . || exit 1
2831 done
2832 exit 0
2833 EOF
2834             ;;
2835         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2836             exit 1
2837             ;;
2838         esac
2839         if $test ! -f $run; then
2840             echo "Target 'run' script '$run' not found." >&4
2841         else
2842             $chmod a+rx $run
2843         fi
2844         if $test ! -f $to; then
2845             echo "Target 'to' script '$to' not found." >&4
2846         else
2847             $chmod a+rx $to
2848         fi
2849         if $test ! -f $from; then
2850             echo "Target 'from' script '$from' not found." >&4
2851         else
2852             $chmod a+rx $from
2853         fi
2854         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2855             exit 1
2856         fi
2857         cat >&4 <<EOF
2858 Using '$run' for remote execution,
2859 and '$from' and '$to'
2860 for remote file transfer.
2861 EOF
2862         ;;
2863 *)      run=''
2864         to=:
2865         from=:
2866         usecrosscompile='undef'
2867         targetarch=''
2868         ;;
2869 esac
2870
2871 : see whether [:lower:] and [:upper:] are supported character classes
2872 echo " "
2873 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2874 ABYZ)
2875         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2876         up='[:upper:]'
2877         low='[:lower:]'
2878         ;;
2879 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2880         # (0xc9 and 0xd1), therefore that is a nice testing point.
2881         if test "X$up" = X -o "X$low" = X; then
2882             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2883             ij) up='[A-Z]'
2884                 low='[a-z]'
2885                 ;;
2886             esac
2887         fi
2888         if test "X$up" = X -o "X$low" = X; then
2889             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2890             ij) up='A-Z'
2891                 low='a-z'
2892                 ;;
2893             esac
2894         fi
2895         if test "X$up" = X -o "X$low" = X; then
2896             case "`echo IJ | od -x 2>/dev/null`" in
2897             *C9D1*|*c9d1*)
2898                 echo "Hey, this might be EBCDIC." >&4
2899                 if test "X$up" = X -o "X$low" = X; then
2900                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2901                     ij) up='[A-IJ-RS-Z]'
2902                         low='[a-ij-rs-z]'
2903                         ;;
2904                     esac
2905                 fi
2906                 if test "X$up" = X -o "X$low" = X; then
2907                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2908                     ij) up='A-IJ-RS-Z'
2909                         low='a-ij-rs-z'
2910                         ;;
2911                     esac
2912                 fi
2913                 ;;
2914             esac
2915         fi
2916 esac
2917 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2918 ij)
2919     echo "Using $up and $low to convert case." >&4
2920     ;;
2921 *)
2922     echo "I don't know how to translate letters from upper to lower case." >&4
2923     echo "Your tr is not acting any way I know of." >&4
2924     exit 1
2925     ;;
2926 esac
2927 : set up the translation script tr, must be called with ./tr of course
2928 cat >tr <<EOSC
2929 $startsh
2930 case "\$1\$2" in
2931 '[A-Z][a-z]') exec $tr '$up' '$low';;
2932 '[a-z][A-Z]') exec $tr '$low' '$up';;
2933 esac
2934 exec $tr "\$@"
2935 EOSC
2936 chmod +x tr
2937 $eunicefix tr
2938
2939 : Try to determine whether config.sh was made on this system
2940 case "$config_sh" in
2941 '')
2942 myuname=`$uname -a 2>/dev/null`
2943 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2944 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2945 # because the A-Z/a-z are not consecutive.
2946 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2947         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2948 newmyuname="$myuname"
2949 dflt=n
2950 case "$knowitall" in
2951 '')
2952         if test -f ../config.sh; then
2953                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2954                         eval "`grep myuname= ../config.sh`"
2955                 fi
2956                 if test "X$myuname" = "X$newmyuname"; then
2957                         dflt=y
2958                 fi
2959         fi
2960         ;;
2961 *) dflt=y;;
2962 esac
2963
2964 : Get old answers from old config file if Configure was run on the
2965 : same system, otherwise use the hints.
2966 hint=default
2967 cd ..
2968 if test -f config.sh; then
2969         echo " "
2970         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2971         . UU/myread
2972         case "$ans" in
2973         n*|N*) echo "OK, I'll ignore it."
2974                 mv config.sh config.sh.old
2975                 myuname="$newmyuname"
2976                 ;;
2977         *)  echo "Fetching default answers from your old config.sh file..." >&4
2978                 tmp_n="$n"
2979                 tmp_c="$c"
2980                 tmp_sh="$sh"
2981                 . ./config.sh
2982                 cp config.sh UU
2983                 n="$tmp_n"
2984                 c="$tmp_c"
2985                 : Older versions did not always set $sh.  Catch re-use of such
2986                 : an old config.sh.
2987                 case "$sh" in
2988                 '') sh="$tmp_sh" ;;
2989                 esac
2990                 hint=previous
2991                 ;;
2992         esac
2993 fi
2994 . ./UU/checkcc
2995 if test ! -f config.sh; then
2996         $cat <<EOM
2997
2998 First time through, eh?  I have some defaults handy for some systems
2999 that need some extra help getting the Configure answers right:
3000
3001 EOM
3002         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3003         dflt=''
3004         : Half the following guesses are probably wrong... If you have better
3005         : tests or hints, please send them to perlbug@perl.org
3006         : The metaconfig authors would also appreciate a copy...
3007         $test -f /irix && osname=irix
3008         $test -f /xenix && osname=sco_xenix
3009         $test -f /dynix && osname=dynix
3010         $test -f /dnix && osname=dnix
3011         $test -f /lynx.os && osname=lynxos
3012         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3013         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3014         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3015         $test -f /bin/mips && /bin/mips && osname=mips
3016         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3017                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3018         $test -d /usr/apollo/bin && osname=apollo
3019         $test -f /etc/saf/_sactab && osname=svr4
3020         $test -d /usr/include/minix && osname=minix
3021         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3022         if $test -d /MachTen -o -d /MachTen_Folder; then
3023                 osname=machten
3024                 if $test -x /sbin/version; then
3025                         osvers=`/sbin/version | $awk '{print $2}' |
3026                         $sed -e 's/[A-Za-z]$//'`
3027                 elif $test -x /usr/etc/version; then
3028                         osvers=`/usr/etc/version | $awk '{print $2}' |
3029                         $sed -e 's/[A-Za-z]$//'`
3030                 else
3031                         osvers="$2.$3"
3032                 fi
3033         fi
3034
3035         $test -f /sys/posix.dll &&
3036                 $test -f /usr/bin/what &&
3037                 set X `/usr/bin/what /sys/posix.dll` &&
3038                 $test "$3" = UWIN &&
3039                 osname=uwin &&
3040                 osvers="$5"
3041
3042         if $test -f $uname; then
3043                 set X $myuname
3044                 shift
3045
3046                 case "$5" in
3047                 fps*) osname=fps ;;
3048                 mips*)
3049                         case "$4" in
3050                         umips) osname=umips ;;
3051                         *) osname=mips ;;
3052                         esac;;
3053                 [23]100) osname=mips ;;
3054                 next*) osname=next ;;
3055                 i386*)
3056                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3057                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3058                                 osname='sco'
3059                                 osvers=$tmp
3060                         elif $test -f /etc/kconfig; then
3061                                 osname=isc
3062                                 if test "$lns" = "$ln -s"; then
3063                                         osvers=4
3064                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3065                                         osvers=3
3066                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3067                                         osvers=2
3068                                 fi
3069                         fi
3070                         tmp=''
3071                         ;;
3072                 pc*)
3073                         if test -n "$DJGPP"; then
3074                                 osname=dos
3075                                 osvers=djgpp
3076                         fi
3077                         ;;
3078                 esac
3079
3080                 case "$1" in
3081                 aix) osname=aix
3082                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3083                         case "$tmp" in
3084                         'not found') osvers="$4"."$3" ;;
3085                         '<3240'|'<>3240') osvers=3.2.0 ;;
3086                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3087                         '=3250'|'>3250') osvers=3.2.5 ;;
3088                         *) osvers=$tmp;;
3089                         esac
3090                         ;;
3091                 bsd386) osname=bsd386
3092                         osvers=`$uname -r`
3093                         ;;
3094                 cygwin*) osname=cygwin
3095                         osvers="$3"
3096                         ;;
3097                 *dc.osx) osname=dcosx
3098                         osvers="$3"
3099                         ;;
3100                 dnix) osname=dnix
3101                         osvers="$3"
3102                         ;;
3103                 domainos) osname=apollo
3104                         osvers="$3"
3105                         ;;
3106                 dgux) osname=dgux 
3107                         osvers="$3"
3108                         ;;
3109                 dynixptx*) osname=dynixptx
3110                         osvers=`echo "$4"|sed 's/^v//'`
3111                         ;;
3112                 freebsd) osname=freebsd 
3113                         osvers="$3" ;;
3114                 genix) osname=genix ;;
3115                 hp*) osname=hpux 
3116                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3117                         ;;
3118                 irix*) osname=irix
3119                         case "$3" in
3120                         4*) osvers=4 ;;
3121                         5*) osvers=5 ;;
3122                         *)      osvers="$3" ;;
3123                         esac
3124                         ;;
3125                 linux) osname=linux
3126                         case "$3" in
3127                         *)      osvers="$3" ;;
3128                         esac
3129                         ;;
3130                 MiNT) osname=mint
3131                         ;;
3132                 netbsd*) osname=netbsd
3133                         osvers="$3"
3134                         ;;
3135                 news-os) osvers="$3"
3136                         case "$3" in
3137                         4*) osname=newsos4 ;;
3138                         *) osname=newsos ;;
3139                         esac
3140                         ;;
3141                 next*) osname=next ;;
3142                 nonstop-ux) osname=nonstopux ;;
3143                 openbsd) osname=openbsd
3144                         osvers="$3"
3145                         ;;
3146                 os2)    osname=os2
3147                         osvers="$4"
3148                         ;;
3149                 POSIX-BC | posix-bc ) osname=posix-bc
3150                         osvers="$3"
3151                         ;;
3152                 powerux | power_ux | powermax_os | powermaxos | \
3153                 powerunix | power_unix) osname=powerux
3154                         osvers="$3"
3155                         ;;
3156                 qnx) osname=qnx
3157                         osvers="$4"
3158                         ;;
3159                 solaris) osname=solaris
3160                         case "$3" in
3161                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3162                         *)      osvers="$3" ;;
3163                         esac
3164                         ;;
3165                 sunos) osname=sunos
3166                         case "$3" in
3167                         5*) osname=solaris
3168                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3169                         *)      osvers="$3" ;;
3170                         esac
3171                         ;;
3172                 titanos) osname=titanos
3173                         case "$3" in
3174                         1*) osvers=1 ;;
3175                         2*) osvers=2 ;;
3176                         3*) osvers=3 ;;
3177                         4*) osvers=4 ;;
3178                         *)      osvers="$3" ;;
3179                         esac
3180                         ;;
3181                 ultrix) osname=ultrix
3182                         osvers="$3"
3183                         ;;
3184                 osf1|mls+)      case "$5" in
3185                                 alpha)
3186                                         osname=dec_osf
3187                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3188                                         case "$osvers" in
3189                                         [1-9].[0-9]*) ;;
3190                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3191                                         esac
3192                                         ;;
3193                         hp*)    osname=hp_osf1  ;;
3194                         mips)   osname=mips_osf1 ;;
3195                         esac
3196                         ;;
3197                 # UnixWare 7.1.2 is known as Open UNIX 8
3198                 openunix|unixware) osname=svr5
3199                         osvers="$4"
3200                         ;;
3201                 uts)    osname=uts
3202                         osvers="$3"
3203                         ;;
3204                 vos) osvers="$3"
3205                         ;;
3206                 $2) case "$osname" in
3207                         *isc*) ;;
3208                         *freebsd*) ;;
3209                         svr*)
3210                                 : svr4.x or possibly later
3211                                 case "svr$3" in 
3212                                 ${osname}*)
3213                                         osname=svr$3
3214                                         osvers=$4
3215                                         ;;
3216                                 esac
3217                                 case "$osname" in
3218                                 svr4.0)
3219                                         : Check for ESIX
3220                                         if test -f /stand/boot ; then
3221                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3222                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3223                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3224                                                         if test -n "$isesix"; then
3225                                                                 osname=esix4
3226                                                         fi
3227                                                 fi
3228                                         fi
3229                                         ;;
3230                                 esac
3231                                 ;;
3232                         *)      if test -f /etc/systemid; then
3233                                         osname=sco
3234                                         set `echo $3 | $sed 's/\./ /g'` $4
3235                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3236                                                 osvers=$1.$2.$3
3237                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3238                                                 osvers=$1.$2
3239                                         elif $test -f $src/hints/sco_$1.sh; then
3240                                                 osvers=$1
3241                                         fi
3242                                 else
3243                                         case "$osname" in
3244                                         '') : Still unknown.  Probably a generic Sys V.
3245                                                 osname="sysv"
3246                                                 osvers="$3"
3247                                                 ;;
3248                                         esac
3249                                 fi
3250                                 ;;
3251                         esac
3252                         ;;
3253                 *)      case "$osname" in
3254                         '') : Still unknown.  Probably a generic BSD.
3255                                 osname="$1"
3256                                 osvers="$3"
3257                                 ;;
3258                         esac
3259                         ;;
3260                 esac
3261         else
3262                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3263                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3264                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3265                                 osname=news_os
3266                         fi
3267                         $rm -f UU/kernel.what
3268                 elif test -d c:/. -o -n "$is_os2" ; then
3269                         set X $myuname
3270                         osname=os2
3271                         osvers="$5"
3272                 fi
3273         fi
3274         
3275         case "$targetarch" in
3276         '') ;;
3277         *)  hostarch=$osname
3278             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3279             osvers=''
3280             ;;
3281         esac
3282
3283         : Now look for a hint file osname_osvers, unless one has been
3284         : specified already.
3285         case "$hintfile" in
3286         ''|' ')
3287                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3288                 : Also try without trailing minor version numbers.
3289                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3290                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3291                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3292                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3293                 case "$file" in
3294                 '') dflt=none ;;
3295                 *)  case "$osvers" in
3296                         '') dflt=$file
3297                                 ;;
3298                         *)  if $test -f $src/hints/$file.sh ; then
3299                                         dflt=$file
3300                                 elif $test -f $src/hints/$xfile.sh ; then
3301                                         dflt=$xfile
3302                                 elif $test -f $src/hints/$xxfile.sh ; then
3303                                         dflt=$xxfile
3304                                 elif $test -f $src/hints/$xxxfile.sh ; then
3305                                         dflt=$xxxfile
3306                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3307                                         dflt=$xxxxfile
3308                                 elif $test -f "$src/hints/${osname}.sh" ; then
3309                                         dflt="${osname}"
3310                                 else
3311                                         dflt=none
3312                                 fi
3313                                 ;;
3314                         esac
3315                         ;;
3316                 esac
3317                 if $test -f Policy.sh ; then
3318                         case "$dflt" in
3319                         *Policy*) ;;
3320                         none) dflt="Policy" ;;
3321                         *) dflt="Policy $dflt" ;;
3322                         esac
3323                 fi
3324                 ;;
3325         *)
3326                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3327                 ;;
3328         esac
3329
3330         if $test -f Policy.sh ; then
3331                 $cat <<EOM
3332
3333 There's also a Policy hint file available, which should make the
3334 site-specific (policy) questions easier to answer.
3335 EOM
3336
3337         fi
3338
3339         $cat <<EOM
3340
3341 You may give one or more space-separated answers, or "none" if appropriate.
3342 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3343 is a good thing.  DO NOT give a wrong version or a wrong OS.
3344
3345 EOM
3346
3347         rp="Which of these apply, if any?"
3348         . UU/myread
3349         tans=$ans
3350         for file in $tans; do
3351                 if $test X$file = XPolicy -a -f Policy.sh; then
3352                         . Policy.sh
3353                         $cat Policy.sh >> UU/config.sh
3354                 elif $test -f $src/hints/$file.sh; then
3355                         . $src/hints/$file.sh
3356                         $cat $src/hints/$file.sh >> UU/config.sh
3357                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3358                         : nothing
3359                 else
3360                         : Give one chance to correct a possible typo.
3361                         echo "$file.sh does not exist"
3362                         dflt=$file
3363                         rp="hint to use instead?"
3364                         . UU/myread
3365                         for file in $ans; do
3366                                 if $test -f "$src/hints/$file.sh"; then
3367                                         . $src/hints/$file.sh
3368                                         $cat $src/hints/$file.sh >> UU/config.sh
3369                                 elif $test X$ans = X -o X$ans = Xnone ; then
3370                                         : nothing
3371                                 else
3372                                         echo "$file.sh does not exist -- ignored."
3373                                 fi
3374                         done
3375                 fi
3376         done
3377
3378         hint=recommended
3379         : Remember our hint file for later.
3380         if $test -f "$src/hints/$file.sh" ; then
3381                 hintfile="$file"
3382         else
3383                 hintfile=''
3384         fi
3385 fi
3386 cd UU
3387 ;;
3388 *)
3389         echo " "
3390         echo "Fetching default answers from $config_sh..." >&4
3391         tmp_n="$n"
3392         tmp_c="$c"
3393         cd ..
3394         cp $config_sh config.sh 2>/dev/null
3395         chmod +w config.sh
3396         . ./config.sh
3397         cd UU
3398         cp ../config.sh .
3399         n="$tmp_n"
3400         c="$tmp_c"
3401         hint=previous
3402         ;;
3403 esac
3404 test "$override" && . ./optdef.sh
3405
3406 : Restore computed paths
3407 for file in $loclist $trylist; do
3408         eval $file="\$_$file"
3409 done
3410
3411 cat << EOM
3412
3413 Configure uses the operating system name and version to set some defaults.
3414 The default value is probably right if the name rings a bell. Otherwise,
3415 since spelling matters for me, either accept the default or answer "none"
3416 to leave it blank.
3417
3418 EOM
3419 case "$osname" in
3420         ''|' ')
3421                 case "$hintfile" in
3422                 ''|' '|none) dflt=none ;;
3423                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3424                 esac
3425                 ;;
3426         *) dflt="$osname" ;;
3427 esac
3428 rp="Operating system name?"
3429 . ./myread
3430 case "$ans" in
3431 none)  osname='' ;;
3432 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3433 esac
3434 echo " "
3435 case "$osvers" in
3436         ''|' ')
3437                 case "$hintfile" in
3438                 ''|' '|none) dflt=none ;;
3439                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3440                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3441                         case "$dflt" in
3442                         ''|' ') dflt=none ;;
3443                         esac
3444                         ;;
3445                 esac
3446                 ;;
3447         *) dflt="$osvers" ;;
3448 esac
3449 rp="Operating system version?"
3450 . ./myread
3451 case "$ans" in
3452 none)  osvers='' ;;
3453 *) osvers="$ans" ;;
3454 esac
3455
3456
3457 . ./posthint.sh
3458
3459 : who configured the system
3460 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3461 cf_by=`(logname) 2>/dev/null`
3462 case "$cf_by" in
3463 "")
3464         cf_by=`(whoami) 2>/dev/null`
3465         case "$cf_by" in
3466         "") cf_by=unknown ;;
3467         esac ;;
3468 esac
3469
3470 : set up the script used to warn in case of inconsistency
3471 cat <<EOS >whoa
3472 $startsh
3473 EOS
3474 cat <<'EOSC' >>whoa
3475 dflt=y
3476 echo " "
3477 echo "*** WHOA THERE!!! ***" >&4
3478 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3479 rp="    Keep the $hint value?"
3480 . ./myread
3481 case "$ans" in
3482 y) td=$was; tu=$was;;
3483 esac
3484 EOSC
3485
3486 : function used to set $1 to $val
3487 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3488 case "$val$was" in
3489 $define$undef) . ./whoa; eval "$var=\$td";;
3490 $undef$define) . ./whoa; eval "$var=\$tu";;
3491 *) eval "$var=$val";;
3492 esac'
3493
3494 case "$usesocks" in
3495 $define|true|[yY]*)     dflt='y';;
3496 *) dflt='n';;
3497 esac
3498 cat <<EOM
3499
3500 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3501 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3502 to use the PerlIO abstraction layer, this will be implicitly selected.
3503
3504 If this doesn't make any sense to you, just accept the default '$dflt'.
3505 EOM
3506 rp='Build Perl for SOCKS?'
3507 . ./myread
3508 case "$ans" in
3509 y|Y)    val="$define" ;;     
3510 *)      val="$undef" ;;
3511 esac
3512 set usesocks
3513 eval $setvar
3514
3515 case "$usesocks" in
3516 $define|true|[yY]*) useperlio="$define";;
3517 esac
3518
3519 case "$useperlio" in
3520 $define|true|[yY]*|'')  dflt='y';;
3521 *) dflt='n';;
3522 esac
3523 cat <<EOM
3524
3525 Previous version of $package used the standard IO mechanisms as
3526 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
3527 alternate IO mechanisms via the PerlIO abstraction layer, but the
3528 stdio mechanism is still available if needed.  The abstraction layer
3529 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3530 Using PerlIO with sfio may cause problems with some extension modules.
3531
3532 If this doesn't make any sense to you, just accept the default '$dflt'.
3533 EOM
3534 rp='Use the PerlIO abstraction layer?'
3535 . ./myread
3536 case "$ans" in
3537 y|Y) 
3538         val="$define"
3539         ;;
3540 *)      
3541         echo "Ok, doing things the stdio way."
3542         val="$undef"
3543         ;;
3544 esac
3545 set useperlio
3546 eval $setvar 
3547
3548 case "$usesocks" in
3549 $define|true|[yY]*)
3550         case "$useperlio" in
3551         $define|true|[yY]*) ;;
3552         *)      cat >&4 <<EOM
3553
3554 You are using the SOCKS proxy protocol library which means that you
3555 should also use the PerlIO layer.  You may be headed for trouble.
3556
3557 EOM
3558                 ;;
3559         esac
3560         ;;
3561 esac
3562
3563         
3564 case "$usethreads" in
3565 $define|true|[yY]*)     dflt='y';;
3566 *)     # Catch case where user specified ithreads or 5005threads but
3567        # forgot -Dusethreads (A.D. 4/2002)
3568        case "$useithreads$use5005threads" in
3569        *$define*)      
3570                 case "$useperlio" in
3571                 "$define")      dflt='y' ;;
3572                 *)              dflt='n' ;;
3573                 esac
3574                 ;;
3575        *)       dflt='n';;
3576        esac
3577        ;;
3578 esac
3579 cat <<EOM
3580
3581 Perl can be built to take advantage of threads on some systems.
3582 To do so, Configure can be run with -Dusethreads.
3583
3584 Note that Perl built with threading support runs slightly slower
3585 and uses more memory than plain Perl. The current implementation
3586 is believed to be stable, but it is fairly new, and so should be
3587 treated with caution.
3588
3589 If this doesn't make any sense to you, just accept the default '$dflt'.
3590 EOM
3591 rp='Build a threading Perl?'
3592 . ./myread
3593 case "$ans" in
3594 y|Y)    val="$define" ;;
3595 *)      val="$undef" ;;
3596 esac
3597 set usethreads
3598 eval $setvar
3599
3600 case "$usethreads" in
3601 $define)
3602         $cat <<EOM
3603
3604 Since release 5.6, Perl has had two different threading implementations,
3605 the newer interpreter-based version (ithreads) with one interpreter per
3606 thread, and the older 5.005 version (5005threads).
3607 The 5005threads version is effectively unmaintained and will probably be
3608 removed in Perl 5.10, so there should be no need to build a Perl using it
3609 unless needed for backwards compatibility with some existing 5.005threads
3610 code.
3611
3612 EOM
3613         : Default to ithreads unless overridden on command line or with
3614         : old config.sh
3615         dflt='y'
3616         case "$use5005threads" in
3617                 $define|true|[yY]*) dflt='n';;
3618         esac
3619         case "$useithreads" in
3620                 $undef|false|[nN]*) dflt='n';;
3621         esac
3622         rp='Use the newer interpreter-based ithreads?'
3623         . ./myread
3624         case "$ans" in
3625         y|Y)    val="$define" ;;
3626         *)      val="$undef" ;;
3627         esac
3628         set useithreads
3629         eval $setvar
3630         : Now set use5005threads to the opposite value.
3631         case "$useithreads" in
3632         $define) val="$undef" ;;
3633         *) val="$define" ;;
3634         esac
3635         set use5005threads
3636         eval $setvar
3637         ;;
3638 *)
3639         useithreads="$undef"
3640         use5005threads="$undef"
3641         ;;
3642 esac
3643
3644 case "$useithreads$use5005threads" in
3645 "$define$define")
3646         $cat >&4 <<EOM
3647
3648 You cannot have both the ithreads and the 5.005 threads enabled
3649 at the same time.  Disabling the 5.005 threads since they are
3650 much less stable than the ithreads.
3651
3652 EOM
3653         use5005threads="$undef"
3654         ;;
3655 esac
3656
3657 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3658         cat >&4 <<EOF
3659 ***
3660 *** To build with ithreads you must also use the PerlIO layer.
3661 *** Cannot continue, aborting.
3662 ***
3663 EOF
3664         exit 1
3665 fi
3666
3667 case "$d_oldpthreads" in
3668 '')     : Configure tests would be welcome here.  For now, assume undef.
3669         val="$undef" ;;
3670 *)      val="$d_oldpthreads" ;;
3671 esac
3672 set d_oldpthreads
3673 eval $setvar
3674
3675
3676 : Look for a hint-file generated 'call-back-unit'.  If the
3677 : user has specified that a threading perl is to be built,
3678 : we may need to set or change some other defaults.
3679 if $test -f usethreads.cbu; then
3680     echo "Your platform has some specific hints regarding threaded builds, using them..."
3681     . ./usethreads.cbu
3682 else
3683     case "$usethreads" in
3684         "$define"|true|[yY]*)
3685                 $cat <<EOM
3686 (Your platform does not have any specific hints for threaded builds.
3687  Assuming POSIX threads, then.)
3688 EOM
3689         ;;
3690     esac
3691 fi
3692
3693 cat <<EOM
3694
3695 Perl can be built so that multiple Perl interpreters can coexist
3696 within the same Perl executable.
3697 EOM
3698
3699 case "$useithreads" in
3700 $define)
3701         cat <<EOM
3702 This multiple interpreter support is required for interpreter-based threads.
3703 EOM
3704         val="$define"
3705         ;;
3706 *)      case "$usemultiplicity" in
3707         $define|true|[yY]*)     dflt='y';;
3708         *) dflt='n';;
3709         esac
3710         echo " "
3711         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3712         rp='Build Perl for multiplicity?'
3713         . ./myread
3714         case "$ans" in
3715         y|Y)    val="$define" ;;
3716         *)      val="$undef" ;;
3717         esac
3718         ;;
3719 esac
3720 set usemultiplicity
3721 eval $setvar
3722
3723
3724 case "$usemorebits" in
3725 "$define"|true|[yY]*)
3726         use64bitint="$define"
3727         uselongdouble="$define"
3728         usemorebits="$define"
3729         ;;
3730 *)      usemorebits="$undef"
3731         ;;
3732 esac
3733
3734 : make some quick guesses about what we are up against
3735 echo " "
3736 $echo $n "Hmm...  $c"
3737 echo exit 1 >bsd
3738 echo exit 1 >usg
3739 echo exit 1 >v7
3740 echo exit 1 >osf1
3741 echo exit 1 >eunice
3742 echo exit 1 >xenix
3743 echo exit 1 >venix
3744 echo exit 1 >os2
3745 d_bsd="$undef"
3746 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3747 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3748 then
3749         echo "Looks kind of like an OSF/1 system, but we'll see..."
3750         echo exit 0 >osf1
3751 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3752         xxx=`./loc addbib blurfl $pth`
3753         if $test -f $xxx; then
3754         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3755                 echo exit 0 >bsd
3756                 echo exit 0 >usg
3757         else
3758                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3759                         echo "Looks kind of like an extended USG system, but we'll see..."
3760                 else
3761                         echo "Looks kind of like a USG system, but we'll see..."
3762                 fi
3763                 echo exit 0 >usg
3764         fi
3765 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3766         echo "Looks kind of like a BSD system, but we'll see..."
3767         d_bsd="$define"
3768         echo exit 0 >bsd
3769 else
3770         echo "Looks kind of like a Version 7 system, but we'll see..."
3771         echo exit 0 >v7
3772 fi
3773 case "$eunicefix" in
3774 *unixtovms*)
3775         $cat <<'EOI'
3776 There is, however, a strange, musty smell in the air that reminds me of
3777 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3778 EOI
3779         echo exit 0 >eunice
3780         d_eunice="$define"
3781 : it so happens the Eunice I know will not run shell scripts in Unix format
3782         ;;
3783 *)
3784         echo " "
3785         echo "Congratulations.  You aren't running Eunice."
3786         d_eunice="$undef"
3787         ;;
3788 esac
3789 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3790 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3791 : semicolon as a patch separator
3792 case "$p_" in
3793 :) ;;
3794 *)
3795         $cat <<'EOI'
3796 I have the feeling something is not exactly right, however...don't tell me...
3797 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3798 (Or you may be running DOS with DJGPP.)
3799 EOI
3800         echo exit 0 >os2
3801         ;;
3802 esac
3803 if test -f /xenix; then
3804         echo "Actually, this looks more like a XENIX system..."
3805         echo exit 0 >xenix
3806         d_xenix="$define"
3807 else
3808         echo " "
3809         echo "It's not Xenix..."
3810         d_xenix="$undef"
3811 fi
3812 chmod +x xenix
3813 $eunicefix xenix
3814 if test -f /venix; then
3815         echo "Actually, this looks more like a VENIX system..."
3816         echo exit 0 >venix
3817 else
3818         echo " "
3819         if ./xenix; then
3820                 : null
3821         else
3822                 echo "Nor is it Venix..."
3823         fi
3824 fi
3825 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3826 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3827 $rm -f foo
3828
3829 case "$cc" in
3830 '') dflt=cc;;
3831 *) dflt="$cc";;
3832 esac
3833 rp="Use which C compiler?"
3834 . ./myread
3835 cc="$ans"
3836
3837 : See if they have not cc but they do have gcc
3838 . ./trygcc
3839 : Look for a hint-file generated 'call-back-unit'.  Now that the
3840 : user has specified the compiler, we may need to set or change some
3841 : other defaults.
3842 if $test -f cc.cbu; then
3843     . ./cc.cbu
3844 fi
3845 . ./checkcc
3846
3847 echo " "
3848 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3849 $cat >try.c <<EOM
3850 #include <stdio.h>
3851 int main() {
3852 #ifdef __GNUC__
3853 #ifdef __VERSION__
3854         printf("%s\n", __VERSION__);
3855 #else
3856         printf("%s\n", "1");
3857 #endif
3858 #endif
3859         return(0);
3860 }
3861 EOM
3862 if $cc -o try $ccflags $ldflags try.c; then
3863         gccversion=`$run ./try`
3864         case "$gccversion" in
3865         '') echo "You are not using GNU cc." ;;
3866         *)  echo "You are using GNU cc $gccversion."
3867             ccname=gcc
3868             ;;
3869         esac
3870 else
3871         echo " "
3872         echo "*** WHOA THERE!!! ***" >&4
3873         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3874         case "$knowitall" in
3875         '')
3876         echo "    You'd better start hunting for one and let me know about it." >&4
3877                 exit 1
3878                 ;;
3879         esac
3880 fi
3881 $rm -f try try.*
3882 case "$gccversion" in
3883 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3884 esac
3885 case "$gccversion" in
3886 '') gccosandvers='' ;;
3887 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3888    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3889    gccshortvers=''
3890    case "$gccosandvers" in
3891    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3892    $osname$osvers) ;; # looking good
3893    $osname*) cat <<EOM >&4
3894
3895 *** WHOA THERE!!! ***
3896
3897     Your gcc has not been compiled for the exact release of
3898     your operating system ($gccosandvers versus $osname$osvers).
3899
3900     In general it is a good idea to keep gcc synchronized with
3901     the operating system because otherwise serious problems
3902     may ensue when trying to compile software, like Perl.
3903
3904     I'm trying to be optimistic here, though, and will continue.
3905     If later during the configuration and build icky compilation
3906     problems appear (headerfile conflicts being the most common
3907     manifestation), I suggest reinstalling the gcc to match
3908     your operating system release.
3909
3910 EOM
3911       ;;
3912    *) gccosandvers='' ;; # failed to parse, better be silent
3913    esac
3914    ;;
3915 esac
3916 case "$ccname" in
3917 '') ccname="$cc" ;;
3918 esac
3919
3920 # gcc 3.* complain about adding -Idirectories that they already know about,
3921 # so we will take those off from locincpth.
3922 case "$gccversion" in
3923 3*)
3924     echo "main(){}">try.c
3925     for incdir in $locincpth; do
3926        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3927              grep '^c[cp]p*[01]: warning: changing search order '`
3928        if test "X$warn" != X; then
3929            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3930        fi
3931     done
3932     $rm -f try try.*
3933 esac
3934
3935 : decide how portable to be.  Allow command line overrides.
3936 case "$d_portable" in
3937 "$undef") ;;
3938 *)      d_portable="$define" ;;
3939 esac
3940
3941 : set up shell script to do ~ expansion
3942 cat >filexp <<EOSS
3943 $startsh
3944 : expand filename
3945 case "\$1" in
3946  ~/*|~)
3947         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3948         ;;
3949  ~*)
3950         if $test -f /bin/csh; then
3951                 /bin/csh -f -c "glob \$1"
3952                 failed=\$?
3953                 echo ""
3954                 exit \$failed
3955         else
3956                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3957                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3958                 if $test ! -d "\$dir"; then
3959                         me=\`basename \$0\`
3960                         echo "\$me: can't locate home directory for: \$name" >&2
3961                         exit 1
3962                 fi
3963                 case "\$1" in
3964                 */*)
3965                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3966                         ;;
3967                 *)
3968                         echo \$dir
3969                         ;;
3970                 esac
3971         fi
3972         ;;
3973 *)
3974         echo \$1
3975         ;;
3976 esac
3977 EOSS
3978 chmod +x filexp
3979 $eunicefix filexp
3980
3981 : now set up to get a file name
3982 cat <<EOS >getfile
3983 $startsh
3984 EOS
3985 cat <<'EOSC' >>getfile
3986 tilde=''
3987 fullpath=''
3988 already=''
3989 skip=''
3990 none_ok=''
3991 exp_file=''
3992 nopath_ok=''
3993 orig_rp="$rp"
3994 orig_dflt="$dflt"
3995 case "$gfpth" in
3996 '') gfpth='.' ;;
3997 esac
3998
3999 case "$fn" in
4000 *\(*)
4001         : getfile will accept an answer from the comma-separated list
4002         : enclosed in parentheses even if it does not meet other criteria.
4003         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
4004         fn=`echo $fn | sed 's/(.*)//'`
4005         ;;
4006 esac
4007
4008 case "$fn" in
4009 *:*)
4010         loc_file=`expr $fn : '.*:\(.*\)'`
4011         fn=`expr $fn : '\(.*\):.*'`
4012         ;;
4013 esac
4014
4015 case "$fn" in
4016 *~*) tilde=true;;
4017 esac
4018 case "$fn" in
4019 */*) fullpath=true;;
4020 esac
4021 case "$fn" in
4022 *+*) skip=true;;
4023 esac
4024 case "$fn" in
4025 *n*) none_ok=true;;
4026 esac
4027 case "$fn" in
4028 *e*) exp_file=true;;
4029 esac
4030 case "$fn" in
4031 *p*) nopath_ok=true;;
4032 esac
4033
4034 case "$fn" in
4035 *f*) type='File';;
4036 *d*) type='Directory';;
4037 *l*) type='Locate';;
4038 esac
4039
4040 what="$type"
4041 case "$what" in
4042 Locate) what='File';;
4043 esac
4044
4045 case "$exp_file" in
4046 '')
4047         case "$d_portable" in
4048         "$define") ;;
4049         *) exp_file=true;;
4050         esac
4051         ;;
4052 esac
4053
4054 cd ..
4055 while test "$type"; do
4056         redo=''
4057         rp="$orig_rp"
4058         dflt="$orig_dflt"
4059         case "$tilde" in
4060         true) rp="$rp (~name ok)";;
4061         esac
4062         . UU/myread
4063         if test -f UU/getfile.ok && \
4064                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4065         then
4066                 value="$ans"
4067                 ansexp="$ans"
4068                 break
4069         fi
4070         case "$ans" in
4071         none)
4072                 value=''
4073                 ansexp=''
4074                 case "$none_ok" in
4075                 true) type='';;
4076                 esac
4077                 ;;
4078         *)
4079                 case "$tilde" in
4080                 '') value="$ans"
4081                         ansexp="$ans";;
4082                 *)
4083                         value=`UU/filexp $ans`
4084                         case $? in
4085                         0)
4086                                 if test "$ans" != "$value"; then
4087                                         echo "(That expands to $value on this system.)"
4088                                 fi
4089                                 ;;
4090                         *) value="$ans";;
4091                         esac
4092                         ansexp="$value"
4093                         case "$exp_file" in
4094                         '') value="$ans";;
4095                         esac
4096                         ;;
4097                 esac
4098                 case "$fullpath" in
4099                 true)
4100                         case "$ansexp" in
4101                         /*) value="$ansexp" ;;
4102                         [a-zA-Z]:/*) value="$ansexp" ;;
4103                         *)
4104                                 redo=true
4105                                 case "$already" in
4106                                 true)
4107                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4108                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4109                                         ;;
4110                                 *)
4111                                 echo "Please give a full path name, starting with slash." >&4
4112                                         case "$tilde" in
4113                                         true)
4114                                 echo "Note that using ~name is ok provided it expands well." >&4
4115                                                 already=true
4116                                                 ;;
4117                                         esac
4118                                 esac
4119                                 ;;
4120                         esac
4121                         ;;
4122                 esac
4123                 case "$redo" in
4124                 '')
4125                         case "$type" in
4126                         File)
4127                                 for fp in $gfpth; do
4128                                         if test "X$fp" = X.; then
4129                                             pf="$ansexp"
4130                                         else    
4131                                             pf="$fp/$ansexp"
4132                                         fi
4133                                         if test -f "$pf"; then
4134                                                 type=''
4135                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4136                                         then
4137                                                 echo "($value is not a plain file, but that's ok.)"
4138                                                 type=''
4139                                         fi
4140                                         if test X"$type" = X; then
4141                                             value="$pf"
4142                                             break
4143                                         fi
4144                                 done
4145                                 ;;
4146                         Directory)
4147                                 for fp in $gfpth; do
4148                                         if test "X$fp" = X.; then
4149                                             dir="$ans"
4150                                             direxp="$ansexp"
4151                                         else    
4152                                             dir="$fp/$ansexp"
4153                                             direxp="$fp/$ansexp"
4154                                         fi
4155                                         if test -d "$direxp"; then
4156                                                 type=''
4157                                                 value="$dir"
4158                                                 break
4159                                         fi
4160                                 done
4161                                 ;;
4162                         Locate)
4163                                 if test -d "$ansexp"; then
4164                                         echo "(Looking for $loc_file in directory $value.)"
4165                                         value="$value/$loc_file"
4166                                         ansexp="$ansexp/$loc_file"
4167                                 fi
4168                                 if test -f "$ansexp"; then
4169                                         type=''
4170                                 fi
4171                                 case "$nopath_ok" in
4172                                 true)   case "$value" in
4173                                         */*) ;;
4174                                         *)      echo "Assuming $value will be in people's path."
4175                                                 type=''
4176                                                 ;;
4177                                         esac
4178                                         ;;
4179                                 esac
4180                                 ;;
4181                         esac
4182
4183                         case "$skip" in
4184                         true) type='';
4185                         esac
4186
4187                         case "$type" in
4188                         '') ;;
4189                         *)
4190                                 if test "$fastread" = yes; then
4191                                         dflt=y
4192                                 else
4193                                         dflt=n
4194                                 fi
4195                                 rp="$what $value doesn't exist.  Use that name anyway?"
4196                                 . UU/myread
4197                                 dflt=''
4198                                 case "$ans" in
4199                                 y*) type='';;
4200                                 *) echo " ";;
4201                                 esac
4202                                 ;;
4203                         esac
4204                         ;;
4205                 esac
4206                 ;;
4207         esac
4208 done
4209 cd UU
4210 ans="$value"
4211 rp="$orig_rp"
4212 dflt="$orig_dflt"
4213 rm -f getfile.ok
4214 test "X$gfpthkeep" != Xy && gfpth=""
4215 EOSC
4216
4217 : What should the include directory be ?
4218 echo " "
4219 $echo $n "Hmm...  $c"
4220 dflt='/usr/include'
4221 incpath=''
4222 mips_type=''
4223 if $test -f /bin/mips && /bin/mips; then
4224         echo "Looks like a MIPS system..."
4225         $cat >usr.c <<'EOCP'
4226 #ifdef SYSTYPE_BSD43
4227 /bsd43
4228 #endif
4229 EOCP
4230         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4231                 dflt='/bsd43/usr/include'
4232                 incpath='/bsd43'
4233                 mips_type='BSD 4.3'
4234         else
4235                 mips_type='System V'
4236         fi
4237         $rm -f usr.c usr.out
4238         echo "and you're compiling with the $mips_type compiler and libraries."
4239         xxx_prompt=y
4240         echo "exit 0" >mips
4241 else
4242         echo "Doesn't look like a MIPS system."
4243         xxx_prompt=n
4244         echo "exit 1" >mips
4245 fi
4246 chmod +x mips
4247 $eunicefix mips
4248 case "$usrinc" in
4249 '') ;;
4250 *) dflt="$usrinc";;
4251 esac
4252 case "$xxx_prompt" in
4253 y)      fn=d/
4254         echo " "
4255         rp='Where are the include files you want to use?'
4256         . ./getfile
4257         usrinc="$ans"
4258         ;;
4259 *)      usrinc="$dflt"
4260         ;;
4261 esac
4262
4263 : see how we invoke the C preprocessor
4264 echo " "
4265 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4266 cat <<'EOT' >testcpp.c
4267 #define ABC abc
4268 #define XYZ xyz
4269 ABC.XYZ
4270 EOT
4271 cd ..
4272 if test ! -f cppstdin; then
4273         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4274                 # AIX cc -E doesn't show the absolute headerfile
4275                 # locations but we'll cheat by using the -M flag.
4276                 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
4277         else
4278                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4279         fi
4280 else
4281         echo "Keeping your $hint cppstdin wrapper."
4282 fi
4283 chmod 755 cppstdin
4284 wrapper=`pwd`/cppstdin
4285 ok='false'
4286 cd UU
4287
4288 if $test "X$cppstdin" != "X" && \
4289         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4290         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4291 then
4292         echo "You used to use $cppstdin $cppminus so we'll use that again."
4293         case "$cpprun" in
4294         '') echo "But let's see if we can live without a wrapper..." ;;
4295         *)
4296                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4297                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4298                 then
4299                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4300                         ok='true'
4301                 else
4302                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4303                 fi
4304                 ;;
4305         esac
4306 else
4307         case "$cppstdin" in
4308         '') ;;
4309         *)
4310                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4311                 ;;
4312         esac
4313 fi
4314
4315 if $ok; then
4316         : nothing
4317 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4318         $cc -E <testcpp.c >testcpp.out 2>&1; \
4319         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4320         echo "Yup, it does."
4321         x_cpp="$cc -E"
4322         x_minus='';
4323 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4324         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4325         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4326         echo "Yup, it does."
4327         x_cpp="$cc -E"
4328         x_minus='-';
4329 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4330         $cc -P <testcpp.c >testcpp.out 2>&1; \
4331         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4332         echo "Yipee, that works!"
4333         x_cpp="$cc -P"
4334         x_minus='';
4335 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4336         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4337         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4338         echo "At long last!"
4339         x_cpp="$cc -P"
4340         x_minus='-';
4341 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4342         $cpp <testcpp.c >testcpp.out 2>&1; \
4343         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4344         echo "It works!"
4345         x_cpp="$cpp"
4346         x_minus='';
4347 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4348         $cpp - <testcpp.c >testcpp.out 2>&1; \
4349         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4350         echo "Hooray, it works!  I was beginning to wonder."
4351         x_cpp="$cpp"
4352         x_minus='-';
4353 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4354         $wrapper <testcpp.c >testcpp.out 2>&1; \
4355         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4356         x_cpp="$wrapper"
4357         x_minus=''
4358         echo "Eureka!"
4359 else
4360         dflt=''
4361         rp="No dice.  I can't find a C preprocessor.  Name one:"
4362         . ./myread
4363         x_cpp="$ans"
4364         x_minus=''
4365         $x_cpp <testcpp.c >testcpp.out 2>&1
4366         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4367                 echo "OK, that will do." >&4
4368         else
4369 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4370                 exit 1
4371         fi
4372 fi
4373
4374 case "$ok" in
4375 false)
4376         cppstdin="$x_cpp"
4377         cppminus="$x_minus"
4378         cpprun="$x_cpp"
4379         cpplast="$x_minus"
4380         set X $x_cpp
4381         shift
4382         case "$1" in
4383         "$cpp")
4384                 echo "Perhaps can we force $cc -E using a wrapper..."
4385                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4386                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4387                 then
4388                         echo "Yup, we can."
4389                         cppstdin="$wrapper"
4390                         cppminus='';
4391                 else
4392                         echo "Nope, we'll have to live without it..."
4393                 fi
4394                 ;;
4395         esac
4396         case "$cpprun" in
4397         "$wrapper")
4398                 cpprun=''
4399                 cpplast=''
4400                 ;;
4401         esac
4402         ;;
4403 esac
4404
4405 case "$cppstdin" in
4406 "$wrapper"|'cppstdin') ;;
4407 *) $rm -f $wrapper;;
4408 esac
4409 $rm -f testcpp.c testcpp.out
4410
4411 : Set private lib path
4412 case "$plibpth" in
4413 '') if ./mips; then
4414                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4415         fi;;
4416 esac
4417 case "$libpth" in
4418 ' ') dlist='';;
4419 '') dlist="$loclibpth $plibpth $glibpth";;
4420 *) dlist="$libpth";;
4421 esac
4422
4423 : Now check and see which directories actually exist, avoiding duplicates
4424 libpth=''
4425 for xxx in $dlist
4426 do
4427     if $test -d $xxx; then
4428                 case " $libpth " in
4429                 *" $xxx "*) ;;
4430                 *) libpth="$libpth $xxx";;
4431                 esac
4432     fi
4433 done
4434 $cat <<'EOM'
4435
4436 Some systems have incompatible or broken versions of libraries.  Among
4437 the directories listed in the question below, please remove any you
4438 know not to be holding relevant libraries, and add any that are needed.
4439 Say "none" for none.
4440
4441 EOM
4442 case "$libpth" in
4443 '') dflt='none';;
4444 *)
4445         set X $libpth
4446         shift
4447         dflt=${1+"$@"}
4448         ;;
4449 esac
4450 rp="Directories to use for library searches?"
4451 . ./myread
4452 case "$ans" in
4453 none) libpth=' ';;
4454 *) libpth="$ans";;
4455 esac
4456
4457 : compute shared library extension
4458 case "$so" in
4459 '')
4460         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4461                 dflt='sl'
4462         else
4463                 dflt='so'
4464         fi
4465         ;;
4466 *) dflt="$so";;
4467 esac
4468 $cat <<EOM
4469
4470 On some systems, shared libraries may be available.  Answer 'none' if
4471 you want to suppress searching of shared libraries for the remainder
4472 of this configuration.
4473
4474 EOM
4475 rp='What is the file extension used for shared libraries?'
4476 . ./myread
4477 so="$ans"
4478
4479 : Define several unixisms.
4480 : Hints files or command line option can be used to override them.
4481 : The convoluted testing is in case hints files set either the old
4482 : or the new name.
4483 case "$_exe" in
4484 '')     case "$exe_ext" in
4485         '')     ;;
4486         *)      _exe="$exe_ext" ;;
4487         esac
4488         ;;
4489 esac
4490 case "$_a" in
4491 '')     case "$lib_ext" in
4492     '') _a='.a';;
4493         *)      _a="$lib_ext" ;;
4494         esac
4495         ;;
4496 esac
4497 case "$_o" in
4498 '') case "$obj_ext" in
4499         '')     _o='.o';;
4500         *)      _o="$obj_ext";;
4501         esac
4502         ;;
4503 esac
4504 case "$p_" in
4505 '') case "$path_sep" in
4506         '')     p_=':';;
4507         *)      p_="$path_sep";;
4508         esac
4509         ;;
4510 esac
4511 exe_ext=$_exe
4512 lib_ext=$_a
4513 obj_ext=$_o
4514 path_sep=$p_
4515
4516 : Which makefile gets called first.  This is used by make depend.
4517 case "$firstmakefile" in
4518 '') firstmakefile='makefile';;
4519 esac
4520
4521 case "$ccflags" in
4522 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4523 esac
4524
4525 case "$uselongdouble" in
4526 $define|true|[yY]*)     dflt='y';;
4527 *) dflt='n';;
4528 esac
4529 cat <<EOM
4530
4531 Perl can be built to take advantage of long doubles which
4532 (if available) may give more accuracy and range for floating point numbers.
4533
4534 If this doesn't make any sense to you, just accept the default '$dflt'.
4535 EOM
4536 rp='Try to use long doubles if available?'
4537 . ./myread
4538 case "$ans" in
4539 y|Y)    val="$define"   ;;
4540 *)      val="$undef"    ;;
4541 esac
4542 set uselongdouble
4543 eval $setvar
4544
4545 case "$uselongdouble" in
4546 true|[yY]*) uselongdouble="$define" ;;
4547 esac
4548
4549 : Look for a hint-file generated 'call-back-unit'.  If the
4550 : user has specified that long doubles should be used,
4551 : we may need to set or change some other defaults.
4552 if $test -f uselongdouble.cbu; then
4553     echo "Your platform has some specific hints regarding long doubles, using them..."
4554     . ./uselongdouble.cbu
4555 else
4556     case "$uselongdouble" in
4557         $define)
4558                 $cat <<EOM
4559 (Your platform does not have any specific hints for long doubles.)
4560 EOM
4561         ;;
4562     esac
4563 fi
4564
4565 : Looking for optional libraries
4566 echo " "
4567 echo "Checking for optional libraries..." >&4
4568 case "$libs" in
4569 ' '|'') dflt='';;
4570 *) dflt="$libs";;
4571 esac
4572 case "$libswanted" in
4573 '') libswanted='c_s';;
4574 esac
4575 case "$usesocks" in
4576 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4577 esac
4578 libsfound=''
4579 libsfiles=''
4580 libsdirs=''
4581 libspath=''
4582 for thisdir in $libpth $xlibpth; do
4583   test -d $thisdir && libspath="$libspath $thisdir"
4584 done
4585 for thislib in $libswanted; do
4586         for thisdir in $libspath; do
4587             xxx=''
4588             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4589                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4590                 $test -f "$xxx" && eval $libscheck
4591                 $test -f "$xxx" && libstyle=shared
4592             fi
4593             if test ! -f "$xxx"; then
4594                 xxx=$thisdir/lib$thislib.$so
4595                 $test -f "$xxx" && eval $libscheck
4596                 $test -f "$xxx" && libstyle=shared
4597             fi  
4598             if test ! -f "$xxx"; then
4599                 xxx=$thisdir/lib$thislib$_a
4600                 $test -f "$xxx" && eval $libscheck
4601                 $test -f "$xxx" && libstyle=static
4602             fi
4603             if test ! -f "$xxx"; then
4604                 xxx=$thisdir/$thislib$_a
4605                 $test -f "$xxx" && eval $libscheck
4606                 $test -f "$xxx" && libstyle=static
4607             fi
4608             if test ! -f "$xxx"; then
4609                 xxx=$thisdir/lib${thislib}_s$_a
4610                 $test -f "$xxx" && eval $libscheck
4611                 $test -f "$xxx" && libstyle=static
4612                 $test -f "$xxx" && thislib=${thislib}_s
4613             fi
4614             if test ! -f "$xxx"; then
4615                 xxx=$thisdir/Slib$thislib$_a
4616                 $test -f "$xxx" && eval $libscheck
4617                 $test -f "$xxx" && libstyle=static
4618             fi
4619             if $test -f "$xxx"; then
4620                 case "$libstyle" in
4621                 shared) echo "Found -l$thislib (shared)." ;;
4622                 static) echo "Found -l$thislib." ;;
4623                 *)      echo "Found -l$thislib ($libstyle)." ;;
4624                 esac
4625                 case " $dflt " in
4626                 *"-l$thislib "*);;
4627                 *) dflt="$dflt -l$thislib"
4628                    libsfound="$libsfound $xxx"
4629                    yyy=`basename $xxx`
4630                    libsfiles="$libsfiles $yyy"
4631                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4632                    case " $libsdirs " in
4633                    *" $yyy "*) ;;
4634                    *) libsdirs="$libsdirs $yyy" ;;
4635                    esac
4636                    ;;
4637                 esac
4638                 break
4639             fi  
4640         done
4641         if $test ! -f "$xxx"; then
4642             echo "No -l$thislib."
4643         fi
4644 done
4645 set X $dflt
4646 shift
4647 dflt="$*"
4648 case "$libs" in
4649 '') dflt="$dflt";;
4650 *) dflt="$libs";;
4651 esac
4652 case "$dflt" in
4653 ' '|'') dflt='none';;
4654 esac
4655
4656 $cat <<EOM
4657
4658 In order to compile $package on your machine, a number of libraries
4659 are usually needed.  Include any other special libraries here as well.
4660 Say "none" for none.  The default list is almost always right.
4661 EOM
4662
4663 echo " "
4664 rp="What libraries to use?"
4665 . ./myread
4666 case "$ans" in
4667 none) libs=' ';;
4668 *) libs="$ans";;
4669 esac
4670
4671 : determine optimization, if desired, or use for debug flag also
4672 case "$optimize" in
4673 ' '|$undef) dflt='none';;
4674 '') dflt='-O';;
4675 *) dflt="$optimize";;
4676 esac
4677 $cat <<EOH
4678
4679 By default, $package compiles with the -O flag to use the optimizer.
4680 Alternately, you might want to use the symbolic debugger, which uses
4681 the -g flag (on traditional Unix systems).  Either flag can be
4682 specified here.  To use neither flag, specify the word "none".
4683
4684 EOH
4685 rp="What optimizer/debugger flag should be used?"
4686 . ./myread
4687 optimize="$ans"
4688 case "$optimize" in
4689 'none') optimize=" ";;
4690 esac
4691
4692 dflt=''
4693 : We will not override a previous value, but we might want to
4694 : augment a hint file
4695 case "$hint" in
4696 default|recommended)
4697         case "$gccversion" in
4698         1*) dflt='-fpcc-struct-return' ;;
4699         esac
4700         case "$optimize" in
4701         *-g*) dflt="$dflt -DDEBUGGING";;
4702         esac
4703         case "$gccversion" in
4704         2*) if test -d /etc/conf/kconfig.d &&
4705                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4706                 then
4707                         dflt="$dflt -posix"
4708                 fi
4709                 ;;
4710         esac
4711         case "$gccversion" in
4712         1*) ;;
4713         2.[0-8]*) ;;
4714         ?*)     echo " "
4715                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4716                 echo 'int main(void) { return 0; }' > gcctest.c
4717                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4718                         echo "Yes, it does." 2>&1
4719                         case "$ccflags" in
4720                         *strict-aliasing*) 
4721                                 echo "Leaving current flags $ccflags alone." 2>&1
4722                                 ;;
4723                         *) dflt="$dflt -fno-strict-aliasing" ;;
4724                         esac
4725                 else
4726                         echo "Nope, it doesn't, but that's ok." 2>&1
4727                 fi
4728                 ;;
4729         esac
4730         ;;
4731 esac
4732
4733 case "$mips_type" in
4734 *BSD*|'') inclwanted="$locincpth $usrinc";;
4735 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4736 esac
4737 for thisincl in $inclwanted; do
4738         if $test -d $thisincl; then
4739                 if $test x$thisincl != x$usrinc; then
4740                         case "$dflt" in
4741                         *" -I$thisincl "*);;
4742                         *) dflt="$dflt -I$thisincl ";;
4743                         esac
4744                 fi
4745         fi
4746 done
4747
4748 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4749         xxx=true;
4750 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4751         xxx=true;
4752 else
4753         xxx=false;
4754 fi;
4755 if $xxx; then
4756         case "$dflt" in
4757         *$2*);;
4758         *) dflt="$dflt -D$2";;
4759         esac;
4760 fi'
4761
4762 set signal.h LANGUAGE_C; eval $inctest
4763
4764 case "$usesocks" in
4765 $define)
4766         ccflags="$ccflags -DSOCKS"
4767         ;;
4768 esac
4769
4770 case "$hint" in
4771 default|recommended) dflt="$ccflags $dflt" ;;
4772 *) dflt="$ccflags";;
4773 esac
4774
4775 case "$dflt" in
4776 ''|' ') dflt=none;;
4777 esac
4778
4779 $cat <<EOH
4780
4781 Your C compiler may want other flags.  For this question you should include
4782 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4783 but you should NOT include libraries or ld flags like -lwhatever.  If you
4784 want $package to honor its debug switch, you should include -DDEBUGGING here.
4785 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4786
4787 To use no flags, specify the word "none".
4788
4789 EOH
4790 set X $dflt
4791 shift
4792 dflt=${1+"$@"}
4793 rp="Any additional cc flags?"
4794 . ./myread
4795 case "$ans" in
4796 none) ccflags='';;
4797 *) ccflags="$ans";;
4798 esac
4799
4800 : the following weeds options from ccflags that are of no interest to cpp
4801 case "$cppflags" in
4802 '') cppflags="$ccflags" ;;
4803 *)  cppflags="$cppflags $ccflags" ;;
4804 esac
4805 case "$gccversion" in
4806 1*) cppflags="$cppflags -D__GNUC__"
4807 esac
4808 case "$mips_type" in
4809 '');;
4810 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4811 esac
4812 case "$cppflags" in
4813 '');;
4814 *)
4815         echo " "
4816         echo "Let me guess what the preprocessor flags are..." >&4
4817         set X $cppflags
4818         shift
4819         cppflags=''
4820         $cat >cpp.c <<'EOM'
4821 #define BLURFL foo
4822
4823 BLURFL xx LFRULB
4824 EOM
4825         previous=''
4826         for flag in $*
4827         do
4828                 case "$flag" in
4829                 -*) ftry="$flag";;
4830                 *) ftry="$previous $flag";;
4831                 esac
4832                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4833                         >cpp1.out 2>/dev/null && \
4834                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4835                         >cpp2.out 2>/dev/null && \
4836                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4837                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4838                 then
4839                         cppflags="$cppflags $ftry"
4840                         previous=''
4841                 else
4842                         previous="$flag"
4843                 fi
4844         done
4845         set X $cppflags
4846         shift
4847         cppflags=${1+"$@"}
4848         case "$cppflags" in
4849         *-*)  echo "They appear to be: $cppflags";;
4850         esac
4851         $rm -f cpp.c cpp?.out
4852         ;;
4853 esac
4854
4855 : flags used in final linking phase
4856 case "$ldflags" in
4857 '') if ./venix; then
4858                 dflt='-i -z'
4859         else
4860                 dflt=''
4861         fi
4862         case "$ccflags" in
4863         *-posix*) dflt="$dflt -posix" ;;
4864         esac
4865         ;;
4866 *) dflt="$ldflags";;
4867 esac
4868
4869 : Try to guess additional flags to pick up local libraries.
4870 for thislibdir in $libpth; do
4871         case " $loclibpth " in
4872         *" $thislibdir "*)
4873                 case "$dflt " in 
4874                 *"-L$thislibdir "*) ;;
4875                 *)  dflt="$dflt -L$thislibdir" ;;
4876                 esac
4877                 ;;
4878         esac
4879 done
4880
4881 case "$dflt" in
4882 '') dflt='none' ;;
4883 esac
4884
4885 $cat <<EOH
4886
4887 Your C linker may need flags.  For this question you should
4888 include -L/whatever and any other flags used by the C linker, but you
4889 should NOT include libraries like -lwhatever.
4890
4891 Make sure you include the appropriate -L/path flags if your C linker
4892 does not normally search all of the directories you specified above,
4893 namely
4894         $libpth
4895 To use no flags, specify the word "none".
4896
4897 EOH
4898
4899 rp="Any additional ld flags (NOT including libraries)?"
4900 . ./myread
4901 case "$ans" in
4902 none) ldflags='';;
4903 *) ldflags="$ans";;
4904 esac
4905 rmlist="$rmlist pdp11"
4906
4907 : coherency check
4908 echo " "
4909 echo "Checking your choice of C compiler and flags for coherency..." >&4
4910 $cat > try.c <<'EOF'
4911 #include <stdio.h>
4912 int main() { printf("Ok\n"); return(0); }
4913 EOF
4914 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4915 shift
4916 $cat >try.msg <<'EOM'
4917 I've tried to compile and run the following simple program:
4918
4919 EOM
4920 $cat try.c >> try.msg
4921
4922 $cat >> try.msg <<EOM
4923
4924 I used the command:
4925
4926         $*
4927         $run ./try
4928
4929 and I got the following output:
4930
4931 EOM
4932 dflt=y
4933 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4934         if $sh -c "$run ./try" >>try.msg 2>&1; then
4935                 xxx=`$run ./try`
4936                 case "$xxx" in
4937                 "Ok") dflt=n ;;
4938                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4939                         case " $libs " in
4940                         *" -lsfio "*)
4941                                 cat >> try.msg <<'EOQS'
4942 If $libs contains -lsfio, and sfio is mis-configured, then it
4943 sometimes (apparently) runs and exits with a 0 status, but with no
4944 output!  It may have to do with sfio's use of _exit vs. exit.
4945
4946 EOQS
4947                                 rp="You have a big problem.  Shall I abort Configure"
4948                                 dflt=y
4949                                 ;;
4950                         esac
4951                         ;;
4952                 esac
4953         else
4954                 echo "The program compiled OK, but exited with status $?." >>try.msg
4955                 rp="You have a problem.  Shall I abort Configure"
4956                 dflt=y
4957         fi
4958 else
4959         echo "I can't compile the test program." >>try.msg
4960         rp="You have a BIG problem.  Shall I abort Configure"
4961         dflt=y
4962 fi
4963 case "$dflt" in
4964 y)
4965         $cat try.msg >&4
4966         case "$knowitall" in
4967         '')
4968                 echo "(The supplied flags or libraries might be incorrect.)"
4969                 ;;
4970         *) dflt=n;;
4971         esac
4972         echo " "
4973         . ./myread
4974         case "$ans" in
4975         n*|N*) ;;
4976         *)      echo "Ok.  Stopping Configure." >&4
4977                 exit 1
4978                 ;;
4979         esac
4980         ;;
4981 n) echo "OK, that should do.";;
4982 esac
4983 $rm -f try try.* core
4984
4985 : define a shorthand compile call
4986 compile='
4987 mc_file=$1;
4988 shift;
4989 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4990 : define a shorthand compile call for compilations that should be ok.
4991 compile_ok='
4992 mc_file=$1;
4993 shift;
4994 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4995
4996 : determine filename position in cpp output
4997 echo " "
4998 echo "Computing filename position in cpp output for #include directives..." >&4
4999 case "$osname" in
5000 vos) testaccess=-e ;;
5001 *)   testaccess=-r ;;
5002 esac
5003 echo '#include <stdio.h>' > foo.c
5004 $cat >fieldn <<EOF
5005 $startsh
5006 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5007 $grep '^[       ]*#.*stdio\.h' | \
5008 while read cline; do
5009         pos=1
5010         set \$cline
5011         while $test \$# -gt 0; do
5012                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5013                         echo "\$pos"
5014                         exit 0
5015                 fi
5016                 shift
5017                 pos=\`expr \$pos + 1\`
5018         done
5019 done
5020 EOF
5021 chmod +x fieldn
5022 fieldn=`./fieldn`
5023 $rm -f foo.c fieldn
5024 case $fieldn in
5025 '') pos='???';;
5026 1) pos=first;;
5027 2) pos=second;;
5028 3) pos=third;;
5029 *) pos="${fieldn}th";;
5030 esac
5031 echo "Your cpp writes the filename in the $pos field of the line."
5032
5033 case "$osname" in
5034 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5035 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5036 *)   cppfilter='' ;;
5037 esac
5038 : locate header file
5039 $cat >findhdr <<EOF
5040 $startsh
5041 wanted=\$1
5042 name=''
5043 for usrincdir in $usrinc
5044 do
5045         if test -f \$usrincdir/\$wanted; then
5046                 echo "\$usrincdir/\$wanted"
5047                 exit 0
5048         fi
5049 done
5050 awkprg='{ print \$$fieldn }'
5051 echo "#include <\$wanted>" > foo\$\$.c
5052 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5053 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5054 while read cline; do
5055         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5056         case "\$name" in
5057         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5058         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5059         *) exit 2;;
5060         esac;
5061 done;
5062 #
5063 # status = 0: grep returned 0 lines, case statement not executed
5064 # status = 1: headerfile found
5065 # status = 2: while loop executed, no headerfile found
5066 #
5067 status=\$?
5068 $rm -f foo\$\$.c;
5069 if test \$status -eq 1; then
5070         exit 0;
5071 fi
5072 exit 1
5073 EOF
5074 chmod +x findhdr
5075
5076 : define an alternate in-header-list? function
5077 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5078 cont=true; xxf="echo \"<\$1> found.\" >&4";
5079 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5080 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5081 esac;
5082 case $# in 4) instead=instead;; *) instead="at last";; esac;
5083 while $test "$cont"; do
5084         xxx=`./findhdr $1`
5085         var=$2; eval "was=\$$2";
5086         if $test "$xxx" && $test -r "$xxx";
5087         then eval $xxf;
5088         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5089                 cont="";
5090         else eval $xxnf;
5091         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5092         set $yyy; shift; shift; yyy=$@;
5093         case $# in 0) cont="";;
5094         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5095                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5096         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5097                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5098         esac;
5099 done;
5100 while $test "$yyy";
5101 do set $yyy; var=$2; eval "was=\$$2";
5102         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5103         set $yyy; shift; shift; yyy=$@;
5104 done'
5105
5106 : see if stdlib is available
5107 set stdlib.h i_stdlib
5108 eval $inhdr
5109
5110 : check for lengths of integral types
5111 echo " "
5112 case "$intsize" in
5113 '')
5114         echo "Checking to see how big your integers are..." >&4
5115         $cat >try.c <<EOCP
5116 #include <stdio.h>
5117 #$i_stdlib I_STDLIB
5118 #ifdef I_STDLIB
5119 #include <stdlib.h>
5120 #endif
5121 int main()
5122 {
5123         printf("intsize=%d;\n", (int)sizeof(int));
5124         printf("longsize=%d;\n", (int)sizeof(long));
5125         printf("shortsize=%d;\n", (int)sizeof(short));
5126         exit(0);
5127 }
5128 EOCP
5129         set try
5130         if eval $compile_ok && $run ./try > /dev/null; then
5131                 eval `$run ./try`
5132                 echo "Your integers are $intsize bytes long."
5133                 echo "Your long integers are $longsize bytes long."
5134                 echo "Your short integers are $shortsize bytes long."
5135         else
5136                 $cat >&4 <<EOM
5137 !
5138 Help! I can't compile and run the intsize test program: please enlighten me!
5139 (This is probably a misconfiguration in your system or libraries, and
5140 you really ought to fix it.  Still, I'll try anyway.)
5141 !
5142 EOM
5143                 dflt=4
5144                 rp="What is the size of an integer (in bytes)?"
5145                 . ./myread
5146                 intsize="$ans"
5147                 dflt=$intsize
5148                 rp="What is the size of a long integer (in bytes)?"
5149                 . ./myread
5150                 longsize="$ans"
5151                 dflt=2
5152                 rp="What is the size of a short integer (in bytes)?"
5153                 . ./myread
5154                 shortsize="$ans"
5155         fi
5156         ;;
5157 esac
5158 $rm -f try try.*
5159
5160 : check for long long
5161 echo " "
5162 echo "Checking to see if you have long long..." >&4
5163 echo 'int main() { long long x = 7; return 0; }' > try.c
5164 set try
5165 if eval $compile; then
5166         val="$define"
5167         echo "You have long long."
5168 else
5169         val="$undef"
5170         echo "You do not have long long."
5171 fi
5172 $rm try.*
5173 set d_longlong
5174 eval $setvar
5175
5176 : check for length of long long
5177 case "${d_longlong}${longlongsize}" in
5178 $define)
5179         echo " "
5180         echo "Checking to see how big your long longs are..." >&4
5181         $cat >try.c <<'EOCP'
5182 #include <stdio.h>
5183 int main()
5184 {
5185     printf("%d\n", (int)sizeof(long long));
5186     return(0);
5187 }
5188 EOCP
5189         set try
5190         if eval $compile_ok; then
5191                 longlongsize=`$run ./try`
5192                 echo "Your long longs are $longlongsize bytes long."
5193         else
5194                 dflt='8'
5195                 echo " "
5196                 echo "(I can't seem to compile the test program.  Guessing...)"
5197                 rp="What is the size of a long long (in bytes)?"
5198                 . ./myread
5199                 longlongsize="$ans"
5200         fi
5201         if $test "X$longsize" = "X$longlongsize"; then
5202                 echo "(That isn't any different from an ordinary long.)"
5203         fi      
5204         ;;
5205 esac
5206 $rm -f try.* try
5207
5208 : see if inttypes.h is available
5209 : we want a real compile instead of Inhdr because some systems
5210 : have an inttypes.h which includes non-existent headers
5211 echo " "
5212 $cat >try.c <<EOCP
5213 #include <inttypes.h>
5214 int main() {
5215         static int32_t foo32 = 0x12345678;
5216 }
5217 EOCP
5218 set try
5219 if eval $compile; then
5220         echo "<inttypes.h> found." >&4
5221         val="$define"
5222 else
5223         echo "<inttypes.h> NOT found." >&4
5224         val="$undef"
5225 fi
5226 $rm -f try.c try
5227 set i_inttypes
5228 eval $setvar
5229
5230 : check for int64_t
5231 echo " "
5232 echo "Checking to see if you have int64_t..." >&4
5233 $cat >try.c <<EOCP
5234 #include <sys/types.h>
5235 #$i_inttypes I_INTTYPES
5236 #ifdef I_INTTYPES
5237 #include <inttypes.h>
5238 #endif
5239 int main() { int64_t x = 7; }
5240 EOCP
5241 set try
5242 if eval $compile; then
5243         val="$define"
5244         echo "You have int64_t."
5245 else
5246         val="$undef"
5247         echo "You do not have int64_t."
5248 fi
5249 $rm -f try try.*
5250 set d_int64_t
5251 eval $setvar
5252
5253
5254 echo " "
5255 echo "Checking which 64-bit integer type we could use..." >&4
5256
5257 case "$intsize" in
5258 8) val=int
5259    set quadtype
5260    eval $setvar
5261    val='"unsigned int"'
5262    set uquadtype
5263    eval $setvar
5264    quadkind=1
5265    ;;
5266 *) case "$longsize" in
5267    8) val=long
5268       set quadtype
5269       eval $setvar
5270       val='"unsigned long"'
5271       set uquadtype
5272       eval $setvar
5273       quadkind=2
5274       ;;
5275    *) case "$d_longlong:$longlongsize" in
5276       define:8)
5277         val='"long long"'
5278         set quadtype
5279         eval $setvar
5280         val='"unsigned long long"'
5281         set uquadtype
5282         eval $setvar
5283         quadkind=3
5284         ;;
5285       *) case "$d_int64_t" in
5286          define)
5287            val=int64_t
5288            set quadtype
5289            eval $setvar
5290            val=uint64_t
5291            set uquadtype
5292            eval $setvar
5293            quadkind=4
5294            ;;
5295          esac
5296          ;;
5297       esac
5298       ;;
5299    esac
5300    ;;
5301 esac
5302
5303 case "$quadtype" in
5304 '')     echo "Alas, no 64-bit integer types in sight." >&4
5305         d_quad="$undef"
5306         ;;
5307 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5308         d_quad="$define"
5309         ;;
5310 esac
5311
5312
5313 case "$uselonglong" in
5314 "$define"|true|[yY]*)
5315         cat <<EOM >&4
5316
5317 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5318 EOM
5319         use64bitint="$define"
5320         ;;
5321 esac                          
5322 case "$use64bits" in
5323 "$define"|true|[yY]*)
5324         cat <<EOM >&4
5325
5326 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5327 EOM
5328         use64bitint="$define"
5329         ;;
5330 esac                          
5331 case "$use64bitints" in
5332 "$define"|true|[yY]*)
5333         cat <<EOM >&4
5334
5335 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5336 EOM
5337         use64bitint="$define"
5338         ;;
5339 esac                          
5340 case "$use64bitsint" in
5341 "$define"|true|[yY]*)
5342         cat <<EOM >&4
5343
5344 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5345 EOM
5346         use64bitint="$define"
5347         ;;
5348 esac                          
5349 case "$uselonglongs" in
5350 "$define"|true|[yY]*)
5351         cat <<EOM >&4
5352
5353 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5354 EOM
5355         use64bitint="$define"
5356         ;;
5357 esac                          
5358 case "$use64bitsall" in
5359 "$define"|true|[yY]*)
5360         cat <<EOM >&4
5361
5362 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5363 EOM
5364         use64bitall="$define"
5365         ;;
5366 esac                          
5367
5368 case "$ccflags" in
5369 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5370 esac
5371 case "$use64bitall" in
5372 "$define"|true|[yY]*) use64bitint="$define" ;;
5373 esac
5374
5375 case "$longsize" in
5376 8) cat <<EOM
5377
5378 You have natively 64-bit long integers.
5379 EOM
5380    val="$define"
5381    ;;
5382 *) case "$use64bitint" in
5383    "$define"|true|[yY]*) dflt='y';;
5384    *) dflt='n';;
5385    esac
5386    case "$d_quad" in
5387    "$define") ;;
5388    *) dflt='n' ;;
5389    esac
5390    cat <<EOM
5391
5392 Perl can be built to take advantage of 64-bit integer types
5393 on some systems.  To do so, Configure can be run with -Duse64bitint.
5394 Choosing this option will most probably introduce binary incompatibilities.
5395
5396 If this doesn't make any sense to you, just accept the default '$dflt'.
5397 (The default has been chosen based on your configuration.)
5398 EOM
5399    rp='Try to use 64-bit integers, if available?'
5400    . ./myread
5401    case "$ans" in
5402    [yY]*) val="$define" ;;
5403    *)     val="$undef"  ;;
5404    esac
5405    ;;
5406 esac
5407 set use64bitint
5408 eval $setvar
5409
5410 case "$use64bitall" in
5411 "$define"|true|[yY]*) dflt='y' ;;
5412 *) case "$longsize" in
5413    8) dflt='y' ;;
5414    *) dflt='n' ;;
5415    esac
5416    ;;
5417 esac    
5418 cat <<EOM
5419
5420 You may also choose to try maximal 64-bitness.  It means using as much
5421 64-bitness as possible on the platform.  This in turn means even more
5422 binary incompatibilities.  On the other hand, your platform may not
5423 have any more 64-bitness available than what you already have chosen.
5424
5425 If this doesn't make any sense to you, just accept the default '$dflt'.
5426 (The default has been chosen based on your configuration.)
5427 EOM
5428 rp='Try to use maximal 64-bit support, if available?'
5429 . ./myread
5430 case "$ans" in
5431 [yY]*) val="$define" ;;
5432 *)     val="$undef"  ;;
5433 esac
5434 set use64bitall
5435 eval $setvar
5436 case "$use64bitall" in
5437 "$define")
5438         case "$use64bitint" in
5439         "$undef")
5440                 cat <<EOM
5441
5442 Since you have chosen a maximally 64-bit build, I'm also turning on
5443 the use of 64-bit integers.
5444 EOM
5445                 use64bitint="$define" ;;
5446         esac
5447         ;;
5448 esac
5449
5450 : Look for a hint-file generated 'call-back-unit'.  If the
5451 : user has specified that a 64-bit perl is to be built,
5452 : we may need to set or change some other defaults.
5453         if $test -f use64bitint.cbu; then
5454         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5455                 . ./use64bitint.cbu
5456         fi
5457 case "$use64bitint" in
5458 "$define"|true|[yY]*)
5459         case "$longsize" in
5460         4) case "$archname64" in
5461            '') archname64=64int ;;
5462            esac
5463            ;;
5464         esac
5465         ;;
5466 esac
5467
5468 : Look for a hint-file generated 'call-back-unit'.  If the
5469 : user has specified that a maximally 64-bit perl is to be built,
5470 : we may need to set or change some other defaults.
5471         if $test -f use64bitall.cbu; then
5472         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5473                 . ./use64bitall.cbu
5474         fi
5475 case "$use64bitall" in
5476 "$define"|true|[yY]*)
5477         case "$longsize" in
5478         4) case "$archname64" in
5479            ''|64int) archname64=64all ;;
5480            esac
5481            ;;
5482         esac
5483         ;;
5484 esac
5485
5486 case "$d_quad:$use64bitint" in
5487 $undef:$define)
5488         cat >&4 <<EOF
5489
5490 *** You have chosen to use 64-bit integers,
5491 *** but none cannot be found.
5492 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5493 *** Cannot continue, aborting.
5494
5495 EOF
5496         exit 1
5497         ;;
5498 esac
5499
5500 : check for length of double
5501 echo " "
5502 case "$doublesize" in
5503 '')
5504         echo "Checking to see how big your double precision numbers are..." >&4
5505         $cat >try.c <<EOCP
5506 #include <stdio.h>
5507 #$i_stdlib I_STDLIB
5508 #ifdef I_STDLIB
5509 #include <stdlib.h>
5510 #endif
5511 int main()
5512 {
5513     printf("%d\n", (int)sizeof(double));
5514     exit(0);
5515 }
5516 EOCP
5517         set try
5518         if eval $compile_ok; then
5519                 doublesize=`$run ./try`
5520                 echo "Your double is $doublesize bytes long."
5521         else
5522                 dflt='8'
5523                 echo "(I can't seem to compile the test program.  Guessing...)"
5524                 rp="What is the size of a double precision number (in bytes)?"
5525                 . ./myread
5526                 doublesize="$ans"
5527         fi
5528         ;;
5529 esac
5530 $rm -f try.c try
5531
5532 : check for long doubles
5533 echo " "
5534 echo "Checking to see if you have long double..." >&4
5535 echo 'int main() { long double x = 7.0; }' > try.c
5536 set try
5537 if eval $compile; then
5538         val="$define"
5539         echo "You have long double."
5540 else
5541         val="$undef"
5542         echo "You do not have long double."
5543 fi
5544 $rm try.*
5545 set d_longdbl
5546 eval $setvar
5547
5548 : check for length of long double
5549 case "${d_longdbl}${longdblsize}" in
5550 $define)
5551         echo " "
5552         echo "Checking to see how big your long doubles are..." >&4
5553         $cat >try.c <<'EOCP'
5554 #include <stdio.h>
5555 int main()
5556 {
5557         printf("%d\n", sizeof(long double));
5558 }
5559 EOCP
5560         set try
5561         set try
5562         if eval $compile; then
5563                 longdblsize=`$run ./try`
5564                 echo "Your long doubles are $longdblsize bytes long."
5565         else
5566                 dflt='8'
5567                 echo " "
5568                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5569                 rp="What is the size of a long double (in bytes)?"
5570                 . ./myread
5571                 longdblsize="$ans"
5572         fi
5573         if $test "X$doublesize" = "X$longdblsize"; then
5574                 echo "That isn't any different from an ordinary double."
5575                 echo "I'll keep your setting anyway, but you may see some"
5576                 echo "harmless compilation warnings."
5577         fi      
5578         ;;
5579 esac
5580 $rm -f try.* try
5581
5582 : determine the architecture name
5583 echo " "
5584 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5585         tarch=`arch`"-$osname"
5586 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5587         if uname -m > tmparch 2>&1 ; then
5588                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5589                         -e 's/$/'"-$osname/" tmparch`
5590         else
5591                 tarch="$osname"
5592         fi
5593         $rm -f tmparch
5594 else
5595         tarch="$osname"
5596 fi
5597 case "$myarchname" in
5598 ''|"$tarch") ;;
5599 *)
5600         echo "(Your architecture name used to be $myarchname.)"
5601         archname=''
5602         ;;
5603 esac
5604 case "$targetarch" in
5605 '') ;;
5606 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5607 esac
5608 myarchname="$tarch"
5609 case "$archname" in
5610 '') dflt="$tarch";;
5611 *) dflt="$archname";;
5612 esac
5613 rp='What is your architecture name'
5614 . ./myread
5615 archname="$ans"
5616 case "$usethreads" in
5617 $define)
5618         echo "Threads selected." >&4
5619         case "$archname" in
5620         *-thread*) echo "...and architecture name already has -thread." >&4
5621                 ;;
5622         *)      archname="$archname-thread"
5623                 echo "...setting architecture name to $archname." >&4
5624                 ;;
5625         esac
5626         ;;
5627 esac
5628 case "$usemultiplicity" in
5629 $define)
5630         echo "Multiplicity selected." >&4
5631         case "$archname" in
5632         *-multi*) echo "...and architecture name already has -multi." >&4
5633                 ;;
5634         *)      archname="$archname-multi"
5635                 echo "...setting architecture name to $archname." >&4
5636                 ;;
5637         esac
5638         ;;
5639 esac
5640 case "$use64bitint$use64bitall" in
5641 *"$define"*)
5642         case "$archname64" in
5643         '')
5644                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5645                 ;;
5646         *)
5647                 case "$use64bitint" in
5648                 "$define") echo "64 bit integers selected." >&4 ;;
5649                 esac
5650                 case "$use64bitall" in
5651                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5652                 esac
5653                 case "$archname" in
5654                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5655                         ;;
5656                 *)      archname="$archname-$archname64"
5657                         echo "...setting architecture name to $archname." >&4
5658                         ;;
5659                 esac
5660                 ;;
5661         esac
5662 esac
5663 case "$uselongdouble" in
5664 $define)
5665         echo "Long doubles selected." >&4
5666         case "$longdblsize" in
5667         $doublesize)
5668                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5669                 ;;
5670         *)
5671                 case "$archname" in
5672                 *-ld*) echo "...and architecture name already has -ld." >&4
5673                         ;;
5674                 *)      archname="$archname-ld"
5675                         echo "...setting architecture name to $archname." >&4
5676                         ;;
5677                 esac
5678                 ;;
5679         esac
5680         ;;
5681 esac
5682 case "$useperlio" in
5683 $define)
5684         echo "Perlio selected." >&4
5685         ;;
5686 *)
5687         echo "Perlio not selected, using stdio." >&4
5688         case "$archname" in
5689         *-stdio*) echo "...and architecture name already has -stdio." >&4
5690                 ;;
5691         *)      archname="$archname-stdio"
5692                 echo "...setting architecture name to $archname." >&4
5693                 ;;
5694         esac
5695         ;;
5696 esac
5697 if $test -f archname.cbu; then
5698         echo "Your platform has some specific hints for architecture name, using them..."
5699         . ./archname.cbu
5700 fi
5701
5702 : determine root of directory hierarchy where package will be installed.
5703 case "$prefix" in
5704 '')
5705         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5706         ;;
5707 *?/)
5708         dflt=`echo "$prefix" | sed 's/.$//'`
5709         ;;
5710 *)
5711         dflt="$prefix"
5712         ;;
5713 esac
5714 $cat <<EOM
5715
5716 By default, $package will be installed in $dflt/bin, manual pages
5717 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5718 installation directories. Typically this is something like /usr/local.
5719 If you wish to have binaries under /usr/bin but other parts of the
5720 installation under /usr/local, that's ok: you will be prompted
5721 separately for each of the installation directories, the prefix being
5722 only used to set the defaults.
5723
5724 EOM
5725 fn=d~
5726 rp='Installation prefix to use?'
5727 . ./getfile
5728 oldprefix=''
5729 case "$prefix" in
5730 '') ;;
5731 *)
5732         case "$ans" in
5733         "$prefix") ;;
5734         *) oldprefix="$prefix";;
5735         esac
5736         ;;
5737 esac
5738 prefix="$ans"
5739 prefixexp="$ansexp"
5740
5741 case "$afsroot" in
5742 '')     afsroot=/afs ;;
5743 *)      afsroot=$afsroot ;;
5744 esac
5745
5746 : is AFS running?
5747 echo " "
5748 case "$afs" in
5749 $define|true)   afs=true ;;
5750 $undef|false)   afs=false ;;
5751 *)      if test -d $afsroot; then
5752                 afs=true
5753         else
5754                 afs=false
5755         fi
5756         ;;
5757 esac
5758 if $afs; then
5759         echo "AFS may be running... I'll be extra cautious then..." >&4
5760 else
5761         echo "AFS does not seem to be running..." >&4
5762 fi
5763
5764 : determine installation prefix for where package is to be installed.
5765 if $afs; then 
5766 $cat <<EOM
5767
5768 Since you are running AFS, I need to distinguish the directory in which
5769 files will reside from the directory in which they are installed (and from
5770 which they are presumably copied to the former directory by occult means).
5771
5772 EOM
5773         case "$installprefix" in
5774         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5775         *) dflt="$installprefix";;
5776         esac
5777 else
5778 $cat <<EOM
5779
5780 In some special cases, particularly when building $package for distribution,
5781 it is convenient to distinguish the directory in which files should be
5782 installed from the directory ($prefix) in which they will
5783 eventually reside.  For most users, these two directories are the same.
5784
5785 EOM
5786         case "$installprefix" in
5787         '') dflt=$prefix ;;
5788         *) dflt=$installprefix;;
5789         esac
5790 fi
5791 fn=d~
5792 rp='What installation prefix should I use for installing files?'
5793 . ./getfile
5794 installprefix="$ans"
5795 installprefixexp="$ansexp"
5796
5797 : set the prefixit variable, to compute a suitable default value
5798 prefixit='case "$3" in
5799 ""|none)
5800         case "$oldprefix" in
5801         "") eval "$1=\"\$$2\"";;
5802         *)
5803                 case "$3" in
5804                 "") eval "$1=";;
5805                 none)
5806                         eval "tp=\"\$$2\"";
5807                         case "$tp" in
5808                         ""|" ") eval "$1=\"\$$2\"";;
5809                         *) eval "$1=";;
5810                         esac;;
5811                 esac;;
5812         esac;;
5813 *)
5814         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5815         case "$tp" in
5816         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5817         /*-$oldprefix/*|\~*-$oldprefix/*)
5818                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5819         *) eval "$1=\"\$$2\"";;
5820         esac;;
5821 esac'
5822
5823 : get the patchlevel
5824 echo " "
5825 echo "Getting the current patchlevel..." >&4
5826 if $test -r $rsrc/patchlevel.h;then
5827         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5828         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5829         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5830         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5831         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5832         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5833        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5834 else
5835         revision=0
5836         patchlevel=0
5837         subversion=0
5838         api_revision=0
5839         api_version=0
5840         api_subversion=0
5841         perl_patchlevel=0
5842         $echo "(You do not have patchlevel.h.  Eek.)"
5843 fi
5844 if $test -r $rsrc/.patch ; then  
5845         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5846                 perl_patchlevel=`cat $rsrc/.patch`
5847         fi
5848 fi
5849 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5850 version_patchlevel_string="version $patchlevel subversion $subversion"
5851 case "$perl_patchlevel" in
5852 0|'') ;;
5853 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5854 esac
5855
5856 $echo "(You have $package $version_patchlevel_string.)"
5857
5858 case "$osname" in
5859 dos|vms)
5860         : XXX Should be a Configure test for double-dots in filenames.
5861         version=`echo $revision $patchlevel $subversion | \
5862                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5863         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5864                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5865         ;;
5866 *)
5867         version=`echo $revision $patchlevel $subversion | \
5868                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5869         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5870                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5871         ;;
5872 esac
5873 : Special case the 5.005_xx maintenance series, which used 5.005
5874 : without any subversion label as a subdirectory in $sitelib
5875 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5876         api_versionstring='5.005'
5877 fi
5878
5879 : determine installation style
5880 : For now, try to deduce it from prefix unless it is already set.
5881 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5882 case "$installstyle" in
5883 '')     case "$prefix" in
5884                 *perl*) dflt='lib';;
5885                 *) dflt='lib/perl5' ;;
5886         esac
5887         ;;
5888 *)      dflt="$installstyle" ;;
5889 esac
5890 : Probably not worth prompting for this since we prompt for all
5891 : the directories individually, and the prompt would be too long and
5892 : confusing anyway.
5893 installstyle=$dflt
5894
5895 : determine where private library files go
5896 : Usual default is /usr/local/lib/perl5/$version.
5897 : Also allow things like /opt/perl/lib/$version, since 
5898 : /opt/perl/lib/perl5... would be redundant.
5899 : The default "style" setting is made in installstyle.U
5900 case "$installstyle" in
5901 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5902 *)       set dflt privlib lib/$version ;;
5903 esac
5904 eval $prefixit
5905 $cat <<EOM
5906
5907 There are some auxiliary files for $package that need to be put into a
5908 private library directory that is accessible by everyone.
5909
5910 EOM
5911 fn=d~+
5912 rp='Pathname where the private library files will reside?'
5913 . ./getfile
5914 privlib="$ans"
5915 privlibexp="$ansexp"
5916 : Change installation prefix, if necessary.
5917 if $test X"$prefix" != X"$installprefix"; then
5918         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5919 else
5920         installprivlib="$privlibexp"
5921 fi
5922
5923 : set the prefixup variable, to restore leading tilda escape
5924 prefixup='case "$prefixexp" in
5925 "$prefix") ;;
5926 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5927 esac'
5928
5929 : determine where public architecture dependent libraries go
5930 set archlib archlib
5931 eval $prefixit
5932 : privlib default is /usr/local/lib/$package/$version
5933 : archlib default is /usr/local/lib/$package/$version/$archname
5934 : privlib may have an optional trailing /share.
5935 tdflt=`echo $privlib | $sed 's,/share$,,'`
5936 tdflt=$tdflt/$archname
5937 case "$archlib" in
5938 '')     dflt=$tdflt
5939         ;;
5940 *)      dflt="$archlib"
5941     ;;
5942 esac
5943 $cat <<EOM
5944
5945 $spackage contains architecture-dependent library files.  If you are
5946 sharing libraries in a heterogeneous environment, you might store
5947 these files in a separate location.  Otherwise, you can just include
5948 them with the rest of the public library files.
5949
5950 EOM
5951 fn=d+~
5952 rp='Where do you want to put the public architecture-dependent libraries?'
5953 . ./getfile
5954 archlib="$ans"
5955 archlibexp="$ansexp"
5956 if $test X"$archlib" = X"$privlib"; then
5957         d_archlib="$undef"
5958 else
5959         d_archlib="$define"
5960 fi
5961 : Change installation prefix, if necessary.
5962 if $test X"$prefix" != X"$installprefix"; then
5963         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5964 else
5965         installarchlib="$archlibexp"
5966 fi
5967
5968 : see if setuid scripts can be secure
5969 $cat <<EOM
5970
5971 Some kernels have a bug that prevents setuid #! scripts from being
5972 secure.  Some sites have disabled setuid #! scripts because of this.
5973
5974 First let's decide if your kernel supports secure setuid #! scripts.
5975 (If setuid #! scripts would be secure but have been disabled anyway,
5976 don't say that they are secure if asked.)
5977
5978 EOM
5979
5980 val="$undef"
5981 if $test -d /dev/fd; then
5982         echo "#!$ls" >reflect
5983         chmod +x,u+s reflect
5984         ./reflect >flect 2>&1
5985         if $contains "/dev/fd" flect >/dev/null; then
5986                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5987                 val="$define"
5988         else
5989                 $cat <<EOM
5990 If you are not sure if they are secure, I can check but I'll need a
5991 username and password different from the one you are using right now.
5992 If you don't have such a username or don't want me to test, simply
5993 enter 'none'.
5994
5995 EOM
5996                 rp='Other username to test security of setuid scripts with?'
5997                 dflt='none'
5998                 . ./myread
5999                 case "$ans" in
6000                 n|none)
6001                         case "$d_suidsafe" in
6002                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6003                                 dflt=n;;
6004                         "$undef")
6005                                 echo "Well, the $hint value is *not* secure." >&4
6006                                 dflt=n;;
6007                         *)      echo "Well, the $hint value *is* secure." >&4
6008                                 dflt=y;;
6009                         esac
6010                         ;;
6011                 *)
6012                         $rm -f reflect flect
6013                         echo "#!$ls" >reflect
6014                         chmod +x,u+s reflect
6015                         echo >flect
6016                         chmod a+w flect
6017                         echo '"su" will (probably) prompt you for '"$ans's password."
6018                         su $ans -c './reflect >flect'
6019                         if $contains "/dev/fd" flect >/dev/null; then
6020                                 echo "Okay, it looks like setuid scripts are secure." >&4
6021                                 dflt=y
6022                         else
6023                                 echo "I don't think setuid scripts are secure." >&4
6024                                 dflt=n
6025                         fi
6026                         ;;
6027                 esac
6028                 rp='Does your kernel have *secure* setuid scripts?'
6029                 . ./myread
6030                 case "$ans" in
6031                 [yY]*)  val="$define";;
6032                 *)      val="$undef";;
6033                 esac
6034         fi
6035 else
6036         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6037         echo "(That's for file descriptors, not floppy disks.)"
6038         val="$undef"
6039 fi
6040 set d_suidsafe
6041 eval $setvar
6042
6043 $rm -f reflect flect
6044
6045 : now see if they want to do setuid emulation
6046 echo " "
6047 val="$undef"
6048 case "$d_suidsafe" in
6049 "$define")
6050         val="$undef"
6051         echo "No need to emulate SUID scripts since they are secure here." >&4
6052         ;;
6053 *)
6054         $cat <<EOM
6055 Some systems have disabled setuid scripts, especially systems where
6056 setuid scripts cannot be secure.  On systems where setuid scripts have
6057 been disabled, the setuid/setgid bits on scripts are currently
6058 useless.  It is possible for $package to detect those bits and emulate
6059 setuid/setgid in a secure fashion.  This emulation will only work if
6060 setuid scripts have been disabled in your kernel.
6061
6062 EOM
6063         case "$d_dosuid" in
6064         "$define") dflt=y ;;
6065         *) dflt=n ;;
6066         esac
6067         rp="Do you want to do setuid/setgid emulation?"
6068         . ./myread
6069         case "$ans" in
6070         [yY]*)  val="$define";;
6071         *)      val="$undef";;
6072         esac
6073         ;;
6074 esac
6075 set d_dosuid
6076 eval $setvar
6077
6078 : see if this is a malloc.h system
6079 : we want a real compile instead of Inhdr because some systems have a
6080 : malloc.h that just gives a compile error saying to use stdlib.h instead
6081 echo " "
6082 $cat >try.c <<EOCP
6083 #include <stdlib.h>
6084 #include <malloc.h>
6085 int main () { return 0; }
6086 EOCP
6087 set try
6088 if eval $compile; then
6089     echo "<malloc.h> found." >&4
6090     val="$define"
6091 else
6092     echo "<malloc.h> NOT found." >&4
6093     val="$undef"
6094 fi
6095 $rm -f try.c try
6096 set i_malloc
6097 eval $setvar
6098
6099 : check for void type
6100 echo " "
6101 echo "Checking to see how well your C compiler groks the void type..." >&4
6102 case "$voidflags" in
6103 '')
6104         $cat >try.c <<EOCP
6105 #$i_stdlib I_STDLIB
6106 #ifdef I_STDLIB
6107 #include <stdlib.h>
6108 #endif
6109 #if TRY & 1
6110 void sub() {
6111 #else
6112 sub() {
6113 #endif
6114         extern void moo();      /* function returning void */
6115         void (*goo)();          /* ptr to func returning void */
6116 #if TRY & 8
6117         void *hue;              /* generic ptr */
6118 #endif
6119 #if TRY & 2
6120         void (*foo[10])();
6121 #endif
6122
6123 #if TRY & 4
6124         if(goo == moo) {
6125                 exit(0);
6126         }
6127 #endif
6128         exit(0);
6129 }
6130 int main() { sub(); }
6131 EOCP
6132         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6133                 voidflags=$defvoidused
6134         echo "Good.  It appears to support void to the level $package wants.">&4
6135                 if $contains warning .out >/dev/null 2>&1; then
6136                         echo "However, you might get some warnings that look like this:"
6137                         $cat .out
6138                 fi
6139         else
6140 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6141                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6142                         echo "It supports 1..."
6143                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6144                                 echo "It also supports 2..."
6145                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6146                                         voidflags=7
6147                                         echo "And it supports 4 but not 8 definitely."
6148                                 else
6149                                         echo "It doesn't support 4..."
6150                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6151                                                 voidflags=11
6152                                                 echo "But it supports 8."
6153                                         else
6154                                                 voidflags=3
6155                                                 echo "Neither does it support 8."
6156                                         fi
6157                                 fi
6158                         else
6159                                 echo "It does not support 2..."
6160                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6161                                         voidflags=13
6162                                         echo "But it supports 4 and 8."
6163                                 else
6164                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6165                                                 voidflags=5
6166                                                 echo "And it supports 4 but has not heard about 8."
6167                                         else
6168                                                 echo "However it supports 8 but not 4."
6169                                         fi
6170                                 fi
6171                         fi
6172                 else
6173                         echo "There is no support at all for void."
6174                         voidflags=0
6175                 fi
6176         fi
6177 esac
6178 case "$voidflags" in
6179 "$defvoidused") ;;
6180 *)      $cat >&4 <<'EOM'
6181   Support flag bits are:
6182     1: basic void declarations.
6183     2: arrays of pointers to functions returning void.
6184     4: operations between pointers to and addresses of void functions.
6185     8: generic void pointers.
6186 EOM
6187         dflt="$voidflags";
6188         rp="Your void support flags add up to what?"
6189         . ./myread
6190         voidflags="$ans"
6191         ;;
6192 esac
6193 $rm -f try.* .out
6194
6195 : check for length of pointer
6196 echo " "
6197 case "$ptrsize" in
6198 '')
6199         echo "Checking to see how big your pointers are..." >&4
6200         if test "$voidflags" -gt 7; then
6201                 echo '#define VOID_PTR char *' > try.c
6202         else
6203                 echo '#define VOID_PTR void *' > try.c
6204         fi
6205         $cat >>try.c <<EOCP
6206 #include <stdio.h>
6207 #$i_stdlib I_STDLIB
6208 #ifdef I_STDLIB
6209 #include <stdlib.h>
6210 #endif
6211 int main()
6212 {
6213     printf("%d\n", (int)sizeof(VOID_PTR));
6214     exit(0);
6215 }
6216 EOCP
6217         set try
6218         if eval $compile_ok; then
6219                 ptrsize=`$run ./try`
6220                 echo "Your pointers are $ptrsize bytes long."
6221         else
6222                 dflt='4'
6223                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6224                 rp="What is the size of a pointer (in bytes)?"
6225                 . ./myread
6226                 ptrsize="$ans"
6227         fi
6228         ;;
6229 esac
6230 $rm -f try.c try
6231 case "$use64bitall" in
6232 "$define"|true|[yY]*)
6233         case "$ptrsize" in
6234         4)      cat <<EOM >&4
6235
6236 *** You have chosen a maximally 64-bit build,
6237 *** but your pointers are only 4 bytes wide.
6238 *** Please rerun Configure without -Duse64bitall.
6239 EOM
6240                 case "$d_quad" in
6241                 define)
6242                         cat <<EOM >&4
6243 *** Since you have quads, you could possibly try with -Duse64bitint.
6244 EOM
6245                         ;;
6246                 esac
6247                 cat <<EOM >&4
6248 *** Cannot continue, aborting.
6249
6250 EOM
6251
6252                 exit 1
6253                 ;;
6254         esac
6255         ;;
6256 esac
6257
6258
6259 : determine which malloc to compile in
6260 echo " "
6261 case "$usemymalloc" in
6262 [yY]*|true|$define)     dflt='y' ;;
6263 [nN]*|false|$undef)     dflt='n' ;;
6264 *)      case "$ptrsize" in
6265         4) dflt='y' ;;
6266         *) dflt='n' ;;
6267         esac
6268         ;;
6269 esac
6270 rp="Do you wish to attempt to use the malloc that comes with $package?"
6271 . ./myread
6272 usemymalloc="$ans"
6273 case "$ans" in
6274 y*|true)
6275         usemymalloc='y'
6276         mallocsrc='malloc.c'
6277         mallocobj="malloc$_o"
6278         d_mymalloc="$define"
6279         case "$libs" in
6280         *-lmalloc*)
6281                 : Remove malloc from list of libraries to use
6282                 echo "Removing unneeded -lmalloc from library list" >&4
6283                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6284                 shift
6285                 libs="$*"
6286                 echo "libs = $libs" >&4
6287                 ;;
6288         esac
6289         ;;
6290 *)
6291         usemymalloc='n'
6292         mallocsrc=''
6293         mallocobj=''
6294         d_mymalloc="$undef"
6295         ;;
6296 esac
6297
6298 : compute the return types of malloc and free
6299 echo " "
6300 $cat >malloc.c <<END
6301 #$i_malloc I_MALLOC
6302 #$i_stdlib I_STDLIB
6303 #include <stdio.h>
6304 #include <sys/types.h>
6305 #ifdef I_MALLOC
6306 #include <malloc.h>
6307 #endif
6308 #ifdef I_STDLIB
6309 #include <stdlib.h>
6310 #endif
6311 #ifdef TRY_MALLOC
6312 void *malloc();
6313 #endif
6314 #ifdef TRY_FREE
6315 void free();
6316 #endif
6317 END
6318 case "$malloctype" in
6319 '')
6320         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6321                 malloctype='void *'
6322         else
6323                 malloctype='char *'
6324         fi
6325         ;;
6326 esac
6327 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6328
6329 case "$freetype" in
6330 '')
6331         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6332                 freetype='void'
6333         else
6334                 freetype='int'
6335         fi
6336         ;;
6337 esac
6338 echo "Your system uses $freetype free(), it would seem." >&4
6339 $rm -f malloc.[co]
6340 $cat <<EOM
6341
6342 After $package is installed, you may wish to install various
6343 add-on modules and utilities.  Typically, these add-ons will
6344 be installed under $prefix with the rest
6345 of this package.  However, you may wish to install such add-ons
6346 elsewhere under a different prefix.
6347
6348 If you do not wish to put everything under a single prefix, that's
6349 ok.  You will be prompted for the individual locations; this siteprefix
6350 is only used to suggest the defaults.
6351
6352 The default should be fine for most people.
6353
6354 EOM
6355 fn=d~+
6356 rp='Installation prefix to use for add-on modules and utilities?'
6357 : XXX Here might be another good place for an installstyle setting.
6358 case "$siteprefix" in
6359 '') dflt=$prefix ;;
6360 *)  dflt=$siteprefix ;;
6361 esac
6362 . ./getfile
6363 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6364 oldsiteprefix=''
6365 case "$siteprefix" in
6366 '') ;;
6367 *)      case "$ans" in
6368         "$prefix") ;;
6369         *) oldsiteprefix="$prefix";;
6370         esac
6371         ;;
6372 esac
6373 siteprefix="$ans"
6374 siteprefixexp="$ansexp"
6375
6376 : determine where site specific libraries go.
6377 : Usual default is /usr/local/lib/perl5/site_perl/$version
6378 : The default "style" setting is made in installstyle.U
6379 : XXX No longer works with Prefixit stuff.
6380 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6381 case "$sitelib" in
6382 '') case "$installstyle" in
6383         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6384         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6385         esac
6386         ;;
6387 *)      dflt="$sitelib"
6388         ;;
6389 esac
6390 $cat <<EOM
6391
6392 The installation process will create a directory for
6393 site-specific extensions and modules.  Most users find it convenient
6394 to place all site-specific files in this directory rather than in the
6395 main distribution directory.
6396
6397 EOM
6398 fn=d~+
6399 rp='Pathname for the site-specific library files?'
6400 . ./getfile
6401 sitelib="$ans"
6402 sitelibexp="$ansexp"
6403 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6404 : Change installation prefix, if necessary.
6405 if $test X"$prefix" != X"$installprefix"; then
6406         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6407 else
6408         installsitelib="$sitelibexp"
6409 fi
6410
6411 : determine where site specific architecture-dependent libraries go.
6412 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6413 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6414 : sitelib may have an optional trailing /share.
6415 case "$sitearch" in
6416 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6417         dflt="$dflt/$archname"
6418         ;;
6419 *)      dflt="$sitearch"
6420         ;;
6421 esac
6422 set sitearch sitearch none
6423 eval $prefixit
6424 $cat <<EOM
6425
6426 The installation process will also create a directory for
6427 architecture-dependent site-specific extensions and modules.
6428
6429 EOM
6430 fn=d~+
6431 rp='Pathname for the site-specific architecture-dependent library files?'
6432 . ./getfile
6433 sitearch="$ans"
6434 sitearchexp="$ansexp"
6435 : Change installation prefix, if necessary.
6436 if $test X"$prefix" != X"$installprefix"; then
6437         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6438 else
6439         installsitearch="$sitearchexp"
6440 fi
6441
6442 $cat <<EOM
6443
6444 The installation process will also create a directory for
6445 vendor-supplied add-ons.  Vendors who supply perl with their system
6446 may find it convenient to place all vendor-supplied files in this
6447 directory rather than in the main distribution directory.  This will
6448 ease upgrades between binary-compatible maintenance versions of perl.
6449
6450 Of course you may also use these directories in whatever way you see
6451 fit.  For example, you might use them to access modules shared over a
6452 company-wide network.
6453
6454 The default answer should be fine for most people.
6455 This causes further questions about vendor add-ons to be skipped
6456 and no vendor-specific directories will be configured for perl.
6457
6458 EOM
6459 rp='Do you want to configure vendor-specific add-on directories?'
6460 case "$usevendorprefix" in
6461 define|true|[yY]*) dflt=y ;;
6462 *)      : User may have set vendorprefix directly on Configure command line.
6463         case "$vendorprefix" in
6464         ''|' ') dflt=n ;;
6465         *)      dflt=y ;;
6466         esac
6467         ;;
6468 esac
6469 . ./myread
6470 case "$ans" in
6471 [yY]*)  fn=d~+
6472         rp='Installation prefix to use for vendor-supplied add-ons?'
6473         case "$vendorprefix" in
6474         '') dflt='' ;;
6475         *)  dflt=$vendorprefix ;;
6476         esac
6477         . ./getfile
6478         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6479         oldvendorprefix=''
6480         case "$vendorprefix" in
6481         '') ;;
6482         *)      case "$ans" in
6483                 "$prefix") ;;
6484                 *) oldvendorprefix="$prefix";;
6485                 esac
6486                 ;;
6487         esac
6488         usevendorprefix="$define"
6489         vendorprefix="$ans"
6490         vendorprefixexp="$ansexp"
6491         ;;
6492 *)      usevendorprefix="$undef"
6493         vendorprefix=''
6494         vendorprefixexp=''
6495         ;;
6496 esac
6497
6498 case "$vendorprefix" in
6499 '')     d_vendorlib="$undef"
6500         vendorlib=''
6501         vendorlibexp=''
6502         ;;
6503 *)      d_vendorlib="$define"
6504         : determine where vendor-supplied modules go.
6505         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6506         case "$vendorlib" in
6507         '')
6508                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6509                 case "$installstyle" in
6510                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6511                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6512                 esac
6513                 ;;
6514         *)      dflt="$vendorlib"
6515                 ;;
6516         esac
6517         fn=d~+
6518         rp='Pathname for the vendor-supplied library files?'
6519         . ./getfile
6520         vendorlib="$ans"
6521         vendorlibexp="$ansexp"
6522         ;;
6523 esac
6524 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6525 : Change installation prefix, if necessary.
6526 if $test X"$prefix" != X"$installprefix"; then
6527         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6528 else
6529         installvendorlib="$vendorlibexp"
6530 fi
6531
6532 case "$vendorprefix" in
6533 '')     d_vendorarch="$undef"
6534         vendorarch=''
6535         vendorarchexp=''
6536         ;;
6537 *)      d_vendorarch="$define"
6538         : determine where vendor-supplied architecture-dependent libraries go.
6539         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6540         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6541         : vendorlib may have an optional trailing /share.
6542         case "$vendorarch" in
6543         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6544                 dflt="$dflt/$archname"
6545                 ;;
6546         *)      dflt="$vendorarch" ;;
6547         esac
6548         fn=d~+
6549         rp='Pathname for vendor-supplied architecture-dependent files?'
6550         . ./getfile
6551         vendorarch="$ans"
6552         vendorarchexp="$ansexp"
6553         ;;
6554 esac
6555 : Change installation prefix, if necessary.
6556 if $test X"$prefix" != X"$installprefix"; then
6557         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6558 else
6559         installvendorarch="$vendorarchexp"
6560 fi
6561
6562 : Final catch-all directories to search
6563 $cat <<EOM
6564
6565 Lastly, you can have perl look in other directories for extensions and
6566 modules in addition to those already specified.
6567 These directories will be searched after 
6568         $sitearch 
6569         $sitelib 
6570 EOM
6571 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6572 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6573 echo ' '
6574 case "$otherlibdirs" in
6575 ''|' ') dflt='none' ;;
6576 *)      dflt="$otherlibdirs" ;;
6577 esac
6578 $cat <<EOM
6579 Enter a colon-separated set of extra paths to include in perl's @INC
6580 search path, or enter 'none' for no extra paths.
6581
6582 EOM
6583
6584 rp='Colon-separated list of additional directories for perl to search?'
6585 . ./myread
6586 case "$ans" in
6587 ' '|''|none)    otherlibdirs=' ' ;;     
6588 *)      otherlibdirs="$ans" ;;
6589 esac
6590 case "$otherlibdirs" in
6591 ' ') val=$undef ;;
6592 *)      val=$define ;;
6593 esac
6594 set d_perl_otherlibdirs
6595 eval $setvar
6596
6597 : Cruising for prototypes
6598 echo " "
6599 echo "Checking out function prototypes..." >&4
6600 $cat >prototype.c <<EOCP
6601 #$i_stdlib I_STDLIB
6602 #ifdef I_STDLIB
6603 #include <stdlib.h>
6604 #endif
6605 int main(int argc, char *argv[]) {
6606         exit(0);}
6607 EOCP
6608 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6609         echo "Your C compiler appears to support function prototypes."
6610         val="$define"
6611 else
6612         echo "Your C compiler doesn't seem to understand function prototypes."
6613         val="$undef"
6614 fi
6615 set prototype
6616 eval $setvar
6617 $rm -f prototype*
6618
6619 case "$prototype" in
6620 "$define") ;;
6621 *)      ansi2knr='ansi2knr'
6622         echo " "
6623         cat <<EOM >&4
6624
6625 $me:  FATAL ERROR:
6626 This version of $package can only be compiled by a compiler that 
6627 understands function prototypes.  Unfortunately, your C compiler 
6628         $cc $ccflags
6629 doesn't seem to understand them.  Sorry about that.
6630
6631 If GNU cc is available for your system, perhaps you could try that instead.  
6632
6633 Eventually, we hope to support building Perl with pre-ANSI compilers.
6634 If you would like to help in that effort, please contact <perlbug@perl.org>.
6635
6636 Aborting Configure now.
6637 EOM
6638         exit 2
6639         ;;
6640 esac
6641
6642 : determine where public executables go
6643 echo " "
6644 set dflt bin bin
6645 eval $prefixit
6646 fn=d~
6647 rp='Pathname where the public executables will reside?'
6648 . ./getfile
6649 if $test "X$ansexp" != "X$binexp"; then
6650         installbin=''
6651 fi
6652 bin="$ans"
6653 binexp="$ansexp"
6654 : Change installation prefix, if necessary.
6655 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6656 if $test X"$prefix" != X"$installprefix"; then
6657         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6658 else
6659         installbin="$binexp"
6660 fi
6661
6662 echo " "
6663 case "$extras" in
6664 '') dflt='n';;
6665 *) dflt='y';;
6666 esac
6667 cat <<EOM
6668 Perl can be built with extra modules or bundles of modules which
6669 will be fetched from the CPAN and installed alongside Perl.
6670
6671 Notice that you will need access to the CPAN; either via the Internet,
6672 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6673 be asked later to configure the CPAN.pm module which will in turn do
6674 the installation of the rest of the extra modules or bundles.)
6675
6676 Notice also that if the modules require any external software such as
6677 libraries and headers (the libz library and the zlib.h header for the
6678 Compress::Zlib module, for example) you MUST have any such software
6679 already installed, this configuration process will NOT install such
6680 things for you.
6681
6682 If this doesn't make any sense to you, just accept the default '$dflt'.
6683 EOM
6684 rp='Install any extra modules (y or n)?'
6685 . ./myread
6686 case "$ans" in
6687 y|Y)
6688         cat <<EOM
6689
6690 Please list any extra modules or bundles to be installed from CPAN,
6691 with spaces between the names.  The names can be in any format the
6692 'install' command of CPAN.pm will understand.  (Answer 'none',
6693 without the quotes, to install no extra modules or bundles.)
6694 EOM
6695         rp='Extras?'
6696         dflt="$extras"
6697         . ./myread
6698         extras="$ans"
6699 esac
6700 case "$extras" in
6701 ''|'none')
6702         val=''
6703         $rm -f ../extras.lst
6704         ;;
6705 *)      echo "(Saving the list of extras for later...)"
6706         echo "$extras" > ../extras.lst
6707         val="'$extras'"
6708         ;;
6709 esac
6710 set extras
6711 eval $setvar
6712 echo " "
6713
6714 : determine where html pages for programs go
6715 set html1dir html1dir none
6716 eval $prefixit
6717 $cat <<EOM
6718
6719 If you wish to install html files for programs in $spackage, indicate 
6720 the appropriate directory here.  To skip installing html files,
6721 answer "none".
6722 EOM
6723 case "$html1dir" in
6724 ''|none|$undef|' ') dflt=none ;;
6725 *) dflt=$html1dir ;;
6726 esac
6727 fn=dn+~
6728 rp="Directory for the main $spackage html pages?"
6729 . ./getfile
6730 html1dir="$ans"
6731 html1direxp="$ansexp"
6732 : Use ' ' for none so value is preserved next time through Configure
6733 $test X"$html1dir" = "X" && html1dir=' '
6734 : Change installation prefix, if necessary.
6735 if $test X"$prefix" != X"$installprefix"; then
6736         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6737 else
6738         installhtml1dir="$html1direxp"
6739 fi
6740
6741 : determine where html pages for libraries and modules go
6742 set html3dir html3dir none
6743 eval $prefixit
6744 $cat <<EOM
6745
6746 If you wish to install html files for modules associated with $spackage,
6747 indicate the appropriate directory here.  To skip installing html files,
6748 answer "none".
6749 EOM
6750 : There is no obvious default.  If they have specified html1dir, then
6751 : try to key off that, possibly changing .../html1 into .../html3.
6752 case "$html3dir" in
6753 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6754 *) dflt=$html3dir ;;
6755 esac
6756 fn=dn+~
6757 rp="Directory for the $spackage module html pages?"
6758 . ./getfile
6759 html3dir="$ans"
6760 html3direxp="$ansexp"
6761 : Use ' ' for none so value is preserved next time through Configure
6762 $test X"$html3dir" = "X" && html3dir=' '
6763 : Change installation prefix, if necessary.
6764 if $test X"$prefix" != X"$installprefix"; then
6765         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6766 else
6767         installhtml3dir="$html3direxp"
6768 fi
6769
6770 : Find perl5.005 or later.
6771 echo "Looking for a previously installed perl5.005 or later... "
6772 case "$perl5" in
6773 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6774                 : Check if this perl is recent and can load a simple module
6775                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6776                         perl5=$tdir/perl
6777                         break;
6778                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6779                         perl5=$tdir/perl5
6780                         break;
6781                 fi
6782         done
6783         ;;
6784 *)      perl5="$perl5"
6785         ;;
6786 esac
6787 case "$perl5" in
6788 '')     echo "None found.  That's ok.";;
6789 *)      echo "Using $perl5." ;;
6790 esac
6791
6792 : Determine list of previous versions to include in @INC
6793 $cat > getverlist <<EOPL
6794 #!$perl5 -w
6795 use File::Basename;
6796 \$api_versionstring = "$api_versionstring";
6797 \$version = "$version";
6798 \$stem = "$sitelib_stem";
6799 \$archname = "$archname";
6800 EOPL
6801         $cat >> getverlist <<'EOPL'
6802 # Can't have leading @ because metaconfig interprets it as a command!
6803 ;@inc_version_list=();
6804 # XXX Redo to do opendir/readdir? 
6805 if (-d $stem) {
6806     chdir($stem);
6807     ;@candidates = glob("5.*");
6808 }
6809 else {
6810     ;@candidates = ();
6811 }
6812
6813 # XXX ToDo:  These comparisons must be reworked when two-digit
6814 # subversions come along, so that 5.7.10 compares as greater than
6815 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6816 # widespread that we can use the built-in version vectors rather
6817 # than reinventing them here.  For 5.6.0, however, we must
6818 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6819 foreach $d (@candidates) {
6820     if ($d lt $version) {
6821         if ($d ge $api_versionstring) {
6822             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6823         }
6824         elsif ($d ge "5.005") {
6825             unshift(@inc_version_list, grep { -d } $d);
6826         }
6827     }
6828     else {
6829         # Skip newer version.  I.e. don't look in
6830         # 5.7.0 if we're installing 5.6.1.
6831     }
6832 }
6833
6834 if (@inc_version_list) {
6835     print join(' ', @inc_version_list);
6836 }
6837 else {
6838     # Blank space to preserve value for next Configure run.
6839     print " ";
6840 }
6841 EOPL
6842 chmod +x getverlist
6843 case "$inc_version_list" in
6844 '')     if test -x "$perl5$exe_ext"; then
6845                 dflt=`$perl5 getverlist`
6846         else
6847                 dflt='none'
6848         fi
6849         ;;
6850 $undef) dflt='none' ;;
6851 *)  eval dflt=\"$inc_version_list\" ;;
6852 esac
6853 case "$dflt" in
6854 ''|' ') dflt=none ;;
6855 esac
6856 case "$dflt" in
6857 5.005) dflt=none ;;
6858 esac
6859 $cat <<EOM
6860
6861 In order to ease the process of upgrading, this version of perl 
6862 can be configured to use modules built and installed with earlier 
6863 versions of perl that were installed under $prefix.  Specify here
6864 the list of earlier versions that this version of perl should check.
6865 If Configure detected no earlier versions of perl installed under
6866 $prefix, then the list will be empty.  Answer 'none' to tell perl
6867 to not search earlier versions.
6868
6869 The default should almost always be sensible, so if you're not sure,
6870 just accept the default.
6871 EOM
6872
6873 rp='List of earlier versions to include in @INC?'
6874 . ./myread
6875 case "$ans" in
6876 [Nn]one|''|' ') inc_version_list=' ' ;;
6877 *) inc_version_list="$ans" ;;
6878 esac
6879 case "$inc_version_list" in
6880 ''|' ') 
6881         inc_version_list_init='0';;
6882 *)      inc_version_list_init=`echo $inc_version_list |
6883                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6884         ;;
6885 esac
6886 $rm -f getverlist
6887
6888 : determine whether to install perl also as /usr/bin/perl
6889
6890 echo " "
6891 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6892         $cat <<EOM
6893 Many scripts expect perl to be installed as /usr/bin/perl.
6894
6895 If you want to, I can install the perl you are about to compile
6896 as /usr/bin/perl (in addition to $bin/perl).
6897 EOM
6898         if test -f /usr/bin/perl; then
6899             $cat <<EOM
6900
6901 However, please note that because you already have a /usr/bin/perl,
6902 overwriting that with a new Perl would very probably cause problems.
6903 Therefore I'm assuming you don't want to do that (unless you insist).
6904
6905 EOM
6906             case "$installusrbinperl" in
6907             "$define"|[yY]*)    dflt='y';;
6908             *)                  dflt='n';;
6909             esac
6910         else
6911             $cat <<EOM
6912
6913 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6914
6915 EOM
6916             case "$installusrbinperl" in
6917             "$undef"|[nN]*)     dflt='n';;
6918             *)                  dflt='y';;
6919             esac
6920         fi
6921         rp="Do you want to install perl as /usr/bin/perl?"
6922         . ./myread
6923         case "$ans" in
6924         [yY]*)  val="$define";;
6925         *)      val="$undef" ;;
6926         esac
6927 else
6928         val="$undef"
6929 fi
6930 set installusrbinperl
6931 eval $setvar
6932
6933 echo " "
6934 echo "Checking for GNU C Library..." >&4
6935 cat >try.c <<'EOCP'
6936 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
6937    alone are insufficient to distinguish different versions, such as
6938    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
6939    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
6940 */
6941 #include <stdio.h>
6942 int main(void)
6943 {
6944 #ifdef __GLIBC__
6945 #   ifdef __GLIBC_MINOR__
6946 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6947 #           include <gnu/libc-version.h>
6948             printf("%s\n",  gnu_get_libc_version());
6949 #       else
6950             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
6951 #       endif
6952 #   else
6953         printf("%d\n",  __GLIBC__);
6954 #   endif
6955     return 0;
6956 #else
6957     return 1;
6958 #endif
6959 }
6960 EOCP
6961 set try
6962 if eval $compile_ok && $run ./try > glibc.ver; then
6963         val="$define"
6964         gnulibc_version=`$cat glibc.ver`
6965         echo "You are using the GNU C Library version $gnulibc_version"
6966 else
6967         val="$undef"
6968         gnulibc_version=''
6969         echo "You are not using the GNU C Library"
6970 fi
6971 $rm -f try try.* glibc.ver
6972 set d_gnulibc
6973 eval $setvar
6974
6975 : see if nm is to be used to determine whether a symbol is defined or not
6976 case "$usenm" in
6977 '')
6978         dflt=''
6979         case "$d_gnulibc" in
6980         "$define")
6981                 echo " "
6982                 echo "nm probably won't work on the GNU C Library." >&4
6983                 dflt=n
6984                 ;;
6985         esac
6986         case "$dflt" in
6987         '') 
6988                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
6989                         echo " "
6990                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
6991                         echo "'nm' won't be sufficient on this sytem." >&4
6992                         dflt=n
6993                 fi
6994                 ;;
6995         esac
6996         case "$dflt" in
6997         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
6998                 if $test $dflt -gt 20; then
6999                         dflt=y
7000                 else
7001                         dflt=n
7002                 fi
7003                 ;;
7004         esac
7005         ;;
7006 *)
7007         case "$usenm" in
7008         true|$define) dflt=y;;
7009         *) dflt=n;;
7010         esac
7011         ;;
7012 esac
7013 $cat <<EOM
7014
7015 I can use $nm to extract the symbols from your C libraries. This
7016 is a time consuming task which may generate huge output on the disk (up
7017 to 3 megabytes) but that should make the symbols extraction faster. The
7018 alternative is to skip the 'nm' extraction part and to compile a small
7019 test program instead to determine whether each symbol is present. If
7020 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7021 this may be the best solution.
7022
7023 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7024
7025 EOM
7026 rp="Shall I use $nm to extract C symbols from the libraries?"
7027 . ./myread
7028 case "$ans" in
7029 [Nn]*) usenm=false;;
7030 *) usenm=true;;
7031 esac
7032
7033 runnm=$usenm
7034 case "$reuseval" in
7035 true) runnm=false;;
7036 esac
7037
7038 : nm options which may be necessary
7039 case "$nm_opt" in
7040 '') if $test -f /mach_boot; then
7041                 nm_opt=''       # Mach
7042         elif $test -d /usr/ccs/lib; then
7043                 nm_opt='-p'     # Solaris (and SunOS?)
7044         elif $test -f /dgux; then
7045                 nm_opt='-p'     # DG-UX
7046         elif $test -f /lib64/rld; then
7047                 nm_opt='-p'     # 64-bit Irix
7048         else
7049                 nm_opt=''
7050         fi;;
7051 esac
7052
7053 : nm options which may be necessary for shared libraries but illegal
7054 : for archive libraries.  Thank you, Linux.
7055 case "$nm_so_opt" in
7056 '')     case "$myuname" in
7057         *linux*)
7058                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7059                         nm_so_opt='--dynamic'
7060                 fi
7061                 ;;
7062         esac
7063         ;;
7064 esac
7065
7066 case "$runnm" in
7067 true)
7068 : get list of predefined functions in a handy place
7069 echo " "
7070 case "$libc" in
7071 '') libc=unknown
7072         case "$libs" in
7073         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7074         esac
7075         ;;
7076 esac
7077 case "$libs" in
7078 '') ;;
7079 *)  for thislib in $libs; do
7080         case "$thislib" in
7081         -lc|-lc_s)
7082                 : Handle C library specially below.
7083                 ;;
7084         -l*)
7085                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7086                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7087                         :
7088                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7089                         :
7090                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7091                         :
7092                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7093                         :
7094                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7095                         :
7096                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7097                         :
7098                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7099                         :
7100                 else
7101                         try=''
7102                 fi
7103                 libnames="$libnames $try"
7104                 ;;
7105         *) libnames="$libnames $thislib" ;;
7106         esac
7107         done
7108         ;;
7109 esac
7110 xxx=normal
7111 case "$libc" in
7112 unknown)
7113         set /lib/libc.$so
7114         for xxx in $libpth; do
7115                 $test -r $1 || set $xxx/libc.$so
7116                 : The messy sed command sorts on library version numbers.
7117                 $test -r $1 || \
7118                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7119                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7120                                 h
7121                                 s/[0-9][0-9]*/0000&/g
7122                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7123                                 G
7124                                 s/\n/ /' | \
7125                          $sort | $sed -e 's/^.* //'`
7126                 eval set \$$#
7127         done
7128         $test -r $1 || set /usr/ccs/lib/libc.$so
7129         $test -r $1 || set /lib/libsys_s$_a
7130         ;;
7131 *)
7132         set blurfl
7133         ;;
7134 esac
7135 if $test -r "$1"; then
7136         echo "Your (shared) C library seems to be in $1."
7137         libc="$1"
7138 elif $test -r /lib/libc && $test -r /lib/clib; then
7139         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7140         xxx=apollo
7141         libc='/lib/clib /lib/libc'
7142         if $test -r /lib/syslib; then
7143                 echo "(Your math library is in /lib/syslib.)"
7144                 libc="$libc /lib/syslib"
7145         fi
7146 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7147         echo "Your C library seems to be in $libc, as you said before."
7148 elif $test -r $incpath/usr/lib/libc$_a; then
7149         libc=$incpath/usr/lib/libc$_a;
7150         echo "Your C library seems to be in $libc.  That's fine."
7151 elif $test -r /lib/libc$_a; then
7152         libc=/lib/libc$_a;
7153         echo "Your C library seems to be in $libc.  You're normal."
7154 else
7155         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7156                 :
7157         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7158                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7159         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7160                 :
7161         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7162                 :
7163         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7164                 :
7165         else
7166                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7167         fi
7168         if $test -r "$tans"; then
7169                 echo "Your C library seems to be in $tans, of all places."
7170                 libc=$tans
7171         else
7172                 libc='blurfl'
7173         fi
7174 fi
7175 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7176         dflt="$libc"
7177         cat <<EOM
7178
7179 If the guess above is wrong (which it might be if you're using a strange
7180 compiler, or your machine supports multiple models), you can override it here.
7181
7182 EOM
7183 else
7184         dflt=''
7185         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7186         cat >&4 <<EOM
7187 I can't seem to find your C library.  I've looked in the following places:
7188
7189 EOM
7190         $sed 's/^/      /' libpath
7191         cat <<EOM
7192
7193 None of these seems to contain your C library. I need to get its name...
7194
7195 EOM
7196 fi
7197 fn=f
7198 rp='Where is your C library?'
7199 . ./getfile
7200 libc="$ans"
7201
7202 echo " "
7203 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7204 set X `cat libnames`
7205 shift
7206 xxx=files
7207 case $# in 1) xxx=file; esac
7208 echo "Extracting names from the following $xxx for later perusal:" >&4
7209 echo " "
7210 $sed 's/^/      /' libnames >&4
7211 echo " "
7212 $echo $n "This may take a while...$c" >&4
7213
7214 for file in $*; do
7215         case $file in
7216         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7217         *) $nm $nm_opt $file 2>/dev/null;;
7218         esac
7219 done >libc.tmp
7220
7221 $echo $n ".$c"
7222 $grep fprintf libc.tmp > libc.ptf
7223 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7224 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7225 xxx='[ADTSIW]'
7226 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7227         eval $xscan;\
7228         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7229                 eval $xrun
7230 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7231         eval $xscan;\
7232         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7233                 eval $xrun
7234 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7235         eval $xscan;\
7236         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7237                 eval $xrun
7238 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7239         eval $xscan;\
7240         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7241                 eval $xrun
7242 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7243         eval $xscan;\
7244         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7245                 eval $xrun
7246 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7247         eval $xscan;\
7248         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7249                 eval $xrun
7250 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7251                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7252         eval $xscan;\
7253         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7254                 eval $xrun
7255 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7256         eval $xscan;\
7257         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7258                 eval $xrun
7259 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7260         eval $xscan;\
7261         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7262                 eval $xrun
7263 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7264         eval $xscan;\
7265         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7266                 eval $xrun
7267 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7268         eval $xscan;\
7269         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7270                 eval $xrun
7271 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7272         eval $xscan;\
7273         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7274                 eval $xrun
7275 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7276         eval $xscan;\
7277         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7278                 eval $xrun
7279 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7280         eval $xscan;\
7281         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7282                 eval $xrun
7283 else
7284         $nm -p $* 2>/dev/null >libc.tmp
7285         $grep fprintf libc.tmp > libc.ptf
7286         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7287                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7288         then
7289                 nm_opt='-p'
7290                 eval $xrun
7291         else
7292                 echo " "
7293                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7294                 com=''
7295                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7296                         for thisname in $libnames $libc; do
7297                                 $ar t $thisname >>libc.tmp
7298                         done
7299                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7300                         echo "Ok." >&4
7301                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7302                         # Repeat libc to extract forwarders to DLL entries too
7303                         for thisname in $libnames $libc; do
7304                                 $ar tv $thisname >>libc.tmp
7305                                 # Revision 50 of EMX has bug in $ar.
7306                                 # it will not extract forwarders to DLL entries
7307                                 # Use emximp which will extract exactly them.
7308                                 emximp -o tmp.imp $thisname \
7309                                     2>/dev/null && \
7310                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7311                                     < tmp.imp >>libc.tmp
7312                                 $rm tmp.imp
7313                         done
7314                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7315                         echo "Ok." >&4
7316                 else
7317                         echo "$ar didn't seem to work right." >&4
7318                         echo "Maybe this is a Cray...trying bld instead..." >&4
7319                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7320                         then
7321                                 for thisname in $libnames; do
7322                                         bld t $libnames | \
7323                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7324                                         $ar t $thisname >>libc.tmp
7325                                 done
7326                                 echo "Ok." >&4
7327                         else
7328                                 echo "That didn't work either.  Giving up." >&4
7329                                 exit 1
7330                         fi
7331                 fi
7332         fi
7333 fi
7334 nm_extract="$com"
7335 case "$PASE" in
7336 define)
7337     echo " "
7338     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7339     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7340     ;;
7341 *)  if $test -f /lib/syscalls.exp; then
7342         echo " "
7343         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7344         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7345     fi
7346     ;;
7347 esac
7348 ;;
7349 esac
7350 $rm -f libnames libpath
7351
7352 : see if dld is available
7353 set dld.h i_dld
7354 eval $inhdr
7355
7356 : is a C symbol defined?
7357 csym='tlook=$1;
7358 case "$3" in
7359 -v) tf=libc.tmp; tdc="";;
7360 -a) tf=libc.tmp; tdc="[]";;
7361 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7362 esac;
7363 tx=yes;
7364 case "$reuseval-$4" in
7365 true-) ;;
7366 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7367 esac;
7368 case "$tx" in
7369 yes)
7370         tval=false;
7371         if $test "$runnm" = true; then
7372                 if $contains $tlook $tf >/dev/null 2>&1; then
7373                         tval=true;
7374                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7375                         echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7376                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7377                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7378                         $rm -f try$_exe try.c core core.* try.core;
7379                 fi;
7380         else
7381                 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7382                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7383                 $rm -f try$_exe try.c;
7384         fi;
7385         ;;
7386 *)
7387         case "$tval" in
7388         $define) tval=true;;
7389         *) tval=false;;
7390         esac;
7391         ;;
7392 esac;
7393 eval "$2=$tval"'
7394
7395 : define an is-in-libc? function
7396 inlibc='echo " "; td=$define; tu=$undef;
7397 sym=$1; var=$2; eval "was=\$$2";
7398 tx=yes;
7399 case "$reuseval$was" in
7400 true) ;;
7401 true*) tx=no;;
7402 esac;
7403 case "$tx" in
7404 yes)
7405         set $sym tres -f;
7406         eval $csym;
7407         case "$tres" in
7408         true)
7409                 echo "$sym() found." >&4;
7410                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7411         *)
7412                 echo "$sym() NOT found." >&4;
7413                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7414         esac;;
7415 *)
7416         case "$was" in
7417         $define) echo "$sym() found." >&4;;
7418         *) echo "$sym() NOT found." >&4;;
7419         esac;;
7420 esac'
7421
7422 : see if dlopen exists
7423 xxx_runnm="$runnm"
7424 runnm=false
7425 set dlopen d_dlopen
7426 eval $inlibc
7427 runnm="$xxx_runnm"
7428
7429 : determine which dynamic loading, if any, to compile in
7430 echo " "
7431 dldir="ext/DynaLoader"
7432 case "$usedl" in
7433 $define|y|true)
7434         dflt='y'
7435         usedl="$define"
7436         ;;
7437 $undef|n|false)
7438         dflt='n'
7439         usedl="$undef"
7440         ;;
7441 *) 
7442         dflt='n'
7443         case "$d_dlopen" in
7444             $define) dflt='y' ;;
7445         esac
7446         case "$i_dld" in
7447             $define) dflt='y' ;;
7448         esac
7449         : Does a dl_xxx.xs file exist for this operating system
7450         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7451         ;;
7452 esac
7453 rp="Do you wish to use dynamic loading?"
7454 . ./myread
7455 usedl="$ans"
7456 case "$ans" in
7457 y*) usedl="$define"
7458         case "$dlsrc" in
7459         '')
7460                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7461                         dflt="$dldir/dl_${osname}.xs"
7462                 elif $test "$d_dlopen" = "$define" ; then
7463                         dflt="$dldir/dl_dlopen.xs"
7464                 elif $test "$i_dld" = "$define" ; then
7465                         dflt="$dldir/dl_dld.xs"
7466                 else
7467                         dflt=''
7468                 fi
7469                 ;;
7470         *)      dflt="$dldir/$dlsrc"
7471                 ;;
7472         esac
7473     echo "The following dynamic loading files are available:"
7474         : Can not go over to $dldir because getfile has path hard-coded in.
7475         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7476         rp="Source file to use for dynamic loading"
7477         fn="fne"
7478         gfpth="$src"
7479         . ./getfile
7480         usedl="$define"
7481         : emulate basename
7482         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7483
7484         $cat << EOM
7485
7486 Some systems may require passing special flags to $cc -c to
7487 compile modules that will be used to create a shared library.
7488 To use no flags, say "none".
7489
7490 EOM
7491     case "$cccdlflags" in
7492     '') case "$gccversion" in
7493                 '') case "$osname" in
7494                         hpux)   dflt='+z' ;;
7495                         next)   dflt='none' ;;
7496                         irix*)  dflt='-KPIC' ;;
7497                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7498                         sunos)  dflt='-pic' ;;
7499                         *)      dflt='none' ;;
7500                     esac
7501                         ;;
7502                 *)  case "$osname" in
7503                         darwin) dflt='none' ;;
7504                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7505                         *)      dflt='-fpic' ;;
7506                     esac ;;
7507             esac ;;
7508         ' ') dflt='none' ;;
7509     *)  dflt="$cccdlflags" ;;
7510     esac
7511     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7512     . ./myread
7513     case "$ans" in
7514     none) cccdlflags=' ' ;;
7515     *) cccdlflags="$ans" ;;
7516     esac
7517
7518     cat << EOM
7519
7520 Some systems use ld to create libraries that can be dynamically loaded,
7521 while other systems (such as those using ELF) use $cc.
7522
7523 EOM
7524         case "$ld" in
7525         '')     $cat >try.c <<EOM
7526 /* Test for whether ELF binaries are produced */
7527 #include <fcntl.h>
7528 #$i_stdlib I_STDLIB
7529 #ifdef I_STDLIB
7530 #include <stdlib.h>
7531 #endif
7532 int main() {
7533         char b[4];
7534         int i = open("a.out",O_RDONLY);
7535         if(i == -1) 
7536                 exit(1); /* fail */
7537         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7538                 exit(0); /* succeed (yes, it's ELF) */
7539         else
7540                 exit(1); /* fail */
7541 }
7542 EOM
7543                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7544                         cat <<EOM
7545 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7546 EOM
7547                         dflt="$cc"
7548                 else
7549                         echo "I'll use ld to build dynamic libraries."
7550                         dflt='ld'
7551                 fi
7552                 rm -f try.c a.out
7553                 ;;
7554         *)      dflt="$ld"
7555                 ;;
7556         esac
7557
7558     rp="What command should be used to create dynamic libraries?"
7559     . ./myread
7560         ld="$ans"
7561
7562     cat << EOM
7563
7564 Some systems may require passing special flags to $ld to create a
7565 library that can be dynamically loaded.  If your ld flags include
7566 -L/other/path options to locate libraries outside your loader's normal
7567 search path, you may need to specify those -L options here as well.  To
7568 use no flags, say "none".
7569
7570 EOM
7571     case "$lddlflags" in
7572     '') case "$osname" in
7573                         beos) dflt='-nostart' ;;
7574                         hpux) dflt='-b';
7575                               case "$gccversion" in
7576                               '') dflt="$dflt +vnocompatwarnings" ;;
7577                               esac
7578                               ;;        
7579                         linux|irix*)    dflt='-shared' ;;
7580                         next)  dflt='none' ;;
7581                         solaris) dflt='-G' ;;
7582                         sunos) dflt='-assert nodefinitions' ;;
7583                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7584                 *)     dflt='none' ;;
7585                         esac
7586                         ;;
7587     *) dflt="$lddlflags" ;;
7588     esac
7589
7590         : Try to guess additional flags to pick up local libraries.
7591         : Be careful not to append to a plain 'none'
7592         case "$dflt" in
7593         none) dflt='' ;;
7594         esac
7595         for thisflag in $ldflags; do
7596                 case "$thisflag" in
7597                 -L*|-R*|-Wl,-R*)
7598                         case " $dflt " in
7599                         *" $thisflag "*) ;;
7600                         *) dflt="$dflt $thisflag" ;;
7601                         esac
7602                         ;;
7603                 esac
7604         done
7605
7606         case "$dflt" in
7607         ''|' ') dflt='none' ;;
7608         esac
7609
7610     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7611     . ./myread
7612     case "$ans" in
7613     none) lddlflags=' ' ;;
7614     *) lddlflags="$ans" ;;
7615     esac
7616
7617         cat <<EOM
7618
7619 Some systems may require passing special flags to $cc to indicate that
7620 the resulting executable will use dynamic linking.  To use no flags,
7621 say "none".
7622
7623 EOM
7624     case "$ccdlflags" in
7625     '') case "$osname" in
7626                 hpux)   dflt='-Wl,-E' ;;
7627                 linux)  dflt='-rdynamic' ;;
7628                 next)   dflt='none' ;;
7629                 sunos)  dflt='none' ;;
7630                 *)      dflt='none' ;;
7631             esac ;;
7632     ' ')  dflt='none' ;;
7633     *)  dflt="$ccdlflags" ;;
7634     esac
7635     rp="Any special flags to pass to $cc to use dynamic linking?"
7636     . ./myread
7637     case "$ans" in
7638     none) ccdlflags=' ' ;;
7639     *) ccdlflags="$ans" ;;
7640     esac
7641     ;;
7642 *)  usedl="$undef"
7643         ld='ld'
7644     dlsrc='dl_none.xs'
7645     lddlflags=''
7646     ccdlflags=''
7647     ;;
7648 esac
7649
7650 also=''
7651 case "$usedl" in
7652 $undef)
7653         # No dynamic loading being used, so don't bother even to prompt.
7654         useshrplib='false'
7655         ;;
7656 *)      case "$useshrplib" in
7657         '')     case "$osname" in
7658                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7659                         dflt=y
7660                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7661                         ;;
7662                 next*)
7663                         case "$osvers" in
7664                         4*)     dflt=y
7665                                 also='Building a shared libperl is needed for MAB support.'
7666                                 ;;
7667                         *)      dflt=n
7668                                 ;;
7669                         esac
7670                         ;;
7671                 *)      dflt=n
7672                         ;;
7673                 esac
7674                 ;;
7675         $define|true|[Yy]*)
7676                 dflt=y
7677                 ;;
7678         *)      dflt=n
7679                 ;;
7680         esac
7681         $cat << EOM
7682
7683 The perl executable is normally obtained by linking perlmain.c with
7684 libperl${_a}, any static extensions (usually just DynaLoader), and
7685 any other libraries needed on this system (such as -lm, etc.).  Since
7686 your system supports dynamic loading, it is probably possible to build
7687 a shared libperl.$so.  If you will have more than one executable linked
7688 to libperl.$so, this will significantly reduce the size of each
7689 executable, but it may have a noticeable affect on performance.  The
7690 default is probably sensible for your system.
7691 $also
7692
7693 EOM
7694         rp="Build a shared libperl.$so (y/n)"
7695         . ./myread
7696         case "$ans" in
7697         true|$define|[Yy]*)
7698                 useshrplib='true'  ;;
7699         *)      useshrplib='false' ;;
7700         esac
7701         ;;
7702 esac
7703
7704 case "$useshrplib" in
7705 true)
7706         case "$libperl" in
7707         '')
7708                 # Figure out a good name for libperl.so.  Since it gets stored in
7709                 # a version-specific architecture-dependent library, the version
7710                 # number isn't really that important, except for making cc/ld happy.
7711                 #
7712                 # A name such as libperl.so.3.1
7713                 majmin="libperl.$so.$patchlevel.$subversion"
7714                 # A name such as libperl.so.301
7715                 majonly=`echo $patchlevel $subversion |
7716                         $awk '{printf "%d%02d", $1, $2}'`
7717                 majonly=libperl.$so.$majonly
7718                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7719                 # rely on figuring it out from the naming of libc.
7720                 case "${osname}${osvers}" in
7721                 next4*)
7722                         dflt=libperl.5.$so
7723                         # XXX How handle the --version stuff for MAB?
7724                         ;;
7725                 linux*)  # ld won't link with a bare -lperl otherwise.
7726                         dflt=libperl.$so
7727                         ;;
7728                 cygwin*) # ld links against an importlib
7729                         dflt=libperl$lib_ext
7730                         ;;
7731                 *)      # Try to guess based on whether libc has major.minor.
7732                         case "$libc" in
7733                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7734                         *libc.$so.[0-9]*) dflt=$majonly ;;
7735                         *)      dflt=libperl.$so ;;
7736                         esac
7737                         ;;
7738                 esac
7739                 ;;
7740         *)      dflt=$libperl
7741                 ;;
7742         esac
7743         cat << EOM
7744
7745 I need to select a good name for the shared libperl.  If your system uses
7746 library names with major and minor numbers, then you might want something
7747 like $majmin.  Alternatively, if your system uses a single version
7748 number for shared libraries, then you might want to use $majonly.
7749 Or, your system might be quite happy with a simple libperl.$so.
7750
7751 Since the shared libperl will get installed into a version-specific
7752 architecture-dependent directory, the version number of the shared perl
7753 library probably isn't important, so the default should be o.k.
7754
7755 EOM
7756         rp='What name do you want to give to the shared libperl?'
7757         . ./myread
7758         libperl=$ans
7759         echo "Ok, I'll use $libperl"
7760         ;;
7761 *)
7762         libperl="libperl${_a}"
7763         ;;
7764 esac
7765
7766 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7767 case "$shrpdir" in
7768 '') ;;
7769 *)      $cat >&4 <<EOM
7770 WARNING:  Use of the shrpdir variable for the installation location of
7771 the shared $libperl is not supported.  It was never documented and
7772 will not work in this version.  Let me (perlbug@perl.org)
7773 know of any problems this may cause.
7774
7775 EOM
7776         case "$shrpdir" in
7777         "$archlibexp/CORE")
7778                 $cat >&4 <<EOM
7779 But your current setting of $shrpdir is
7780 the default anyway, so it's harmless.
7781 EOM
7782                 ;;
7783         *)
7784                 $cat >&4 <<EOM
7785 Further, your current attempted setting of $shrpdir
7786 conflicts with the value of $archlibexp/CORE
7787 that installperl will use.
7788 EOM
7789                 ;;
7790         esac
7791         ;;
7792 esac
7793
7794 # How will the perl executable find the installed shared $libperl?
7795 # Add $xxx to ccdlflags.
7796 # If we can't figure out a command-line option, use $shrpenv to
7797 # set env LD_RUN_PATH.  The main perl makefile uses this.
7798 shrpdir=$archlibexp/CORE
7799 xxx=''
7800 tmp_shrpenv=''
7801 if "$useshrplib"; then
7802     case "$osname" in 
7803         aix)
7804                 # We'll set it in Makefile.SH...
7805                 ;;
7806         solaris)
7807                 xxx="-R $shrpdir"
7808                 ;;
7809         freebsd|netbsd|openbsd)
7810                 xxx="-Wl,-R$shrpdir"
7811                 ;;
7812         bsdos|linux|irix*|dec_osf)
7813                 xxx="-Wl,-rpath,$shrpdir"
7814                 ;;
7815         next)
7816                 # next doesn't like the default...
7817                 ;;
7818         beos)
7819                 # beos doesn't like the default, either.
7820                 ;;
7821         hpux*)
7822                 # hpux doesn't like the default, either.
7823                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7824                 ;;
7825         *)
7826                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7827                 ;;
7828         esac
7829         case "$xxx" in
7830         '') ;;
7831         *)      
7832                 # Only add $xxx if it isn't already in ccdlflags.
7833                 case " $ccdlflags " in
7834                 *" $xxx "*)     ;;
7835                 *)      ccdlflags="$ccdlflags $xxx"
7836                         cat <<EOM >&4
7837
7838 Adding $xxx to the flags
7839 passed to $ld so that the perl executable will find the 
7840 installed shared $libperl.
7841
7842 EOM
7843                         ;;
7844                 esac
7845                 ;;
7846         esac
7847 fi
7848 # Fix ccdlflags in AIX for building external extensions.
7849 # (For building Perl itself bare -bE:perl.exp is needed,
7850 #  Makefile.SH takes care of this.)
7851 case "$osname" in
7852 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7853 esac
7854 # Respect a hint or command-line value.
7855 case "$shrpenv" in
7856 '') shrpenv="$tmp_shrpenv" ;;
7857 esac
7858 case "$ldlibpthname" in
7859 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7860 none)   ldlibpthname='' ;;
7861 esac
7862
7863 : determine where manual pages are on this system
7864 echo " "
7865 case "$sysman" in
7866 '') 
7867         syspath='/usr/share/man/man1 /usr/man/man1'
7868         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7869         syspath="$syspath /usr/man/u_man/man1"
7870         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7871         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7872         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7873         sysman=`./loc . /usr/man/man1 $syspath`
7874         ;;
7875 esac
7876 if $test -d "$sysman"; then
7877         echo "System manual is in $sysman." >&4
7878 else
7879         echo "Could not find manual pages in source form." >&4
7880 fi
7881
7882 : determine where manual pages go
7883 set man1dir man1dir none
7884 eval $prefixit
7885 $cat <<EOM
7886
7887 $spackage has manual pages available in source form.
7888 EOM
7889 case "$nroff" in
7890 nroff)
7891         echo "However, you don't have nroff, so they're probably useless to you."
7892         case "$man1dir" in
7893         '') man1dir="none";;
7894         esac;;
7895 esac
7896 echo "If you don't want the manual sources installed, answer 'none'."
7897 case "$man1dir" in
7898 ' ') dflt=none
7899         ;;
7900 '')
7901         lookpath="$prefixexp/share/man/man1"
7902         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7903         lookpath="$lookpath $prefixexp/man/p_man/man1"
7904         lookpath="$lookpath $prefixexp/man/u_man/man1"
7905         lookpath="$lookpath $prefixexp/man/man.1"
7906         case "$sysman" in
7907         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7908         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7909         esac
7910         set dflt
7911         eval $prefixup
7912         ;;
7913 *)  dflt="$man1dir"
7914         ;;
7915 esac
7916 echo " "
7917 fn=dn+~
7918 rp="Where do the main $spackage manual pages (source) go?"
7919 . ./getfile
7920 if $test "X$man1direxp" != "X$ansexp"; then
7921         installman1dir=''
7922 fi
7923 man1dir="$ans"
7924 man1direxp="$ansexp"
7925 case "$man1dir" in
7926 '')     man1dir=' '
7927         installman1dir='';;
7928 esac
7929
7930 : Change installation prefix, if necessary.
7931 if $test X"$prefix" != X"$installprefix"; then
7932         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7933 else
7934         installman1dir="$man1direxp"
7935 fi
7936
7937 : What suffix to use on installed man pages
7938
7939 case "$man1dir" in
7940 ' ')
7941         man1ext='0'
7942         ;;
7943 *)
7944         rp="What suffix should be used for the main $spackage man pages?"
7945         case "$man1ext" in
7946         '')     case "$man1dir" in
7947                 *1)  dflt=1 ;;
7948                 *1p) dflt=1p ;;
7949                 *1pm) dflt=1pm ;;
7950                 *l) dflt=l;;
7951                 *n) dflt=n;;
7952                 *o) dflt=o;;
7953                 *p) dflt=p;;
7954                 *C) dflt=C;;
7955                 *L) dflt=L;;
7956                 *L1) dflt=L1;;
7957                 *) dflt=1;;
7958                 esac
7959                 ;;
7960         *)      dflt="$man1ext";;
7961         esac
7962         . ./myread
7963         man1ext="$ans"
7964         ;;
7965 esac
7966
7967 : see if we can have long filenames
7968 echo " "
7969 first=123456789abcdef
7970 $rm -f $first
7971 if (echo hi >$first) 2>/dev/null; then
7972         if $test -f 123456789abcde; then
7973                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7974                 val="$undef"
7975         else
7976                 echo 'You can have filenames longer than 14 characters.'>&4
7977                 val="$define"
7978         fi
7979 else
7980         $cat <<'EOM'
7981 You can't have filenames longer than 14 chars.
7982 You can't even think about them!
7983 EOM
7984         val="$undef"
7985 fi 
7986 set d_flexfnam
7987 eval $setvar
7988 $rm -rf 123456789abcde*
7989
7990 : determine where library module manual pages go
7991 set man3dir man3dir none
7992 eval $prefixit
7993 $cat <<EOM
7994
7995 $spackage has manual pages for many of the library modules.
7996 EOM
7997
7998 case "$nroff" in
7999 nroff)
8000         $cat <<'EOM'
8001 However, you don't have nroff, so they're probably useless to you.
8002 EOM
8003         case "$man3dir" in
8004         '') man3dir="none";;
8005         esac;;
8006 esac
8007
8008 case "$d_flexfnam" in
8009 undef)
8010         $cat <<'EOM'
8011 However, your system can't handle the long file names like File::Basename.3. 
8012 EOM
8013         case "$man3dir" in
8014         '') man3dir="none";;
8015         esac;;
8016 esac
8017
8018 echo "If you don't want the manual sources installed, answer 'none'."
8019 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8020 case "$man3dir" in
8021 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8022         if $test -d "$privlib/man/man3"; then
8023                 cat <<EOM >&4
8024
8025 WARNING:  Previous versions of perl installed man3 pages into
8026 $privlib/man/man3.  This version will suggest a 
8027 new default of $dflt.  
8028 EOM
8029                 tdflt=$dflt
8030                 dflt='n'
8031                 rp='Do you wish to preserve the old behavior?(y/n)'
8032                 . ./myread
8033                 case "$ans" in
8034                 y*) dflt="$privlib/man/man3" ;;
8035                 *)  dflt=$tdflt ;;
8036                 esac
8037     fi
8038         ;;
8039 *)      dflt="$man3dir" ;;
8040 esac
8041 case "$dflt" in
8042 ' ') dflt=none ;;
8043 esac
8044 echo " "
8045 fn=dn+~
8046 rp="Where do the $package library man pages (source) go?"
8047 . ./getfile
8048 man3dir="$ans"
8049 man3direxp="$ansexp"
8050 case "$man3dir" in
8051 '')     man3dir=' '
8052         installman3dir='';;
8053 esac
8054
8055 : Change installation prefix, if necessary.
8056 if $test X"$prefix" != X"$installprefix"; then
8057         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8058 else
8059         installman3dir="$man3direxp"
8060 fi
8061
8062 : What suffix to use on installed man pages
8063 case "$man3dir" in
8064 ' ')
8065         man3ext='0'
8066         ;;
8067 *)
8068         rp="What suffix should be used for the $package library man pages?"
8069         case "$man3ext" in
8070         '')     case "$man3dir" in
8071                 *3)  dflt=3 ;;
8072                 *3p) dflt=3p ;;
8073                 *3pm) dflt=3pm ;;
8074                 *l) dflt=l;;
8075                 *n) dflt=n;;
8076                 *o) dflt=o;;
8077                 *p) dflt=p;;
8078                 *C) dflt=C;;
8079                 *L) dflt=L;;
8080                 *L3) dflt=L3;;
8081                 *) dflt=3;;
8082                 esac
8083                 ;;
8084         *)      dflt="$man3ext";;
8085         esac
8086         . ./myread
8087         man3ext="$ans"
8088         ;;
8089 esac
8090
8091 : see if we have to deal with yellow pages, now NIS.
8092 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8093         if $test -f /usr/etc/nibindd; then
8094                 echo " "
8095                 echo "I'm fairly confident you're on a NeXT."
8096                 echo " "
8097                 rp='Do you get the hosts file via NetInfo?'
8098                 dflt=y
8099                 case "$hostcat" in
8100                 nidump*) ;;
8101                 '') ;;
8102                 *) dflt=n;;
8103                 esac
8104                 . ./myread
8105                 case "$ans" in
8106                 y*) hostcat='nidump hosts .';;
8107                 *)      case "$hostcat" in
8108                         nidump*) hostcat='';;
8109                         esac
8110                         ;;
8111                 esac
8112         fi
8113         case "$hostcat" in
8114         nidump*) ;;
8115         *)
8116                 case "$hostcat" in
8117                 *ypcat*) dflt=y;;
8118                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8119                                 dflt=y
8120                         else
8121                                 dflt=n
8122                         fi;;
8123                 *) dflt=n;;
8124                 esac
8125                 echo " "
8126                 rp='Are you getting the hosts file via yellow pages?'
8127                 . ./myread
8128                 case "$ans" in
8129                 y*) hostcat='ypcat hosts';;
8130                 *) hostcat='cat /etc/hosts';;
8131                 esac
8132                 ;;
8133         esac
8134 fi
8135 case "$hostcat" in
8136 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8137 esac
8138 case "$groupcat" in
8139 '') test -f /etc/group && groupcat='cat /etc/group';;
8140 esac
8141 case "$passcat" in
8142 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8143 esac
8144
8145 : now get the host name
8146 echo " "
8147 echo "Figuring out host name..." >&4
8148 case "$myhostname" in
8149 '') cont=true
8150         echo 'Maybe "hostname" will work...'
8151         if tans=`sh -c hostname 2>&1` ; then
8152                 myhostname=$tans
8153                 phostname=hostname
8154                 cont=''
8155         fi
8156         ;;
8157 *) cont='';;
8158 esac
8159 if $test "$cont"; then
8160         if ./xenix; then
8161                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8162                 if tans=`cat /etc/systemid 2>&1` ; then
8163                         myhostname=$tans
8164                         phostname='cat /etc/systemid'
8165                         echo "Whadyaknow.  Xenix always was a bit strange..."
8166                         cont=''
8167                 fi
8168         elif $test -r /etc/systemid; then
8169                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8170         fi
8171 fi
8172 if $test "$cont"; then
8173         echo 'No, maybe "uuname -l" will work...'
8174         if tans=`sh -c 'uuname -l' 2>&1` ; then
8175                 myhostname=$tans
8176                 phostname='uuname -l'
8177         else
8178                 echo 'Strange.  Maybe "uname -n" will work...'
8179                 if tans=`sh -c 'uname -n' 2>&1` ; then
8180                         myhostname=$tans
8181                         phostname='uname -n'
8182                 else
8183                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8184                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8185                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8186                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8187                         else
8188                                 case "$myhostname" in
8189                                 '') echo "Does this machine have an identity crisis or something?"
8190                                         phostname='';;
8191                                 *)
8192                                         echo "Well, you said $myhostname before..."
8193                                         phostname='echo $myhostname';;
8194                                 esac
8195                         fi
8196                 fi
8197         fi
8198 fi
8199 case "$myhostname" in
8200 '') myhostname=noname ;;
8201 esac
8202 : you do not want to know about this
8203 set $myhostname
8204 myhostname=$1
8205
8206 : verify guess
8207 if $test "$myhostname" ; then
8208         dflt=y
8209         rp='Your host name appears to be "'$myhostname'".'" Right?"
8210         . ./myread
8211         case "$ans" in
8212         y*) ;;
8213         *) myhostname='';;
8214         esac
8215 fi
8216
8217 : bad guess or no guess
8218 while $test "X$myhostname" = X ; do
8219         dflt=''
8220         rp="Please type the (one word) name of your host:"
8221         . ./myread
8222         myhostname="$ans"
8223 done
8224
8225 : translate upper to lower if necessary
8226 case "$myhostname" in
8227 *[A-Z]*)
8228         echo "(Normalizing case in your host name)"
8229         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8230         ;;
8231 esac
8232
8233 case "$myhostname" in
8234 *.*)
8235         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8236         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8237         echo "(Trimming domain name from host name--host name is now $myhostname)"
8238         ;;
8239 *) case "$mydomain" in
8240         '')
8241                 {
8242                         test "X$hostcat" = "Xypcat hosts" &&
8243                         ypmatch "$myhostname" hosts 2>/dev/null |\
8244                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8245                         $test -s hosts
8246                 } || {
8247                         test "X$hostcat" != "X" &&
8248                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8249                                         /[       ]$myhostname[  . ]/p" > hosts
8250                 }
8251                 tmp_re="[       . ]"
8252                 if $test -f hosts; then
8253                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8254                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8255                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8256                                 hosts | $sort | $uniq | \
8257                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8258                         case `$echo X$dflt` in
8259                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8260                                 dflt=.
8261                                 ;;
8262                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8263                                 ;;
8264                         esac
8265                 else
8266                         echo "(I cannot locate a hosts database anywhere)"
8267                         dflt=.
8268                 fi
8269                 case "$dflt" in
8270                 .)
8271                         tans=`./loc resolv.conf X /etc /usr/etc`
8272                         if $test -f "$tans"; then
8273                                 echo "(Attempting domain name extraction from $tans)"
8274                                 dflt=.`$sed -n -e 's/   / /g' \
8275                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8276                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8277                                 case "$dflt" in
8278                                 .) dflt=.`$sed -n -e 's/        / /g' \
8279                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8280                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8281                                         ;;
8282                                 esac
8283                         fi
8284                         ;;
8285                 esac
8286                 case "$dflt" in
8287                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8288                         dflt=.`sh -c domainname 2>/dev/null`
8289                         case "$dflt" in
8290                         '') dflt='.';;
8291                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8292                         esac
8293                         ;;
8294                 esac
8295                 case "$dflt$osname" in
8296                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8297                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8298                         ;;
8299                 esac
8300                 case "$dflt" in
8301                 .) echo "(Lost all hope -- silly guess then)"
8302                         dflt='.nonet'
8303                         ;;
8304                 esac
8305                 $rm -f hosts
8306                 ;;
8307         *) dflt="$mydomain";;
8308         esac;;
8309 esac
8310 echo " "
8311 rp="What is your domain name?"
8312 . ./myread
8313 tans="$ans"
8314 case "$ans" in
8315 '') ;;
8316 .*) ;;
8317 *) tans=".$tans";;
8318 esac
8319 mydomain="$tans"
8320
8321 : translate upper to lower if necessary
8322 case "$mydomain" in
8323 *[A-Z]*)
8324         echo "(Normalizing case in your domain name)"
8325         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8326         ;;
8327 esac
8328
8329 : a little sanity check here
8330 case "$phostname" in
8331 '') ;;
8332 *)
8333         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8334         $myhostname$mydomain|$myhostname) ;;
8335         *)
8336                 case "$phostname" in
8337                 sed*)
8338                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8339                         ;;
8340                 *)
8341                         echo "(That doesn't agree with your $phostname command, by the way.)"
8342                         ;;
8343                 esac
8344         ;;
8345         esac
8346         ;;
8347 esac
8348
8349 $cat <<EOM
8350
8351 I need to get your e-mail address in Internet format if possible, i.e.
8352 something like user@host.domain. Please answer accurately since I have
8353 no easy means to double check it. The default value provided below
8354 is most probably close to reality but may not be valid from outside
8355 your organization...
8356
8357 EOM
8358 cont=x
8359 while test "$cont"; do
8360         case "$cf_email" in
8361         '') dflt="$cf_by@$myhostname$mydomain";;
8362         *) dflt="$cf_email";;
8363         esac
8364         rp='What is your e-mail address?'
8365         . ./myread
8366         cf_email="$ans"
8367         case "$cf_email" in
8368         *@*.*) cont='' ;;
8369         *)
8370                 rp='Address does not look like an Internet one.  Use it anyway?'
8371                 case "$fastread" in
8372                 yes) dflt=y ;;
8373                 *) dflt=n ;;
8374                 esac
8375                 . ./myread
8376                 case "$ans" in
8377                 y*) cont='' ;;
8378                 *) echo " " ;;
8379                 esac
8380                 ;;
8381         esac
8382 done
8383
8384 $cat <<EOM
8385
8386 If you or somebody else will be maintaining perl at your site, please
8387 fill in the correct e-mail address here so that they may be contacted
8388 if necessary. Currently, the "perlbug" program included with perl
8389 will send mail to this address in addition to perlbug@perl.org. You may
8390 enter "none" for no administrator.
8391
8392 EOM
8393 case "$perladmin" in
8394 '') dflt="$cf_email";;
8395 *) dflt="$perladmin";;
8396 esac
8397 rp='Perl administrator e-mail address'
8398 . ./myread
8399 perladmin="$ans"
8400
8401 : determine whether to only install version-specific parts.
8402 echo " "
8403 $cat <<EOM
8404 Do you want to install only the version-specific parts of the perl
8405 distribution?  Usually you do *not* want to do this.
8406 EOM
8407 case "$versiononly" in
8408 "$define"|[Yy]*|true) dflt='y' ;;
8409 *) dflt='n';
8410 esac
8411 rp="Do you want to install only the version-specific parts of perl?"
8412 . ./myread
8413 case "$ans" in
8414 [yY]*)  val="$define";;
8415 *)      val="$undef" ;;
8416 esac
8417 set versiononly
8418 eval $setvar
8419
8420 case "$versiononly" in
8421 "$define") inc_version_list=''
8422            inc_version_list_init=0
8423            ;;
8424 esac
8425
8426 : figure out how to guarantee perl startup
8427 case "$startperl" in
8428 '')
8429         case "$sharpbang" in
8430         *!)
8431                 $cat <<EOH
8432
8433 I can use the #! construct to start perl on your system. This will
8434 make startup of perl scripts faster, but may cause problems if you
8435 want to share those scripts and perl is not in a standard place
8436 ($binexp/perl) on all your platforms. The alternative is to force
8437 a shell by starting the script with a single ':' character.
8438
8439 EOH
8440                 case "$versiononly" in
8441                 "$define")      dflt="$binexp/perl$version";;  
8442                 *)              dflt="$binexp/perl";;
8443                 esac
8444                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8445                 . ./myread
8446                 case "$ans" in
8447                 none)   startperl=": # use perl";;
8448                 *)      startperl="#!$ans"
8449                         if $test 30 -lt `echo "$ans" | wc -c`; then
8450                                 $cat >&4 <<EOM
8451
8452 WARNING:  Some systems limit the #! command to 32 characters.
8453 If you experience difficulty running Perl scripts with #!, try
8454 installing Perl in a directory with a shorter pathname.
8455
8456 EOM
8457                         fi ;;
8458                 esac
8459                 ;;
8460         *) startperl=": # use perl"
8461                 ;;
8462         esac
8463         ;;
8464 esac
8465 echo "I'll use $startperl to start perl scripts."
8466
8467 : figure best path for perl in scripts
8468 case "$perlpath" in
8469 '')
8470         case "$versiononly" in
8471         "$define")      perlpath="$binexp/perl$version";;
8472         *)              perlpath="$binexp/perl";;
8473         esac
8474         case "$startperl" in
8475         *!*) ;;
8476         *)
8477                 $cat <<EOH
8478
8479 I will use the "eval 'exec'" idiom to start Perl on your system.
8480 I can use the full path of your Perl binary for this purpose, but
8481 doing so may cause problems if you want to share those scripts and
8482 Perl is not always in a standard place ($binexp/perl).
8483
8484 EOH
8485                 dflt="$binexp/perl"
8486                 rp="What path shall I use in \"eval 'exec'\"?"
8487                 . ./myread
8488                 perlpath="$ans"
8489                 ;;
8490         esac
8491         ;;
8492 esac
8493 case "$startperl" in
8494 *!*)    ;;
8495 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8496 esac
8497
8498 : determine where public executable scripts go
8499 set scriptdir scriptdir
8500 eval $prefixit
8501 case "$scriptdir" in
8502 '')
8503         dflt="$bin"
8504         : guess some guesses
8505         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8506         $test -d /usr/share/bin     && dflt=/usr/share/bin
8507         $test -d /usr/local/script  && dflt=/usr/local/script
8508         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8509         $test -d $prefixexp/script  && dflt=$prefixexp/script
8510         set dflt
8511         eval $prefixup
8512         ;;
8513 *)  dflt="$scriptdir"
8514         ;;
8515 esac
8516 $cat <<EOM
8517  
8518 Some installations have a separate directory just for executable scripts so
8519 that they can mount it across multiple architectures but keep the scripts in
8520 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8521 Or you might just lump your scripts in with all your other executables.
8522  
8523 EOM
8524 fn=d~
8525 rp='Where do you keep publicly executable scripts?'
8526 . ./getfile
8527 if $test "X$ansexp" != "X$scriptdirexp"; then
8528         installscript=''
8529 fi
8530 scriptdir="$ans"
8531 scriptdirexp="$ansexp"
8532 : Change installation prefix, if necessary.
8533 if $test X"$prefix" != X"$installprefix"; then
8534         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8535 else
8536         installscript="$scriptdirexp"
8537 fi
8538
8539 : determine where add-on public executables go
8540 case "$sitebin" in
8541 '')     dflt=$siteprefix/bin ;;
8542 *)      dflt=$sitebin ;;
8543 esac
8544 fn=d~
8545 rp='Pathname where the add-on public executables should be installed?'
8546 . ./getfile
8547 sitebin="$ans"
8548 sitebinexp="$ansexp"
8549 : Change installation prefix, if necessary.
8550 if $test X"$prefix" != X"$installprefix"; then
8551         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8552 else
8553         installsitebin="$sitebinexp"
8554 fi
8555
8556 : determine where add-on html pages go
8557 : There is no standard location, so try to copy the previously-selected
8558 : directory structure for the core html pages.
8559 case "$sitehtml1dir" in
8560 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8561 *)     dflt=$sitehtml1dir ;;
8562 esac
8563 case "$dflt" in
8564 ''|' ') dflt=none ;;
8565 esac
8566 fn=dn+~
8567 rp='Pathname where the site-specific html pages should be installed?'
8568 . ./getfile
8569 sitehtml1dir="$ans"
8570 sitehtml1direxp="$ansexp"
8571 : Change installation prefix, if necessary.
8572 if $test X"$prefix" != X"$installprefix"; then
8573         installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
8574 else
8575         installsitehtml1dir="$sitehtml1direxp"
8576 fi
8577
8578 : determine where add-on library html pages go
8579 : There is no standard location, so try to copy the previously-selected
8580 : directory structure for the core html pages.
8581 case "$sitehtml3dir" in
8582 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8583 *)     dflt=$sitehtml3dir ;;
8584 esac
8585 case "$dflt" in
8586 ''|' ') dflt=none ;;
8587 esac
8588 fn=dn+~
8589 rp='Pathname where the site-specific library html pages should be installed?'
8590 . ./getfile
8591 sitehtml3dir="$ans"
8592 sitehtml3direxp="$ansexp"
8593 : Change installation prefix, if necessary.
8594 if $test X"$prefix" != X"$installprefix"; then
8595         installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
8596 else
8597         installsitehtml3dir="$sitehtml3direxp"
8598 fi
8599
8600 : determine where add-on manual pages go
8601 case "$siteman1dir" in
8602 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8603 *)      dflt=$siteman1dir ;;
8604 esac
8605 case "$dflt" in
8606 ''|' ') dflt=none ;;
8607 esac
8608 fn=dn+~
8609 rp='Pathname where the site-specific manual pages should be installed?'
8610 . ./getfile
8611 siteman1dir="$ans"
8612 siteman1direxp="$ansexp"
8613 : Change installation prefix, if necessary.
8614 if $test X"$prefix" != X"$installprefix"; then
8615         installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
8616 else
8617         installsiteman1dir="$siteman1direxp"
8618 fi
8619
8620 : determine where add-on library man pages go
8621 case "$siteman3dir" in
8622 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8623 *)      dflt=$siteman3dir ;;
8624 esac
8625 case "$dflt" in
8626 ''|' ') dflt=none ;;
8627 esac
8628 fn=dn+~
8629 rp='Pathname where the site-specific library manual pages should be installed?'
8630 . ./getfile
8631 siteman3dir="$ans"
8632 siteman3direxp="$ansexp"
8633 : Change installation prefix, if necessary.
8634 if $test X"$prefix" != X"$installprefix"; then
8635         installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
8636 else
8637         installsiteman3dir="$siteman3direxp"
8638 fi
8639
8640 : determine where add-on public executable scripts go
8641 case "$sitescript" in
8642 '')     dflt=$siteprefix/script
8643         $test -d $dflt || dflt=$sitebin ;;
8644 *)  dflt="$sitescript" ;;
8645 esac
8646 fn=d~+
8647 rp='Pathname where add-on public executable scripts should be installed?'
8648 . ./getfile
8649 sitescript="$ans"
8650 sitescriptexp="$ansexp"
8651 : Change installation prefix, if necessary.
8652 if $test X"$prefix" != X"$installprefix"; then
8653         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8654 else
8655         installsitescript="$sitescriptexp"
8656 fi
8657
8658 case "$usefaststdio" in
8659 $define|true|[yY]*|'')
8660         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8661         case "$xversion" in
8662         [68])   dflt='y' ;;
8663         *)      dflt='n' ;;
8664         esac
8665         ;;
8666 *) dflt='n';;
8667 esac
8668 cat <<EOM
8669
8670 Perl can be built to use 'fast stdio', which means using the stdio
8671 library but also directly manipulating the stdio buffers to enable
8672 faster I/O.  Using stdio is better for backward compatibility (especially
8673 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8674 interface has been preferred instead of stdio.
8675
8676 If this doesn't make any sense to you, just accept the default '$dflt'.
8677 EOM
8678 rp='Use the "fast stdio" if available?'
8679 . ./myread
8680 case "$ans" in
8681 y|Y)    val="$define" ;;     
8682 *)      val="$undef" ;;
8683 esac
8684 set usefaststdio
8685 eval $setvar
8686
8687
8688 : define an is-a-typedef? function
8689 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8690 case "$inclist" in
8691 "") inclist="sys/types.h";;
8692 esac;
8693 eval "varval=\$$var";
8694 case "$varval" in
8695 "")
8696         $rm -f temp.c;
8697         for inc in $inclist; do
8698                 echo "#include <$inc>" >>temp.c;
8699         done;
8700         echo "#ifdef $type" >> temp.c;
8701         echo "printf(\"We have $type\");" >> temp.c;
8702         echo "#endif" >> temp.c;
8703         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8704         if $contains $type temp.E >/dev/null 2>&1; then
8705                 eval "$var=\$type";
8706         else
8707                 eval "$var=\$def";
8708         fi;
8709         $rm -f temp.?;;
8710 *) eval "$var=\$varval";;
8711 esac'
8712
8713 : define an is-a-typedef? function that prompts if the type is not available.
8714 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8715 case "$inclist" in
8716 "") inclist="sys/types.h";;
8717 esac;
8718 eval "varval=\$$var";
8719 case "$varval" in
8720 "")
8721         $rm -f temp.c;
8722         for inc in $inclist; do
8723                 echo "#include <$inc>" >>temp.c;
8724         done;
8725         echo "#ifdef $type" >> temp.c;
8726         echo "printf(\"We have $type\");" >> temp.c;
8727         echo "#endif" >> temp.c;
8728         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8729         echo " " ;
8730         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8731         if $contains $type temp.E >/dev/null 2>&1; then
8732                 echo "$type found." >&4;
8733                 eval "$var=\$type";
8734         else
8735                 echo "$type NOT found." >&4;
8736                 dflt="$def";
8737                 . ./myread ;
8738                 eval "$var=\$ans";
8739         fi;
8740         $rm -f temp.?;;
8741 *) eval "$var=\$varval";;
8742 esac'
8743
8744 : see what type lseek is declared as in the kernel
8745 rp="What is the type used for lseek's offset on this system?"
8746 set off_t lseektype long stdio.h sys/types.h
8747 eval $typedef_ask
8748
8749 echo " "
8750 echo "Checking to see how big your file offsets are..." >&4
8751 $cat >try.c <<EOCP
8752 #include <sys/types.h>
8753 #include <stdio.h>
8754 int main()
8755 {
8756     printf("%d\n", (int)sizeof($lseektype));
8757     return(0); 
8758 }
8759 EOCP
8760 set try
8761 if eval $compile_ok; then
8762         lseeksize=`$run ./try`
8763         echo "Your file offsets are $lseeksize bytes long."
8764 else
8765         dflt=$longsize
8766         echo " "
8767         echo "(I can't seem to compile the test program.  Guessing...)"
8768         rp="What is the size of your file offsets (in bytes)?"
8769         . ./myread
8770         lseeksize="$ans"
8771 fi
8772 $rm -f try.c try
8773
8774 : see what type file positions are declared as in the library
8775 rp="What is the type for file position used by fsetpos()?"
8776 set fpos_t fpostype long stdio.h sys/types.h
8777 eval $typedef_ask
8778
8779 echo " "
8780 case "$fpostype" in
8781 *_t) zzz="$fpostype"    ;;
8782 *)   zzz="fpos_t"       ;;
8783 esac
8784 echo "Checking the size of $zzz..." >&4 
8785 cat > try.c <<EOCP
8786 #include <sys/types.h>
8787 #include <stdio.h>
8788 #$i_stdlib I_STDLIB
8789 #ifdef I_STDLIB
8790 #include <stdlib.h>
8791 #endif
8792 int main() {
8793     printf("%d\n", (int)sizeof($fpostype));
8794     exit(0);
8795 }
8796 EOCP
8797 set try
8798 if eval $compile_ok; then
8799         yyy=`$run ./try`
8800         case "$yyy" in
8801         '')     fpossize=4
8802                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8803                 ;;
8804         *)      fpossize=$yyy
8805                 echo "Your $zzz is $fpossize bytes long."
8806                 ;;
8807         esac
8808 else
8809         dflt="$longsize"
8810         echo " " >&4
8811         echo "(I can't compile the test program.  Guessing...)" >&4
8812         rp="What is the size of your file positions (in bytes)?"
8813         . ./myread
8814         fpossize="$ans"
8815 fi
8816
8817 # Backward compatibility (uselfs is deprecated).
8818 case "$uselfs" in
8819 "$define"|true|[yY]*)
8820         cat <<EOM >&4
8821
8822 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8823 EOM
8824         uselargefiles="$define"
8825         ;;
8826 esac                          
8827
8828 case "$lseeksize:$fpossize" in
8829 8:8) cat <<EOM
8830
8831 You can have files larger than 2 gigabytes.
8832 EOM
8833    val="$define" ;;
8834 *)    case "$uselargefiles" in
8835    "$undef"|false|[nN]*) dflt='n' ;;
8836    *)   dflt='y' ;;
8837    esac
8838    cat <<EOM
8839
8840 Perl can be built to understand large files (files larger than 2 gigabytes)
8841 on some systems.  To do so, Configure can be run with -Duselargefiles.
8842
8843 If this doesn't make any sense to you, just accept the default '$dflt'.
8844 EOM
8845    rp='Try to understand large files, if available?'
8846    . ./myread
8847    case "$ans" in
8848    y|Y)         val="$define" ;;
8849    *)           val="$undef"  ;;
8850    esac
8851    ;;
8852 esac
8853 set uselargefiles
8854 eval $setvar
8855 : Look for a hint-file generated 'call-back-unit'.  If the
8856 : user has specified that a large files perl is to be built,
8857 : we may need to set or change some other defaults.
8858 if $test -f uselargefiles.cbu; then
8859         echo "Your platform has some specific hints regarding large file builds, using them..."
8860         . ./uselargefiles.cbu
8861 fi
8862 case "$uselargefiles" in
8863 "$define")
8864         if $test -f uselargefiles.cbu; then
8865                 echo " "
8866                 echo "Rechecking to see how big your file offsets are..." >&4
8867                 $cat >try.c <<EOCP
8868 #include <sys/types.h>
8869 #include <stdio.h>
8870 int main()
8871 {
8872     printf("%d\n", (int)sizeof($lseektype));
8873     return(0); 
8874 }
8875 EOCP
8876                 set try
8877                 if eval $compile_ok; then
8878                         lseeksize=`$run ./try`
8879                         $echo "Your file offsets are now $lseeksize bytes long."
8880                 else
8881                         dflt="$lseeksize"
8882                         echo " "
8883                         echo "(I can't seem to compile the test program.  Guessing...)"
8884                         rp="What is the size of your file offsets (in bytes)?"
8885                         . ./myread
8886                         lseeksize="$ans"
8887                 fi
8888                 case "$fpostype" in
8889                 *_t) zzz="$fpostype"    ;;
8890                 *)   zzz="fpos_t"       ;;
8891                 esac
8892                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8893                 $cat > try.c <<EOCP
8894 #include <sys/types.h>
8895 #include <stdio.h>
8896 #$i_stdlib I_STDLIB
8897 #ifdef I_STDLIB
8898 #include <stdlib.h>
8899 #endif
8900 int main() {
8901     printf("%d\n", (int)sizeof($fpostype));
8902     return(0);
8903 }
8904 EOCP
8905                 set try
8906                 if eval $compile_ok; then
8907                         yyy=`$run ./try`
8908                         dflt="$lseeksize"
8909                         case "$yyy" in
8910                         '')     echo " "
8911                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8912                                 ;;
8913                         *)      fpossize=$yyy
8914                                 echo " $fpossize bytes." >&4
8915                                 ;;
8916                         esac
8917                 else
8918                         dflt="$fpossize"
8919                         echo " "
8920                         echo "(I can't compile the test program.  Guessing...)" >&4
8921                         rp="What is the size of your file positions (in bytes)?"
8922                         . ./myread
8923                         fpossize="$ans"
8924                 fi
8925                 $rm -f try.c try
8926         fi
8927         ;;
8928 esac
8929
8930 case "$vendorprefix" in
8931 '')     d_vendorbin="$undef"
8932         vendorbin=''
8933         vendorbinexp=''
8934         ;;
8935 *)      d_vendorbin="$define"
8936         : determine where vendor-supplied executables go.
8937         case "$vendorbin" in
8938         '') dflt=$vendorprefix/bin ;;
8939         *)      dflt="$vendorbin" ;;
8940         esac
8941         fn=d~+
8942         rp='Pathname for the vendor-supplied executables directory?'
8943         . ./getfile
8944         vendorbin="$ans"
8945         vendorbinexp="$ansexp"
8946         ;;
8947 esac
8948 : Change installation prefix, if necessary.
8949 if $test X"$prefix" != X"$installprefix"; then
8950         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8951 else
8952         installvendorbin="$vendorbinexp"
8953 fi
8954
8955 case "$vendorprefix" in
8956 '')     vendorhtml1dir=''
8957         vendorhtml1direxp=''
8958         ;;
8959 *)      : determine where vendor-supplied html pages go.
8960         : There is no standard location, so try to copy the previously-selected
8961         : directory structure for the core html pages.
8962         : XXX Better default suggestions would be welcome.
8963         case "$vendorhtml1dir" in
8964         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8965         *)      dflt=$vendorhtml1dir ;;
8966         esac
8967         case "$dflt" in
8968         ''|' ') dflt=none ;;
8969         esac
8970         fn=dn+~
8971         rp='Pathname for the vendor-supplied html pages?'
8972         . ./getfile
8973         vendorhtml1dir="$ans"
8974         vendorhtml1direxp="$ansexp"
8975         ;;
8976 esac
8977 : Use ' ' for none so value is preserved next time through Configure
8978 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
8979 : Change installation prefix, if necessary.
8980 if $test X"$prefix" != X"$installprefix"; then
8981         installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
8982 else
8983         installvendorhtml1dir="$vendorhtml1direxp"
8984 fi
8985
8986 case "$vendorprefix" in
8987 '')     vendorhtml3dir=''
8988         vendorhtml3direxp=''
8989         ;;
8990 *)      : determine where vendor-supplied module html pages go.
8991         : There is no standard location, so try to copy the previously-selected
8992         : directory structure for the core html pages.
8993         : XXX Better default suggestions would be welcome.
8994         case "$vendorhtml3dir" in
8995         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8996         *)      dflt=$vendorhtml3dir ;;
8997         esac
8998         case "$dflt" in
8999         ''|' ') dflt=none ;;
9000         esac
9001         fn=dn+~
9002         rp='Pathname for the vendor-supplied html pages?'
9003         . ./getfile
9004         vendorhtml3dir="$ans"
9005         vendorhtml3direxp="$ansexp"
9006         ;;
9007 esac
9008 : Use ' ' for none so value is preserved next time through Configure
9009 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9010 : Change installation prefix, if necessary.
9011 if $test X"$prefix" != X"$installprefix"; then
9012         installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
9013 else
9014         installvendorhtml3dir="$vendorhtml3direxp"
9015 fi
9016
9017 case "$vendorprefix" in
9018 '')     vendorman1dir=''
9019         vendorman1direxp=''
9020         ;;
9021 *)      : determine where vendor-supplied manual pages go.
9022         case "$vendorman1dir" in
9023         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9024         *)      dflt=$vendorman1dir ;;
9025         esac
9026         case "$dflt" in
9027         ''|' ') dflt=none ;;
9028         esac
9029         fn=nd~+
9030         rp='Pathname for the vendor-supplied manual section 1 pages?'
9031         . ./getfile
9032         vendorman1dir="$ans"
9033         vendorman1direxp="$ansexp"
9034         ;;
9035 esac
9036 : Use ' ' for none so value is preserved next time through Configure
9037 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9038 : Change installation prefix, if necessary.
9039 if $test X"$prefix" != X"$installprefix"; then
9040         installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
9041 else
9042         installvendorman1dir="$vendorman1direxp"
9043 fi
9044
9045 case "$vendorprefix" in
9046 '')     vendorman3dir=''
9047         vendorman3direxp=''
9048         ;;
9049 *)      : determine where vendor-supplied module manual pages go.
9050         case "$vendorman3dir" in
9051         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9052         *)      dflt=$vendorman3dir ;;
9053         esac
9054         case "$dflt" in
9055         ''|' ') dflt=none ;;
9056         esac
9057         fn=nd~+
9058         rp='Pathname for the vendor-supplied manual section 3 pages?'
9059         . ./getfile
9060         vendorman3dir="$ans"
9061         vendorman3direxp="$ansexp"
9062         ;;
9063 esac
9064 : Use ' ' for none so value is preserved next time through Configure
9065 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9066 : Change installation prefix, if necessary.
9067 if $test X"$prefix" != X"$installprefix"; then
9068         installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
9069 else
9070         installvendorman3dir="$vendorman3direxp"
9071 fi
9072
9073 case "$vendorprefix" in
9074 '')     d_vendorscript="$undef"
9075         vendorscript=''
9076         vendorscriptexp=''
9077         ;;
9078 *)      d_vendorscript="$define"
9079         : determine where vendor-supplied scripts go.
9080         case "$vendorscript" in
9081         '')     dflt=$vendorprefix/script
9082                 $test -d $dflt || dflt=$vendorbin ;;
9083         *)  dflt="$vendorscript" ;;
9084         esac
9085         $cat <<EOM
9086
9087 The installation process will create a directory for 
9088 vendor-supplied scripts.
9089
9090 EOM
9091         fn=d~+
9092         rp='Pathname for the vendor-supplied scripts directory?'
9093         . ./getfile
9094         vendorscript="$ans"
9095         vendorscriptexp="$ansexp"
9096         ;;
9097 esac
9098 : Change installation prefix, if necessary.
9099 if $test X"$prefix" != X"$installprefix"; then
9100         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9101 else
9102         installvendorscript="$vendorscriptexp"
9103 fi
9104
9105 : see if qgcvt exists
9106 set qgcvt d_qgcvt
9107 eval $inlibc
9108
9109 echo " "
9110
9111 if $test X"$d_longdbl" = X"$define"; then
9112
9113 echo "Checking how to print long doubles..." >&4
9114
9115 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9116         $cat >try.c <<'EOCP'
9117 #include <sys/types.h>
9118 #include <stdio.h>
9119 int main() {
9120   double d = 123.456;
9121   printf("%.3f\n", d);
9122 }
9123 EOCP
9124         set try
9125         if eval $compile; then
9126                 yyy=`$run ./try`
9127                 case "$yyy" in
9128                 123.456)
9129                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9130                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9131                         echo "We will use %f."
9132                         ;;
9133                 esac
9134         fi
9135 fi
9136
9137 if $test X"$sPRIfldbl" = X; then
9138         $cat >try.c <<'EOCP'
9139 #include <sys/types.h>
9140 #include <stdio.h>
9141 int main() {
9142   long double d = 123.456;
9143   printf("%.3Lf\n", d);
9144 }
9145 EOCP
9146         set try
9147         if eval $compile; then
9148                 yyy=`$run ./try`
9149                 case "$yyy" in
9150                 123.456)
9151                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9152                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9153                         echo "We will use %Lf."
9154                         ;;
9155                 esac
9156         fi
9157 fi
9158
9159 if $test X"$sPRIfldbl" = X; then
9160         $cat >try.c <<'EOCP'
9161 #include <sys/types.h>
9162 #include <stdio.h>
9163 int main() {
9164   long double d = 123.456;
9165   printf("%.3llf\n", d);
9166 }
9167 EOCP
9168         set try
9169         if eval $compile; then
9170                 yyy=`$run ./try`
9171                 case "$yyy" in
9172                 123.456)
9173                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9174                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9175                         echo "We will use %llf."
9176                         ;;
9177                 esac
9178         fi
9179 fi
9180
9181 if $test X"$sPRIfldbl" = X; then
9182         $cat >try.c <<'EOCP'
9183 #include <sys/types.h>
9184 #include <stdio.h>
9185 int main() {
9186   long double d = 123.456;
9187   printf("%.3lf\n", d);
9188 }
9189 EOCP
9190         set try
9191         if eval $compile; then
9192                 yyy=`$run ./try`
9193                 case "$yyy" in
9194                 123.456)
9195                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9196                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9197                         echo "We will use %lf."
9198                         ;;
9199                 esac
9200         fi
9201 fi
9202
9203 if $test X"$sPRIfldbl" = X; then
9204         echo "Cannot figure out how to print long doubles." >&4
9205 else
9206         sSCNfldbl=$sPRIfldbl    # expect consistency
9207 fi
9208
9209 $rm -f try try.*
9210
9211 fi # d_longdbl
9212
9213 case "$sPRIfldbl" in
9214 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9215         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9216         d_SCNfldbl="$undef";
9217         ;;
9218 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9219         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9220         d_SCNfldbl="$define";
9221         ;;
9222 esac
9223
9224 : Check how to convert floats to strings.
9225
9226 if test "X$d_Gconvert" = X; then
9227
9228 echo " "
9229 echo "Checking for an efficient way to convert floats to strings."
9230 echo " " > try.c
9231 case "$uselongdouble" in
9232 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9233 esac
9234 case "$d_longdbl" in
9235 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9236 esac
9237 case "$d_PRIgldbl" in
9238 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9239 esac
9240 $cat >>try.c <<EOP
9241 #ifdef TRY_gconvert
9242 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9243 char *myname = "gconvert";
9244 #endif
9245 #ifdef TRY_gcvt
9246 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9247 char *myname = "gcvt";
9248 #endif
9249 #ifdef TRY_qgcvt
9250 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9251 char *myname = "qgcvt";
9252 #define DOUBLETYPE long double
9253 #endif
9254 #ifdef TRY_sprintf
9255 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9256 #ifdef HAS_PRIgldbl
9257 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9258 #else
9259 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9260 #endif
9261 #else
9262 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9263 #endif
9264 char *myname = "sprintf";
9265 #endif
9266
9267 #ifndef DOUBLETYPE
9268 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9269 #define DOUBLETYPE long double
9270 #else
9271 #define DOUBLETYPE double
9272 #endif
9273 #endif
9274
9275 #include <stdio.h>
9276
9277 #define I_STDLIB $i_stdlib
9278 #ifdef I_STDLIB
9279 #include <stdlib.h>
9280 #endif
9281
9282 int
9283 checkit(expect, got)
9284 char *expect;
9285 char *got;
9286 {
9287     if (strcmp(expect, got)) {
9288                 printf("%s oddity:  Expected %s, got %s\n",
9289                         myname, expect, got);
9290                 exit(1);
9291         }
9292 }
9293
9294 int main()
9295
9296         char buf[64]; 
9297         buf[63] = '\0';
9298
9299         /* This must be 1st test on (which?) platform */
9300         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9301         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9302         checkit("0.1", buf);
9303
9304         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9305         checkit("0.01", buf);
9306
9307         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9308         checkit("0.001", buf);
9309
9310         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9311         checkit("0.0001", buf);
9312
9313         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9314         if (strlen(buf) > 5)
9315             checkit("9e-005", buf); /* for Microsoft ?? */
9316         else
9317             checkit("9e-05", buf);
9318
9319         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9320         checkit("1", buf);
9321
9322         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9323         checkit("1.1", buf);
9324
9325         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9326         checkit("1.01", buf);
9327
9328         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9329         checkit("1.001", buf);
9330
9331         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9332         checkit("1.0001", buf);
9333
9334         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9335         checkit("1.00001", buf);
9336
9337         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9338         checkit("1.000001", buf);
9339
9340         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9341         checkit("0", buf);
9342
9343         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9344         checkit("-1", buf);
9345
9346         /* Some Linux gcvt's give 1.e+5 here. */
9347         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9348         checkit("100000", buf);
9349         
9350         /* Some Linux gcvt's give -1.e+5 here. */
9351         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9352         checkit("-100000", buf);
9353
9354         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9355         checkit("123.456", buf);
9356
9357         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9358         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9359         /* 34 should be enough to scare even long double
9360          * places into using the e notation. */
9361         if (strlen(buf) > 5)
9362             checkit("1e+034", buf); /* for Microsoft */
9363         else
9364             checkit("1e+34", buf);
9365
9366         /* For Perl, if you add additional tests here, also add them to
9367          * t/base/num.t for benefit of platforms not using Configure or
9368          * overriding d_Gconvert */
9369
9370         exit(0);
9371 }
9372 EOP
9373 : first add preferred functions to our list
9374 xxx_list=""
9375 for xxx_convert in $gconvert_preference; do
9376     case $xxx_convert in
9377     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9378     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9379     esac 
9380 done
9381 : then add any others
9382 for xxx_convert in gconvert gcvt sprintf; do
9383     case "$xxx_list" in
9384     *$xxx_convert*) ;;
9385     *) xxx_list="$xxx_list $xxx_convert" ;;
9386     esac 
9387 done
9388
9389 case "$d_longdbl$uselongdouble" in
9390 "$define$define")
9391     : again, add prefered functions to our list first
9392     xxx_ld_list=""
9393     for xxx_convert in $gconvert_ld_preference; do
9394         case $xxx_convert in
9395         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9396         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9397         esac
9398     done
9399     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9400     for xxx_convert in qgcvt sprintf $xxx_list; do
9401         case "$xxx_ld_list" in
9402         $xxx_convert*|*" $xxx_convert"*) ;;
9403         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9404         esac
9405     done
9406     : if sprintf cannot do long doubles, move it to the end
9407     if test "$d_PRIgldbl" != "$define"; then
9408         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9409     fi
9410     : if no qgcvt, remove it
9411     if test "$d_qgcvt" != "$define"; then
9412         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9413     fi
9414     : use the ld_list
9415     xxx_list="$xxx_ld_list"
9416     ;;
9417 esac
9418
9419 for xxx_convert in $xxx_list; do
9420         echo "Trying $xxx_convert..."
9421         $rm -f try try$_o
9422         set try -DTRY_$xxx_convert
9423         if eval $compile; then
9424                 echo "$xxx_convert() found." >&4
9425                 if $run ./try; then
9426                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9427                         break;
9428                 else
9429                         echo "...But $xxx_convert didn't work as I expected."
9430                         xxx_convert=''
9431                 fi
9432         else
9433                 echo "$xxx_convert NOT found." >&4
9434         fi
9435 done
9436
9437 if test X$xxx_convert = X; then
9438     echo "*** WHOA THERE!!! ***" >&4
9439     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9440     xxx_convert=sprintf
9441 fi
9442
9443 case "$xxx_convert" in
9444 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9445 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9446 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9447 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9448    "$define$define$define")
9449       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9450    "$define$define$undef")
9451       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9452    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9453    esac
9454    ;;  
9455 esac
9456
9457 fi
9458
9459 : see if _fwalk exists
9460 set fwalk d__fwalk
9461 eval $inlibc
9462
9463 : Initialize h_fcntl
9464 h_fcntl=false
9465
9466 : Initialize h_sysfile
9467 h_sysfile=false
9468
9469 : access call always available on UNIX
9470 set access d_access
9471 eval $inlibc
9472
9473 : locate the flags for 'access()'
9474 case "$d_access" in
9475 "$define")
9476         echo " "
9477         $cat >access.c <<EOCP
9478 #include <sys/types.h>
9479 #ifdef I_FCNTL
9480 #include <fcntl.h>
9481 #endif
9482 #ifdef I_SYS_FILE
9483 #include <sys/file.h>
9484 #endif
9485 #ifdef I_UNISTD
9486 #include <unistd.h>
9487 #endif
9488 #$i_stdlib I_STDLIB
9489 #ifdef I_STDLIB
9490 #include <stdlib.h>
9491 #endif
9492 int main() {
9493         exit(R_OK);
9494 }
9495 EOCP
9496         : check sys/file.h first, no particular reason here
9497         if $test `./findhdr sys/file.h` && \
9498                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9499                 h_sysfile=true;
9500                 echo "<sys/file.h> defines the *_OK access constants." >&4
9501         elif $test `./findhdr fcntl.h` && \
9502                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9503                 h_fcntl=true;
9504                 echo "<fcntl.h> defines the *_OK access constants." >&4
9505         elif $test `./findhdr unistd.h` && \
9506                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9507                 echo "<unistd.h> defines the *_OK access constants." >&4
9508         else
9509                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9510         fi
9511         ;;
9512 esac
9513 $rm -f access*
9514
9515 : see if accessx exists
9516 set accessx d_accessx
9517 eval $inlibc
9518
9519 : see if aintl exists
9520 set aintl d_aintl
9521 eval $inlibc
9522
9523 : see if alarm exists
9524 set alarm d_alarm
9525 eval $inlibc
9526
9527 : see if POSIX threads are available
9528 set pthread.h i_pthread
9529 eval $inhdr
9530
9531 : define a fucntion to check prototypes
9532 $cat > protochk <<EOSH
9533 $startsh
9534 cc="$cc"
9535 optimize="$optimize"
9536 ccflags="$ccflags"
9537 prototype="$prototype"
9538 define="$define"
9539 rm=$rm
9540 usethreads=$usethreads
9541 i_pthread=$i_pthread
9542 pthread_h_first=$pthread_h_first
9543 EOSH
9544
9545 $cat >> protochk <<'EOSH'
9546
9547 $rm -f try.c
9548 foo="$1"
9549 shift
9550 while test $# -ge 2; do
9551         case "$1" in
9552                 $define) echo "#include <$2>" >> try.c ;;
9553                 literal) echo "$2" >> try.c ;;
9554         esac
9555     # Extra magic for the benefit of systems that need pthread.h
9556     # to be included early to correctly detect threadsafe functions.
9557     # Such functions must guarantee themselves, though, that the usethreads
9558     # and i_pthread have been defined, before calling protochk.
9559     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9560         echo "#include <pthread.h>" >> try.c
9561         pthread_h_done=yes
9562     fi
9563     shift 2
9564 done
9565 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9566 cat >> try.c <<'EOCP'
9567 #ifdef CAN_PROTOTYPE
9568 #define _(args) args
9569 #else
9570 #define _(args) ()
9571 #endif
9572 EOCP
9573 echo "$foo" >> try.c
9574 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9575 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9576 status=$?
9577 $rm -f try.[co]
9578 exit $status
9579 EOSH
9580 chmod +x protochk
9581 $eunicefix protochk
9582
9583 hasproto='varname=$1; func=$2; shift; shift;
9584 while $test $# -ge 2; do
9585         case "$1" in
9586         $define) echo "#include <$2>";;
9587         esac ;
9588     shift 2;
9589 done > try.c;
9590 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9591 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9592         echo "$func() prototype found.";
9593         val="$define";
9594 else
9595         echo "$func() prototype NOT found.";
9596         val="$undef";
9597 fi;
9598 set $varname;
9599 eval $setvar;
9600 $rm -f try.c tryout.c'
9601
9602 : see if sys/types.h has to be included
9603 set sys/types.h i_systypes
9604 eval $inhdr
9605
9606 : see if sys/select.h has to be included
9607 set sys/select.h i_sysselct
9608 eval $inhdr
9609
9610 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9611 while $test $# -ge 2; do
9612         case "$1" in
9613         $define) echo "#include <$2>";;
9614         esac ;
9615     shift 2;
9616 done > try.c;
9617 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9618 set try;
9619 if eval $compile; then
9620         val="$define";
9621 else
9622         val="$undef";
9623 fi;
9624 set $varname;
9625 eval $setvar;
9626 $rm -f try.c try.o'
9627
9628 : see if we should include time.h, sys/time.h, or both
9629 echo " "
9630 if test "X$timeincl" = X; then
9631         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9632         $echo $n "I'm now running the test program...$c"
9633         $cat >try.c <<EOCP
9634 #include <sys/types.h>
9635 #ifdef I_TIME
9636 #include <time.h>
9637 #endif
9638 #ifdef I_SYSTIME
9639 #ifdef SYSTIMEKERNEL
9640 #define KERNEL
9641 #endif
9642 #include <sys/time.h>
9643 #endif
9644 #ifdef I_SYSSELECT
9645 #include <sys/select.h>
9646 #endif
9647 #$i_stdlib I_STDLIB
9648 #ifdef I_STDLIB
9649 #include <stdlib.h>
9650 #endif
9651 int main()
9652 {
9653         struct tm foo;
9654 #ifdef S_TIMEVAL
9655         struct timeval bar;
9656 #endif
9657 #ifdef S_TIMEZONE
9658         struct timezone tzp;
9659 #endif
9660         if (foo.tm_sec == foo.tm_sec)
9661                 exit(0);
9662 #ifdef S_TIMEVAL
9663         if (bar.tv_sec == bar.tv_sec)
9664                 exit(0);
9665 #endif
9666         exit(1);
9667 }
9668 EOCP
9669         flags=''
9670         for s_timezone in '-DS_TIMEZONE' ''; do
9671         sysselect=''
9672         for s_timeval in '-DS_TIMEVAL' ''; do
9673         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9674         for i_time in '' '-DI_TIME'; do
9675         for i_systime in '-DI_SYSTIME' ''; do
9676                 case "$flags" in
9677                 '') $echo $n ".$c"
9678                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9679                         if eval $compile; then
9680                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9681                                 shift
9682                                 flags="$*"
9683                                 echo " "
9684                                 $echo $n "Succeeded with $flags$c"
9685                         fi
9686                         ;;
9687                 esac
9688         done
9689         done
9690         done
9691         done
9692         done
9693         timeincl=''
9694         echo " "
9695         case "$flags" in
9696         *SYSTIMEKERNEL*) i_systimek="$define"
9697                 timeincl=`./findhdr sys/time.h`
9698                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9699         *) i_systimek="$undef";;
9700         esac
9701         case "$flags" in
9702         *I_TIME*) i_time="$define"
9703                 timeincl=`./findhdr time.h`" $timeincl"
9704                 echo "We'll include <time.h>." >&4;;
9705         *) i_time="$undef";;
9706         esac
9707         case "$flags" in
9708         *I_SYSTIME*) i_systime="$define"
9709                 timeincl=`./findhdr sys/time.h`" $timeincl"
9710                 echo "We'll include <sys/time.h>." >&4;;
9711         *) i_systime="$undef";;
9712         esac
9713         $rm -f try.c try
9714 fi
9715 : see if struct tm knows about tm_zone
9716 case "$i_systime$i_time" in
9717 *$define*) 
9718         echo " "
9719         echo "Checking to see if your struct tm has tm_zone field..." >&4
9720         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9721         eval $hasfield
9722         ;;
9723 *)      val="$undef"
9724         set d_tm_tm_zone
9725         eval $setvar
9726         ;;
9727 esac
9728 case "$d_tm_tm_zone" in
9729 "$define")      echo "Yes, it does."   ;;
9730 *)              echo "No, it doesn't." ;;
9731 esac
9732 : see if struct tm knows about tm_gmtoff
9733 case "$i_systime$i_time" in
9734 *$define*) 
9735         echo " "
9736         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9737         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9738         eval $hasfield
9739         ;;
9740 *)      val="$undef"
9741         set d_tm_tm_gmtoff
9742         eval $setvar
9743         ;;
9744 esac
9745 case "$d_tm_tm_gmtoff" in
9746 "$define")      echo "Yes, it does."   ;;
9747 *)              echo "No, it doesn't." ;;
9748 esac
9749
9750 : see if asctime_r exists
9751 set asctime_r d_asctime_r
9752 eval $inlibc
9753 case "$d_asctime_r" in
9754 "$define")
9755         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9756         case "$d_asctime_r_proto:$usethreads" in
9757         ":define")      d_asctime_r_proto=define
9758                 set d_asctime_r_proto asctime_r $hdrs
9759                 eval $hasproto ;;
9760         *)      ;;
9761         esac
9762         case "$d_asctime_r_proto" in
9763         define)
9764         case "$asctime_r_proto" in
9765         ''|0) try='char* asctime_r(const struct tm*, char*);'
9766         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9767         esac
9768         case "$asctime_r_proto" in
9769         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9770         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9771         esac
9772         case "$asctime_r_proto" in
9773         ''|0) try='int asctime_r(const struct tm*, char*);'
9774         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9775         esac
9776         case "$asctime_r_proto" in
9777         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9778         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9779         esac
9780         case "$asctime_r_proto" in
9781         ''|0)   d_asctime_r=undef
9782                 asctime_r_proto=0
9783                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9784         * )     case "$asctime_r_proto" in
9785                 REENTRANT_PROTO*) ;;
9786                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9787                 esac
9788                 echo "Prototype: $try" ;;
9789         esac
9790         ;;
9791         *)      case "$usethreads" in
9792                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9793                 esac
9794                 d_asctime_r=undef
9795                 asctime_r_proto=0
9796                 ;;
9797         esac
9798         ;;
9799 *)      asctime_r_proto=0
9800         ;;
9801 esac
9802
9803 : see if atolf exists
9804 set atolf d_atolf
9805 eval $inlibc
9806
9807 : see if atoll exists
9808 set atoll d_atoll
9809 eval $inlibc
9810
9811 : Look for GNU-cc style attribute checking
9812 echo " "
9813 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9814 $cat >attrib.c <<'EOCP'
9815 #include <stdio.h>
9816 void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
9817 EOCP
9818 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9819         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9820                 echo "Your C compiler doesn't fully support __attribute__."
9821                 val="$undef"
9822         else
9823                 echo "Your C compiler supports __attribute__."
9824                 val="$define"
9825         fi
9826 else
9827         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9828         val="$undef"
9829 fi
9830 set d_attribut
9831 eval $setvar
9832 $rm -f attrib*
9833
9834 : see if bcmp exists
9835 set bcmp d_bcmp
9836 eval $inlibc
9837
9838 : see if bcopy exists
9839 set bcopy d_bcopy
9840 eval $inlibc
9841
9842 : see if this is a unistd.h system
9843 set unistd.h i_unistd
9844 eval $inhdr
9845
9846 : see if getpgrp exists
9847 set getpgrp d_getpgrp
9848 eval $inlibc
9849
9850 case "$d_getpgrp" in
9851 "$define")
9852         echo " "
9853         echo "Checking to see which flavor of getpgrp is in use..."
9854         $cat >try.c <<EOP
9855 #$i_unistd I_UNISTD
9856 #include <sys/types.h>
9857 #ifdef I_UNISTD
9858 #  include <unistd.h>
9859 #endif
9860 #$i_stdlib I_STDLIB
9861 #ifdef I_STDLIB
9862 #include <stdlib.h>
9863 #endif
9864 int main()
9865 {
9866         if (getuid() == 0) {
9867                 printf("(I see you are running Configure as super-user...)\n");
9868                 setuid(1);
9869         }
9870 #ifdef TRY_BSD_PGRP
9871         if (getpgrp(1) == 0)
9872                 exit(0);
9873 #else
9874         if (getpgrp() > 0)
9875                 exit(0);
9876 #endif
9877         exit(1);
9878 }
9879 EOP
9880         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9881                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9882                 val="$define"
9883         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9884                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9885                 val="$undef"
9886         else
9887                 echo "I can't seem to compile and run the test program."
9888                 if ./usg; then
9889                         xxx="a USG one, i.e. you use getpgrp()."
9890                 else
9891                         # SVR4 systems can appear rather BSD-ish.
9892                         case "$i_unistd" in
9893                         $undef)
9894                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9895                                 val="$define"
9896                                 ;;
9897                         $define)
9898                                 xxx="probably a USG one, i.e. you use getpgrp()."
9899                                 val="$undef"
9900                                 ;;
9901                         esac
9902                 fi
9903                 echo "Assuming your getpgrp is $xxx" >&4
9904         fi
9905         ;;
9906 *) val="$undef";;
9907 esac
9908 set d_bsdgetpgrp
9909 eval $setvar
9910 $rm -f try try.*
9911
9912 : see if setpgrp exists
9913 set setpgrp d_setpgrp
9914 eval $inlibc
9915
9916 case "$d_setpgrp" in
9917 "$define")
9918         echo " "
9919         echo "Checking to see which flavor of setpgrp is in use..."
9920         $cat >try.c <<EOP
9921 #$i_unistd I_UNISTD
9922 #include <sys/types.h>
9923 #ifdef I_UNISTD
9924 #  include <unistd.h>
9925 #endif
9926 #$i_stdlib I_STDLIB
9927 #ifdef I_STDLIB
9928 #include <stdlib.h>
9929 #endif
9930 int main()
9931 {
9932         if (getuid() == 0) {
9933                 printf("(I see you are running Configure as super-user...)\n");
9934                 setuid(1);
9935         }
9936 #ifdef TRY_BSD_PGRP
9937         if (-1 == setpgrp(1, 1))
9938                 exit(0);
9939 #else
9940         if (setpgrp() != -1)
9941                 exit(0);
9942 #endif
9943         exit(1);
9944 }
9945 EOP
9946         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9947                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9948                 val="$define"
9949         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9950                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9951                 val="$undef"
9952         else
9953                 echo "(I can't seem to compile and run the test program.)"
9954                 if ./usg; then
9955                         xxx="a USG one, i.e. you use setpgrp()."
9956                 else
9957                         # SVR4 systems can appear rather BSD-ish.
9958                         case "$i_unistd" in
9959                         $undef)
9960                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9961                                 val="$define"
9962                                 ;;
9963                         $define)
9964                                 xxx="probably a USG one, i.e. you use setpgrp()."
9965                                 val="$undef"
9966                                 ;;
9967                         esac
9968                 fi
9969                 echo "Assuming your setpgrp is $xxx" >&4
9970         fi
9971         ;;
9972 *) val="$undef";;
9973 esac
9974 set d_bsdsetpgrp
9975 eval $setvar
9976 $rm -f try try.*
9977 : see if bzero exists
9978 set bzero d_bzero
9979 eval $inlibc
9980
9981 : see if signal is declared as pointer to function returning int or void
9982 echo " "
9983 xxx=`./findhdr signal.h`
9984 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9985 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
9986         echo "You have int (*signal())() instead of void." >&4
9987         val="$undef"
9988 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
9989         echo "You have void (*signal())()." >&4
9990         val="$define"
9991 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9992         echo "You have int (*signal())() instead of void." >&4
9993         val="$undef"
9994 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9995         echo "You have void (*signal())()." >&4
9996         val="$define"
9997 else
9998         case "$d_voidsig" in
9999         '')
10000         echo "I can't determine whether signal handler returns void or int..." >&4
10001                 dflt=void
10002                 rp="What type does your signal handler return?"
10003                 . ./myread
10004                 case "$ans" in
10005                 v*) val="$define";;
10006                 *) val="$undef";;
10007                 esac;;
10008         "$define")
10009                 echo "As you already told me, signal handler returns void." >&4
10010                 val="$define"
10011                 ;;
10012         *)      echo "As you already told me, signal handler returns int." >&4
10013                 val="$undef"
10014                 ;;
10015         esac
10016 fi
10017 set d_voidsig
10018 eval $setvar
10019 case "$d_voidsig" in
10020 "$define") signal_t="void";;
10021 *) signal_t="int";;
10022 esac
10023 $rm -f $$.tmp
10024
10025 : check for ability to cast large floats to 32-bit ints.
10026 echo " "
10027 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10028 if $test "$intsize" -ge 4; then
10029         xxx=int
10030 else
10031         xxx=long
10032 fi
10033 $cat >try.c <<EOCP
10034 #include <stdio.h>
10035 #$i_stdlib I_STDLIB
10036 #ifdef I_STDLIB
10037 #include <stdlib.h>
10038 #endif
10039 #include <sys/types.h>
10040 #include <signal.h>
10041 $signal_t blech(s) int s; { exit(3); }
10042 int main()
10043 {
10044         $xxx i32;
10045         double f, g;
10046         int result = 0;
10047         char str[16];
10048         signal(SIGFPE, blech);
10049
10050         /* Don't let compiler optimize the test away.  Store the number 
10051            in a writable string for gcc to pass to sscanf under HP/UX.
10052         */
10053         sprintf(str, "2147483647");
10054         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10055         g = 10 * f;
10056         i32  = ($xxx) g;
10057
10058         /* x86 processors will probably give 0x8000 0000, which is a
10059        sign change.  We don't want that.  We want to mimic SPARC
10060            behavior here, which is to preserve the sign and give
10061            back 0x7fff ffff.
10062         */
10063         if (i32 != ($xxx) f)
10064                 result |= 1;
10065         exit(result);
10066 }
10067 EOCP
10068 set try
10069 if eval $compile_ok; then
10070         $run ./try
10071         yyy=$?
10072 else
10073         echo "(I can't seem to compile the test program--assuming it can't)"
10074         yyy=1
10075 fi
10076 case "$yyy" in
10077 0)      val="$define"
10078         echo "Yup, it can."
10079         ;;
10080 *)      val="$undef"
10081         echo "Nope, it can't."
10082         ;;
10083 esac
10084 set d_casti32
10085 eval $setvar
10086 $rm -f try try.*
10087
10088 : check for ability to cast negative floats to unsigned
10089 echo " "
10090 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10091 $cat >try.c <<EOCP
10092 #include <stdio.h>
10093 #$i_stdlib I_STDLIB
10094 #ifdef I_STDLIB
10095 #include <stdlib.h>
10096 #endif
10097 #include <sys/types.h>
10098 #include <signal.h>
10099 $signal_t blech(s) int s; { exit(7); }
10100 $signal_t blech_in_list(s) int s; { exit(4); }
10101 unsigned long dummy_long(p) unsigned long p; { return p; }
10102 unsigned int dummy_int(p) unsigned int p; { return p; }
10103 unsigned short dummy_short(p) unsigned short p; { return p; }
10104 int main()
10105 {
10106         double f;
10107         unsigned long along;
10108         unsigned int aint;
10109         unsigned short ashort;
10110         int result = 0;
10111         char str[16];
10112         
10113         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10114            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10115            optimized the whole file away
10116         */
10117         /* Store the number in a writable string for gcc to pass to 
10118            sscanf under HP/UX.
10119         */
10120         sprintf(str, "-123");
10121         sscanf(str, "%lf", &f);  /* f = -123.; */
10122
10123         signal(SIGFPE, blech);
10124         along = (unsigned long)f;
10125         aint = (unsigned int)f;
10126         ashort = (unsigned short)f;
10127         if (along != (unsigned long)-123)
10128                 result |= 1;
10129         if (aint != (unsigned int)-123)
10130                 result |= 1;
10131         if (ashort != (unsigned short)-123)
10132                 result |= 1;
10133         sprintf(str, "1073741824.");
10134         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10135         f = f + f;
10136         along = 0;
10137         along = (unsigned long)f;
10138         if (along != 0x80000000)
10139                 result |= 2;
10140         f -= 1.;
10141         along = 0;
10142         along = (unsigned long)f;
10143         if (along != 0x7fffffff)
10144                 result |= 1;
10145         f += 2.;
10146         along = 0;
10147         along = (unsigned long)f;
10148         if (along != 0x80000001)
10149                 result |= 2;
10150         if (result)
10151                 exit(result);
10152         signal(SIGFPE, blech_in_list);
10153         sprintf(str, "123.");
10154         sscanf(str, "%lf", &f);  /* f = 123.; */
10155         along = dummy_long((unsigned long)f);
10156         aint = dummy_int((unsigned int)f);
10157         ashort = dummy_short((unsigned short)f);
10158         if (along != (unsigned long)123)
10159                 result |= 4;
10160         if (aint != (unsigned int)123)
10161                 result |= 4;
10162         if (ashort != (unsigned short)123)
10163                 result |= 4;
10164         exit(result);
10165
10166 }
10167 EOCP
10168 set try
10169 if eval $compile_ok; then
10170         $run ./try
10171         castflags=$?
10172 else
10173         echo "(I can't seem to compile the test program--assuming it can't)"
10174         castflags=7
10175 fi
10176 case "$castflags" in
10177 0)      val="$define"
10178         echo "Yup, it can."
10179         ;;
10180 *)      val="$undef"
10181         echo "Nope, it can't."
10182         ;;
10183 esac
10184 set d_castneg
10185 eval $setvar
10186 $rm -f try.*
10187
10188 : see if vprintf exists
10189 echo " "
10190 if set vprintf val -f d_vprintf; eval $csym; $val; then
10191         echo 'vprintf() found.' >&4
10192         val="$define"
10193         $cat >try.c <<EOF
10194 #include <varargs.h>
10195 #$i_stdlib I_STDLIB
10196 #ifdef I_STDLIB
10197 #include <stdlib.h>
10198 #endif
10199
10200 int main() { xxx("foo"); }
10201
10202 xxx(va_alist)
10203 va_dcl
10204 {
10205         va_list args;
10206         char buf[10];
10207
10208         va_start(args);
10209         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10210 }
10211 EOF
10212         set try
10213         if eval $compile && $run ./try; then
10214                 echo "Your vsprintf() returns (int)." >&4
10215                 val2="$undef"
10216         else
10217                 echo "Your vsprintf() returns (char*)." >&4
10218                 val2="$define"
10219         fi
10220 else
10221         echo 'vprintf() NOT found.' >&4
10222                 val="$undef"
10223                 val2="$undef"
10224 fi
10225 $rm -f try try.*
10226 set d_vprintf
10227 eval $setvar
10228 val=$val2
10229 set d_charvspr
10230 eval $setvar
10231
10232 : see if chown exists
10233 set chown d_chown
10234 eval $inlibc
10235
10236 : see if chroot exists
10237 set chroot d_chroot
10238 eval $inlibc
10239
10240 : see if chsize exists
10241 set chsize d_chsize
10242 eval $inlibc
10243
10244 : see if class exists
10245 set class d_class
10246 eval $inlibc
10247
10248 hasstruct='varname=$1; struct=$2; shift; shift;
10249 while $test $# -ge 2; do
10250         case "$1" in
10251         $define) echo "#include <$2>";;
10252         esac ;
10253     shift 2;
10254 done > try.c;
10255 echo "int main () { struct $struct foo; }" >> try.c;
10256 set try;
10257 if eval $compile; then
10258         val="$define";
10259 else
10260         val="$undef";
10261 fi;
10262 set $varname;
10263 eval $setvar;
10264 $rm -f try.c try.o'
10265
10266 socketlib=''
10267 sockethdr=''
10268 : see whether socket exists
10269 echo " "
10270 $echo $n "Hmm... $c" >&4
10271 if set socket val -f d_socket; eval $csym; $val; then
10272         echo "Looks like you have Berkeley networking support." >&4
10273         d_socket="$define"
10274         if set setsockopt val -f; eval $csym; $val; then
10275                 d_oldsock="$undef"
10276         else
10277                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10278                 d_oldsock="$define"
10279         fi
10280 else
10281         if $contains socklib libc.list >/dev/null 2>&1; then
10282                 echo "Looks like you have Berkeley networking support." >&4
10283                 d_socket="$define"
10284                 : we will have to assume that it supports the 4.2 BSD interface
10285                 d_oldsock="$undef"
10286         else
10287                 echo "You don't have Berkeley networking in libc$_a..." >&4
10288                 if test "X$d_socket" = "X$define"; then
10289                    echo "...but you seem to believe that you have sockets." >&4
10290                 else
10291                         for net in net socket
10292                         do
10293                                 if test -f /usr/lib/lib$net$_a; then
10294                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10295                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10296                                         if $contains socket libc.list >/dev/null 2>&1; then
10297                                                 d_socket="$define"
10298                                                 socketlib="-l$net"
10299                                                 case "$net" in
10300                                                 net)
10301                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10302                                                         sockethdr="-I/usr/netinclude"
10303                                                         ;;
10304                                                 esac
10305                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10306                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10307                                                         d_oldsock="$undef"
10308                                                 else
10309                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10310                                                         d_oldsock="$define"
10311                                                 fi
10312                                                 break
10313                                         fi
10314                                 fi
10315                         done
10316                         if test "X$d_socket" != "X$define"; then
10317                            echo "or anywhere else I see." >&4
10318                            d_socket="$undef"
10319                            d_oldsock="$undef"
10320                         fi
10321                 fi
10322         fi
10323 fi
10324
10325 : see if socketpair exists
10326 set socketpair d_sockpair
10327 eval $inlibc
10328
10329
10330 echo " "
10331 echo "Checking the availability of certain socket constants..." >&4
10332 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10333         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10334         $cat >try.c <<EOF
10335 #include <sys/types.h>
10336 #include <sys/socket.h>
10337 int main() {
10338     int i = $ENUM;
10339 }
10340 EOF
10341         val="$undef"
10342         set try; if eval $compile; then
10343                 val="$define"
10344         fi
10345         set d_${enum}; eval $setvar
10346         $rm -f try.c try
10347 done
10348
10349 : see if this is a sys/uio.h system
10350 set sys/uio.h i_sysuio
10351 eval $inhdr
10352
10353
10354 echo " "
10355 echo "Checking to see if your system supports struct cmsghdr..." >&4
10356 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10357 eval $hasstruct
10358 case "$d_cmsghdr_s" in
10359 "$define")      echo "Yes, it does."   ;;
10360 *)              echo "No, it doesn't." ;;
10361 esac
10362
10363
10364 : check for const keyword
10365 echo " "
10366 echo 'Checking to see if your C compiler knows about "const"...' >&4
10367 $cat >const.c <<'EOCP'
10368 typedef struct spug { int drokk; } spug;
10369 int main()
10370 {
10371         const char *foo;
10372         const spug y;
10373 }
10374 EOCP
10375 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10376         val="$define"
10377         echo "Yup, it does."
10378 else
10379         val="$undef"
10380         echo "Nope, it doesn't."
10381 fi
10382 set d_const
10383 eval $setvar
10384
10385 : see if copysignl exists
10386 set copysignl d_copysignl
10387 eval $inlibc
10388
10389 : see if crypt exists
10390 echo " "
10391 set crypt d_crypt
10392 eval $inlibc
10393 case "$d_crypt" in
10394 $define) cryptlib='' ;;
10395 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10396                 echo 'crypt() found.' >&4
10397                 val="$define"
10398                 cryptlib=''
10399         else
10400                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10401                 if $test -z "$cryptlib"; then
10402                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10403                 else
10404                         cryptlib=-lcrypt
10405                 fi
10406                 if $test -z "$cryptlib"; then
10407                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10408                 else
10409                         cryptlib=-lcrypt
10410                 fi
10411                 if $test -z "$cryptlib"; then
10412                         cryptlib=`./loc libcrypt$_a "" $libpth`
10413                 else
10414                         cryptlib=-lcrypt
10415                 fi
10416                 if $test -z "$cryptlib"; then
10417                         echo 'crypt() NOT found.' >&4
10418                         val="$undef"
10419                 else
10420                         val="$define"
10421                 fi
10422         fi
10423         set d_crypt
10424         eval $setvar
10425         ;;
10426 esac
10427
10428 : see if this is a crypt.h system
10429 set crypt.h i_crypt
10430 eval $inhdr
10431
10432 : see if crypt_r exists
10433 set crypt_r d_crypt_r
10434 eval $inlibc
10435 case "$d_crypt_r" in
10436 "$define")
10437         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10438         case "$d_crypt_r_proto:$usethreads" in
10439         ":define")      d_crypt_r_proto=define
10440                 set d_crypt_r_proto crypt_r $hdrs
10441                 eval $hasproto ;;
10442         *)      ;;
10443         esac
10444         case "$d_crypt_r_proto" in
10445         define)
10446         case "$crypt_r_proto" in
10447         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10448         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10449         esac
10450         case "$crypt_r_proto" in
10451         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10452         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10453         esac
10454         case "$crypt_r_proto" in
10455         ''|0)   d_crypt_r=undef
10456                 crypt_r_proto=0
10457                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10458         * )     case "$crypt_r_proto" in
10459                 REENTRANT_PROTO*) ;;
10460                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10461                 esac
10462                 echo "Prototype: $try" ;;
10463         esac
10464         ;;
10465         *)      case "$usethreads" in
10466                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10467                 esac
10468                 d_crypt_r=undef
10469                 crypt_r_proto=0
10470                 ;;
10471         esac
10472         ;;
10473 *)      crypt_r_proto=0
10474         ;;
10475 esac
10476
10477 : get csh whereabouts
10478 case "$csh" in
10479 'csh') val="$undef" ;;
10480 *) val="$define" ;;
10481 esac
10482 set d_csh
10483 eval $setvar
10484 : Respect a hint or command line value for full_csh.
10485 case "$full_csh" in
10486 '') full_csh=$csh ;;
10487 esac
10488
10489 : see if ctermid_r exists
10490 set ctermid_r d_ctermid_r
10491 eval $inlibc
10492 case "$d_ctermid_r" in
10493 "$define")
10494         hdrs="$i_systypes sys/types.h define stdio.h "
10495         case "$d_ctermid_r_proto:$usethreads" in
10496         ":define")      d_ctermid_r_proto=define
10497                 set d_ctermid_r_proto ctermid_r $hdrs
10498                 eval $hasproto ;;
10499         *)      ;;
10500         esac
10501         case "$d_ctermid_r_proto" in
10502         define)
10503         case "$ctermid_r_proto" in
10504         ''|0) try='char* ctermid_r(char*);'
10505         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10506         esac
10507         case "$ctermid_r_proto" in
10508         ''|0)   d_ctermid_r=undef
10509                 ctermid_r_proto=0
10510                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10511         * )     case "$ctermid_r_proto" in
10512                 REENTRANT_PROTO*) ;;
10513                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10514                 esac
10515                 echo "Prototype: $try" ;;
10516         esac
10517         ;;
10518         *)      case "$usethreads" in
10519                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10520                 esac
10521                 d_ctermid_r=undef
10522                 ctermid_r_proto=0
10523                 ;;
10524         esac
10525         ;;
10526 *)      ctermid_r_proto=0
10527         ;;
10528 esac
10529
10530 : see if ctime_r exists
10531 set ctime_r d_ctime_r
10532 eval $inlibc
10533 case "$d_ctime_r" in
10534 "$define")
10535         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10536         case "$d_ctime_r_proto:$usethreads" in
10537         ":define")      d_ctime_r_proto=define
10538                 set d_ctime_r_proto ctime_r $hdrs
10539                 eval $hasproto ;;
10540         *)      ;;
10541         esac
10542         case "$d_ctime_r_proto" in
10543         define)
10544         case "$ctime_r_proto" in
10545         ''|0) try='char* ctime_r(const time_t*, char*);'
10546         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10547         esac
10548         case "$ctime_r_proto" in
10549         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10550         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10551         esac
10552         case "$ctime_r_proto" in
10553         ''|0) try='int ctime_r(const time_t*, char*);'
10554         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10555         esac
10556         case "$ctime_r_proto" in
10557         ''|0) try='int ctime_r(const time_t*, char*, int);'
10558         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10559         esac
10560         case "$ctime_r_proto" in
10561         ''|0)   d_ctime_r=undef
10562                 ctime_r_proto=0
10563                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10564         * )     case "$ctime_r_proto" in
10565                 REENTRANT_PROTO*) ;;
10566                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10567                 esac
10568                 echo "Prototype: $try" ;;
10569         esac
10570         ;;
10571         *)      case "$usethreads" in
10572                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10573                 esac
10574                 d_ctime_r=undef
10575                 ctime_r_proto=0
10576                 ;;
10577         esac
10578         ;;
10579 *)      ctime_r_proto=0
10580         ;;
10581 esac
10582
10583 : see if cuserid exists
10584 set cuserid d_cuserid
10585 eval $inlibc
10586
10587 : see if this is a limits.h system
10588 set limits.h i_limits
10589 eval $inhdr
10590
10591 : see if this is a float.h system
10592 set float.h i_float
10593 eval $inhdr
10594
10595 : See if number of significant digits in a double precision number is known
10596 echo " "
10597 $cat >dbl_dig.c <<EOM
10598 #$i_limits I_LIMITS
10599 #$i_float I_FLOAT
10600 #ifdef I_LIMITS
10601 #include <limits.h>
10602 #endif
10603 #ifdef I_FLOAT
10604 #include <float.h>
10605 #endif
10606 #ifdef DBL_DIG
10607 printf("Contains DBL_DIG");
10608 #endif
10609 EOM
10610 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10611 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10612         echo "DBL_DIG found." >&4
10613         val="$define"
10614 else
10615         echo "DBL_DIG NOT found." >&4
10616         val="$undef"
10617 fi
10618 $rm -f dbl_dig.?
10619 set d_dbl_dig
10620 eval $setvar
10621
10622 : see if dbm.h is available
10623 : see if dbmclose exists
10624 set dbmclose d_dbmclose
10625 eval $inlibc
10626
10627 case "$d_dbmclose" in
10628 $define)
10629         set dbm.h i_dbm
10630         eval $inhdr
10631         case "$i_dbm" in
10632         $define)
10633                 val="$undef"
10634                 set i_rpcsvcdbm
10635                 eval $setvar
10636                 ;;
10637         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10638                 eval $inhdr
10639                 ;;
10640         esac
10641         ;;
10642 *)      echo "We won't be including <dbm.h>"
10643         val="$undef"
10644         set i_dbm
10645         eval $setvar
10646         val="$undef"
10647         set i_rpcsvcdbm
10648         eval $setvar
10649         ;;
10650 esac
10651
10652 : see if prototype for dbminit is available
10653 echo " "
10654 set d_dbminitproto dbminit $i_dbm dbm.h
10655 eval $hasproto
10656
10657 : see if difftime exists
10658 set difftime d_difftime
10659 eval $inlibc
10660
10661 : see if this is a dirent system
10662 echo " "
10663 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10664         val="$define"
10665         echo "<dirent.h> found." >&4
10666 else
10667         val="$undef"
10668         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10669                 echo "<sys/dir.h> found." >&4
10670                 echo " "
10671         else
10672                 xinc=`./findhdr sys/ndir.h`
10673         fi
10674         echo "<dirent.h> NOT found." >&4
10675 fi
10676 set i_dirent
10677 eval $setvar
10678
10679 : Look for type of directory structure.
10680 echo " "
10681 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10682
10683 case "$direntrytype" in
10684 ''|' ')
10685         case "$i_dirent" in
10686         $define) guess1='struct dirent' ;;
10687         *) guess1='struct direct'  ;;
10688         esac
10689         ;;
10690 *)      guess1="$direntrytype"
10691         ;;
10692 esac
10693
10694 case "$guess1" in
10695 'struct dirent') guess2='struct direct' ;;
10696 *) guess2='struct dirent' ;;
10697 esac
10698                 
10699 if $contains "$guess1" try.c >/dev/null 2>&1; then
10700         direntrytype="$guess1"
10701         echo "Your directory entries are $direntrytype." >&4
10702 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10703         direntrytype="$guess2"
10704         echo "Your directory entries seem to be $direntrytype." >&4
10705 else
10706         echo "I don't recognize your system's directory entries." >&4
10707         rp="What type is used for directory entries on this system?"
10708         dflt="$guess1"
10709         . ./myread
10710         direntrytype="$ans"
10711 fi
10712 $rm -f try.c
10713
10714
10715 : see if the directory entry stores field length
10716 echo " "
10717 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10718 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10719         echo "Good, your directory entry keeps length information in d_namlen." >&4
10720         val="$define"
10721 else
10722         echo "Your directory entry does not know about the d_namlen field." >&4
10723         val="$undef"
10724 fi
10725 set d_dirnamlen
10726 eval $setvar
10727 $rm -f try.c
10728
10729 : see if this is an sysdir system
10730 set sys/dir.h i_sysdir
10731 eval $inhdr
10732
10733 : see if this is an sysndir system
10734 set sys/ndir.h i_sysndir
10735 eval $inhdr
10736
10737 : Look for dirfd
10738 echo " "
10739 $cat >dirfd.c <<EOM
10740 #include <stdio.h>
10741 #$i_stdlib I_STDLIB
10742 #ifdef I_STDLIB
10743 #include <stdlib.h>
10744 #endif
10745 #$i_dirent I_DIRENT             /**/
10746 #$i_sysdir I_SYS_DIR            /**/
10747 #$i_sysndir I_SYS_NDIR          /**/
10748 #$i_systypes I_SYS_TYPES        /**/
10749 #if defined(I_SYS_TYPES)
10750 #include <sys/types.h>
10751 #endif
10752 #if defined(I_DIRENT)
10753 #include <dirent.h>
10754 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10755 #include <sys/dir.h>
10756 #endif
10757 #else
10758 #ifdef I_SYS_NDIR
10759 #include <sys/ndir.h>
10760 #else
10761 #ifdef I_SYS_DIR
10762 #ifdef hp9000s500
10763 #include <ndir.h>       /* may be wrong in the future */
10764 #else
10765 #include <sys/dir.h>
10766 #endif
10767 #endif
10768 #endif
10769 #endif 
10770 int main() {
10771         DIR *dirp = opendir(".");
10772         if (dirfd(dirp) >= 0)
10773                 exit(0);
10774         else
10775                 exit(1);
10776 }
10777 EOM
10778 set dirfd
10779 if eval $compile; then
10780         val="$define"
10781 fi
10782 case "$val" in
10783 $define)        echo "dirfd() found." >&4       ;;
10784 *)              echo "dirfd() NOT found." >&4   ;;
10785 esac
10786 set d_dirfd
10787 eval $setvar
10788 $rm -f dirfd*
10789
10790 : see if dlerror exists
10791 xxx_runnm="$runnm"
10792 runnm=false
10793 set dlerror d_dlerror
10794 eval $inlibc
10795 runnm="$xxx_runnm"
10796
10797 : see if dlfcn is available
10798 set dlfcn.h i_dlfcn
10799 eval $inhdr
10800
10801 case "$usedl" in
10802 $define|y|true)
10803         $cat << EOM
10804
10805 On a few systems, the dynamically loaded modules that perl generates and uses
10806 will need a different extension than shared libs. The default will probably
10807 be appropriate.
10808
10809 EOM
10810         case "$dlext" in
10811         '')     dflt="$so" ;;
10812         *)      dflt="$dlext" ;;
10813         esac
10814         rp='What is the extension of dynamically loaded modules'
10815         . ./myread
10816         dlext="$ans"
10817         ;;
10818 *)
10819         dlext="none"
10820         ;;
10821 esac
10822
10823 : Check if dlsym need a leading underscore
10824 echo " "
10825 val="$undef"
10826
10827 case "$dlsrc" in
10828 dl_dlopen.xs)
10829         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10830         $cat >dyna.c <<'EOM'
10831 fred () { }
10832 EOM
10833
10834 $cat >fred.c<<EOM
10835
10836 #include <stdio.h>
10837 #$i_stdlib I_STDLIB
10838 #ifdef I_STDLIB
10839 #include <stdlib.h>
10840 #endif
10841 #$i_dlfcn I_DLFCN
10842 #ifdef I_DLFCN
10843 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10844 #else
10845 #include <sys/types.h>
10846 #include <nlist.h>
10847 #include <link.h>
10848 #endif
10849
10850 extern int fred() ;
10851
10852 int main()
10853 {
10854     void * handle ;
10855     void * symbol ;
10856 #ifndef RTLD_LAZY
10857     int mode = 1 ;
10858 #else
10859     int mode = RTLD_LAZY ;
10860 #endif
10861     handle = dlopen("./dyna.$dlext", mode) ;
10862     if (handle == NULL) {
10863         printf ("1\n") ;
10864         fflush (stdout) ;
10865         exit(0);
10866     }
10867     symbol = dlsym(handle, "fred") ;
10868     if (symbol == NULL) {
10869         /* try putting a leading underscore */
10870         symbol = dlsym(handle, "_fred") ;
10871         if (symbol == NULL) {
10872             printf ("2\n") ;
10873             fflush (stdout) ;
10874             exit(0);
10875         }
10876         printf ("3\n") ;
10877     }
10878     else
10879         printf ("4\n") ;
10880     fflush (stdout) ;
10881     exit(0);
10882 }
10883 EOM
10884         : Call the object file tmp-dyna.o in case dlext=o.
10885         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10886                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10887                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10888                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10889                 xxx=`$run ./fred`
10890                 case $xxx in
10891                 1)      echo "Test program failed using dlopen." >&4
10892                         echo "Perhaps you should not use dynamic loading." >&4;;
10893                 2)      echo "Test program failed using dlsym." >&4
10894                         echo "Perhaps you should not use dynamic loading." >&4;;
10895                 3)      echo "dlsym needs a leading underscore" >&4
10896                         val="$define" ;;
10897                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10898                 esac
10899         else
10900                 echo "I can't compile and run the test program." >&4
10901                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10902         fi
10903         ;;
10904 esac
10905                 
10906 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10907
10908 set d_dlsymun
10909 eval $setvar
10910
10911 : see if drand48_r exists
10912 set drand48_r d_drand48_r
10913 eval $inlibc
10914 case "$d_drand48_r" in
10915 "$define")
10916         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10917         case "$d_drand48_r_proto:$usethreads" in
10918         ":define")      d_drand48_r_proto=define
10919                 set d_drand48_r_proto drand48_r $hdrs
10920                 eval $hasproto ;;
10921         *)      ;;
10922         esac
10923         case "$d_drand48_r_proto" in
10924         define)
10925         case "$drand48_r_proto" in
10926         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10927         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10928         esac
10929         case "$drand48_r_proto" in
10930         ''|0)   d_drand48_r=undef
10931                 drand48_r_proto=0
10932                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10933         * )     case "$drand48_r_proto" in
10934                 REENTRANT_PROTO*) ;;
10935                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10936                 esac
10937                 echo "Prototype: $try" ;;
10938         esac
10939         ;;
10940         *)      case "$usethreads" in
10941                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10942                 esac
10943                 d_drand48_r=undef
10944                 drand48_r_proto=0
10945                 ;;
10946         esac
10947         ;;
10948 *)      drand48_r_proto=0
10949         ;;
10950 esac
10951
10952 : see if prototype for drand48 is available
10953 echo " "
10954 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10955 eval $hasproto
10956
10957 : see if dup2 exists
10958 set dup2 d_dup2
10959 eval $inlibc
10960
10961 : see if eaccess exists
10962 set eaccess d_eaccess
10963 eval $inlibc
10964
10965 : see if endgrent exists
10966 set endgrent d_endgrent
10967 eval $inlibc
10968
10969 : see if this is an grp system
10970 set grp.h i_grp
10971 eval $inhdr
10972
10973 case "$i_grp" in
10974 $define)
10975         xxx=`./findhdr grp.h`
10976         $cppstdin $cppflags $cppminus < $xxx >$$.h
10977
10978         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10979                 val="$define"
10980         else
10981                 val="$undef"
10982         fi
10983         set d_grpasswd
10984         eval $setvar
10985
10986         $rm -f $$.h
10987         ;;
10988 *)
10989         val="$undef";
10990         set d_grpasswd; eval $setvar
10991         ;;
10992 esac
10993
10994 : see if endgrent_r exists
10995 set endgrent_r d_endgrent_r
10996 eval $inlibc
10997 case "$d_endgrent_r" in
10998 "$define")
10999         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11000         case "$d_endgrent_r_proto:$usethreads" in
11001         ":define")      d_endgrent_r_proto=define
11002                 set d_endgrent_r_proto endgrent_r $hdrs
11003                 eval $hasproto ;;
11004         *)      ;;
11005         esac
11006         case "$d_endgrent_r_proto" in
11007         define)
11008         case "$endgrent_r_proto" in
11009         ''|0) try='int endgrent_r(FILE**);'
11010         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11011         esac
11012         case "$endgrent_r_proto" in
11013         ''|0) try='void endgrent_r(FILE**);'
11014         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11015         esac
11016         case "$endgrent_r_proto" in
11017         ''|0)   d_endgrent_r=undef
11018                 endgrent_r_proto=0
11019                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11020         * )     case "$endgrent_r_proto" in
11021                 REENTRANT_PROTO*) ;;
11022                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11023                 esac
11024                 echo "Prototype: $try" ;;
11025         esac
11026         ;;
11027         *)      case "$usethreads" in
11028                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11029                 esac
11030                 d_endgrent_r=undef
11031                 endgrent_r_proto=0
11032                 ;;
11033         esac
11034         ;;
11035 *)      endgrent_r_proto=0
11036         ;;
11037 esac
11038
11039 : see if endhostent exists
11040 set endhostent d_endhent
11041 eval $inlibc
11042
11043 : see if this is a netdb.h system
11044 set netdb.h i_netdb
11045 eval $inhdr
11046
11047 : see if endhostent_r exists
11048 set endhostent_r d_endhostent_r
11049 eval $inlibc
11050 case "$d_endhostent_r" in
11051 "$define")
11052         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11053         case "$d_endhostent_r_proto:$usethreads" in
11054         ":define")      d_endhostent_r_proto=define
11055                 set d_endhostent_r_proto endhostent_r $hdrs
11056                 eval $hasproto ;;
11057         *)      ;;
11058         esac
11059         case "$d_endhostent_r_proto" in
11060         define)
11061         case "$endhostent_r_proto" in
11062         ''|0) try='int endhostent_r(struct hostent_data*);'
11063         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11064         esac
11065         case "$endhostent_r_proto" in
11066         ''|0) try='void endhostent_r(struct hostent_data*);'
11067         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11068         esac
11069         case "$endhostent_r_proto" in
11070         ''|0)   d_endhostent_r=undef
11071                 endhostent_r_proto=0
11072                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11073         * )     case "$endhostent_r_proto" in
11074                 REENTRANT_PROTO*) ;;
11075                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11076                 esac
11077                 echo "Prototype: $try" ;;
11078         esac
11079         ;;
11080         *)      case "$usethreads" in
11081                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11082                 esac
11083                 d_endhostent_r=undef
11084                 endhostent_r_proto=0
11085                 ;;
11086         esac
11087         ;;
11088 *)      endhostent_r_proto=0
11089         ;;
11090 esac
11091
11092 : see if endnetent exists
11093 set endnetent d_endnent
11094 eval $inlibc
11095
11096 : see if endnetent_r exists
11097 set endnetent_r d_endnetent_r
11098 eval $inlibc
11099 case "$d_endnetent_r" in
11100 "$define")
11101         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11102         case "$d_endnetent_r_proto:$usethreads" in
11103         ":define")      d_endnetent_r_proto=define
11104                 set d_endnetent_r_proto endnetent_r $hdrs
11105                 eval $hasproto ;;
11106         *)      ;;
11107         esac
11108         case "$d_endnetent_r_proto" in
11109         define)
11110         case "$endnetent_r_proto" in
11111         ''|0) try='int endnetent_r(struct netent_data*);'
11112         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11113         esac
11114         case "$endnetent_r_proto" in
11115         ''|0) try='void endnetent_r(struct netent_data*);'
11116         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11117         esac
11118         case "$endnetent_r_proto" in
11119         ''|0)   d_endnetent_r=undef
11120                 endnetent_r_proto=0
11121                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11122         * )     case "$endnetent_r_proto" in
11123                 REENTRANT_PROTO*) ;;
11124                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11125                 esac
11126                 echo "Prototype: $try" ;;
11127         esac
11128         ;;
11129         *)      case "$usethreads" in
11130                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11131                 esac
11132                 d_endnetent_r=undef
11133                 endnetent_r_proto=0
11134                 ;;
11135         esac
11136         ;;
11137 *)      endnetent_r_proto=0
11138         ;;
11139 esac
11140
11141 : see if endprotoent exists
11142 set endprotoent d_endpent
11143 eval $inlibc
11144
11145 : see if endprotoent_r exists
11146 set endprotoent_r d_endprotoent_r
11147 eval $inlibc
11148 case "$d_endprotoent_r" in
11149 "$define")
11150         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11151         case "$d_endprotoent_r_proto:$usethreads" in
11152         ":define")      d_endprotoent_r_proto=define
11153                 set d_endprotoent_r_proto endprotoent_r $hdrs
11154                 eval $hasproto ;;
11155         *)      ;;
11156         esac
11157         case "$d_endprotoent_r_proto" in
11158         define)
11159         case "$endprotoent_r_proto" in
11160         ''|0) try='int endprotoent_r(struct protoent_data*);'
11161         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11162         esac
11163         case "$endprotoent_r_proto" in
11164         ''|0) try='void endprotoent_r(struct protoent_data*);'
11165         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11166         esac
11167         case "$endprotoent_r_proto" in
11168         ''|0)   d_endprotoent_r=undef
11169                 endprotoent_r_proto=0
11170                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11171         * )     case "$endprotoent_r_proto" in
11172                 REENTRANT_PROTO*) ;;
11173                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11174                 esac
11175                 echo "Prototype: $try" ;;
11176         esac
11177         ;;
11178         *)      case "$usethreads" in
11179                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11180                 esac
11181                 d_endprotoent_r=undef
11182                 endprotoent_r_proto=0
11183                 ;;
11184         esac
11185         ;;
11186 *)      endprotoent_r_proto=0
11187         ;;
11188 esac
11189
11190 : see if endpwent exists
11191 set endpwent d_endpwent
11192 eval $inlibc
11193
11194 : see if this is a pwd.h system
11195 set pwd.h i_pwd
11196 eval $inhdr
11197
11198 case "$i_pwd" in
11199 $define)
11200         xxx=`./findhdr pwd.h`
11201         $cppstdin $cppflags $cppminus < $xxx >$$.h
11202
11203         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11204                 val="$define"
11205         else
11206                 val="$undef"
11207         fi
11208         set d_pwquota
11209         eval $setvar
11210
11211         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11212                 val="$define"
11213         else
11214                 val="$undef"
11215         fi
11216         set d_pwage
11217         eval $setvar
11218
11219         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11220                 val="$define"
11221         else
11222                 val="$undef"
11223         fi
11224         set d_pwchange
11225         eval $setvar
11226
11227         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11228                 val="$define"
11229         else
11230                 val="$undef"
11231         fi
11232         set d_pwclass
11233         eval $setvar
11234
11235         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11236                 val="$define"
11237         else
11238                 val="$undef"
11239         fi
11240         set d_pwexpire
11241         eval $setvar
11242
11243         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11244                 val="$define"
11245         else
11246                 val="$undef"
11247         fi
11248         set d_pwcomment
11249         eval $setvar
11250
11251         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11252                 val="$define"
11253         else
11254                 val="$undef"
11255         fi
11256         set d_pwgecos
11257         eval $setvar
11258
11259         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11260                 val="$define"
11261         else
11262                 val="$undef"
11263         fi
11264         set d_pwpasswd
11265         eval $setvar
11266
11267         $rm -f $$.h
11268         ;;
11269 *)
11270         val="$undef"; 
11271         set d_pwquota; eval $setvar
11272         set d_pwage; eval $setvar
11273         set d_pwchange; eval $setvar
11274         set d_pwclass; eval $setvar
11275         set d_pwexpire; eval $setvar
11276         set d_pwcomment; eval $setvar
11277         set d_pwgecos; eval $setvar
11278         set d_pwpasswd; eval $setvar
11279         ;;
11280 esac
11281
11282 : see if endpwent_r exists
11283 set endpwent_r d_endpwent_r
11284 eval $inlibc
11285 case "$d_endpwent_r" in
11286 "$define")
11287         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11288         case "$d_endpwent_r_proto:$usethreads" in
11289         ":define")      d_endpwent_r_proto=define
11290                 set d_endpwent_r_proto endpwent_r $hdrs
11291                 eval $hasproto ;;
11292         *)      ;;
11293         esac
11294         case "$d_endpwent_r_proto" in
11295         define)
11296         case "$endpwent_r_proto" in
11297         ''|0) try='int endpwent_r(FILE**);'
11298         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11299         esac
11300         case "$endpwent_r_proto" in
11301         ''|0) try='void endpwent_r(FILE**);'
11302         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11303         esac
11304         case "$endpwent_r_proto" in
11305         ''|0)   d_endpwent_r=undef
11306                 endpwent_r_proto=0
11307                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11308         * )     case "$endpwent_r_proto" in
11309                 REENTRANT_PROTO*) ;;
11310                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11311                 esac
11312                 echo "Prototype: $try" ;;
11313         esac
11314         ;;
11315         *)      case "$usethreads" in
11316                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11317                 esac
11318                 d_endpwent_r=undef
11319                 endpwent_r_proto=0
11320                 ;;
11321         esac
11322         ;;
11323 *)      endpwent_r_proto=0
11324         ;;
11325 esac
11326
11327 : see if endservent exists
11328 set endservent d_endsent
11329 eval $inlibc
11330
11331 : see if endservent_r exists
11332 set endservent_r d_endservent_r
11333 eval $inlibc
11334 case "$d_endservent_r" in
11335 "$define")
11336         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11337         case "$d_endservent_r_proto:$usethreads" in
11338         ":define")      d_endservent_r_proto=define
11339                 set d_endservent_r_proto endservent_r $hdrs
11340                 eval $hasproto ;;
11341         *)      ;;
11342         esac
11343         case "$d_endservent_r_proto" in
11344         define)
11345         case "$endservent_r_proto" in
11346         ''|0) try='int endservent_r(struct servent_data*);'
11347         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11348         esac
11349         case "$endservent_r_proto" in
11350         ''|0) try='void endservent_r(struct servent_data*);'
11351         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11352         esac
11353         case "$endservent_r_proto" in
11354         ''|0)   d_endservent_r=undef
11355                 endservent_r_proto=0
11356                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11357         * )     case "$endservent_r_proto" in
11358                 REENTRANT_PROTO*) ;;
11359                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11360                 esac
11361                 echo "Prototype: $try" ;;
11362         esac
11363         ;;
11364         *)      case "$usethreads" in
11365                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11366                 esac
11367                 d_endservent_r=undef
11368                 endservent_r_proto=0
11369                 ;;
11370         esac
11371         ;;
11372 *)      endservent_r_proto=0
11373         ;;
11374 esac
11375
11376 : Locate the flags for 'open()'
11377 echo " "
11378 $cat >try.c <<EOCP
11379 #include <sys/types.h>
11380 #ifdef I_FCNTL
11381 #include <fcntl.h>
11382 #endif
11383 #ifdef I_SYS_FILE
11384 #include <sys/file.h>
11385 #endif
11386 #$i_stdlib I_STDLIB
11387 #ifdef I_STDLIB
11388 #include <stdlib.h>
11389 #endif
11390 int main() {
11391         if(O_RDONLY);
11392 #ifdef O_TRUNC
11393         exit(0);
11394 #else
11395         exit(1);
11396 #endif
11397 }
11398 EOCP
11399 : check sys/file.h first to get FREAD on Sun
11400 if $test `./findhdr sys/file.h` && \
11401                 set try -DI_SYS_FILE && eval $compile; then
11402         h_sysfile=true;
11403         echo "<sys/file.h> defines the O_* constants..." >&4
11404         if $run ./try; then
11405                 echo "and you have the 3 argument form of open()." >&4
11406                 val="$define"
11407         else
11408                 echo "but not the 3 argument form of open().  Oh, well." >&4
11409                 val="$undef"
11410         fi
11411 elif $test `./findhdr fcntl.h` && \
11412                 set try -DI_FCNTL && eval $compile; then
11413         h_fcntl=true;
11414         echo "<fcntl.h> defines the O_* constants..." >&4
11415         if $run ./try; then
11416                 echo "and you have the 3 argument form of open()." >&4
11417                 val="$define"
11418         else
11419                 echo "but not the 3 argument form of open().  Oh, well." >&4
11420                 val="$undef"
11421         fi
11422 else
11423         val="$undef"
11424         echo "I can't find the O_* constant definitions!  You got problems." >&4
11425 fi
11426 set d_open3
11427 eval $setvar
11428 $rm -f try try.*
11429
11430 : see which of string.h or strings.h is needed
11431 echo " "
11432 strings=`./findhdr string.h`
11433 if $test "$strings" && $test -r "$strings"; then
11434         echo "Using <string.h> instead of <strings.h>." >&4
11435         val="$define"
11436 else
11437         val="$undef"
11438         strings=`./findhdr strings.h`
11439         if $test "$strings" && $test -r "$strings"; then
11440                 echo "Using <strings.h> instead of <string.h>." >&4
11441         else
11442                 echo "No string header found -- You'll surely have problems." >&4
11443         fi
11444 fi
11445 set i_string
11446 eval $setvar
11447 case "$i_string" in
11448 "$undef") strings=`./findhdr strings.h`;;
11449 *)        strings=`./findhdr string.h`;;
11450 esac
11451
11452 : see if this is a sys/file.h system
11453 val=''
11454 set sys/file.h val
11455 eval $inhdr
11456
11457 : do we need to include sys/file.h ?
11458 case "$val" in
11459 "$define")
11460         echo " "
11461         if $h_sysfile; then
11462                 val="$define"
11463                 echo "We'll be including <sys/file.h>." >&4
11464         else
11465                 val="$undef"
11466                 echo "We won't be including <sys/file.h>." >&4
11467         fi
11468         ;;
11469 *)
11470         h_sysfile=false
11471         ;;
11472 esac
11473 set i_sysfile
11474 eval $setvar
11475
11476 : see if fcntl.h is there
11477 val=''
11478 set fcntl.h val
11479 eval $inhdr
11480
11481 : see if we can include fcntl.h
11482 case "$val" in
11483 "$define")
11484         echo " "
11485         if $h_fcntl; then
11486                 val="$define"
11487                 echo "We'll be including <fcntl.h>." >&4
11488         else
11489                 val="$undef"
11490                 if $h_sysfile; then
11491         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11492                 else
11493                         echo "We won't be including <fcntl.h>." >&4
11494                 fi
11495         fi
11496         ;;
11497 *)
11498         h_fcntl=false
11499         val="$undef"
11500         ;;
11501 esac
11502 set i_fcntl
11503 eval $setvar
11504
11505 : check for non-blocking I/O stuff
11506 case "$h_sysfile" in
11507 true) echo "#include <sys/file.h>" > head.c;;
11508 *)
11509        case "$h_fcntl" in
11510        true) echo "#include <fcntl.h>" > head.c;;
11511        *) echo "#include <sys/fcntl.h>" > head.c;;
11512        esac
11513        ;;
11514 esac
11515 echo " "
11516 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11517 case "$o_nonblock" in
11518 '')
11519         $cat head.c > try.c
11520         $cat >>try.c <<EOCP
11521 #include <stdio.h>
11522 #$i_stdlib I_STDLIB
11523 #ifdef I_STDLIB
11524 #include <stdlib.h>
11525 #endif
11526 #$i_fcntl I_FCNTL
11527 #ifdef I_FCNTL
11528 #include <fcntl.h>
11529 #endif
11530 int main() {
11531 #ifdef O_NONBLOCK
11532         printf("O_NONBLOCK\n");
11533         exit(0);
11534 #endif
11535 #ifdef O_NDELAY
11536         printf("O_NDELAY\n");
11537         exit(0);
11538 #endif
11539 #ifdef FNDELAY
11540         printf("FNDELAY\n");
11541         exit(0);
11542 #endif
11543         exit(0);
11544 }
11545 EOCP
11546         set try
11547         if eval $compile_ok; then
11548                 o_nonblock=`$run ./try`
11549                 case "$o_nonblock" in
11550                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11551                 *) echo "Seems like we can use $o_nonblock.";;
11552                 esac
11553         else
11554                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11555         fi
11556         ;;
11557 *) echo "Using $hint value $o_nonblock.";;
11558 esac
11559 $rm -f try try.* .out core
11560
11561 echo " "
11562 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11563 case "$eagain" in
11564 '')
11565         $cat head.c > try.c
11566         $cat >>try.c <<EOCP
11567 #include <errno.h>
11568 #include <sys/types.h>
11569 #include <signal.h>
11570 #include <stdio.h> 
11571 #$i_stdlib I_STDLIB
11572 #ifdef I_STDLIB
11573 #include <stdlib.h>
11574 #endif
11575 #$i_fcntl I_FCNTL
11576 #ifdef I_FCNTL
11577 #include <fcntl.h>
11578 #endif
11579 #define MY_O_NONBLOCK $o_nonblock
11580 #ifndef errno  /* XXX need better Configure test */
11581 extern int errno;
11582 #endif
11583 #$i_unistd I_UNISTD
11584 #ifdef I_UNISTD
11585 #include <unistd.h>
11586 #endif
11587 #$i_string I_STRING
11588 #ifdef I_STRING
11589 #include <string.h>
11590 #else
11591 #include <strings.h>
11592 #endif
11593 $signal_t blech(x) int x; { exit(3); }
11594 EOCP
11595         $cat >> try.c <<'EOCP'
11596 int main()
11597 {
11598         int pd[2];
11599         int pu[2];
11600         char buf[1];
11601         char string[100];
11602
11603         pipe(pd);       /* Down: child -> parent */
11604         pipe(pu);       /* Up: parent -> child */
11605         if (0 != fork()) {
11606                 int ret;
11607                 close(pd[1]);   /* Parent reads from pd[0] */
11608                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11609 #ifdef F_SETFL
11610                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11611                         exit(1);
11612 #else
11613                 exit(4);
11614 #endif
11615                 signal(SIGALRM, blech);
11616                 alarm(5);
11617                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11618                         exit(2);
11619                 sprintf(string, "%d\n", ret);
11620                 write(2, string, strlen(string));
11621                 alarm(0);
11622 #ifdef EAGAIN
11623                 if (errno == EAGAIN) {
11624                         printf("EAGAIN\n");
11625                         goto ok;
11626                 }
11627 #endif
11628 #ifdef EWOULDBLOCK
11629                 if (errno == EWOULDBLOCK)
11630                         printf("EWOULDBLOCK\n");
11631 #endif
11632         ok:
11633                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11634                 sleep(2);                               /* Give it time to close our pipe */
11635                 alarm(5);
11636                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11637                 alarm(0);
11638                 sprintf(string, "%d\n", ret);
11639                 write(4, string, strlen(string));
11640                 exit(0);
11641         }
11642
11643         close(pd[0]);                   /* We write to pd[1] */
11644         close(pu[1]);                   /* We read from pu[0] */
11645         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11646         close(pd[1]);                   /* Pipe pd is now fully closed! */
11647         exit(0);                                /* Bye bye, thank you for playing! */
11648 }
11649 EOCP
11650         set try
11651         if eval $compile_ok; then
11652                 echo "$startsh" >mtry
11653                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11654                 chmod +x mtry
11655                 ./mtry >/dev/null 2>&1
11656                 case $? in
11657                 0) eagain=`$cat try.out`;;
11658                 1) echo "Could not perform non-blocking setting!";;
11659                 2) echo "I did a successful read() for something that was not there!";;
11660                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11661                 4) echo "Could not find F_SETFL!";;
11662                 *) echo "Something terribly wrong happened during testing.";;
11663                 esac
11664                 rd_nodata=`$cat try.ret`
11665                 echo "A read() system call with no data present returns $rd_nodata."
11666                 case "$rd_nodata" in
11667                 0|-1) ;;
11668                 *)
11669                         echo "(That's peculiar, fixing that to be -1.)"
11670                         rd_nodata=-1
11671                         ;;
11672                 esac
11673                 case "$eagain" in
11674                 '')
11675                         echo "Forcing errno EAGAIN on read() with no data available."
11676                         eagain=EAGAIN
11677                         ;;
11678                 *)
11679                         echo "Your read() sets errno to $eagain when no data is available."
11680                         ;;
11681                 esac
11682                 status=`$cat try.err`
11683                 case "$status" in
11684                 0) echo "And it correctly returns 0 to signal EOF.";;
11685                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11686                 *) echo "However, your read() returns '$status' on EOF??";;
11687                 esac
11688                 val="$define"
11689                 if test "$status" = "$rd_nodata"; then
11690                         echo "WARNING: you can't distinguish between EOF and no data!"
11691                         val="$undef"
11692                 fi
11693         else
11694                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11695                 eagain=EAGAIN
11696         fi
11697         set d_eofnblk
11698         eval $setvar
11699         ;;
11700 *)
11701         echo "Using $hint value $eagain."
11702         echo "Your read() returns $rd_nodata when no data is present."
11703         case "$d_eofnblk" in
11704         "$define") echo "And you can see EOF because read() returns 0.";;
11705         "$undef") echo "But you can't see EOF status from read() returned value.";;
11706         *)
11707                 echo "(Assuming you can't see EOF status from read anyway.)"
11708                 d_eofnblk=$undef
11709                 ;;
11710         esac
11711         ;;
11712 esac
11713 $rm -f try try.* .out core head.c mtry
11714
11715 : see if _ptr and _cnt from stdio act std
11716 echo " "
11717
11718 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11719         echo "(Looks like you have stdio.h from BSD.)"
11720         case "$stdio_ptr" in
11721         '') stdio_ptr='((fp)->_p)'
11722                 ptr_lval=$define
11723                 ;;
11724         *)      ptr_lval=$d_stdio_ptr_lval;;
11725         esac
11726         case "$stdio_cnt" in
11727         '') stdio_cnt='((fp)->_r)'
11728                 cnt_lval=$define
11729                 ;;
11730         *)      cnt_lval=$d_stdio_cnt_lval;;
11731         esac
11732         case "$stdio_base" in
11733         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11734         esac
11735         case "$stdio_bufsiz" in
11736         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11737         esac
11738 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11739         echo "(Looks like you have stdio.h from Linux.)"
11740         case "$stdio_ptr" in
11741         '') stdio_ptr='((fp)->_IO_read_ptr)'
11742                 ptr_lval=$define
11743                 ;;
11744         *)      ptr_lval=$d_stdio_ptr_lval;;
11745         esac
11746         case "$stdio_cnt" in
11747         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11748                 cnt_lval=$undef
11749                 ;;
11750         *)      cnt_lval=$d_stdio_cnt_lval;;
11751         esac
11752         case "$stdio_base" in
11753         '') stdio_base='((fp)->_IO_read_base)';;
11754         esac
11755         case "$stdio_bufsiz" in
11756         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11757         esac
11758 else
11759         case "$stdio_ptr" in
11760         '') stdio_ptr='((fp)->_ptr)'
11761                 ptr_lval=$define
11762                 ;;
11763         *)      ptr_lval=$d_stdio_ptr_lval;;
11764         esac
11765         case "$stdio_cnt" in
11766         '') stdio_cnt='((fp)->_cnt)'
11767                 cnt_lval=$define
11768                 ;;
11769         *)      cnt_lval=$d_stdio_cnt_lval;;
11770         esac
11771         case "$stdio_base" in
11772         '') stdio_base='((fp)->_base)';;
11773         esac
11774         case "$stdio_bufsiz" in
11775         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11776         esac
11777 fi
11778
11779 : test whether _ptr and _cnt really work
11780 echo "Checking how std your stdio is..." >&4
11781 $cat >try.c <<EOP
11782 #include <stdio.h>
11783 #$i_stdlib I_STDLIB
11784 #ifdef I_STDLIB
11785 #include <stdlib.h>
11786 #endif
11787 #define FILE_ptr(fp)    $stdio_ptr
11788 #define FILE_cnt(fp)    $stdio_cnt
11789 int main() {
11790         FILE *fp = fopen("try.c", "r");
11791         char c = getc(fp);
11792         if (
11793                 18 <= FILE_cnt(fp) &&
11794                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11795         )
11796                 exit(0);
11797         exit(1);
11798 }
11799 EOP
11800 val="$undef"
11801 set try
11802 if eval $compile && $to try.c; then
11803         if $run ./try; then
11804                 echo "Your stdio acts pretty std."
11805                 val="$define"
11806         else
11807                 echo "Your stdio isn't very std."
11808         fi
11809 else
11810         echo "Your stdio doesn't appear very std."
11811 fi
11812 $rm -f try.c try
11813
11814 # glibc 2.2.90 and above apparently change stdio streams so Perl's
11815 # direct buffer manipulation no longer works.  The Configure tests
11816 # should be changed to correctly detect this, but until then,
11817 # the following check should at least let perl compile and run.
11818 # (This quick fix should be updated before 5.8.1.)
11819 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
11820 # A. Dougherty, June 3, 2002.
11821 case "$d_gnulibc" in
11822 $define)
11823         case "$gnulibc_version" in
11824         2.[01]*)  ;;
11825         2.2) ;;
11826         2.2.[0-9]) ;;
11827         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11828                 val="$undef"
11829                 ;;
11830         esac
11831         ;;
11832 esac
11833 set d_stdstdio
11834 eval $setvar
11835
11836 : Can _ptr be used as an lvalue?
11837 case "$d_stdstdio$ptr_lval" in
11838 $define$define) val=$define ;;
11839 *) val=$undef ;;
11840 esac
11841 set d_stdio_ptr_lval
11842 eval $setvar
11843
11844 : Can _cnt be used as an lvalue?
11845 case "$d_stdstdio$cnt_lval" in
11846 $define$define) val=$define ;;
11847 *) val=$undef ;;
11848 esac
11849 set d_stdio_cnt_lval
11850 eval $setvar
11851
11852
11853 : test whether setting _ptr sets _cnt as a side effect
11854 d_stdio_ptr_lval_sets_cnt="$undef"
11855 d_stdio_ptr_lval_nochange_cnt="$undef"
11856 case "$d_stdio_ptr_lval$d_stdstdio" in
11857 $define$define)
11858         echo "Checking to see what happens if we set the stdio ptr..." >&4
11859 $cat >try.c <<EOP
11860 #include <stdio.h>
11861 /* Can we scream? */
11862 /* Eat dust sed :-) */
11863 /* In the buffer space, no one can hear you scream. */
11864 #$i_stdlib I_STDLIB
11865 #ifdef I_STDLIB
11866 #include <stdlib.h>
11867 #endif
11868 #define FILE_ptr(fp)    $stdio_ptr
11869 #define FILE_cnt(fp)    $stdio_cnt
11870 #include <sys/types.h>
11871 int main() {
11872         FILE *fp = fopen("try.c", "r");
11873         int c;
11874         char *ptr;
11875         size_t cnt;
11876         if (!fp) {
11877             puts("Fail even to read");
11878             exit(1);
11879         }
11880         c = getc(fp); /* Read away the first # */
11881         if (c == EOF) {
11882             puts("Fail even to read");
11883             exit(1);
11884         }
11885         if (!(
11886                 18 <= FILE_cnt(fp) &&
11887                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11888         )) {
11889                 puts("Fail even to read");
11890                 exit (1);
11891         }
11892         ptr = (char*) FILE_ptr(fp);
11893         cnt = (size_t)FILE_cnt(fp);
11894
11895         FILE_ptr(fp) += 42;
11896
11897         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11898                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11899                 exit (1);
11900         }
11901         if (FILE_cnt(fp) <= 20) {
11902                 printf ("Fail (<20 chars to test)");
11903                 exit (1);
11904         }
11905         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11906                 puts("Fail compare");
11907                 exit (1);
11908         }
11909         if (cnt == FILE_cnt(fp)) {
11910                 puts("Pass_unchanged");
11911                 exit (0);
11912         }       
11913         if (FILE_cnt(fp) == (cnt - 42)) {
11914                 puts("Pass_changed");
11915                 exit (0);
11916         }
11917         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11918         return 1;
11919
11920 }
11921 EOP
11922         set try
11923         if eval $compile && $to try.c; then
11924                 case `$run ./try` in
11925                 Pass_changed)
11926                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11927                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11928                 Pass_unchanged)
11929                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11930                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11931                 Fail*)
11932                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11933                 *)
11934                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11935         esac
11936         else
11937                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11938         fi
11939         $rm -f try.c try
11940         ;;
11941 esac
11942
11943 : see if _base is also standard
11944 val="$undef"
11945 case "$d_stdstdio" in
11946 $define)
11947         $cat >try.c <<EOP
11948 #include <stdio.h>
11949 #$i_stdlib I_STDLIB
11950 #ifdef I_STDLIB
11951 #include <stdlib.h>
11952 #endif
11953 #define FILE_base(fp)   $stdio_base
11954 #define FILE_bufsiz(fp) $stdio_bufsiz
11955 int main() {
11956         FILE *fp = fopen("try.c", "r");
11957         char c = getc(fp);
11958         if (
11959                 19 <= FILE_bufsiz(fp) &&
11960                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11961         )
11962                 exit(0);
11963         exit(1);
11964 }
11965 EOP
11966         set try
11967         if eval $compile && $to try.c; then
11968                 if $run ./try; then
11969                         echo "And its _base field acts std."
11970                         val="$define"
11971                 else
11972                         echo "But its _base field isn't std."
11973                 fi
11974         else
11975                 echo "However, it seems to be lacking the _base field."
11976         fi
11977         $rm -f try.c try
11978         ;;
11979 esac
11980 set d_stdiobase
11981 eval $setvar
11982
11983 : see if fast_stdio exists
11984 val="$undef"
11985 case "$d_stdstdio:$d_stdio_ptr_lval" in
11986 "$define:$define")
11987         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
11988         *$define*)
11989                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
11990                 val="$define"
11991                 ;;
11992         esac
11993         ;;
11994 esac
11995 set d_faststdio
11996 eval $setvar
11997
11998
11999
12000 : see if fchdir exists
12001 set fchdir d_fchdir
12002 eval $inlibc
12003
12004 : see if fchmod exists
12005 set fchmod d_fchmod
12006 eval $inlibc
12007
12008 : see if fchown exists
12009 set fchown d_fchown
12010 eval $inlibc
12011
12012 : see if this is an fcntl system
12013 set fcntl d_fcntl
12014 eval $inlibc
12015
12016 echo " "
12017 : See if fcntl-based locking works.
12018 $cat >try.c <<EOCP
12019 #$i_stdlib I_STDLIB
12020 #ifdef I_STDLIB
12021 #include <stdlib.h>
12022 #endif
12023 #include <unistd.h>
12024 #include <fcntl.h>
12025 #include <signal.h>
12026 $signal_t blech(x) int x; { exit(3); }
12027 int main() {
12028 #if defined(F_SETLK) && defined(F_SETLKW)
12029      struct flock flock;
12030      int retval, fd;
12031      fd = open("try.c", O_RDONLY);
12032      flock.l_type = F_RDLCK;
12033      flock.l_whence = SEEK_SET;
12034      flock.l_start = flock.l_len = 0;
12035      signal(SIGALRM, blech);
12036      alarm(10);
12037      retval = fcntl(fd, F_SETLK, &flock);
12038      close(fd);
12039      (retval < 0 ? exit(2) : exit(0));
12040 #else
12041      exit(2);
12042 #endif
12043 }
12044 EOCP
12045 echo "Checking if fcntl-based file locking works... "
12046 case "$d_fcntl" in
12047 "$define")
12048         set try
12049         if eval $compile_ok; then
12050                 if $run ./try; then
12051                         echo "Yes, it seems to work."
12052                         val="$define"
12053                 else
12054                         echo "Nope, it didn't work."
12055                         val="$undef"
12056                         case "$?" in
12057                         3) $cat >&4 <<EOM
12058 ***
12059 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12060 *** This is (almost) impossible.
12061 *** If your NFS lock daemons are not feeling well, something like
12062 *** this may happen, please investigate.  Cannot continue, aborting.
12063 ***
12064 EOM
12065                                 exit 1
12066                                 ;;
12067                         esac
12068                 fi
12069         else
12070                 echo "I'm unable to compile the test program, so I'll assume not."
12071                 val="$undef"
12072         fi
12073         ;;
12074 *) val="$undef";
12075         echo "Nope, since you don't even have fcntl()."
12076         ;;
12077 esac
12078 set d_fcntl_can_lock
12079 eval $setvar
12080 $rm -f try*
12081
12082
12083 : check for fd_set items
12084 $cat <<EOM
12085
12086 Checking to see how well your C compiler handles fd_set and friends ...
12087 EOM
12088 $cat >try.c <<EOCP
12089 #$i_stdlib I_STDLIB
12090 #ifdef I_STDLIB
12091 #include <stdlib.h>
12092 #endif
12093 #$i_systime I_SYS_TIME
12094 #$i_sysselct I_SYS_SELECT
12095 #$d_socket HAS_SOCKET
12096 #include <sys/types.h>
12097 #ifdef HAS_SOCKET
12098 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12099 #endif
12100 #ifdef I_SYS_TIME
12101 #include <sys/time.h>
12102 #endif
12103 #ifdef I_SYS_SELECT
12104 #include <sys/select.h>
12105 #endif
12106 int main() {
12107         fd_set fds;
12108
12109 #ifdef TRYBITS
12110         if(fds.fds_bits);
12111 #endif
12112
12113 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12114         exit(0);
12115 #else
12116         exit(1);
12117 #endif
12118 }
12119 EOCP
12120 set try -DTRYBITS
12121 if eval $compile; then
12122         d_fds_bits="$define"
12123         d_fd_set="$define"
12124         echo "Well, your system knows about the normal fd_set typedef..." >&4
12125         if $run ./try; then
12126                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12127                 d_fd_macros="$define"
12128         else
12129                 $cat >&4 <<'EOM'
12130 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12131 EOM
12132                 d_fd_macros="$undef"
12133         fi
12134 else
12135         $cat <<'EOM'
12136 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12137 EOM
12138         set try
12139         if eval $compile; then
12140                 d_fds_bits="$undef"
12141                 d_fd_set="$define"
12142                 echo "Well, your system has some sort of fd_set available..." >&4
12143                 if $run ./try; then
12144                         echo "and you have the normal fd_set macros." >&4
12145                         d_fd_macros="$define"
12146                 else
12147                         $cat <<'EOM'
12148 but not the normal fd_set macros!  Gross!  More work for me...
12149 EOM
12150                         d_fd_macros="$undef"
12151                 fi
12152         else
12153         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12154                 d_fd_set="$undef"
12155                 d_fds_bits="$undef"
12156                 d_fd_macros="$undef"
12157         fi
12158 fi
12159 $rm -f try try.*
12160
12161 : see if fgetpos exists
12162 set fgetpos d_fgetpos
12163 eval $inlibc
12164
12165 : see if finite exists
12166 set finite d_finite
12167 eval $inlibc
12168
12169 : see if finitel exists
12170 set finitel d_finitel
12171 eval $inlibc
12172
12173 : see if flock exists
12174 set flock d_flock
12175 eval $inlibc
12176
12177 : see if prototype for flock is available
12178 echo " "
12179 set d_flockproto flock $i_sysfile sys/file.h
12180 eval $hasproto
12181
12182 : see if fork exists
12183 set fork d_fork
12184 eval $inlibc
12185
12186 : see if fp_class exists
12187 set fp_class d_fp_class
12188 eval $inlibc
12189
12190 : see if pathconf exists
12191 set pathconf d_pathconf
12192 eval $inlibc
12193
12194 : see if fpathconf exists
12195 set fpathconf d_fpathconf
12196 eval $inlibc
12197
12198 : see if fpclass exists
12199 set fpclass d_fpclass
12200 eval $inlibc
12201
12202 : see if fpclassify exists
12203 set fpclassify d_fpclassify
12204 eval $inlibc
12205
12206 : see if fpclassl exists
12207 set fpclassl d_fpclassl
12208 eval $inlibc
12209
12210
12211 : check for fpos64_t
12212 echo " "
12213 echo "Checking to see if you have fpos64_t..." >&4
12214 $cat >try.c <<EOCP
12215 #include <stdio.h>
12216 int main() { fpos64_t x = 7; }
12217 EOCP
12218 set try
12219 if eval $compile; then
12220         val="$define"
12221         echo "You have fpos64_t."
12222 else
12223         val="$undef"
12224         echo "You do not have fpos64_t."
12225         case "$fpossize" in
12226         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12227         esac
12228 fi
12229 $rm -f try.* try
12230 set d_fpos64_t
12231 eval $setvar
12232
12233 : see if frexpl exists
12234 set frexpl d_frexpl
12235 eval $inlibc
12236
12237 : see if this is a sys/param system
12238 set sys/param.h i_sysparam
12239 eval $inhdr
12240
12241 : see if this is a sys/mount.h system
12242 set sys/mount.h i_sysmount
12243 eval $inhdr
12244
12245
12246 echo " "
12247 echo "Checking to see if your system supports struct fs_data..." >&4
12248 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12249 eval $hasstruct
12250 case "$d_fs_data_s" in
12251 "$define")      echo "Yes, it does."   ;;
12252 *)              echo "No, it doesn't." ;;
12253 esac
12254
12255 : see if fseeko exists
12256 set fseeko d_fseeko
12257 eval $inlibc
12258 case "$longsize" in
12259 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12260 esac
12261
12262 : see if fsetpos exists
12263 set fsetpos d_fsetpos
12264 eval $inlibc
12265
12266
12267 : see if fstatfs exists
12268 set fstatfs d_fstatfs
12269 eval $inlibc
12270
12271
12272 : see if statvfs exists
12273 set statvfs d_statvfs
12274 eval $inlibc
12275
12276 : see if fstatvfs exists
12277 set fstatvfs d_fstatvfs
12278 eval $inlibc
12279
12280
12281 : see if fsync exists
12282 set fsync d_fsync
12283 eval $inlibc
12284
12285 : see if ftello exists
12286 set ftello d_ftello
12287 eval $inlibc
12288 case "$longsize" in
12289 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12290 esac
12291
12292 : see if getcwd exists
12293 set getcwd d_getcwd
12294 eval $inlibc
12295
12296 : see if getespwnam exists
12297 set getespwnam d_getespwnam
12298 eval $inlibc
12299
12300
12301 : see if getfsstat exists
12302 set getfsstat d_getfsstat
12303 eval $inlibc
12304
12305 : see if getgrent exists
12306 set getgrent d_getgrent
12307 eval $inlibc
12308
12309 : see if getgrent_r exists
12310 set getgrent_r d_getgrent_r
12311 eval $inlibc
12312 case "$d_getgrent_r" in
12313 "$define")
12314         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12315         case "$d_getgrent_r_proto:$usethreads" in
12316         ":define")      d_getgrent_r_proto=define
12317                 set d_getgrent_r_proto getgrent_r $hdrs
12318                 eval $hasproto ;;
12319         *)      ;;
12320         esac
12321         case "$d_getgrent_r_proto" in
12322         define)
12323         case "$getgrent_r_proto" in
12324         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12325         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12326         esac
12327         case "$getgrent_r_proto" in
12328         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12329         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12330         esac
12331         case "$getgrent_r_proto" in
12332         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12333         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12334         esac
12335         case "$getgrent_r_proto" in
12336         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12337         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12338         esac
12339         case "$getgrent_r_proto" in
12340         ''|0) try='int getgrent_r(struct group*, char*, int);'
12341         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12342         esac
12343         case "$getgrent_r_proto" in
12344         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12345         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12346         esac
12347         case "$getgrent_r_proto" in
12348         ''|0)   d_getgrent_r=undef
12349                 getgrent_r_proto=0
12350                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12351         * )     case "$getgrent_r_proto" in
12352                 REENTRANT_PROTO*) ;;
12353                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12354                 esac
12355                 echo "Prototype: $try" ;;
12356         esac
12357         ;;
12358         *)      case "$usethreads" in
12359                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12360                 esac
12361                 d_getgrent_r=undef
12362                 getgrent_r_proto=0
12363                 ;;
12364         esac
12365         ;;
12366 *)      getgrent_r_proto=0
12367         ;;
12368 esac
12369
12370 : see if getgrgid_r exists
12371 set getgrgid_r d_getgrgid_r
12372 eval $inlibc
12373 case "$d_getgrgid_r" in
12374 "$define")
12375         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12376         case "$d_getgrgid_r_proto:$usethreads" in
12377         ":define")      d_getgrgid_r_proto=define
12378                 set d_getgrgid_r_proto getgrgid_r $hdrs
12379                 eval $hasproto ;;
12380         *)      ;;
12381         esac
12382         case "$d_getgrgid_r_proto" in
12383         define)
12384         case "$getgrgid_r_proto" in
12385         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12386         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12387         esac
12388         case "$getgrgid_r_proto" in
12389         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12390         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12391         esac
12392         case "$getgrgid_r_proto" in
12393         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12394         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12395         esac
12396         case "$getgrgid_r_proto" in
12397         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12398         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12399         esac
12400         case "$getgrgid_r_proto" in
12401         ''|0)   d_getgrgid_r=undef
12402                 getgrgid_r_proto=0
12403                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12404         * )     case "$getgrgid_r_proto" in
12405                 REENTRANT_PROTO*) ;;
12406                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12407                 esac
12408                 echo "Prototype: $try" ;;
12409         esac
12410         ;;
12411         *)      case "$usethreads" in
12412                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12413                 esac
12414                 d_getgrgid_r=undef
12415                 getgrgid_r_proto=0
12416                 ;;
12417         esac
12418         ;;
12419 *)      getgrgid_r_proto=0
12420         ;;
12421 esac
12422
12423 : see if getgrnam_r exists
12424 set getgrnam_r d_getgrnam_r
12425 eval $inlibc
12426 case "$d_getgrnam_r" in
12427 "$define")
12428         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12429         case "$d_getgrnam_r_proto:$usethreads" in
12430         ":define")      d_getgrnam_r_proto=define
12431                 set d_getgrnam_r_proto getgrnam_r $hdrs
12432                 eval $hasproto ;;
12433         *)      ;;
12434         esac
12435         case "$d_getgrnam_r_proto" in
12436         define)
12437         case "$getgrnam_r_proto" in
12438         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12439         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12440         esac
12441         case "$getgrnam_r_proto" in
12442         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12443         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12444         esac
12445         case "$getgrnam_r_proto" in
12446         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12447         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12448         esac
12449         case "$getgrnam_r_proto" in
12450         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12451         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12452         esac
12453         case "$getgrnam_r_proto" in
12454         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12455         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12456         esac
12457         case "$getgrnam_r_proto" in
12458         ''|0)   d_getgrnam_r=undef
12459                 getgrnam_r_proto=0
12460                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12461         * )     case "$getgrnam_r_proto" in
12462                 REENTRANT_PROTO*) ;;
12463                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12464                 esac
12465                 echo "Prototype: $try" ;;
12466         esac
12467         ;;
12468         *)      case "$usethreads" in
12469                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12470                 esac
12471                 d_getgrnam_r=undef
12472                 getgrnam_r_proto=0
12473                 ;;
12474         esac
12475         ;;
12476 *)      getgrnam_r_proto=0
12477         ;;
12478 esac
12479
12480 : see if gethostbyaddr exists
12481 set gethostbyaddr d_gethbyaddr
12482 eval $inlibc
12483
12484 : see if gethostbyname exists
12485 set gethostbyname d_gethbyname
12486 eval $inlibc
12487
12488 : see if gethostent exists
12489 set gethostent d_gethent
12490 eval $inlibc
12491
12492 : see how we will look up host name
12493 echo " "
12494 call=''
12495 if set gethostname val -f d_gethname; eval $csym; $val; then
12496         echo 'gethostname() found.' >&4
12497         d_gethname="$define"
12498         call=gethostname
12499 fi
12500 if set uname val -f d_uname; eval $csym; $val; then
12501         if ./xenix; then
12502                 $cat <<'EOM'
12503 uname() was found, but you're running xenix, and older versions of xenix
12504 have a broken uname(). If you don't really know whether your xenix is old
12505 enough to have a broken system call, use the default answer.
12506
12507 EOM
12508                 dflt=y
12509                 case "$d_uname" in
12510                 "$define") dflt=n;;
12511                 esac
12512                 rp='Is your uname() broken?'
12513                 . ./myread
12514                 case "$ans" in
12515                 n*) d_uname="$define"; call=uname;;
12516                 esac
12517         else
12518                 echo 'uname() found.' >&4
12519                 d_uname="$define"
12520                 case "$call" in
12521                 '') call=uname ;;
12522                 esac
12523         fi
12524 fi
12525 case "$d_gethname" in
12526 '') d_gethname="$undef";;
12527 esac
12528 case "$d_uname" in
12529 '') d_uname="$undef";;
12530 esac
12531 case "$d_uname$d_gethname" in
12532 *define*)
12533         dflt=n
12534         cat <<EOM
12535  
12536 Every now and then someone has a $call() that lies about the hostname
12537 but can't be fixed for political or economic reasons.  If you wish, I can
12538 pretend $call() isn't there and maybe compute hostname at run-time
12539 thanks to the '$phostname' command.
12540
12541 EOM
12542         rp="Shall I ignore $call() from now on?"
12543         . ./myread
12544         case "$ans" in
12545         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12546         esac;;
12547 esac
12548 case "$phostname" in
12549 '') aphostname='';;
12550 *) case "$aphostname" in
12551         /*) ;;
12552         *) set X $phostname
12553                 shift
12554                 file=$1
12555                 shift
12556                 file=`./loc $file $file $pth`
12557                 aphostname=`echo $file $*`
12558                 ;;
12559         esac
12560         ;;
12561 esac
12562 case "$d_uname$d_gethname" in
12563 *define*) ;;
12564 *)
12565         case "$phostname" in
12566         '')
12567                 echo "There will be no way for $package to get your hostname." >&4;;
12568         *)
12569         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12570                 ;;
12571         esac;;
12572 esac
12573 case "$d_phostname" in
12574 '') d_phostname="$undef";;
12575 esac
12576
12577 : see if gethostbyaddr_r exists
12578 set gethostbyaddr_r d_gethostbyaddr_r
12579 eval $inlibc
12580 case "$d_gethostbyaddr_r" in
12581 "$define")
12582         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12583         case "$d_gethostbyaddr_r_proto:$usethreads" in
12584         ":define")      d_gethostbyaddr_r_proto=define
12585                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12586                 eval $hasproto ;;
12587         *)      ;;
12588         esac
12589         case "$d_gethostbyaddr_r_proto" in
12590         define)
12591         case "$gethostbyaddr_r_proto" in
12592         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12593         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12594         esac
12595         case "$gethostbyaddr_r_proto" in
12596         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12597         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12598         esac
12599         case "$gethostbyaddr_r_proto" in
12600         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12601         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12602         esac
12603         case "$gethostbyaddr_r_proto" in
12604         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12605         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12606         esac
12607         case "$gethostbyaddr_r_proto" in
12608         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12609         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12610         esac
12611         case "$gethostbyaddr_r_proto" in
12612         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12613         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12614         esac
12615         case "$gethostbyaddr_r_proto" in
12616         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12617         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12618         esac
12619         case "$gethostbyaddr_r_proto" in
12620         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12621         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12622         esac
12623         case "$gethostbyaddr_r_proto" in
12624         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12625         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12626         esac
12627         case "$gethostbyaddr_r_proto" in
12628         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12629         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12630         esac
12631         case "$gethostbyaddr_r_proto" in
12632         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12633         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12634         esac
12635         case "$gethostbyaddr_r_proto" in
12636         ''|0)   d_gethostbyaddr_r=undef
12637                 gethostbyaddr_r_proto=0
12638                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12639         * )     case "$gethostbyaddr_r_proto" in
12640                 REENTRANT_PROTO*) ;;
12641                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12642                 esac
12643                 echo "Prototype: $try" ;;
12644         esac
12645         ;;
12646         *)      case "$usethreads" in
12647                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12648                 esac
12649                 d_gethostbyaddr_r=undef
12650                 gethostbyaddr_r_proto=0
12651                 ;;
12652         esac
12653         ;;
12654 *)      gethostbyaddr_r_proto=0
12655         ;;
12656 esac
12657
12658 : see if gethostbyname_r exists
12659 set gethostbyname_r d_gethostbyname_r
12660 eval $inlibc
12661 case "$d_gethostbyname_r" in
12662 "$define")
12663         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12664         case "$d_gethostbyname_r_proto:$usethreads" in
12665         ":define")      d_gethostbyname_r_proto=define
12666                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12667                 eval $hasproto ;;
12668         *)      ;;
12669         esac
12670         case "$d_gethostbyname_r_proto" in
12671         define)
12672         case "$gethostbyname_r_proto" in
12673         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12674         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12675         esac
12676         case "$gethostbyname_r_proto" in
12677         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12678         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12679         esac
12680         case "$gethostbyname_r_proto" in
12681         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12682         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12683         esac
12684         case "$gethostbyname_r_proto" in
12685         ''|0)   d_gethostbyname_r=undef
12686                 gethostbyname_r_proto=0
12687                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12688         * )     case "$gethostbyname_r_proto" in
12689                 REENTRANT_PROTO*) ;;
12690                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12691                 esac
12692                 echo "Prototype: $try" ;;
12693         esac
12694         ;;
12695         *)      case "$usethreads" in
12696                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12697                 esac
12698                 d_gethostbyname_r=undef
12699                 gethostbyname_r_proto=0
12700                 ;;
12701         esac
12702         ;;
12703 *)      gethostbyname_r_proto=0
12704         ;;
12705 esac
12706
12707 : see if gethostent_r exists
12708 set gethostent_r d_gethostent_r
12709 eval $inlibc
12710 case "$d_gethostent_r" in
12711 "$define")
12712         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12713         case "$d_gethostent_r_proto:$usethreads" in
12714         ":define")      d_gethostent_r_proto=define
12715                 set d_gethostent_r_proto gethostent_r $hdrs
12716                 eval $hasproto ;;
12717         *)      ;;
12718         esac
12719         case "$d_gethostent_r_proto" in
12720         define)
12721         case "$gethostent_r_proto" in
12722         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12723         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12724         esac
12725         case "$gethostent_r_proto" in
12726         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12727         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12728         esac
12729         case "$gethostent_r_proto" in
12730         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12731         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12732         esac
12733         case "$gethostent_r_proto" in
12734         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12735         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12736         esac
12737         case "$gethostent_r_proto" in
12738         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12739         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12740         esac
12741         case "$gethostent_r_proto" in
12742         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12743         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12744         esac
12745         case "$gethostent_r_proto" in
12746         ''|0)   d_gethostent_r=undef
12747                 gethostent_r_proto=0
12748                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12749         * )     case "$gethostent_r_proto" in
12750                 REENTRANT_PROTO*) ;;
12751                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12752                 esac
12753                 echo "Prototype: $try" ;;
12754         esac
12755         ;;
12756         *)      case "$usethreads" in
12757                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12758                 esac
12759                 d_gethostent_r=undef
12760                 gethostent_r_proto=0
12761                 ;;
12762         esac
12763         ;;
12764 *)      gethostent_r_proto=0
12765         ;;
12766 esac
12767
12768 : see if prototypes for various gethostxxx netdb.h functions are available
12769 echo " "
12770 set d_gethostprotos gethostent $i_netdb netdb.h
12771 eval $hasproto
12772
12773 : see if getitimer exists
12774 set getitimer d_getitimer
12775 eval $inlibc
12776
12777 : see if getlogin exists
12778 set getlogin d_getlogin
12779 eval $inlibc
12780
12781 : see if getlogin_r exists
12782 set getlogin_r d_getlogin_r
12783 eval $inlibc
12784 case "$d_getlogin_r" in
12785 "$define")
12786         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12787         case "$d_getlogin_r_proto:$usethreads" in
12788         ":define")      d_getlogin_r_proto=define
12789                 set d_getlogin_r_proto getlogin_r $hdrs
12790                 eval $hasproto ;;
12791         *)      ;;
12792         esac
12793         case "$d_getlogin_r_proto" in
12794         define)
12795         case "$getlogin_r_proto" in
12796         ''|0) try='int getlogin_r(char*, size_t);'
12797         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12798         esac
12799         case "$getlogin_r_proto" in
12800         ''|0) try='int getlogin_r(char*, int);'
12801         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12802         esac
12803         case "$getlogin_r_proto" in
12804         ''|0) try='char* getlogin_r(char*, size_t);'
12805         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12806         esac
12807         case "$getlogin_r_proto" in
12808         ''|0) try='char* getlogin_r(char*, int);'
12809         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12810         esac
12811         case "$getlogin_r_proto" in
12812         ''|0)   d_getlogin_r=undef
12813                 getlogin_r_proto=0
12814                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12815         * )     case "$getlogin_r_proto" in
12816                 REENTRANT_PROTO*) ;;
12817                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12818                 esac
12819                 echo "Prototype: $try" ;;
12820         esac
12821         ;;
12822         *)      case "$usethreads" in
12823                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12824                 esac
12825                 d_getlogin_r=undef
12826                 getlogin_r_proto=0
12827                 ;;
12828         esac
12829         ;;
12830 *)      getlogin_r_proto=0
12831         ;;
12832 esac
12833
12834 : see if getmnt exists
12835 set getmnt d_getmnt
12836 eval $inlibc
12837
12838 : see if getmntent exists
12839 set getmntent d_getmntent
12840 eval $inlibc
12841
12842 : see if getnetbyaddr exists
12843 set getnetbyaddr d_getnbyaddr
12844 eval $inlibc
12845
12846 : see if getnetbyname exists
12847 set getnetbyname d_getnbyname
12848 eval $inlibc
12849
12850 : see if getnetent exists
12851 set getnetent d_getnent
12852 eval $inlibc
12853
12854 : see if getnetbyaddr_r exists
12855 set getnetbyaddr_r d_getnetbyaddr_r
12856 eval $inlibc
12857 case "$d_getnetbyaddr_r" in
12858 "$define")
12859         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12860         case "$d_getnetbyaddr_r_proto:$usethreads" in
12861         ":define")      d_getnetbyaddr_r_proto=define
12862                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12863                 eval $hasproto ;;
12864         *)      ;;
12865         esac
12866         case "$d_getnetbyaddr_r_proto" in
12867         define)
12868         case "$getnetbyaddr_r_proto" in
12869         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12870         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12871         esac
12872         case "$getnetbyaddr_r_proto" in
12873         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12874         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12875         esac
12876         case "$getnetbyaddr_r_proto" in
12877         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12878         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12879         esac
12880         case "$getnetbyaddr_r_proto" in
12881         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12882         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12883         esac
12884         case "$getnetbyaddr_r_proto" in
12885         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12886         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12887         esac
12888         case "$getnetbyaddr_r_proto" in
12889         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12890         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12891         esac
12892         case "$getnetbyaddr_r_proto" in
12893         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12894         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12895         esac
12896         case "$getnetbyaddr_r_proto" in
12897         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12898         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12899         esac
12900         case "$getnetbyaddr_r_proto" in
12901         ''|0)   d_getnetbyaddr_r=undef
12902                 getnetbyaddr_r_proto=0
12903                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12904         * )     case "$getnetbyaddr_r_proto" in
12905                 REENTRANT_PROTO*) ;;
12906                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12907                 esac
12908                 echo "Prototype: $try" ;;
12909         esac
12910         ;;
12911         *)      case "$usethreads" in
12912                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12913                 esac
12914                 d_getnetbyaddr_r=undef
12915                 getnetbyaddr_r_proto=0
12916                 ;;
12917         esac
12918         ;;
12919 *)      getnetbyaddr_r_proto=0
12920         ;;
12921 esac
12922
12923 : see if getnetbyname_r exists
12924 set getnetbyname_r d_getnetbyname_r
12925 eval $inlibc
12926 case "$d_getnetbyname_r" in
12927 "$define")
12928         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12929         case "$d_getnetbyname_r_proto:$usethreads" in
12930         ":define")      d_getnetbyname_r_proto=define
12931                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12932                 eval $hasproto ;;
12933         *)      ;;
12934         esac
12935         case "$d_getnetbyname_r_proto" in
12936         define)
12937         case "$getnetbyname_r_proto" in
12938         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12939         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12940         esac
12941         case "$getnetbyname_r_proto" in
12942         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12943         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12944         esac
12945         case "$getnetbyname_r_proto" in
12946         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12947         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12948         esac
12949         case "$getnetbyname_r_proto" in
12950         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12951         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12952         esac
12953         case "$getnetbyname_r_proto" in
12954         ''|0)   d_getnetbyname_r=undef
12955                 getnetbyname_r_proto=0
12956                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12957         * )     case "$getnetbyname_r_proto" in
12958                 REENTRANT_PROTO*) ;;
12959                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12960                 esac
12961                 echo "Prototype: $try" ;;
12962         esac
12963         ;;
12964         *)      case "$usethreads" in
12965                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12966                 esac
12967                 d_getnetbyname_r=undef
12968                 getnetbyname_r_proto=0
12969                 ;;
12970         esac
12971         ;;
12972 *)      getnetbyname_r_proto=0
12973         ;;
12974 esac
12975
12976 : see if getnetent_r exists
12977 set getnetent_r d_getnetent_r
12978 eval $inlibc
12979 case "$d_getnetent_r" in
12980 "$define")
12981         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12982         case "$d_getnetent_r_proto:$usethreads" in
12983         ":define")      d_getnetent_r_proto=define
12984                 set d_getnetent_r_proto getnetent_r $hdrs
12985                 eval $hasproto ;;
12986         *)      ;;
12987         esac
12988         case "$d_getnetent_r_proto" in
12989         define)
12990         case "$getnetent_r_proto" in
12991         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
12992         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
12993         esac
12994         case "$getnetent_r_proto" in
12995         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
12996         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
12997         esac
12998         case "$getnetent_r_proto" in
12999         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13000         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13001         esac
13002         case "$getnetent_r_proto" in
13003         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13004         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13005         esac
13006         case "$getnetent_r_proto" in
13007         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13008         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13009         esac
13010         case "$getnetent_r_proto" in
13011         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13012         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13013         esac
13014         case "$getnetent_r_proto" in
13015         ''|0)   d_getnetent_r=undef
13016                 getnetent_r_proto=0
13017                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13018         * )     case "$getnetent_r_proto" in
13019                 REENTRANT_PROTO*) ;;
13020                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13021                 esac
13022                 echo "Prototype: $try" ;;
13023         esac
13024         ;;
13025         *)      case "$usethreads" in
13026                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13027                 esac
13028                 d_getnetent_r=undef
13029                 getnetent_r_proto=0
13030                 ;;
13031         esac
13032         ;;
13033 *)      getnetent_r_proto=0
13034         ;;
13035 esac
13036
13037 : see if prototypes for various getnetxxx netdb.h functions are available
13038 echo " "
13039 set d_getnetprotos getnetent $i_netdb netdb.h
13040 eval $hasproto
13041
13042 : see if getpagesize exists
13043 set getpagesize d_getpagsz
13044 eval $inlibc
13045
13046
13047 : see if getprotobyname exists
13048 set getprotobyname d_getpbyname
13049 eval $inlibc
13050
13051 : see if getprotobynumber exists
13052 set getprotobynumber d_getpbynumber
13053 eval $inlibc
13054
13055 : see if getprotoent exists
13056 set getprotoent d_getpent
13057 eval $inlibc
13058
13059 : see if getpgid exists
13060 set getpgid d_getpgid
13061 eval $inlibc
13062
13063 : see if getpgrp2 exists
13064 set getpgrp2 d_getpgrp2
13065 eval $inlibc
13066
13067 : see if getppid exists
13068 set getppid d_getppid
13069 eval $inlibc
13070
13071 : see if getpriority exists
13072 set getpriority d_getprior
13073 eval $inlibc
13074
13075 : see if getprotobyname_r exists
13076 set getprotobyname_r d_getprotobyname_r
13077 eval $inlibc
13078 case "$d_getprotobyname_r" in
13079 "$define")
13080         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13081         case "$d_getprotobyname_r_proto:$usethreads" in
13082         ":define")      d_getprotobyname_r_proto=define
13083                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13084                 eval $hasproto ;;
13085         *)      ;;
13086         esac
13087         case "$d_getprotobyname_r_proto" in
13088         define)
13089         case "$getprotobyname_r_proto" in
13090         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13091         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13092         esac
13093         case "$getprotobyname_r_proto" in
13094         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13095         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13096         esac
13097         case "$getprotobyname_r_proto" in
13098         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13099         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13100         esac
13101         case "$getprotobyname_r_proto" in
13102         ''|0)   d_getprotobyname_r=undef
13103                 getprotobyname_r_proto=0
13104                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13105         * )     case "$getprotobyname_r_proto" in
13106                 REENTRANT_PROTO*) ;;
13107                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13108                 esac
13109                 echo "Prototype: $try" ;;
13110         esac
13111         ;;
13112         *)      case "$usethreads" in
13113                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13114                 esac
13115                 d_getprotobyname_r=undef
13116                 getprotobyname_r_proto=0
13117                 ;;
13118         esac
13119         ;;
13120 *)      getprotobyname_r_proto=0
13121         ;;
13122 esac
13123
13124 : see if getprotobynumber_r exists
13125 set getprotobynumber_r d_getprotobynumber_r
13126 eval $inlibc
13127 case "$d_getprotobynumber_r" in
13128 "$define")
13129         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13130         case "$d_getprotobynumber_r_proto:$usethreads" in
13131         ":define")      d_getprotobynumber_r_proto=define
13132                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13133                 eval $hasproto ;;
13134         *)      ;;
13135         esac
13136         case "$d_getprotobynumber_r_proto" in
13137         define)
13138         case "$getprotobynumber_r_proto" in
13139         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13140         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13141         esac
13142         case "$getprotobynumber_r_proto" in
13143         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13144         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13145         esac
13146         case "$getprotobynumber_r_proto" in
13147         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13148         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13149         esac
13150         case "$getprotobynumber_r_proto" in
13151         ''|0)   d_getprotobynumber_r=undef
13152                 getprotobynumber_r_proto=0
13153                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13154         * )     case "$getprotobynumber_r_proto" in
13155                 REENTRANT_PROTO*) ;;
13156                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13157                 esac
13158                 echo "Prototype: $try" ;;
13159         esac
13160         ;;
13161         *)      case "$usethreads" in
13162                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13163                 esac
13164                 d_getprotobynumber_r=undef
13165                 getprotobynumber_r_proto=0
13166                 ;;
13167         esac
13168         ;;
13169 *)      getprotobynumber_r_proto=0
13170         ;;
13171 esac
13172
13173 : see if getprotoent_r exists
13174 set getprotoent_r d_getprotoent_r
13175 eval $inlibc
13176 case "$d_getprotoent_r" in
13177 "$define")
13178         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13179         case "$d_getprotoent_r_proto:$usethreads" in
13180         ":define")      d_getprotoent_r_proto=define
13181                 set d_getprotoent_r_proto getprotoent_r $hdrs
13182                 eval $hasproto ;;
13183         *)      ;;
13184         esac
13185         case "$d_getprotoent_r_proto" in
13186         define)
13187         case "$getprotoent_r_proto" in
13188         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13189         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13190         esac
13191         case "$getprotoent_r_proto" in
13192         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13193         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13194         esac
13195         case "$getprotoent_r_proto" in
13196         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13197         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13198         esac
13199         case "$getprotoent_r_proto" in
13200         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13201         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13202         esac
13203         case "$getprotoent_r_proto" in
13204         ''|0)   d_getprotoent_r=undef
13205                 getprotoent_r_proto=0
13206                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13207         * )     case "$getprotoent_r_proto" in
13208                 REENTRANT_PROTO*) ;;
13209                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13210                 esac
13211                 echo "Prototype: $try" ;;
13212         esac
13213         ;;
13214         *)      case "$usethreads" in
13215                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13216                 esac
13217                 d_getprotoent_r=undef
13218                 getprotoent_r_proto=0
13219                 ;;
13220         esac
13221         ;;
13222 *)      getprotoent_r_proto=0
13223         ;;
13224 esac
13225
13226 : see if prototypes for various getprotoxxx netdb.h functions are available
13227 echo " "
13228 set d_getprotoprotos getprotoent $i_netdb netdb.h
13229 eval $hasproto
13230
13231 : see if getprpwnam exists
13232 set getprpwnam d_getprpwnam
13233 eval $inlibc
13234
13235 : see if getpwent exists
13236 set getpwent d_getpwent
13237 eval $inlibc
13238
13239 : see if getpwent_r exists
13240 set getpwent_r d_getpwent_r
13241 eval $inlibc
13242 case "$d_getpwent_r" in
13243 "$define")
13244         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13245         case "$d_getpwent_r_proto:$usethreads" in
13246         ":define")      d_getpwent_r_proto=define
13247                 set d_getpwent_r_proto getpwent_r $hdrs
13248                 eval $hasproto ;;
13249         *)      ;;
13250         esac
13251         case "$d_getpwent_r_proto" in
13252         define)
13253         case "$getpwent_r_proto" in
13254         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13255         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13256         esac
13257         case "$getpwent_r_proto" in
13258         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13259         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13260         esac
13261         case "$getpwent_r_proto" in
13262         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13263         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13264         esac
13265         case "$getpwent_r_proto" in
13266         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13267         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13268         esac
13269         case "$getpwent_r_proto" in
13270         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13271         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13272         esac
13273         case "$getpwent_r_proto" in
13274         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13275         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13276         esac
13277         case "$getpwent_r_proto" in
13278         ''|0)   d_getpwent_r=undef
13279                 getpwent_r_proto=0
13280                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13281         * )     case "$getpwent_r_proto" in
13282                 REENTRANT_PROTO*) ;;
13283                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13284                 esac
13285                 echo "Prototype: $try" ;;
13286         esac
13287         ;;
13288         *)      case "$usethreads" in
13289                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13290                 esac
13291                 d_getpwent_r=undef
13292                 getpwent_r_proto=0
13293                 ;;
13294         esac
13295         ;;
13296 *)      getpwent_r_proto=0
13297         ;;
13298 esac
13299
13300 : see if getpwnam_r exists
13301 set getpwnam_r d_getpwnam_r
13302 eval $inlibc
13303 case "$d_getpwnam_r" in
13304 "$define")
13305         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13306         case "$d_getpwnam_r_proto:$usethreads" in
13307         ":define")      d_getpwnam_r_proto=define
13308                 set d_getpwnam_r_proto getpwnam_r $hdrs
13309                 eval $hasproto ;;
13310         *)      ;;
13311         esac
13312         case "$d_getpwnam_r_proto" in
13313         define)
13314         case "$getpwnam_r_proto" in
13315         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13316         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13317         esac
13318         case "$getpwnam_r_proto" in
13319         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13320         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13321         esac
13322         case "$getpwnam_r_proto" in
13323         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13324         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13325         esac
13326         case "$getpwnam_r_proto" in
13327         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13328         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13329         esac
13330         case "$getpwnam_r_proto" in
13331         ''|0)   d_getpwnam_r=undef
13332                 getpwnam_r_proto=0
13333                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13334         * )     case "$getpwnam_r_proto" in
13335                 REENTRANT_PROTO*) ;;
13336                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13337                 esac
13338                 echo "Prototype: $try" ;;
13339         esac
13340         ;;
13341         *)      case "$usethreads" in
13342                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13343                 esac
13344                 d_getpwnam_r=undef
13345                 getpwnam_r_proto=0
13346                 ;;
13347         esac
13348         ;;
13349 *)      getpwnam_r_proto=0
13350         ;;
13351 esac
13352
13353 : see if getpwuid_r exists
13354 set getpwuid_r d_getpwuid_r
13355 eval $inlibc
13356 case "$d_getpwuid_r" in
13357 "$define")
13358         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13359         case "$d_getpwuid_r_proto:$usethreads" in
13360         ":define")      d_getpwuid_r_proto=define
13361                 set d_getpwuid_r_proto getpwuid_r $hdrs
13362                 eval $hasproto ;;
13363         *)      ;;
13364         esac
13365         case "$d_getpwuid_r_proto" in
13366         define)
13367         case "$getpwuid_r_proto" in
13368         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13369         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13370         esac
13371         case "$getpwuid_r_proto" in
13372         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13373         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13374         esac
13375         case "$getpwuid_r_proto" in
13376         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13377         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13378         esac
13379         case "$getpwuid_r_proto" in
13380         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13381         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13382         esac
13383         case "$getpwuid_r_proto" in
13384         ''|0)   d_getpwuid_r=undef
13385                 getpwuid_r_proto=0
13386                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13387         * )     case "$getpwuid_r_proto" in
13388                 REENTRANT_PROTO*) ;;
13389                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13390                 esac
13391                 echo "Prototype: $try" ;;
13392         esac
13393         ;;
13394         *)      case "$usethreads" in
13395                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13396                 esac
13397                 d_getpwuid_r=undef
13398                 getpwuid_r_proto=0
13399                 ;;
13400         esac
13401         ;;
13402 *)      getpwuid_r_proto=0
13403         ;;
13404 esac
13405
13406
13407 : see if getservbyname exists
13408 set getservbyname d_getsbyname
13409 eval $inlibc
13410
13411 : see if getservbyport exists
13412 set getservbyport d_getsbyport
13413 eval $inlibc
13414
13415 : see if getservent exists
13416 set getservent d_getsent
13417 eval $inlibc
13418
13419 : see if getservbyname_r exists
13420 set getservbyname_r d_getservbyname_r
13421 eval $inlibc
13422 case "$d_getservbyname_r" in
13423 "$define")
13424         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13425         case "$d_getservbyname_r_proto:$usethreads" in
13426         ":define")      d_getservbyname_r_proto=define
13427                 set d_getservbyname_r_proto getservbyname_r $hdrs
13428                 eval $hasproto ;;
13429         *)      ;;
13430         esac
13431         case "$d_getservbyname_r_proto" in
13432         define)
13433         case "$getservbyname_r_proto" in
13434         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13435         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13436         esac
13437         case "$getservbyname_r_proto" in
13438         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13439         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13440         esac
13441         case "$getservbyname_r_proto" in
13442         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13443         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13444         esac
13445         case "$getservbyname_r_proto" in
13446         ''|0)   d_getservbyname_r=undef
13447                 getservbyname_r_proto=0
13448                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13449         * )     case "$getservbyname_r_proto" in
13450                 REENTRANT_PROTO*) ;;
13451                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13452                 esac
13453                 echo "Prototype: $try" ;;
13454         esac
13455         ;;
13456         *)      case "$usethreads" in
13457                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13458                 esac
13459                 d_getservbyname_r=undef
13460                 getservbyname_r_proto=0
13461                 ;;
13462         esac
13463         ;;
13464 *)      getservbyname_r_proto=0
13465         ;;
13466 esac
13467
13468 : see if getservbyport_r exists
13469 set getservbyport_r d_getservbyport_r
13470 eval $inlibc
13471 case "$d_getservbyport_r" in
13472 "$define")
13473         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13474         case "$d_getservbyport_r_proto:$usethreads" in
13475         ":define")      d_getservbyport_r_proto=define
13476                 set d_getservbyport_r_proto getservbyport_r $hdrs
13477                 eval $hasproto ;;
13478         *)      ;;
13479         esac
13480         case "$d_getservbyport_r_proto" in
13481         define)
13482         case "$getservbyport_r_proto" in
13483         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13484         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13485         esac
13486         case "$getservbyport_r_proto" in
13487         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13488         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13489         esac
13490         case "$getservbyport_r_proto" in
13491         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13492         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13493         esac
13494         case "$getservbyport_r_proto" in
13495         ''|0)   d_getservbyport_r=undef
13496                 getservbyport_r_proto=0
13497                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13498         * )     case "$getservbyport_r_proto" in
13499                 REENTRANT_PROTO*) ;;
13500                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13501                 esac
13502                 echo "Prototype: $try" ;;
13503         esac
13504         ;;
13505         *)      case "$usethreads" in
13506                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13507                 esac
13508                 d_getservbyport_r=undef
13509                 getservbyport_r_proto=0
13510                 ;;
13511         esac
13512         ;;
13513 *)      getservbyport_r_proto=0
13514         ;;
13515 esac
13516
13517 : see if getservent_r exists
13518 set getservent_r d_getservent_r
13519 eval $inlibc
13520 case "$d_getservent_r" in
13521 "$define")
13522         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13523         case "$d_getservent_r_proto:$usethreads" in
13524         ":define")      d_getservent_r_proto=define
13525                 set d_getservent_r_proto getservent_r $hdrs
13526                 eval $hasproto ;;
13527         *)      ;;
13528         esac
13529         case "$d_getservent_r_proto" in
13530         define)
13531         case "$getservent_r_proto" in
13532         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13533         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13534         esac
13535         case "$getservent_r_proto" in
13536         ''|0) try='int getservent_r(struct servent*, char*, int);'
13537         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13538         esac
13539         case "$getservent_r_proto" in
13540         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13541         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13542         esac
13543         case "$getservent_r_proto" in
13544         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13545         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13546         esac
13547         case "$getservent_r_proto" in
13548         ''|0)   d_getservent_r=undef
13549                 getservent_r_proto=0
13550                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13551         * )     case "$getservent_r_proto" in
13552                 REENTRANT_PROTO*) ;;
13553                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13554                 esac
13555                 echo "Prototype: $try" ;;
13556         esac
13557         ;;
13558         *)      case "$usethreads" in
13559                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13560                 esac
13561                 d_getservent_r=undef
13562                 getservent_r_proto=0
13563                 ;;
13564         esac
13565         ;;
13566 *)      getservent_r_proto=0
13567         ;;
13568 esac
13569
13570 : see if prototypes for various getservxxx netdb.h functions are available
13571 echo " "
13572 set d_getservprotos getservent $i_netdb netdb.h
13573 eval $hasproto
13574
13575 : see if getspnam exists
13576 set getspnam d_getspnam
13577 eval $inlibc
13578
13579 : see if this is a shadow.h system
13580 set shadow.h i_shadow
13581 eval $inhdr
13582
13583 : see if getspnam_r exists
13584 set getspnam_r d_getspnam_r
13585 eval $inlibc
13586 case "$d_getspnam_r" in
13587 "$define")
13588         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13589         case "$d_getspnam_r_proto:$usethreads" in
13590         ":define")      d_getspnam_r_proto=define
13591                 set d_getspnam_r_proto getspnam_r $hdrs
13592                 eval $hasproto ;;
13593         *)      ;;
13594         esac
13595         case "$d_getspnam_r_proto" in
13596         define)
13597         case "$getspnam_r_proto" in
13598         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13599         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13600         esac
13601         case "$getspnam_r_proto" in
13602         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13603         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13604         esac
13605         case "$getspnam_r_proto" in
13606         ''|0)   d_getspnam_r=undef
13607                 getspnam_r_proto=0
13608                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13609         * )     case "$getspnam_r_proto" in
13610                 REENTRANT_PROTO*) ;;
13611                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13612                 esac
13613                 echo "Prototype: $try" ;;
13614         esac
13615         ;;
13616         *)      case "$usethreads" in
13617                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13618                 esac
13619                 d_getspnam_r=undef
13620                 getspnam_r_proto=0
13621                 ;;
13622         esac
13623         ;;
13624 *)      getspnam_r_proto=0
13625         ;;
13626 esac
13627
13628 : see if gettimeofday or ftime exists
13629 set gettimeofday d_gettimeod
13630 eval $inlibc
13631 case "$d_gettimeod" in
13632 "$undef")
13633         set ftime d_ftime 
13634         eval $inlibc
13635         ;;
13636 *)
13637         val="$undef"; set d_ftime; eval $setvar
13638         ;;
13639 esac
13640 case "$d_gettimeod$d_ftime" in
13641 "$undef$undef")
13642         echo " "
13643         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13644         ;;
13645 esac
13646
13647 : see if gmtime_r exists
13648 set gmtime_r d_gmtime_r
13649 eval $inlibc
13650 case "$d_gmtime_r" in
13651 "$define")
13652         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13653         case "$d_gmtime_r_proto:$usethreads" in
13654         ":define")      d_gmtime_r_proto=define
13655                 set d_gmtime_r_proto gmtime_r $hdrs
13656                 eval $hasproto ;;
13657         *)      ;;
13658         esac
13659         case "$d_gmtime_r_proto" in
13660         define)
13661         case "$gmtime_r_proto" in
13662         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13663         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13664         esac
13665         case "$gmtime_r_proto" in
13666         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13667         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13668         esac
13669         case "$gmtime_r_proto" in
13670         ''|0)   d_gmtime_r=undef
13671                 gmtime_r_proto=0
13672                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13673         * )     case "$gmtime_r_proto" in
13674                 REENTRANT_PROTO*) ;;
13675                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13676                 esac
13677                 echo "Prototype: $try" ;;
13678         esac
13679         ;;
13680         *)      case "$usethreads" in
13681                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13682                 esac
13683                 d_gmtime_r=undef
13684                 gmtime_r_proto=0
13685                 ;;
13686         esac
13687         ;;
13688 *)      gmtime_r_proto=0
13689         ;;
13690 esac
13691
13692 : see if hasmntopt exists
13693 set hasmntopt d_hasmntopt
13694 eval $inlibc
13695
13696 : see if this is a netinet/in.h or sys/in.h system
13697 set netinet/in.h i_niin sys/in.h i_sysin
13698 eval $inhdr
13699
13700 : see if arpa/inet.h has to be included
13701 set arpa/inet.h i_arpainet
13702 eval $inhdr
13703
13704 : see if htonl --and friends-- exists
13705 val=''
13706 set htonl val
13707 eval $inlibc
13708
13709 : Maybe they are macros.
13710 case "$val" in
13711 $undef)
13712         $cat >htonl.c <<EOM
13713 #include <stdio.h>
13714 #include <sys/types.h>
13715 #$i_niin I_NETINET_IN
13716 #$i_sysin I_SYS_IN
13717 #$i_arpainet I_ARPA_INET
13718 #ifdef I_NETINET_IN
13719 #include <netinet/in.h>
13720 #endif
13721 #ifdef I_SYS_IN
13722 #include <sys/in.h>
13723 #endif
13724 #ifdef I_ARPA_INET
13725 #include <arpa/inet.h>
13726 #endif
13727 #ifdef htonl
13728 printf("Defined as a macro.");
13729 #endif
13730 EOM
13731         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13732         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13733                 val="$define"
13734                 echo "But it seems to be defined as a macro." >&4
13735         fi
13736         $rm -f htonl.?
13737         ;;
13738 esac
13739 set d_htonl
13740 eval $setvar
13741
13742 : see if ilogbl exists
13743 set ilogbl d_ilogbl
13744 eval $inlibc
13745
13746 : index or strchr
13747 echo " "
13748 if set index val -f; eval $csym; $val; then
13749         if set strchr val -f d_strchr; eval $csym; $val; then
13750                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13751                         val="$define"
13752                         vali="$undef"
13753                         echo "strchr() found." >&4
13754                 else
13755                         val="$undef"
13756                         vali="$define"
13757                         echo "index() found." >&4
13758                 fi
13759         else
13760                 val="$undef"
13761                 vali="$define"
13762                 echo "index() found." >&4
13763         fi
13764 else
13765         if set strchr val -f d_strchr; eval $csym; $val; then
13766                 val="$define"
13767                 vali="$undef"
13768                 echo "strchr() found." >&4
13769         else
13770                 echo "No index() or strchr() found!" >&4
13771                 val="$undef"
13772                 vali="$undef"
13773         fi
13774 fi
13775 set d_strchr; eval $setvar
13776 val="$vali"
13777 set d_index; eval $setvar
13778
13779 : check whether inet_aton exists
13780 set inet_aton d_inetaton
13781 eval $inlibc
13782
13783 : Look for isascii
13784 echo " "
13785 $cat >isascii.c <<EOCP
13786 #include <stdio.h>
13787 #include <ctype.h>
13788 #$i_stdlib I_STDLIB
13789 #ifdef I_STDLIB
13790 #include <stdlib.h>
13791 #endif
13792 int main() {
13793         int c = 'A';
13794         if (isascii(c))
13795                 exit(0);
13796         else
13797                 exit(1);
13798 }
13799 EOCP
13800 set isascii
13801 if eval $compile; then
13802         echo "isascii() found." >&4
13803         val="$define"
13804 else
13805         echo "isascii() NOT found." >&4
13806         val="$undef"
13807 fi
13808 set d_isascii
13809 eval $setvar
13810 $rm -f isascii*
13811
13812 : see if isfinite exists
13813 set isfinite d_isfinite
13814 eval $inlibc
13815
13816 : see if isinf exists
13817 set isinf d_isinf
13818 eval $inlibc
13819
13820 : see if isnan exists
13821 set isnan d_isnan
13822 eval $inlibc
13823
13824 : see if isnanl exists
13825 set isnanl d_isnanl
13826 eval $inlibc
13827
13828 : see if killpg exists
13829 set killpg d_killpg
13830 eval $inlibc
13831
13832 : see if lchown exists
13833 echo " "
13834 $cat > try.c <<'EOCP'
13835 /* System header to define __stub macros and hopefully few prototypes,
13836     which can conflict with char lchown(); below.  */
13837 #include <assert.h>
13838 /* Override any gcc2 internal prototype to avoid an error.  */
13839 /* We use char because int might match the return type of a gcc2
13840    builtin and then its argument prototype would still apply.  */
13841 char lchown();
13842 int main() {
13843     /*  The GNU C library defines this for functions which it implements
13844         to always fail with ENOSYS.  Some functions are actually named
13845         something starting with __ and the normal name is an alias.  */
13846 #if defined (__stub_lchown) || defined (__stub___lchown)
13847 choke me
13848 #else
13849 lchown();
13850 #endif
13851 ; return 0; }
13852 EOCP
13853 set try
13854 if eval $compile; then
13855     $echo "lchown() found." >&4
13856     val="$define"
13857 else
13858     $echo "lchown() NOT found." >&4
13859     val="$undef"
13860 fi
13861 set d_lchown
13862 eval $setvar
13863
13864 : See if number of significant digits in a double precision number is known
13865 echo " "
13866 $cat >ldbl_dig.c <<EOM
13867 #$i_limits I_LIMITS
13868 #$i_float I_FLOAT
13869 #ifdef I_LIMITS
13870 #include <limits.h>
13871 #endif
13872 #ifdef I_FLOAT
13873 #include <float.h>
13874 #endif
13875 #ifdef LDBL_DIG
13876 printf("Contains LDBL_DIG");
13877 #endif
13878 EOM
13879 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13880 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13881         echo "LDBL_DIG found." >&4
13882         val="$define"
13883 else
13884         echo "LDBL_DIG NOT found." >&4
13885         val="$undef"
13886 fi
13887 $rm -f ldbl_dig.?
13888 set d_ldbl_dig
13889 eval $setvar
13890
13891 : see if link exists
13892 set link d_link
13893 eval $inlibc
13894
13895 : see if localtime_r exists
13896 set localtime_r d_localtime_r
13897 eval $inlibc
13898 case "$d_localtime_r" in
13899 "$define")
13900         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13901         case "$d_localtime_r_proto:$usethreads" in
13902         ":define")      d_localtime_r_proto=define
13903                 set d_localtime_r_proto localtime_r $hdrs
13904                 eval $hasproto ;;
13905         *)      ;;
13906         esac
13907         case "$d_localtime_r_proto" in
13908         define)
13909         case "$localtime_r_proto" in
13910         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13911         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13912         esac
13913         case "$localtime_r_proto" in
13914         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13915         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13916         esac
13917         case "$localtime_r_proto" in
13918         ''|0)   d_localtime_r=undef
13919                 localtime_r_proto=0
13920                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13921         * )     case "$localtime_r_proto" in
13922                 REENTRANT_PROTO*) ;;
13923                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13924                 esac
13925                 echo "Prototype: $try" ;;
13926         esac
13927         ;;
13928         *)      case "$usethreads" in
13929                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13930                 esac
13931                 d_localtime_r=undef
13932                 localtime_r_proto=0
13933                 ;;
13934         esac
13935         ;;
13936 *)      localtime_r_proto=0
13937         ;;
13938 esac
13939
13940 : see if localeconv exists
13941 set localeconv d_locconv
13942 eval $inlibc
13943
13944 : see if lockf exists
13945 set lockf d_lockf
13946 eval $inlibc
13947
13948 : see if prototype for lseek is available
13949 echo " "
13950 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13951 eval $hasproto
13952
13953 : see if lstat exists
13954 set lstat d_lstat
13955 eval $inlibc
13956
13957 : see if madvise exists
13958 set madvise d_madvise
13959 eval $inlibc
13960
13961 : see if mblen exists
13962 set mblen d_mblen
13963 eval $inlibc
13964
13965 : see if mbstowcs exists
13966 set mbstowcs d_mbstowcs
13967 eval $inlibc
13968
13969 : see if mbtowc exists
13970 set mbtowc d_mbtowc
13971 eval $inlibc
13972
13973 : see if memchr exists
13974 set memchr d_memchr
13975 eval $inlibc
13976
13977 : see if memcmp exists
13978 set memcmp d_memcmp
13979 eval $inlibc
13980
13981 : see if memcpy exists
13982 set memcpy d_memcpy
13983 eval $inlibc
13984
13985 : see if memmove exists
13986 set memmove d_memmove
13987 eval $inlibc
13988
13989 : see if memset exists
13990 set memset d_memset
13991 eval $inlibc
13992
13993 : see if mkdir exists
13994 set mkdir d_mkdir
13995 eval $inlibc
13996
13997 : see if mkdtemp exists
13998 set mkdtemp d_mkdtemp
13999 eval $inlibc
14000
14001 : see if mkfifo exists
14002 set mkfifo d_mkfifo
14003 eval $inlibc
14004
14005 : see if mkstemp exists
14006 set mkstemp d_mkstemp
14007 eval $inlibc
14008
14009 : see if mkstemps exists
14010 set mkstemps d_mkstemps
14011 eval $inlibc
14012
14013 : see if mktime exists
14014 set mktime d_mktime
14015 eval $inlibc
14016
14017 : see if this is a sys/mman.h system
14018 set sys/mman.h i_sysmman
14019 eval $inhdr
14020
14021 : see if mmap exists
14022 set mmap d_mmap
14023 eval $inlibc
14024 : see what shmat returns
14025 : default to something harmless
14026 mmaptype='void *'
14027 case "$i_sysmman$d_mmap" in
14028 "$define$define")
14029         $cat >mmap.c <<'END'
14030 #include <sys/mman.h>
14031 void *mmap();
14032 END
14033         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14034                 mmaptype='void *'
14035         else
14036                 mmaptype='caddr_t'
14037         fi
14038         echo "and it returns ($mmaptype)." >&4
14039         ;;
14040 esac
14041
14042
14043
14044 : see if sqrtl exists
14045 set sqrtl d_sqrtl
14046 eval $inlibc
14047
14048 : see if scalbnl exists
14049 set scalbnl d_scalbnl
14050 eval $inlibc
14051
14052 : see if modfl exists
14053 set modfl d_modfl
14054 eval $inlibc
14055
14056 : see if prototype for modfl is available
14057 echo " "
14058 set d_modflproto modfl math.h
14059 eval $hasproto
14060
14061 d_modfl_pow32_bug="$undef"
14062
14063 case "$d_longdbl$d_modfl" in
14064 $define$define)
14065         $cat <<EOM
14066 Checking to see whether your modfl() is okay for large values...
14067 EOM
14068 $cat >try.c <<EOCP
14069 #include <math.h> 
14070 #include <stdio.h>
14071 EOCP
14072 if $test "X$d_modflproto" != "X$define"; then
14073         $cat >>try.c <<EOCP
14074 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
14075 long double modfl (long double, long double *);
14076 EOCP
14077 fi
14078 $cat >>try.c <<EOCP
14079 int main() {
14080     long double nv = 4294967303.15;
14081     long double v, w;
14082     v = modfl(nv, &w);         
14083 #ifdef __GLIBC__
14084     printf("glibc");
14085 #endif
14086     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14087     return 0;
14088 }
14089 EOCP
14090         case "$osname:$gccversion" in
14091         aix:)   saveccflags="$ccflags"
14092                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14093         esac
14094         set try
14095         if eval $compile; then
14096                 foo=`$run ./try`
14097                 case "$foo" in
14098                 *" 4294967303.150000 1.150000 4294967302.000000")
14099                         echo >&4 "Your modfl() is broken for large values."
14100                         d_modfl_pow32_bug="$define"
14101                         case "$foo" in
14102                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14103                         ;;
14104                         esac
14105                         ;;
14106                 *" 4294967303.150000 0.150000 4294967303.000000")
14107                         echo >&4 "Your modfl() seems okay for large values."
14108                         ;;
14109                 *)      echo >&4 "I don't understand your modfl() at all."
14110                         d_modfl="$undef"
14111                         ;;
14112                 esac
14113                 $rm -f try.* try core core.try.*
14114         else
14115                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14116                 d_modfl="$undef"
14117         fi
14118         case "$osname:$gccversion" in
14119         aix:)   ccflags="$saveccflags" ;; # restore
14120         esac
14121         ;;
14122 esac
14123
14124 if $test "$uselongdouble" = "$define"; then
14125     message=""
14126     if $test "$d_sqrtl" != "$define"; then
14127         message="$message sqrtl"
14128     fi
14129     if $test "$d_modfl" != "$define"; then
14130         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14131             echo "You have both aintl and copysignl, so I can emulate modfl."
14132         else
14133             message="$message modfl"
14134         fi
14135     fi
14136     if $test "$d_frexpl" != "$define"; then
14137         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14138             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14139         else
14140             message="$message frexpl"
14141         fi
14142     fi
14143
14144     if $test "$message" != ""; then
14145         $cat <<EOM >&4
14146
14147 *** You requested the use of long doubles but you do not seem to have
14148 *** the following mathematical functions needed for long double support:
14149 ***    $message
14150 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14151 *** Cannot continue, aborting.
14152
14153 EOM
14154
14155         exit 1
14156     fi
14157 fi
14158
14159 : see if mprotect exists
14160 set mprotect d_mprotect
14161 eval $inlibc
14162
14163 : see if msgctl exists
14164 set msgctl d_msgctl
14165 eval $inlibc
14166
14167 : see if msgget exists
14168 set msgget d_msgget
14169 eval $inlibc
14170
14171 : see if msgsnd exists
14172 set msgsnd d_msgsnd
14173 eval $inlibc
14174
14175 : see if msgrcv exists
14176 set msgrcv d_msgrcv
14177 eval $inlibc
14178
14179 : see how much of the 'msg*(2)' library is present.
14180 h_msg=true
14181 echo " "
14182 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14183 *"$undef"*) h_msg=false;;
14184 esac
14185 case "$osname" in
14186 freebsd)
14187     case "`ipcs 2>&1`" in
14188     "SVID messages"*"not configured"*)
14189         echo "Your $osname does not have the msg*(2) configured." >&4
14190         h_msg=false
14191         val="$undef"
14192         set msgctl d_msgctl
14193         eval $setvar
14194         set msgget d_msgget
14195         eval $setvar
14196         set msgsnd d_msgsnd
14197         eval $setvar
14198         set msgrcv d_msgrcv
14199         eval $setvar
14200         ;;
14201     esac
14202     ;;
14203 esac
14204 : we could also check for sys/ipc.h ...
14205 if $h_msg && $test `./findhdr sys/msg.h`; then
14206         echo "You have the full msg*(2) library." >&4
14207         val="$define"
14208 else
14209         echo "You don't have the full msg*(2) library." >&4
14210         val="$undef"
14211 fi
14212 set d_msg
14213 eval $setvar
14214
14215
14216 echo " "
14217 echo "Checking to see if your system supports struct msghdr..." >&4
14218 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14219 eval $hasstruct
14220 case "$d_msghdr_s" in
14221 "$define")      echo "Yes, it does."   ;;
14222 *)              echo "No, it doesn't." ;;
14223 esac
14224
14225
14226 : see if msync exists
14227 set msync d_msync
14228 eval $inlibc
14229
14230 : see if munmap exists
14231 set munmap d_munmap
14232 eval $inlibc
14233
14234 : see if nice exists
14235 set nice d_nice
14236 eval $inlibc
14237
14238 : see if this is a langinfo.h system
14239 set langinfo.h i_langinfo
14240 eval $inhdr
14241
14242 : see if nl_langinfo exists
14243 set nl_langinfo d_nl_langinfo
14244 eval $inlibc
14245
14246 : check for length of character
14247 echo " "
14248 case "$charsize" in
14249 '')
14250         echo "Checking to see how big your characters are (hey, you never know)..." >&4
14251         $cat >try.c <<EOCP
14252 #include <stdio.h>
14253 #$i_stdlib I_STDLIB
14254 #ifdef I_STDLIB
14255 #include <stdlib.h>
14256 #endif
14257 int main()
14258 {
14259     printf("%d\n", (int)sizeof(char));
14260     exit(0);
14261 }
14262 EOCP
14263         set try
14264         if eval $compile_ok; then
14265                 dflt=`$run ./try`
14266         else
14267                 dflt='1'
14268                 echo "(I can't seem to compile the test program.  Guessing...)"
14269         fi
14270         ;;
14271 *)
14272         dflt="$charsize"
14273         ;;
14274 esac
14275 rp="What is the size of a character (in bytes)?"
14276 . ./myread
14277 charsize="$ans"
14278 $rm -f try.c try
14279
14280 : check for volatile keyword
14281 echo " "
14282 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14283 $cat >try.c <<'EOCP'
14284 int main()
14285 {
14286         typedef struct _goo_struct goo_struct;
14287         goo_struct * volatile goo = ((goo_struct *)0);
14288         struct _goo_struct {
14289                 long long_int;
14290                 int reg_int;
14291                 char char_var;
14292         };
14293         typedef unsigned short foo_t;
14294         char *volatile foo;
14295         volatile int bar;
14296         volatile foo_t blech;
14297         foo = foo;
14298 }
14299 EOCP
14300 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14301         val="$define"
14302         echo "Yup, it does."
14303 else
14304         val="$undef"
14305         echo "Nope, it doesn't."
14306 fi
14307 set d_volatile
14308 eval $setvar
14309 $rm -f try.*
14310
14311
14312 echo " "
14313 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14314
14315 case "$use64bitint:$d_quad:$quadtype" in
14316 define:define:?*)
14317         ivtype="$quadtype"
14318         uvtype="$uquadtype"
14319         ivsize=8
14320         uvsize=8
14321         ;;
14322 *)      ivtype="long"
14323         uvtype="unsigned long"
14324         ivsize=$longsize
14325         uvsize=$longsize
14326         ;;
14327 esac
14328
14329 case "$uselongdouble:$d_longdbl" in
14330 define:define)
14331         nvtype="long double"
14332         nvsize=$longdblsize
14333         ;;
14334 *)      nvtype=double
14335         nvsize=$doublesize
14336         ;;
14337 esac
14338
14339 $echo "(IV will be "$ivtype", $ivsize bytes)"
14340 $echo "(UV will be "$uvtype", $uvsize bytes)"
14341 $echo "(NV will be "$nvtype", $nvsize bytes)"
14342
14343 $cat >try.c <<EOCP
14344 #$i_inttypes I_INTTYPES
14345 #ifdef I_INTTYPES
14346 #include <inttypes.h>
14347 #endif
14348 #include <stdio.h>
14349 int main() {
14350 #ifdef INT8
14351    int8_t i =  INT8_MAX;
14352   uint8_t u = UINT8_MAX;
14353   printf("int8_t\n");
14354 #endif
14355 #ifdef INT16
14356    int16_t i =  INT16_MAX;
14357   uint16_t i = UINT16_MAX;
14358   printf("int16_t\n");
14359 #endif
14360 #ifdef INT32
14361    int32_t i =  INT32_MAX;
14362   uint32_t u = UINT32_MAX;
14363   printf("int32_t\n");
14364 #endif
14365 }
14366 EOCP
14367
14368 case "$i8type" in
14369 '')     case "$charsize" in
14370         1)      i8type=char
14371                 u8type="unsigned char"
14372                 i8size=$charsize
14373                 u8size=$charsize
14374                 ;;
14375         esac
14376         ;;
14377 esac
14378 case "$i8type" in
14379 '')     set try -DINT8
14380         if eval $compile; then
14381                 case "`$run ./try`" in
14382                 int8_t) i8type=int8_t
14383                         u8type=uint8_t
14384                         i8size=1
14385                         u8size=1
14386                         ;;
14387                 esac
14388         fi
14389         ;;
14390 esac
14391 case "$i8type" in
14392 '')     if $test $charsize -ge 1; then
14393                 i8type=char
14394                 u8type="unsigned char"
14395                 i8size=$charsize
14396                 u8size=$charsize
14397         fi
14398         ;;
14399 esac
14400
14401 case "$i16type" in
14402 '')     case "$shortsize" in
14403         2)      i16type=short
14404                 u16type="unsigned short"
14405                 i16size=$shortsize
14406                 u16size=$shortsize
14407                 ;;
14408         esac
14409         ;;
14410 esac
14411 case "$i16type" in
14412 '')     set try -DINT16
14413         if eval $compile; then
14414                 case "`$run ./try`" in
14415                 int16_t)
14416                         i16type=int16_t
14417                         u16type=uint16_t
14418                         i16size=2
14419                         u16size=2
14420                         ;;
14421                 esac
14422         fi
14423         ;;
14424 esac
14425 case "$i16type" in
14426 '')     if $test $shortsize -ge 2; then
14427                 i16type=short
14428                 u16type="unsigned short"
14429                 i16size=$shortsize
14430                 u16size=$shortsize
14431         fi
14432         ;;
14433 esac
14434
14435 case "$i32type" in
14436 '')     case "$longsize" in
14437         4)      i32type=long
14438                 u32type="unsigned long"
14439                 i32size=$longsize
14440                 u32size=$longsize
14441                 ;;
14442         *)      case "$intsize" in
14443                 4)      i32type=int
14444                         u32type="unsigned int"
14445                         i32size=$intsize
14446                         u32size=$intsize
14447                         ;;
14448                 esac
14449                 ;;
14450         esac
14451         ;;
14452 esac
14453 case "$i32type" in
14454 '')     set try -DINT32
14455         if eval $compile; then
14456                 case "`$run ./try`" in
14457                 int32_t)
14458                         i32type=int32_t
14459                         u32type=uint32_t
14460                         i32size=4
14461                         u32size=4
14462                         ;;
14463                 esac
14464         fi
14465         ;;
14466 esac
14467 case "$i32type" in
14468 '')     if $test $intsize -ge 4; then
14469                 i32type=int
14470                 u32type="unsigned int"
14471                 i32size=$intsize
14472                 u32size=$intsize
14473         fi
14474         ;;
14475 esac
14476
14477 case "$i64type" in
14478 '')     case "$d_quad:$quadtype" in
14479         define:?*)
14480                 i64type="$quadtype"
14481                 u64type="$uquadtype"
14482                 i64size=8
14483                 u64size=8
14484                 ;;
14485         esac
14486         ;;
14487 esac
14488
14489 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14490 : volatile so that the compiler has to store it out to memory.
14491 if test X"$d_volatile" = X"$define"; then
14492         volatile=volatile
14493 fi
14494 $cat <<EOP >try.c
14495 #include <stdio.h>
14496 #$i_stdlib I_STDLIB
14497 #ifdef I_STDLIB
14498 #include <stdlib.h>
14499 #endif
14500 #include <sys/types.h>
14501 #include <signal.h>
14502 #ifdef SIGFPE
14503 $volatile int bletched = 0;
14504 $signal_t blech(s) int s; { bletched = 1; }
14505 #endif
14506 int main() {
14507     $uvtype u = 0;
14508     $nvtype d;
14509     int     n = 8 * $uvsize;
14510     int     i;
14511 #ifdef SIGFPE
14512     signal(SIGFPE, blech);
14513 #endif
14514
14515     for (i = 0; i < n; i++) {
14516       u = u << 1 | ($uvtype)1;
14517       d = ($nvtype)u;
14518       if (($uvtype)d != u)
14519         break;
14520       if (d <= 0)
14521         break;
14522       d = ($nvtype)(u - 1);
14523       if (($uvtype)d != (u - 1))
14524         break;
14525 #ifdef SIGFPE
14526       if (bletched) {
14527         break;
14528 #endif
14529       } 
14530     }
14531     printf("%d\n", ((i == n) ? -n : i));
14532     exit(0);
14533 }
14534 EOP
14535 set try
14536
14537 d_nv_preserves_uv="$undef"
14538 if eval $compile; then
14539         nv_preserves_uv_bits="`$run ./try`"
14540 fi
14541 case "$nv_preserves_uv_bits" in
14542 \-[1-9]*)       
14543         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14544         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14545         d_nv_preserves_uv="$define"
14546         ;;
14547 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14548         d_nv_preserves_uv="$undef" ;;
14549 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14550         nv_preserves_uv_bits="$undef" ;;
14551 esac
14552
14553 $rm -f try.* try
14554
14555
14556 : check for off64_t
14557 echo " "
14558 echo "Checking to see if you have off64_t..." >&4
14559 $cat >try.c <<EOCP
14560 #include <sys/types.h>
14561 #include <unistd.h>
14562 int main() { off64_t x = 7; }
14563 EOCP
14564 set try
14565 if eval $compile; then
14566         val="$define"
14567         echo "You have off64_t."
14568 else
14569         val="$undef"
14570         echo "You do not have off64_t."
14571         case "$lseeksize" in
14572         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14573         esac
14574 fi
14575 $rm -f try.* try
14576 set d_off64_t
14577 eval $setvar
14578
14579 : how to create joinable pthreads
14580 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14581         echo " "
14582         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14583         $cat >try.c <<'EOCP'
14584 #include <pthread.h>
14585 int main() {
14586     int detachstate = JOINABLE;
14587 }
14588 EOCP
14589         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14590         if eval $compile; then
14591                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14592                 val="$undef" # Yes, undef.
14593                 set d_old_pthread_create_joinable
14594                 eval $setvar
14595                 val=""
14596                 set old_pthread_create_joinable
14597                 eval $setvar
14598         else
14599                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14600                 if eval $compile; then
14601                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14602                         val="$define"
14603                         set d_old_pthread_create_joinable
14604                         eval $setvar
14605                         val=PTHREAD_CREATE_UNDETACHED
14606                         set old_pthread_create_joinable
14607                         eval $setvar
14608                 else            
14609                         set try -DJOINABLE=__UNDETACHED
14610                         if eval $compile; then
14611                                 echo "You seem to use __UNDETACHED." >&4
14612                                 val="$define"
14613                                 set d_old_pthread_create_joinable
14614                                 eval $setvar
14615                                 val=__UNDETACHED
14616                                 set old_pthread_create_joinable
14617                                 eval $setvar
14618                         else
14619                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14620                                 val="$define"
14621                                 set d_old_pthread_create_joinable
14622                                 eval $setvar
14623                                 val=0
14624                                 set old_pthread_create_joinable
14625                                 eval $setvar
14626                         fi
14627                 fi
14628         fi
14629         $rm -f try try.*
14630 else
14631     d_old_pthread_create_joinable="$undef"
14632     old_pthread_create_joinable=""
14633 fi
14634
14635 : see if pause exists
14636 set pause d_pause
14637 eval $inlibc
14638
14639 : see if pipe exists
14640 set pipe d_pipe
14641 eval $inlibc
14642
14643 : see if poll exists
14644 set poll d_poll
14645 eval $inlibc
14646
14647 : see if readlink exists
14648 set readlink d_readlink
14649 eval $inlibc
14650
14651 echo " "
14652 procselfexe=''
14653 val="$undef"
14654 case "$d_readlink" in
14655 "$define")
14656         if $issymlink /proc/self/exe ; then
14657                 $ls -l /proc/self/exe > reflect
14658                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14659                         echo "You have Linux-like /proc/self/exe."
14660                         procselfexe='"/proc/self/exe"'
14661                         val="$define"
14662                 fi
14663         fi
14664         if $issymlink /proc/curproc/file ; then
14665                 $ls -l /proc/curproc/file > reflect
14666                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14667                         echo "You have BSD-like /proc/curproc/file."
14668                         procselfexe='"/proc/curproc/file"'
14669                         val="$define"
14670                 fi
14671         fi
14672         ;;
14673 esac
14674 $rm -f reflect
14675 set d_procselfexe
14676 eval $setvar
14677
14678 : see whether the pthread_atfork exists
14679 $cat >try.c <<EOP
14680 #include <pthread.h>
14681 #include <stdio.h>
14682 int main() {
14683 #ifdef  PTHREAD_ATFORK
14684         pthread_atfork(NULL,NULL,NULL);
14685 #endif
14686 }
14687 EOP
14688
14689 : see if pthread_atfork exists
14690 set try -DPTHREAD_ATFORK
14691 if eval $compile; then
14692     val="$define"
14693 else
14694     val="$undef"
14695 fi
14696 case "$usethreads" in
14697 $define)
14698         case "$val" in
14699         $define) echo 'pthread_atfork found.' >&4        ;;
14700         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14701         esac
14702 esac
14703 set d_pthread_atfork
14704 eval $setvar
14705
14706 : see if pthread_attr_setscope exists
14707 set pthread_attr_setscope d_pthread_attr_setscope
14708 eval $inlibc
14709
14710
14711 : see whether the various POSIXish _yields exist
14712 $cat >try.c <<EOP
14713 #include <pthread.h>
14714 #include <stdio.h>
14715 int main() {
14716 #ifdef SCHED_YIELD
14717         sched_yield();
14718 #else
14719 #ifdef PTHREAD_YIELD
14720         pthread_yield();
14721 #else
14722 #ifdef PTHREAD_YIELD_NULL
14723         pthread_yield(NULL);
14724 #endif
14725 #endif
14726 #endif
14727 }
14728 EOP
14729 : see if sched_yield exists
14730 set try -DSCHED_YIELD
14731 if eval $compile; then
14732     val="$define"
14733     sched_yield='sched_yield()'
14734 else
14735     val="$undef"
14736 fi
14737 case "$usethreads" in
14738 $define)
14739         case "$val" in
14740         $define) echo 'sched_yield() found.' >&4        ;;
14741         *)       echo 'sched_yield() NOT found.' >&4    ;;
14742         esac
14743 esac
14744 set d_sched_yield
14745 eval $setvar
14746
14747 : see if pthread_yield exists
14748 set try -DPTHREAD_YIELD
14749 if eval $compile; then
14750     val="$define"
14751     case "$sched_yield" in
14752     '') sched_yield='pthread_yield()' ;;
14753     esac
14754 else
14755     set try -DPTHREAD_YIELD_NULL
14756     if eval $compile; then
14757         val="$define"
14758         case "$sched_yield" in
14759         '') sched_yield='pthread_yield(NULL)' ;;
14760         esac
14761     else
14762         val="$undef"
14763     fi
14764 fi
14765 case "$usethreads" in
14766 $define)
14767         case "$val" in
14768         $define) echo 'pthread_yield() found.' >&4      ;;
14769         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14770         esac
14771         ;;
14772 esac
14773 set d_pthread_yield
14774 eval $setvar
14775
14776 case "$sched_yield" in
14777 '') sched_yield=undef ;;
14778 esac
14779
14780 $rm -f try try.*
14781
14782 : see if random_r exists
14783 set random_r d_random_r
14784 eval $inlibc
14785 case "$d_random_r" in
14786 "$define")
14787         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14788         case "$d_random_r_proto:$usethreads" in
14789         ":define")      d_random_r_proto=define
14790                 set d_random_r_proto random_r $hdrs
14791                 eval $hasproto ;;
14792         *)      ;;
14793         esac
14794         case "$d_random_r_proto" in
14795         define)
14796         case "$random_r_proto" in
14797         ''|0) try='int random_r(int*, struct random_data*);'
14798         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14799         esac
14800         case "$random_r_proto" in
14801         ''|0) try='int random_r(long*, struct random_data*);'
14802         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14803         esac
14804         case "$random_r_proto" in
14805         ''|0) try='int random_r(struct random_data*, int32_t*);'
14806         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14807         esac
14808         case "$random_r_proto" in
14809         ''|0)   d_random_r=undef
14810                 random_r_proto=0
14811                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14812         * )     case "$random_r_proto" in
14813                 REENTRANT_PROTO*) ;;
14814                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14815                 esac
14816                 echo "Prototype: $try" ;;
14817         esac
14818         ;;
14819         *)      case "$usethreads" in
14820                 define) echo "random_r has no prototype, not using it." >&4 ;;
14821                 esac
14822                 d_random_r=undef
14823                 random_r_proto=0
14824                 ;;
14825         esac
14826         ;;
14827 *)      random_r_proto=0
14828         ;;
14829 esac
14830
14831 : see if readdir and friends exist
14832 set readdir d_readdir
14833 eval $inlibc
14834 set seekdir d_seekdir
14835 eval $inlibc
14836 set telldir d_telldir
14837 eval $inlibc
14838 set rewinddir d_rewinddir
14839 eval $inlibc
14840
14841 : see if readdir64_r exists
14842 set readdir64_r d_readdir64_r
14843 eval $inlibc
14844 case "$d_readdir64_r" in
14845 "$define")
14846         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14847         case "$d_readdir64_r_proto:$usethreads" in
14848         ":define")      d_readdir64_r_proto=define
14849                 set d_readdir64_r_proto readdir64_r $hdrs
14850                 eval $hasproto ;;
14851         *)      ;;
14852         esac
14853         case "$d_readdir64_r_proto" in
14854         define)
14855         case "$readdir64_r_proto" in
14856         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14857         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14858         esac
14859         case "$readdir64_r_proto" in
14860         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14861         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14862         esac
14863         case "$readdir64_r_proto" in
14864         ''|0)   d_readdir64_r=undef
14865                 readdir64_r_proto=0
14866                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14867         * )     case "$readdir64_r_proto" in
14868                 REENTRANT_PROTO*) ;;
14869                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14870                 esac
14871                 echo "Prototype: $try" ;;
14872         esac
14873         ;;
14874         *)      case "$usethreads" in
14875                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14876                 esac
14877                 d_readdir64_r=undef
14878                 readdir64_r_proto=0
14879                 ;;
14880         esac
14881         ;;
14882 *)      readdir64_r_proto=0
14883         ;;
14884 esac
14885
14886 : see if readdir_r exists
14887 set readdir_r d_readdir_r
14888 eval $inlibc
14889 case "$d_readdir_r" in
14890 "$define")
14891         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14892         case "$d_readdir_r_proto:$usethreads" in
14893         ":define")      d_readdir_r_proto=define
14894                 set d_readdir_r_proto readdir_r $hdrs
14895                 eval $hasproto ;;
14896         *)      ;;
14897         esac
14898         case "$d_readdir_r_proto" in
14899         define)
14900         case "$readdir_r_proto" in
14901         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14902         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14903         esac
14904         case "$readdir_r_proto" in
14905         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14906         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14907         esac
14908         case "$readdir_r_proto" in
14909         ''|0)   d_readdir_r=undef
14910                 readdir_r_proto=0
14911                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14912         * )     case "$readdir_r_proto" in
14913                 REENTRANT_PROTO*) ;;
14914                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14915                 esac
14916                 echo "Prototype: $try" ;;
14917         esac
14918         ;;
14919         *)      case "$usethreads" in
14920                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14921                 esac
14922                 d_readdir_r=undef
14923                 readdir_r_proto=0
14924                 ;;
14925         esac
14926         ;;
14927 *)      readdir_r_proto=0
14928         ;;
14929 esac
14930
14931 : see if readv exists
14932 set readv d_readv
14933 eval $inlibc
14934
14935 : see if recvmsg exists
14936 set recvmsg d_recvmsg
14937 eval $inlibc
14938
14939 : see if rename exists
14940 set rename d_rename
14941 eval $inlibc
14942
14943 : see if rmdir exists
14944 set rmdir d_rmdir
14945 eval $inlibc
14946
14947 : see if memory.h is available.
14948 val=''
14949 set memory.h val
14950 eval $inhdr
14951
14952 : See if it conflicts with string.h
14953 case "$val" in
14954 $define)
14955         case "$strings" in
14956         '') ;;
14957         *)
14958                 $cppstdin $cppflags $cppminus < $strings > mem.h
14959                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14960                         echo " "
14961                         echo "We won't be including <memory.h>."
14962                         val="$undef"
14963                 fi
14964                 $rm -f mem.h
14965                 ;;
14966         esac
14967 esac
14968 set i_memory
14969 eval $setvar
14970
14971 : can bcopy handle overlapping blocks?
14972 echo " "
14973 val="$undef"
14974 case "$d_memmove" in
14975 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14976 *)      case "$d_bcopy" in
14977         "$define")
14978                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
14979                 $cat >try.c <<EOCP
14980 #$i_memory I_MEMORY
14981 #$i_stdlib I_STDLIB
14982 #$i_string I_STRING
14983 #$i_unistd I_UNISTD
14984 EOCP
14985         $cat >>try.c <<'EOCP'
14986 #include <stdio.h>
14987 #ifdef I_MEMORY
14988 #  include <memory.h>
14989 #endif
14990 #ifdef I_STDLIB
14991 #  include <stdlib.h>
14992 #endif
14993 #ifdef I_STRING
14994 #  include <string.h>
14995 #else
14996 #  include <strings.h>
14997 #endif
14998 #ifdef I_UNISTD
14999 #  include <unistd.h>  /* Needed for NetBSD */
15000 #endif
15001 int main()
15002 {
15003 char buf[128], abc[128];
15004 char *b;
15005 int len;
15006 int off;
15007 int align;
15008
15009 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15010    try to store the string in read-only memory. */
15011 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15012
15013 for (align = 7; align >= 0; align--) {
15014         for (len = 36; len; len--) {
15015                 b = buf+align;
15016                 bcopy(abc, b, len);
15017                 for (off = 1; off <= len; off++) {
15018                         bcopy(b, b+off, len);
15019                         bcopy(b+off, b, len);
15020                         if (bcmp(b, abc, len))
15021                                 exit(1);
15022                 }
15023         }
15024 }
15025 exit(0);
15026 }
15027 EOCP
15028                 set try
15029                 if eval $compile_ok; then
15030                         if ./try 2>/dev/null; then
15031                                 echo "Yes, it can."
15032                                 val="$define"
15033                         else
15034                                 echo "It can't, sorry."
15035                         fi
15036                 else
15037                         echo "(I can't compile the test program, so we'll assume not...)"
15038                 fi
15039                 ;;
15040         esac
15041         $rm -f try.* try core
15042         ;;
15043 esac
15044 set d_safebcpy
15045 eval $setvar
15046
15047 : can memcpy handle overlapping blocks?
15048 echo " "
15049 val="$undef"
15050 case "$d_memmove" in
15051 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15052 *)      case "$d_memcpy" in
15053         "$define")
15054                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15055                 $cat >try.c <<EOCP
15056 #$i_memory I_MEMORY
15057 #$i_stdlib I_STDLIB
15058 #$i_string I_STRING
15059 #$i_unistd I_UNISTD
15060 EOCP
15061         $cat >>try.c <<'EOCP'
15062 #include <stdio.h>
15063 #ifdef I_MEMORY
15064 #  include <memory.h>
15065 #endif
15066 #ifdef I_STDLIB
15067 #  include <stdlib.h>
15068 #endif
15069 #ifdef I_STRING
15070 #  include <string.h>
15071 #else
15072 #  include <strings.h>
15073 #endif
15074 #ifdef I_UNISTD
15075 #  include <unistd.h>  /* Needed for NetBSD */
15076 #endif
15077 int main()
15078 {
15079 char buf[128], abc[128];
15080 char *b;
15081 int len;
15082 int off;
15083 int align;
15084
15085 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15086    try to store the string in read-only memory. */
15087 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15088
15089 for (align = 7; align >= 0; align--) {
15090         for (len = 36; len; len--) {
15091                 b = buf+align;
15092                 memcpy(b, abc, len);
15093                 for (off = 1; off <= len; off++) {
15094                         memcpy(b+off, b, len);
15095                         memcpy(b, b+off, len);
15096                         if (memcmp(b, abc, len))
15097                                 exit(1);
15098                 }
15099         }
15100 }
15101 exit(0);
15102 }
15103 EOCP
15104                 set try
15105                 if eval $compile_ok; then
15106                         if ./try 2>/dev/null; then
15107                                 echo "Yes, it can."
15108                                 val="$define"
15109                         else
15110                                 echo "It can't, sorry."
15111                         fi
15112                 else
15113                         echo "(I can't compile the test program, so we'll assume not...)"
15114                 fi
15115                 ;;
15116         esac
15117         $rm -f try.* try core
15118         ;;
15119 esac
15120 set d_safemcpy
15121 eval $setvar
15122
15123 : can memcmp be trusted to compare relative magnitude?
15124 val="$undef"
15125 case "$d_memcmp" in
15126 "$define")
15127         echo " "
15128         echo "Checking if your memcmp() can compare relative magnitude..." >&4
15129         $cat >try.c <<EOCP
15130 #$i_memory I_MEMORY
15131 #$i_stdlib I_STDLIB
15132 #$i_string I_STRING
15133 #$i_unistd I_UNISTD
15134 EOCP
15135         $cat >>try.c <<'EOCP'
15136 #include <stdio.h>
15137 #ifdef I_MEMORY
15138 #  include <memory.h>
15139 #endif
15140 #ifdef I_STDLIB
15141 #  include <stdlib.h>
15142 #endif
15143 #ifdef I_STRING
15144 #  include <string.h>
15145 #else
15146 #  include <strings.h>
15147 #endif
15148 #ifdef I_UNISTD
15149 #  include <unistd.h>  /* Needed for NetBSD */
15150 #endif
15151 int main()
15152 {
15153 char a = -1;
15154 char b = 0;
15155 if ((a < b) && memcmp(&a, &b, 1) < 0)
15156         exit(1);
15157 exit(0);
15158 }
15159 EOCP
15160         set try
15161         if eval $compile_ok; then
15162                 if $run ./try 2>/dev/null; then
15163                         echo "Yes, it can."
15164                         val="$define"
15165                 else
15166                         echo "No, it can't (it uses signed chars)."
15167                 fi
15168         else
15169                 echo "(I can't compile the test program, so we'll assume not...)"
15170         fi
15171         ;;
15172 esac
15173 $rm -f try.* try core
15174 set d_sanemcmp
15175 eval $setvar
15176
15177 : see if prototype for sbrk is available
15178 echo " "
15179 set d_sbrkproto sbrk $i_unistd unistd.h
15180 eval $hasproto
15181
15182 : see if select exists
15183 set select d_select
15184 eval $inlibc
15185
15186 : see if semctl exists
15187 set semctl d_semctl
15188 eval $inlibc
15189
15190 : see if semget exists
15191 set semget d_semget
15192 eval $inlibc
15193
15194 : see if semop exists
15195 set semop d_semop
15196 eval $inlibc
15197
15198 : see how much of the 'sem*(2)' library is present.
15199 h_sem=true
15200 echo " "
15201 case "$d_semctl$d_semget$d_semop" in
15202 *"$undef"*) h_sem=false;;
15203 esac
15204 case "$osname" in
15205 freebsd)
15206     case "`ipcs 2>&1`" in
15207     "SVID messages"*"not configured"*)
15208         echo "Your $osname does not have the sem*(2) configured." >&4
15209         h_sem=false
15210         val="$undef"
15211         set semctl d_semctl
15212         eval $setvar
15213         set semget d_semget
15214         eval $setvar
15215         set semop d_semop
15216         eval $setvar
15217         ;;
15218     esac
15219     ;;
15220 esac
15221 : we could also check for sys/ipc.h ...
15222 if $h_sem && $test `./findhdr sys/sem.h`; then
15223         echo "You have the full sem*(2) library." >&4
15224         val="$define"
15225 else
15226         echo "You don't have the full sem*(2) library." >&4
15227         val="$undef"
15228 fi
15229 set d_sem
15230 eval $setvar
15231
15232 : see whether sys/sem.h defines union semun
15233 echo " "
15234 $cat > try.c <<'END'
15235 #include <sys/types.h>
15236 #include <sys/ipc.h>
15237 #include <sys/sem.h>
15238 int main () { union semun semun; semun.buf = 0; }
15239 END
15240 set try
15241 if eval $compile; then
15242     echo "You have union semun in <sys/sem.h>." >&4
15243     val="$define"
15244 else
15245     echo "You do not have union semun in <sys/sem.h>." >&4
15246     val="$undef"
15247 fi
15248 $rm -f try try.c
15249 set d_union_semun
15250 eval $setvar
15251
15252 : see how to do semctl IPC_STAT
15253 case "$d_sem" in
15254 $define)
15255     echo " "
15256     $cat > try.h <<END
15257 #ifndef S_IRUSR
15258 #   ifdef S_IREAD
15259 #       define S_IRUSR S_IREAD
15260 #       define S_IWUSR S_IWRITE
15261 #       define S_IXUSR S_IEXEC
15262 #   else
15263 #       define S_IRUSR 0400
15264 #       define S_IWUSR 0200
15265 #       define S_IXUSR 0100
15266 #   endif
15267 #   define S_IRGRP (S_IRUSR>>3)
15268 #   define S_IWGRP (S_IWUSR>>3)
15269 #   define S_IXGRP (S_IXUSR>>3)
15270 #   define S_IROTH (S_IRUSR>>6)
15271 #   define S_IWOTH (S_IWUSR>>6)
15272 #   define S_IXOTH (S_IXUSR>>6)
15273 #endif
15274 #ifndef S_IRWXU
15275 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15276 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15277 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15278 #endif
15279 END
15280     : see whether semctl IPC_STAT can use union semun
15281     val="$undef"
15282     case "$d_semctl_semun" in
15283     '')
15284       $cat > try.c <<END
15285 #include <sys/types.h>
15286 #include <sys/ipc.h>
15287 #include <sys/sem.h>
15288 #include <sys/stat.h>
15289 #include <stdio.h>
15290 #include <errno.h>
15291 #include "try.h"
15292 #ifndef errno
15293 extern int errno;
15294 #endif
15295 #$d_union_semun HAS_UNION_SEMUN
15296 int main() {
15297     union semun
15298 #ifndef HAS_UNION_SEMUN
15299     {
15300         int val;
15301         struct semid_ds *buf;
15302         unsigned short *array;
15303     }
15304 #endif
15305     arg;
15306     int sem, st;
15307
15308 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15309     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15310     if (sem > -1) {
15311         struct semid_ds argbuf;
15312         arg.buf = &argbuf;
15313 #       ifdef IPC_STAT
15314         st = semctl(sem, 0, IPC_STAT, arg);
15315         if (st == 0)
15316             printf("semun\n");
15317         else
15318 #       endif /* IPC_STAT */
15319             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15320 #       ifdef IPC_RMID
15321         if (semctl(sem, 0, IPC_RMID, arg) != 0)
15322 #       endif /* IPC_RMID */
15323             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15324     } else
15325 #endif /* IPC_PRIVATE && ... */
15326         printf("semget failed: errno = %d\n", errno);
15327   return 0;
15328 }
15329 END
15330       set try
15331       if eval $compile; then
15332           xxx=`$run ./try`
15333           case "$xxx" in
15334           semun) val="$define" ;;
15335           esac
15336       fi
15337       $rm -f try try.c
15338       ;;
15339     esac
15340     set d_semctl_semun
15341     eval $setvar
15342     case "$d_semctl_semun" in
15343     $define)
15344         echo "You can use union semun for semctl IPC_STAT." >&4
15345         also='also'
15346         ;;
15347     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15348         also=''
15349         ;;
15350     esac
15351
15352     : see whether semctl IPC_STAT can use struct semid_ds pointer
15353     val="$undef"
15354     case "$d_semctl_semid_ds" in
15355     '')
15356       $cat > try.c <<'END'
15357 #include <sys/types.h>
15358 #include <sys/ipc.h>
15359 #include <sys/sem.h>
15360 #include <sys/stat.h>
15361 #include "try.h"
15362 #include <stdio.h>
15363 #include <errno.h>
15364 #ifndef errno
15365 extern int errno;
15366 #endif
15367 int main() {
15368     struct semid_ds arg;
15369     int sem, st;
15370
15371 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15372     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15373     if (sem > -1) {
15374 #       ifdef IPC_STAT
15375         st = semctl(sem, 0, IPC_STAT, &arg);
15376         if (st == 0)
15377             printf("semid_ds\n");
15378         else
15379 #       endif /* IPC_STAT */
15380             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15381 #       ifdef IPC_RMID
15382         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15383 #       endif /* IPC_RMID */
15384             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15385     } else
15386 #endif /* IPC_PRIVATE && ... */
15387         printf("semget failed: errno = %d\n", errno);
15388
15389     return 0;
15390 }
15391 END
15392       set try
15393       if eval $compile; then
15394           xxx=`$run ./try`
15395           case "$xxx" in
15396           semid_ds) val="$define" ;;
15397           esac
15398       fi
15399       $rm -f try try.c
15400       ;;
15401     esac
15402     set d_semctl_semid_ds
15403     eval $setvar
15404     case "$d_semctl_semid_ds" in
15405     $define)
15406         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15407         ;;
15408     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15409         ;;
15410     esac
15411     $rm -f try.h
15412     ;;
15413 *)  val="$undef"
15414
15415     # We do not have the full sem*(2) library, so assume we can not
15416     # use either.
15417
15418     set d_semctl_semun
15419     eval $setvar
15420
15421     set d_semctl_semid_ds
15422     eval $setvar
15423     ;;
15424 esac
15425
15426 : see if sendmsg exists
15427 set sendmsg d_sendmsg
15428 eval $inlibc
15429
15430 : see if setegid exists
15431 set setegid d_setegid
15432 eval $inlibc
15433
15434 : see if seteuid exists
15435 set seteuid d_seteuid
15436 eval $inlibc
15437
15438 : see if setgrent exists
15439 set setgrent d_setgrent
15440 eval $inlibc
15441
15442 : see if setgrent_r exists
15443 set setgrent_r d_setgrent_r
15444 eval $inlibc
15445 case "$d_setgrent_r" in
15446 "$define")
15447         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15448         case "$d_setgrent_r_proto:$usethreads" in
15449         ":define")      d_setgrent_r_proto=define
15450                 set d_setgrent_r_proto setgrent_r $hdrs
15451                 eval $hasproto ;;
15452         *)      ;;
15453         esac
15454         case "$d_setgrent_r_proto" in
15455         define)
15456         case "$setgrent_r_proto" in
15457         ''|0) try='int setgrent_r(FILE**);'
15458         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15459         esac
15460         case "$setgrent_r_proto" in
15461         ''|0) try='void setgrent_r(FILE**);'
15462         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15463         esac
15464         case "$setgrent_r_proto" in
15465         ''|0)   d_setgrent_r=undef
15466                 setgrent_r_proto=0
15467                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15468         * )     case "$setgrent_r_proto" in
15469                 REENTRANT_PROTO*) ;;
15470                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15471                 esac
15472                 echo "Prototype: $try" ;;
15473         esac
15474         ;;
15475         *)      case "$usethreads" in
15476                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15477                 esac
15478                 d_setgrent_r=undef
15479                 setgrent_r_proto=0
15480                 ;;
15481         esac
15482         ;;
15483 *)      setgrent_r_proto=0
15484         ;;
15485 esac
15486
15487 : see if sethostent exists
15488 set sethostent d_sethent
15489 eval $inlibc
15490
15491 : see if sethostent_r exists
15492 set sethostent_r d_sethostent_r
15493 eval $inlibc
15494 case "$d_sethostent_r" in
15495 "$define")
15496         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15497         case "$d_sethostent_r_proto:$usethreads" in
15498         ":define")      d_sethostent_r_proto=define
15499                 set d_sethostent_r_proto sethostent_r $hdrs
15500                 eval $hasproto ;;
15501         *)      ;;
15502         esac
15503         case "$d_sethostent_r_proto" in
15504         define)
15505         case "$sethostent_r_proto" in
15506         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15507         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15508         esac
15509         case "$sethostent_r_proto" in
15510         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15511         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15512         esac
15513         case "$sethostent_r_proto" in
15514         ''|0)   d_sethostent_r=undef
15515                 sethostent_r_proto=0
15516                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15517         * )     case "$sethostent_r_proto" in
15518                 REENTRANT_PROTO*) ;;
15519                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15520                 esac
15521                 echo "Prototype: $try" ;;
15522         esac
15523         ;;
15524         *)      case "$usethreads" in
15525                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15526                 esac
15527                 d_sethostent_r=undef
15528                 sethostent_r_proto=0
15529                 ;;
15530         esac
15531         ;;
15532 *)      sethostent_r_proto=0
15533         ;;
15534 esac
15535
15536 : see if setitimer exists
15537 set setitimer d_setitimer
15538 eval $inlibc
15539
15540 : see if setlinebuf exists
15541 set setlinebuf d_setlinebuf
15542 eval $inlibc
15543
15544 : see if setlocale exists
15545 set setlocale d_setlocale
15546 eval $inlibc
15547
15548 : see if locale.h is available
15549 set locale.h i_locale
15550 eval $inhdr
15551
15552 : see if setlocale_r exists
15553 set setlocale_r d_setlocale_r
15554 eval $inlibc
15555 case "$d_setlocale_r" in
15556 "$define")
15557         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15558         case "$d_setlocale_r_proto:$usethreads" in
15559         ":define")      d_setlocale_r_proto=define
15560                 set d_setlocale_r_proto setlocale_r $hdrs
15561                 eval $hasproto ;;
15562         *)      ;;
15563         esac
15564         case "$d_setlocale_r_proto" in
15565         define)
15566         case "$setlocale_r_proto" in
15567         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15568         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15569         esac
15570         case "$setlocale_r_proto" in
15571         ''|0)   d_setlocale_r=undef
15572                 setlocale_r_proto=0
15573                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15574         * )     case "$setlocale_r_proto" in
15575                 REENTRANT_PROTO*) ;;
15576                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15577                 esac
15578                 echo "Prototype: $try" ;;
15579         esac
15580         ;;
15581         *)      case "$usethreads" in
15582                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15583                 esac
15584                 d_setlocale_r=undef
15585                 setlocale_r_proto=0
15586                 ;;
15587         esac
15588         ;;
15589 *)      setlocale_r_proto=0
15590         ;;
15591 esac
15592
15593 : see if setnetent exists
15594 set setnetent d_setnent
15595 eval $inlibc
15596
15597 : see if setnetent_r exists
15598 set setnetent_r d_setnetent_r
15599 eval $inlibc
15600 case "$d_setnetent_r" in
15601 "$define")
15602         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15603         case "$d_setnetent_r_proto:$usethreads" in
15604         ":define")      d_setnetent_r_proto=define
15605                 set d_setnetent_r_proto setnetent_r $hdrs
15606                 eval $hasproto ;;
15607         *)      ;;
15608         esac
15609         case "$d_setnetent_r_proto" in
15610         define)
15611         case "$setnetent_r_proto" in
15612         ''|0) try='int setnetent_r(int, struct netent_data*);'
15613         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15614         esac
15615         case "$setnetent_r_proto" in
15616         ''|0) try='void setnetent_r(int, struct netent_data*);'
15617         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15618         esac
15619         case "$setnetent_r_proto" in
15620         ''|0)   d_setnetent_r=undef
15621                 setnetent_r_proto=0
15622                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15623         * )     case "$setnetent_r_proto" in
15624                 REENTRANT_PROTO*) ;;
15625                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15626                 esac
15627                 echo "Prototype: $try" ;;
15628         esac
15629         ;;
15630         *)      case "$usethreads" in
15631                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15632                 esac
15633                 d_setnetent_r=undef
15634                 setnetent_r_proto=0
15635                 ;;
15636         esac
15637         ;;
15638 *)      setnetent_r_proto=0
15639         ;;
15640 esac
15641
15642 : see if setprotoent exists
15643 set setprotoent d_setpent
15644 eval $inlibc
15645
15646 : see if setpgid exists
15647 set setpgid d_setpgid
15648 eval $inlibc
15649
15650 : see if setpgrp2 exists
15651 set setpgrp2 d_setpgrp2
15652 eval $inlibc
15653
15654 : see if setpriority exists
15655 set setpriority d_setprior
15656 eval $inlibc
15657
15658 : see if setproctitle exists
15659 set setproctitle d_setproctitle
15660 eval $inlibc
15661
15662 : see if setprotoent_r exists
15663 set setprotoent_r d_setprotoent_r
15664 eval $inlibc
15665 case "$d_setprotoent_r" in
15666 "$define")
15667         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15668         case "$d_setprotoent_r_proto:$usethreads" in
15669         ":define")      d_setprotoent_r_proto=define
15670                 set d_setprotoent_r_proto setprotoent_r $hdrs
15671                 eval $hasproto ;;
15672         *)      ;;
15673         esac
15674         case "$d_setprotoent_r_proto" in
15675         define)
15676         case "$setprotoent_r_proto" in
15677         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15678         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15679         esac
15680         case "$setprotoent_r_proto" in
15681         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15682         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15683         esac
15684         case "$setprotoent_r_proto" in
15685         ''|0)   d_setprotoent_r=undef
15686                 setprotoent_r_proto=0
15687                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15688         * )     case "$setprotoent_r_proto" in
15689                 REENTRANT_PROTO*) ;;
15690                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15691                 esac
15692                 echo "Prototype: $try" ;;
15693         esac
15694         ;;
15695         *)      case "$usethreads" in
15696                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15697                 esac
15698                 d_setprotoent_r=undef
15699                 setprotoent_r_proto=0
15700                 ;;
15701         esac
15702         ;;
15703 *)      setprotoent_r_proto=0
15704         ;;
15705 esac
15706
15707 : see if setpwent exists
15708 set setpwent d_setpwent
15709 eval $inlibc
15710
15711 : see if setpwent_r exists
15712 set setpwent_r d_setpwent_r
15713 eval $inlibc
15714 case "$d_setpwent_r" in
15715 "$define")
15716         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15717         case "$d_setpwent_r_proto:$usethreads" in
15718         ":define")      d_setpwent_r_proto=define
15719                 set d_setpwent_r_proto setpwent_r $hdrs
15720                 eval $hasproto ;;
15721         *)      ;;
15722         esac
15723         case "$d_setpwent_r_proto" in
15724         define)
15725         case "$setpwent_r_proto" in
15726         ''|0) try='int setpwent_r(FILE**);'
15727         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15728         esac
15729         case "$setpwent_r_proto" in
15730         ''|0) try='void setpwent_r(FILE**);'
15731         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15732         esac
15733         case "$setpwent_r_proto" in
15734         ''|0)   d_setpwent_r=undef
15735                 setpwent_r_proto=0
15736                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15737         * )     case "$setpwent_r_proto" in
15738                 REENTRANT_PROTO*) ;;
15739                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15740                 esac
15741                 echo "Prototype: $try" ;;
15742         esac
15743         ;;
15744         *)      case "$usethreads" in
15745                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15746                 esac
15747                 d_setpwent_r=undef
15748                 setpwent_r_proto=0
15749                 ;;
15750         esac
15751         ;;
15752 *)      setpwent_r_proto=0
15753         ;;
15754 esac
15755
15756 : see if setregid exists
15757 set setregid d_setregid
15758 eval $inlibc
15759 set setresgid d_setresgid
15760 eval $inlibc
15761
15762 : see if setreuid exists
15763 set setreuid d_setreuid
15764 eval $inlibc
15765 set setresuid d_setresuid
15766 eval $inlibc
15767
15768 : see if setrgid exists
15769 set setrgid d_setrgid
15770 eval $inlibc
15771
15772 : see if setruid exists
15773 set setruid d_setruid
15774 eval $inlibc
15775
15776 : see if setservent exists
15777 set setservent d_setsent
15778 eval $inlibc
15779
15780 : see if setservent_r exists
15781 set setservent_r d_setservent_r
15782 eval $inlibc
15783 case "$d_setservent_r" in
15784 "$define")
15785         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15786         case "$d_setservent_r_proto:$usethreads" in
15787         ":define")      d_setservent_r_proto=define
15788                 set d_setservent_r_proto setservent_r $hdrs
15789                 eval $hasproto ;;
15790         *)      ;;
15791         esac
15792         case "$d_setservent_r_proto" in
15793         define)
15794         case "$setservent_r_proto" in
15795         ''|0) try='int setservent_r(int, struct servent_data*);'
15796         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15797         esac
15798         case "$setservent_r_proto" in
15799         ''|0) try='void setservent_r(int, struct servent_data*);'
15800         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15801         esac
15802         case "$setservent_r_proto" in
15803         ''|0)   d_setservent_r=undef
15804                 setservent_r_proto=0
15805                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15806         * )     case "$setservent_r_proto" in
15807                 REENTRANT_PROTO*) ;;
15808                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15809                 esac
15810                 echo "Prototype: $try" ;;
15811         esac
15812         ;;
15813         *)      case "$usethreads" in
15814                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15815                 esac
15816                 d_setservent_r=undef
15817                 setservent_r_proto=0
15818                 ;;
15819         esac
15820         ;;
15821 *)      setservent_r_proto=0
15822         ;;
15823 esac
15824
15825 : see if setsid exists
15826 set setsid d_setsid
15827 eval $inlibc
15828
15829 : see if setvbuf exists
15830 set setvbuf d_setvbuf
15831 eval $inlibc
15832
15833 : see if sfio.h is available
15834 set sfio.h i_sfio
15835 eval $inhdr
15836
15837
15838 : see if sfio library is available
15839 case "$i_sfio" in
15840 $define)
15841         val=''
15842         set sfreserve val
15843         eval $inlibc
15844         ;;
15845 *)
15846         val="$undef"
15847         ;;
15848 esac
15849 : Ok, but do we want to use it.
15850 case "$val" in
15851 $define)
15852         case "$usesfio" in
15853         true|$define|[yY]*) dflt='y';;
15854         *) dflt='n';;
15855         esac
15856         echo "$package can use the sfio library, but it is experimental."
15857         case "$useperlio" in
15858         "$undef")
15859             echo "For sfio also the PerlIO abstraction layer is needed."
15860             echo "Earlier you said you wouldn't want that."
15861             ;;
15862         esac
15863         rp="You seem to have sfio available, do you want to try using it?"
15864         . ./myread
15865         case "$ans" in
15866         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15867                 useperlio="$define"
15868                 val="$define"
15869                 ;;
15870         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15871                 val="$undef"
15872                 ;;
15873         esac
15874         ;;
15875 *)      case "$usesfio" in
15876         true|$define|[yY]*)
15877                 echo "Sorry, cannot find sfio on this machine." >&4
15878                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15879                 val="$undef"
15880                 ;;
15881         esac
15882         ;;
15883 esac
15884 set d_sfio
15885 eval $setvar
15886 case "$d_sfio" in
15887 $define) usesfio='true';;
15888 *) usesfio='false';;
15889 esac
15890 case "$d_sfio" in
15891 $define) ;;
15892 *)      : Remove sfio from list of libraries to use
15893         case "$libs" in
15894         *-lsfio*)
15895                 echo "Removing unneeded -lsfio from library list" >&4
15896                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15897                 shift
15898                 libs="$*"
15899                 echo "libs = $libs" >&4
15900                 ;;
15901         esac
15902 ;;
15903 esac
15904
15905
15906 : see if shmctl exists
15907 set shmctl d_shmctl
15908 eval $inlibc
15909
15910 : see if shmget exists
15911 set shmget d_shmget
15912 eval $inlibc
15913
15914 : see if shmat exists
15915 set shmat d_shmat
15916 eval $inlibc
15917 : see what shmat returns
15918 case "$d_shmat" in
15919 "$define")
15920         $cat >shmat.c <<'END'
15921 #include <sys/shm.h>
15922 void *shmat();
15923 END
15924         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15925                 shmattype='void *'
15926         else
15927                 shmattype='char *'
15928         fi
15929         echo "and it returns ($shmattype)." >&4
15930         : see if a prototype for shmat is available
15931         xxx=`./findhdr sys/shm.h`
15932         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15933         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15934                 val="$define"
15935         else
15936                 val="$undef"
15937         fi
15938         $rm -f shmat.[co]
15939         ;;
15940 *)
15941         val="$undef"
15942         ;;
15943 esac
15944 set d_shmatprototype
15945 eval $setvar
15946
15947 : see if shmdt exists
15948 set shmdt d_shmdt
15949 eval $inlibc
15950
15951 : see how much of the 'shm*(2)' library is present.
15952 h_shm=true
15953 echo " "
15954 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15955 *"$undef"*) h_shm=false;;
15956 esac
15957 case "$osname" in
15958 freebsd)
15959     case "`ipcs 2>&1`" in
15960     "SVID shared memory"*"not configured"*)
15961         echo "Your $osname does not have the shm*(2) configured." >&4
15962         h_shm=false
15963         val="$undef"
15964         set shmctl d_shmctl
15965         evat $setvar
15966         set shmget d_shmget
15967         evat $setvar
15968         set shmat d_shmat
15969         evat $setvar
15970         set shmdt d_shmdt
15971         evat $setvar
15972         ;;
15973     esac
15974     ;;
15975 esac
15976 : we could also check for sys/ipc.h ...
15977 if $h_shm && $test `./findhdr sys/shm.h`; then
15978         echo "You have the full shm*(2) library." >&4
15979         val="$define"
15980 else
15981         echo "You don't have the full shm*(2) library." >&4
15982         val="$undef"
15983 fi
15984 set d_shm
15985 eval $setvar
15986
15987 echo " "
15988 : see if we have sigaction
15989 if set sigaction val -f d_sigaction; eval $csym; $val; then
15990         echo 'sigaction() found.' >&4
15991         $cat > try.c <<EOP
15992 #include <stdio.h>
15993 #include <sys/types.h>
15994 #include <signal.h>
15995 #$i_stdlib I_STDLIB
15996 #ifdef I_STDLIB
15997 #include <stdlib.h>
15998 #endif
15999 int main()
16000 {
16001     struct sigaction act, oact;
16002     act.sa_flags = 0;
16003     oact.sa_handler = 0;
16004     /* so that act and oact are used */
16005     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16006 }
16007 EOP
16008         set try
16009         if eval $compile_ok; then
16010                 val="$define"
16011         else
16012                 echo "But you don't seem to have a useable struct sigaction." >&4
16013                 val="$undef"
16014         fi
16015 else
16016         echo 'sigaction NOT found.' >&4
16017         val="$undef"
16018 fi
16019 set d_sigaction; eval $setvar
16020 $rm -f try try$_o try.c
16021
16022 : see if sigprocmask exists
16023 set sigprocmask d_sigprocmask
16024 eval $inlibc
16025
16026 : see if sigsetjmp exists
16027 echo " "
16028 case "$d_sigsetjmp" in
16029 '')
16030         $cat >try.c <<EOP
16031 #include <setjmp.h>
16032 #$i_stdlib I_STDLIB
16033 #ifdef I_STDLIB
16034 #include <stdlib.h>
16035 #endif
16036 sigjmp_buf env;
16037 int set = 1;
16038 int main()
16039 {
16040         if (sigsetjmp(env,1))
16041                 exit(set);
16042         set = 0;
16043         siglongjmp(env, 1);
16044         exit(1);
16045 }
16046 EOP
16047         set try
16048         if eval $compile; then
16049                 if $run ./try >/dev/null 2>&1; then
16050                         echo "POSIX sigsetjmp found." >&4
16051                         val="$define"
16052                 else
16053                         $cat >&4 <<EOM
16054 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16055 I'll ignore them.
16056 EOM
16057                         val="$undef"
16058                 fi
16059         else
16060                 echo "sigsetjmp not found." >&4
16061                 val="$undef"
16062         fi
16063         ;;
16064 *) val="$d_sigsetjmp"
16065         case "$d_sigsetjmp" in
16066         $define) echo "POSIX sigsetjmp found." >&4;;
16067         $undef) echo "sigsetjmp not found." >&4;;
16068         esac
16069         ;;
16070 esac
16071 set d_sigsetjmp
16072 eval $setvar
16073 $rm -f try.c try
16074
16075 : see if sockatmark exists
16076 set sockatmark d_sockatmark
16077 eval $inlibc
16078
16079 : see if prototype for sockatmark is available
16080 echo " "
16081 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16082 eval $hasproto
16083
16084 : see if socks5_init exists
16085 set socks5_init d_socks5_init
16086 eval $inlibc
16087
16088 : see if srand48_r exists
16089 set srand48_r d_srand48_r
16090 eval $inlibc
16091 case "$d_srand48_r" in
16092 "$define")
16093         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16094         case "$d_srand48_r_proto:$usethreads" in
16095         ":define")      d_srand48_r_proto=define
16096                 set d_srand48_r_proto srand48_r $hdrs
16097                 eval $hasproto ;;
16098         *)      ;;
16099         esac
16100         case "$d_srand48_r_proto" in
16101         define)
16102         case "$srand48_r_proto" in
16103         ''|0) try='int srand48_r(long, struct drand48_data*);'
16104         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16105         esac
16106         case "$srand48_r_proto" in
16107         ''|0)   d_srand48_r=undef
16108                 srand48_r_proto=0
16109                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16110         * )     case "$srand48_r_proto" in
16111                 REENTRANT_PROTO*) ;;
16112                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16113                 esac
16114                 echo "Prototype: $try" ;;
16115         esac
16116         ;;
16117         *)      case "$usethreads" in
16118                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16119                 esac
16120                 d_srand48_r=undef
16121                 srand48_r_proto=0
16122                 ;;
16123         esac
16124         ;;
16125 *)      srand48_r_proto=0
16126         ;;
16127 esac
16128
16129 : see if srandom_r exists
16130 set srandom_r d_srandom_r
16131 eval $inlibc
16132 case "$d_srandom_r" in
16133 "$define")
16134         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16135         case "$d_srandom_r_proto:$usethreads" in
16136         ":define")      d_srandom_r_proto=define
16137                 set d_srandom_r_proto srandom_r $hdrs
16138                 eval $hasproto ;;
16139         *)      ;;
16140         esac
16141         case "$d_srandom_r_proto" in
16142         define)
16143         case "$srandom_r_proto" in
16144         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16145         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16146         esac
16147         case "$srandom_r_proto" in
16148         ''|0)   d_srandom_r=undef
16149                 srandom_r_proto=0
16150                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16151         * )     case "$srandom_r_proto" in
16152                 REENTRANT_PROTO*) ;;
16153                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16154                 esac
16155                 echo "Prototype: $try" ;;
16156         esac
16157         ;;
16158         *)      case "$usethreads" in
16159                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16160                 esac
16161                 d_srandom_r=undef
16162                 srandom_r_proto=0
16163                 ;;
16164         esac
16165         ;;
16166 *)      srandom_r_proto=0
16167         ;;
16168 esac
16169
16170 : see if prototype for setresgid is available
16171 echo " "
16172 set d_sresgproto setresgid $i_unistd unistd.h
16173 eval $hasproto
16174
16175 : see if prototype for setresuid is available
16176 echo " "
16177 set d_sresuproto setresuid $i_unistd unistd.h
16178 eval $hasproto
16179
16180 : see if sys/stat.h is available
16181 set sys/stat.h i_sysstat
16182 eval $inhdr
16183
16184
16185 : see if stat knows about block sizes
16186 echo " "
16187 echo "Checking to see if your struct stat has st_blocks field..." >&4
16188 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16189 eval $hasfield
16190
16191
16192 : see if this is a sys/vfs.h system
16193 set sys/vfs.h i_sysvfs
16194 eval $inhdr
16195
16196
16197 : see if this is a sys/statfs.h system
16198 set sys/statfs.h i_sysstatfs
16199 eval $inhdr
16200
16201
16202 echo " "
16203 echo "Checking to see if your system supports struct statfs..." >&4
16204 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
16205 eval $hasstruct
16206 case "$d_statfs_s" in
16207 "$define")      echo "Yes, it does."   ;;
16208 *)              echo "No, it doesn't." ;;
16209 esac
16210
16211
16212
16213 : see if struct statfs knows about f_flags
16214 case "$d_statfs_s" in
16215 define) 
16216         echo " "
16217         echo "Checking to see if your struct statfs has f_flags field..." >&4
16218         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
16219         eval $hasfield
16220         ;;
16221 *)      val="$undef"
16222         set d_statfs_f_flags
16223         eval $setvar
16224         ;;
16225 esac
16226 case "$d_statfs_f_flags" in
16227 "$define")      echo "Yes, it does."   ;;
16228 *)              echo "No, it doesn't." ;;
16229 esac
16230
16231 $cat >&4 <<EOM
16232 Checking how to access stdio streams by file descriptor number...
16233 EOM
16234 case "$stdio_stream_array" in
16235 '')     $cat >try.c <<EOCP
16236 #include <stdio.h>
16237 int main() {
16238   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16239     printf("yes\n");
16240 }
16241 EOCP
16242         for s in _iob __iob __sF
16243         do
16244                 set try -DSTDIO_STREAM_ARRAY=$s
16245                 if eval $compile; then
16246                         case "`$run ./try`" in
16247                         yes)    stdio_stream_array=$s; break ;;
16248                         esac
16249                 fi
16250         done
16251         $rm -f try.* try$exe_ext
16252 esac
16253 case "$stdio_stream_array" in
16254 '')     $cat >&4 <<EOM
16255 I can't figure out how to access stdio streams by file descriptor number.
16256 EOM
16257         d_stdio_stream_array="$undef"
16258         ;;
16259 *)      $cat >&4 <<EOM
16260 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16261 EOM
16262         d_stdio_stream_array="$define"
16263         ;;
16264 esac
16265
16266 : see if strcoll exists
16267 set strcoll d_strcoll
16268 eval $inlibc
16269
16270 : check for structure copying
16271 echo " "
16272 echo "Checking to see if your C compiler can copy structs..." >&4
16273 $cat >try.c <<'EOCP'
16274 int main()
16275 {
16276         struct blurfl {
16277                 int dyick;
16278         } foo, bar;
16279
16280         foo = bar;
16281 }
16282 EOCP
16283 if $cc -c try.c >/dev/null 2>&1 ; then
16284         val="$define"
16285         echo "Yup, it can."
16286 else
16287         val="$undef"
16288         echo "Nope, it can't."
16289 fi
16290 set d_strctcpy
16291 eval $setvar
16292 $rm -f try.*
16293
16294 : see if strerror and/or sys_errlist[] exist
16295 echo " "
16296 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16297     if set strerror val -f d_strerror; eval $csym; $val; then
16298                 echo 'strerror() found.' >&4
16299                 d_strerror="$define"
16300                 d_strerrm='strerror(e)'
16301                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16302                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16303                         d_syserrlst="$define"
16304                 else
16305                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16306                         d_syserrlst="$undef"
16307                 fi
16308     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16309                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16310                 echo 'strerror() found in string header.' >&4
16311                 d_strerror="$define"
16312                 d_strerrm='strerror(e)'
16313                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16314                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16315                                 d_syserrlst="$define"
16316                 else
16317                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16318                         d_syserrlst="$undef"
16319                 fi
16320     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16321                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16322                 d_strerror="$undef"
16323                 d_syserrlst="$define"
16324                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16325     else
16326                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16327                 d_strerror="$undef"
16328                 d_syserrlst="$undef"
16329                 d_strerrm='"unknown"'
16330     fi
16331 fi
16332
16333 : see if strerror_r exists
16334 set strerror_r d_strerror_r
16335 eval $inlibc
16336 case "$d_strerror_r" in
16337 "$define")
16338         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16339         case "$d_strerror_r_proto:$usethreads" in
16340         ":define")      d_strerror_r_proto=define
16341                 set d_strerror_r_proto strerror_r $hdrs
16342                 eval $hasproto ;;
16343         *)      ;;
16344         esac
16345         case "$d_strerror_r_proto" in
16346         define)
16347         case "$strerror_r_proto" in
16348         ''|0) try='int strerror_r(int, char*, size_t);'
16349         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16350         esac
16351         case "$strerror_r_proto" in
16352         ''|0) try='int strerror_r(int, char*, int);'
16353         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16354         esac
16355         case "$strerror_r_proto" in
16356         ''|0) try='char* strerror_r(int, char*, size_t);'
16357         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16358         esac
16359         case "$strerror_r_proto" in
16360         ''|0)   d_strerror_r=undef
16361                 strerror_r_proto=0
16362                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16363         * )     case "$strerror_r_proto" in
16364                 REENTRANT_PROTO*) ;;
16365                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16366                 esac
16367                 echo "Prototype: $try" ;;
16368         esac
16369         ;;
16370         *)      case "$usethreads" in
16371                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16372                 esac
16373                 d_strerror_r=undef
16374                 strerror_r_proto=0
16375                 ;;
16376         esac
16377         ;;
16378 *)      strerror_r_proto=0
16379         ;;
16380 esac
16381
16382 : see if strftime exists
16383 set strftime d_strftime
16384 eval $inlibc
16385
16386 : see if strtod exists
16387 set strtod d_strtod
16388 eval $inlibc
16389
16390 : see if strtol exists
16391 set strtol d_strtol
16392 eval $inlibc
16393
16394 : see if strtold exists
16395 set strtold d_strtold
16396 eval $inlibc
16397
16398 : see if strtoll exists
16399 set strtoll d_strtoll
16400 eval $inlibc
16401
16402 case "$d_longlong-$d_strtoll" in
16403 "$define-$define")
16404         $cat <<EOM
16405 Checking whether your strtoll() works okay...
16406 EOM
16407         $cat >try.c <<'EOCP'
16408 #include <errno.h>
16409 #ifdef __hpux
16410 #define strtoll __strtoll
16411 #endif
16412 #ifdef __EMX__
16413 #define strtoll _strtoll
16414 #endif
16415 #include <stdio.h>
16416 extern long long int strtoll(char *s, char **, int); 
16417 static int bad = 0;
16418 int check(char *s, long long ell, int een) {
16419         long long gll;
16420         errno = 0;
16421         gll = strtoll(s, 0, 10);
16422         if (!((gll == ell) && (errno == een)))
16423                 bad++;
16424 }
16425 int main() {
16426         check(" 1",                                      1LL, 0);
16427         check(" 0",                                      0LL, 0);
16428         check("-1",                                     -1LL, 0);
16429         check("-9223372036854775808", -9223372036854775808LL, 0);
16430         check("-9223372036854775808", -9223372036854775808LL, 0);
16431         check(" 9223372036854775807",  9223372036854775807LL, 0);
16432         check("-9223372036854775808", -9223372036854775808LL, 0);
16433         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16434         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16435         if (!bad)
16436                 printf("ok\n");
16437 }
16438 EOCP
16439         set try
16440         if eval $compile; then
16441                 yyy=`$run ./try`
16442                 case "$yyy" in
16443                 ok) echo "Your strtoll() seems to be working okay." ;;
16444                 *) cat <<EOM >&4
16445 Your strtoll() doesn't seem to be working okay.
16446 EOM
16447                    d_strtoll="$undef"
16448                    ;;
16449                 esac
16450         else
16451                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16452                 d_strtoll="$undef"
16453         fi
16454         ;;
16455 esac
16456
16457 : see if strtoq exists
16458 set strtoq d_strtoq
16459 eval $inlibc
16460
16461 : see if strtoul exists
16462 set strtoul d_strtoul
16463 eval $inlibc
16464
16465 case "$d_strtoul" in
16466 "$define")
16467         $cat <<EOM
16468 Checking whether your strtoul() works okay...
16469 EOM
16470         $cat >try.c <<'EOCP'
16471 #include <errno.h>
16472 #include <stdio.h>
16473 extern unsigned long int strtoul(char *s, char **, int); 
16474 static int bad = 0;
16475 void check(char *s, unsigned long eul, int een) {
16476         unsigned long gul;
16477         errno = 0;
16478         gul = strtoul(s, 0, 10);
16479         if (!((gul == eul) && (errno == een)))
16480                 bad++;
16481 }
16482 int main() {
16483         check(" 1", 1L, 0);
16484         check(" 0", 0L, 0);
16485 EOCP
16486         case "$longsize" in
16487         8)
16488             $cat >>try.c <<'EOCP'
16489         check("18446744073709551615", 18446744073709551615UL, 0);
16490         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16491 #if 0 /* strtoul() for /^-/ strings is undefined. */
16492         check("-1", 18446744073709551615UL, 0);
16493         check("-18446744073709551614", 2, 0);
16494         check("-18446744073709551615", 1, 0);
16495         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16496         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16497 #endif
16498 EOCP
16499                 ;;
16500         4)
16501                     $cat >>try.c <<'EOCP'
16502         check("4294967295", 4294967295UL, 0);
16503         check("4294967296", 4294967295UL, ERANGE);
16504 #if 0 /* strtoul() for /^-/ strings is undefined. */
16505         check("-1", 4294967295UL, 0);
16506         check("-4294967294", 2, 0);
16507         check("-4294967295", 1, 0);
16508         check("-4294967296", 4294967295UL, ERANGE);
16509         check("-4294967297", 4294967295UL, ERANGE);
16510 #endif
16511 EOCP
16512                 ;;
16513         *)
16514 : Should we write these tests to be more portable by sprintf-ing
16515 : ~0 and then manipulating that char string as input for strtol?
16516                 ;;
16517         esac
16518         $cat >>try.c <<'EOCP'
16519         if (!bad)
16520                 printf("ok\n");
16521         return 0;
16522 }
16523 EOCP
16524         set try
16525         if eval $compile; then
16526                 case "`$run ./try`" in
16527                 ok) echo "Your strtoul() seems to be working okay." ;;
16528                 *) cat <<EOM >&4
16529 Your strtoul() doesn't seem to be working okay.
16530 EOM
16531                    d_strtoul="$undef"
16532                    ;;
16533                 esac
16534         fi
16535         ;;
16536 esac
16537
16538 : see if strtoull exists
16539 set strtoull d_strtoull
16540 eval $inlibc
16541
16542 case "$d_longlong-$d_strtoull" in
16543 "$define-$define")
16544         $cat <<EOM
16545 Checking whether your strtoull() works okay...
16546 EOM
16547         $cat >try.c <<'EOCP'
16548 #include <errno.h>
16549 #ifdef __hpux
16550 #define strtoull __strtoull
16551 #endif
16552 #include <stdio.h>
16553 extern unsigned long long int strtoull(char *s, char **, int); 
16554 static int bad = 0;
16555 int check(char *s, long long eull, int een) {
16556         long long gull;
16557         errno = 0;
16558         gull = strtoull(s, 0, 10);
16559         if (!((gull == eull) && (errno == een)))
16560                 bad++;
16561 }
16562 int main() {
16563         check(" 1",                                        1LL, 0);
16564         check(" 0",                                        0LL, 0);
16565         check("18446744073709551615",  18446744073709551615ULL, 0);
16566         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16567 #if 0 /* strtoull() for /^-/ strings is undefined. */
16568         check("-1",                    18446744073709551615ULL, 0);
16569         check("-18446744073709551614",                     2LL, 0);
16570         check("-18446744073709551615",                     1LL, 0);
16571         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16572         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16573 #endif
16574         if (!bad)
16575                 printf("ok\n");
16576 }
16577 EOCP
16578         set try
16579         if eval $compile; then
16580                 case "`$run ./try`" in
16581                 ok) echo "Your strtoull() seems to be working okay." ;;
16582                 *) cat <<EOM >&4
16583 Your strtoull() doesn't seem to be working okay.
16584 EOM
16585                    d_strtoull="$undef"
16586                    ;;
16587                 esac
16588         fi
16589         ;;
16590 esac
16591
16592 : see if strtouq exists
16593 set strtouq d_strtouq
16594 eval $inlibc
16595
16596 case "$d_strtouq" in
16597 "$define")
16598         $cat <<EOM
16599 Checking whether your strtouq() works okay...
16600 EOM
16601         $cat >try.c <<'EOCP'
16602 #include <errno.h>
16603 #include <stdio.h>
16604 extern unsigned long long int strtouq(char *s, char **, int); 
16605 static int bad = 0;
16606 void check(char *s, unsigned long long eull, int een) {
16607         unsigned long long gull;
16608         errno = 0;
16609         gull = strtouq(s, 0, 10);
16610         if (!((gull == eull) && (errno == een)))
16611                 bad++;
16612 }
16613 int main() {
16614         check(" 1",                                        1LL, 0);
16615         check(" 0",                                        0LL, 0);
16616         check("18446744073709551615",  18446744073709551615ULL, 0);
16617         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16618 #if 0 /* strtouq() for /^-/ strings is undefined. */
16619         check("-1",                    18446744073709551615ULL, 0);
16620         check("-18446744073709551614",                     2LL, 0);
16621         check("-18446744073709551615",                     1LL, 0);
16622         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16623         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16624 #endif
16625         if (!bad)
16626                 printf("ok\n");
16627         return 0;
16628 }
16629 EOCP
16630         set try
16631         if eval $compile; then
16632                 case "`$run ./try`" in
16633                 ok) echo "Your strtouq() seems to be working okay." ;;
16634                 *) cat <<EOM >&4
16635 Your strtouq() doesn't seem to be working okay.
16636 EOM
16637                    d_strtouq="$undef"
16638                    ;;
16639                 esac
16640         fi
16641         ;;
16642 esac
16643
16644 : see if strxfrm exists
16645 set strxfrm d_strxfrm
16646 eval $inlibc
16647
16648 : see if symlink exists
16649 set symlink d_symlink
16650 eval $inlibc
16651
16652 : see if syscall exists
16653 set syscall d_syscall
16654 eval $inlibc
16655
16656 : see if prototype for syscall is available
16657 echo " "
16658 set d_syscallproto syscall $i_unistd unistd.h
16659 eval $hasproto
16660
16661 : see if sysconf exists
16662 set sysconf d_sysconf
16663 eval $inlibc
16664
16665 : see if system exists
16666 set system d_system
16667 eval $inlibc
16668
16669 : see if tcgetpgrp exists
16670 set tcgetpgrp d_tcgetpgrp
16671 eval $inlibc
16672
16673 : see if tcsetpgrp exists
16674 set tcsetpgrp d_tcsetpgrp
16675 eval $inlibc
16676
16677 : see if prototype for telldir is available
16678 echo " "
16679 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16680 eval $hasproto
16681
16682 : see if time exists
16683 echo " "
16684 if test "X$d_time" = X -o X"$timetype" = X; then
16685     if set time val -f d_time; eval $csym; $val; then
16686                 echo 'time() found.' >&4
16687                 val="$define"
16688                 rp="What is the type returned by time() on this system?"
16689                 set time_t timetype long stdio.h sys/types.h
16690                 eval $typedef_ask
16691     else
16692                 echo 'time() not found, hope that will do.' >&4
16693                 val="$undef"
16694                 timetype='int';
16695     fi
16696     set d_time
16697     eval $setvar
16698 fi
16699
16700 : see if this is a sys/times.h system
16701 set sys/times.h i_systimes
16702 eval $inhdr
16703
16704 : see if times exists
16705 echo " "
16706 if set times val -f d_times; eval $csym; $val; then
16707         echo 'times() found.' >&4
16708         d_times="$define"
16709         inc=''
16710         case "$i_systimes" in
16711         "$define") inc='sys/times.h';;
16712         esac
16713         rp="What is the type returned by times() on this system?"
16714         set clock_t clocktype long stdio.h sys/types.h $inc
16715         eval $typedef_ask
16716 else
16717         echo 'times() NOT found, hope that will do.' >&4
16718         d_times="$undef"
16719         clocktype='int'
16720 fi
16721
16722 : see if tmpnam_r exists
16723 set tmpnam_r d_tmpnam_r
16724 eval $inlibc
16725 case "$d_tmpnam_r" in
16726 "$define")
16727         hdrs="$i_systypes sys/types.h define stdio.h "
16728         case "$d_tmpnam_r_proto:$usethreads" in
16729         ":define")      d_tmpnam_r_proto=define
16730                 set d_tmpnam_r_proto tmpnam_r $hdrs
16731                 eval $hasproto ;;
16732         *)      ;;
16733         esac
16734         case "$d_tmpnam_r_proto" in
16735         define)
16736         case "$tmpnam_r_proto" in
16737         ''|0) try='char* tmpnam_r(char*);'
16738         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16739         esac
16740         case "$tmpnam_r_proto" in
16741         ''|0)   d_tmpnam_r=undef
16742                 tmpnam_r_proto=0
16743                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16744         * )     case "$tmpnam_r_proto" in
16745                 REENTRANT_PROTO*) ;;
16746                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16747                 esac
16748                 echo "Prototype: $try" ;;
16749         esac
16750         ;;
16751         *)      case "$usethreads" in
16752                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16753                 esac
16754                 d_tmpnam_r=undef
16755                 tmpnam_r_proto=0
16756                 ;;
16757         esac
16758         ;;
16759 *)      tmpnam_r_proto=0
16760         ;;
16761 esac
16762
16763 : see if truncate exists
16764 set truncate d_truncate
16765 eval $inlibc
16766
16767 : see if ttyname_r exists
16768 set ttyname_r d_ttyname_r
16769 eval $inlibc
16770 case "$d_ttyname_r" in
16771 "$define")
16772         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16773         case "$d_ttyname_r_proto:$usethreads" in
16774         ":define")      d_ttyname_r_proto=define
16775                 set d_ttyname_r_proto ttyname_r $hdrs
16776                 eval $hasproto ;;
16777         *)      ;;
16778         esac
16779         case "$d_ttyname_r_proto" in
16780         define)
16781         case "$ttyname_r_proto" in
16782         ''|0) try='int ttyname_r(int, char*, size_t);'
16783         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16784         esac
16785         case "$ttyname_r_proto" in
16786         ''|0) try='int ttyname_r(int, char*, int);'
16787         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16788         esac
16789         case "$ttyname_r_proto" in
16790         ''|0) try='char* ttyname_r(int, char*, int);'
16791         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16792         esac
16793         case "$ttyname_r_proto" in
16794         ''|0)   d_ttyname_r=undef
16795                 ttyname_r_proto=0
16796                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16797         * )     case "$ttyname_r_proto" in
16798                 REENTRANT_PROTO*) ;;
16799                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16800                 esac
16801                 echo "Prototype: $try" ;;
16802         esac
16803         ;;
16804         *)      case "$usethreads" in
16805                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16806                 esac
16807                 d_ttyname_r=undef
16808                 ttyname_r_proto=0
16809                 ;;
16810         esac
16811         ;;
16812 *)      ttyname_r_proto=0
16813         ;;
16814 esac
16815
16816 : see if tzname[] exists
16817 echo " "
16818 if set tzname val -a d_tzname; eval $csym; $val; then
16819         val="$define"
16820         echo 'tzname[] found.' >&4
16821 else
16822         val="$undef"
16823         echo 'tzname[] NOT found.' >&4
16824 fi
16825 set d_tzname
16826 eval $setvar
16827
16828 case "$osname" in
16829 next|rhapsody|darwin) multiarch="$define" ;;
16830 esac
16831 case "$multiarch" in
16832 ''|[nN]*) multiarch="$undef" ;;
16833 esac
16834
16835 : check for ordering of bytes in a UV
16836 echo " "
16837 case "$usecrosscompile$multiarch" in
16838 *$define*)
16839         $cat <<EOM
16840 You seem to be either cross-compiling or doing a multiarchitecture build,
16841 skipping the byteorder check.
16842
16843 EOM
16844         byteorder='ffff'
16845         ;;
16846 *)
16847         case "$byteorder" in
16848         '')
16849                 $cat <<'EOM'
16850 In the following, larger digits indicate more significance.  A big-endian
16851 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16852 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16853 machines may have weird orders like 3412.  A Cray will report 87654321,
16854 an Alpha will report 12345678. If the test program works the default is
16855 probably right.
16856 I'm now running the test program...
16857 EOM
16858                 $cat >try.c <<EOCP
16859 #include <stdio.h>
16860 #$i_stdlib I_STDLIB
16861 #ifdef I_STDLIB
16862 #include <stdlib.h>
16863 #endif
16864 #include <sys/types.h>
16865 typedef $uvtype UV;
16866 int main()
16867 {
16868         int i;
16869         union {
16870                 UV l;
16871                 char c[$uvsize];
16872         } u;
16873
16874         if ($uvsize > 4)
16875                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16876         else
16877                 u.l = (UV)0x04030201;
16878         for (i = 0; i < $uvsize; i++)
16879                 printf("%c", u.c[i]+'0');
16880         printf("\n");
16881         exit(0);
16882 }
16883 EOCP
16884                 xxx_prompt=y
16885                 set try
16886                 if eval $compile && ./try > /dev/null; then
16887                         dflt=`$run ./try`
16888                         case "$dflt" in
16889                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16890                                 echo "(The test program ran ok.)"
16891                                 echo "byteorder=$dflt"
16892                                 xxx_prompt=n
16893                         ;;
16894                         ????|????????) echo "(The test program ran ok.)" ;;
16895                         *) echo "(The test program didn't run right for some reason.)" ;;
16896                         esac
16897                 else
16898                         dflt='4321'
16899                         cat <<'EOM'
16900 (I can't seem to compile the test program.  Guessing big-endian...)
16901 EOM
16902                 fi
16903                 case "$xxx_prompt" in
16904                 y)
16905                         rp="What is the order of bytes in $uvtype?"
16906                         . ./myread
16907                         byteorder="$ans"
16908                         ;;
16909                 *)      byteorder=$dflt
16910                         ;;
16911                 esac
16912                 ;;
16913         esac
16914         $rm -f try.c try
16915         ;;
16916 esac
16917
16918
16919 $cat <<EOM
16920
16921 Checking to see whether you can access character data unalignedly...
16922 EOM
16923 case "$d_u32align" in
16924 '')   $cat >try.c <<EOCP
16925 #include <stdio.h>
16926 #$i_stdlib I_STDLIB
16927 #ifdef I_STDLIB
16928 #include <stdlib.h>
16929 #endif
16930 #define U32 $u32type
16931 #define BYTEORDER 0x$byteorder
16932 #define U8 $u8type
16933 #include <signal.h>
16934 #ifdef SIGBUS
16935 $signal_t bletch(s) int s; { exit(4); }
16936 #endif
16937 int main() {
16938 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16939     U8 buf[8];
16940     U32 *up;
16941     int i;
16942
16943     if (sizeof(U32) != 4) {
16944         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16945         exit(1);
16946     }
16947
16948     fflush(stdout);
16949
16950 #ifdef SIGBUS
16951     signal(SIGBUS, bletch);
16952 #endif
16953
16954     buf[0] = 0;
16955     buf[1] = 0;
16956     buf[2] = 0;
16957     buf[3] = 1;
16958     buf[4] = 0;
16959     buf[5] = 0;
16960     buf[6] = 0;
16961     buf[7] = 1;
16962
16963     for (i = 0; i < 4; i++) {
16964         up = (U32*)(buf + i);
16965         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
16966                (*up == 1 << (8*(3-i)))  /* little-endian */
16967               )
16968            )
16969         {
16970             printf("read failed (%x)\n", *up);
16971             exit(2);
16972         }
16973     }
16974
16975     /* write test */
16976     for (i = 0; i < 4; i++) {
16977         up = (U32*)(buf + i);
16978         *up = 0xBeef;
16979         if (*up != 0xBeef) {
16980             printf("write failed (%x)\n", *up);
16981             exit(3);
16982         }
16983     }
16984
16985     exit(0);
16986 #else
16987     printf("1\n");
16988     exit(1);
16989 #endif
16990     return 0;
16991 }
16992 EOCP
16993 set try
16994 if eval $compile_ok; then
16995         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
16996         $run ./try 2>&1 >/dev/null
16997         case "$?" in
16998         0)      cat >&4 <<EOM
16999 You can access character data pretty unalignedly.
17000 EOM
17001                 d_u32align="$undef"
17002                 ;;
17003         *)      cat >&4 <<EOM
17004 It seems that you must access character data in an aligned manner.
17005 EOM
17006                 d_u32align="$define"
17007                 ;;
17008         esac
17009 else
17010         rp='Can you access character data at unaligned addresses?'
17011         dflt='n'
17012         . ./myread
17013         case "$ans" in
17014         [yY]*)  d_u32align="$undef"  ;;
17015         *)      d_u32align="$define" ;;
17016         esac
17017 fi
17018 $rm -f core core.try.* try.core
17019 ;;
17020 esac
17021
17022 : see if ualarm exists
17023 set ualarm d_ualarm
17024 eval $inlibc
17025
17026 : see if umask exists
17027 set umask d_umask
17028 eval $inlibc
17029
17030 : see if unordered exists
17031 set unordered d_unordered
17032 eval $inlibc
17033
17034 : see if usleep exists
17035 set usleep d_usleep
17036 eval $inlibc
17037
17038 : see if prototype for usleep is available
17039 echo " "
17040 set d_usleepproto usleep $i_unistd unistd.h
17041 eval $hasproto
17042
17043 : see if ustat exists
17044 set ustat d_ustat
17045 eval $inlibc
17046
17047 : backward compatibility for d_hvfork
17048 if test X$d_hvfork != X; then
17049         d_vfork="$d_hvfork"
17050         d_hvfork=''
17051 fi
17052 : see if there is a vfork
17053 val=''
17054 set vfork val
17055 eval $inlibc
17056
17057 : Ok, but do we want to use it. vfork is reportedly unreliable in 
17058 : perl on Solaris 2.x, and probably elsewhere.
17059 case "$val" in
17060 $define)
17061         echo " "
17062         case "$usevfork" in
17063         false) dflt='n';;
17064         *) dflt='y';;
17065         esac
17066         cat <<'EOM'
17067  
17068 Perl can only use a vfork() that doesn't suffer from strict
17069 restrictions on calling functions or modifying global data in
17070 the child.  For example, glibc-2.1 contains such a vfork()
17071 that is unsuitable.  If your system provides a proper fork()
17072 call, chances are that you do NOT want perl to use vfork().
17073
17074 EOM
17075         rp="Do you still want to use vfork()?"
17076         . ./myread
17077         case "$ans" in
17078         y|Y) ;;
17079         *)
17080                 echo "Ok, we won't use vfork()."
17081                 val="$undef"
17082                 ;;
17083         esac
17084         ;;
17085 esac
17086 set d_vfork
17087 eval $setvar
17088 case "$d_vfork" in
17089 $define) usevfork='true';;
17090 *) usevfork='false';;
17091 esac
17092
17093 : see if closedir exists
17094 set closedir d_closedir
17095 eval $inlibc
17096
17097 case "$d_closedir" in
17098 "$define")
17099         echo " "
17100         echo "Checking whether closedir() returns a status..." >&4
17101         cat > try.c <<EOM
17102 #$i_dirent I_DIRENT             /**/
17103 #$i_sysdir I_SYS_DIR            /**/
17104 #$i_sysndir I_SYS_NDIR          /**/
17105 #$i_systypes I_SYS_TYPES        /**/
17106
17107 #if defined(I_SYS_TYPES)
17108 #include <sys/types.h>
17109 #endif
17110 #if defined(I_DIRENT)
17111 #include <dirent.h>
17112 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17113 #include <sys/dir.h>
17114 #endif
17115 #else
17116 #ifdef I_SYS_NDIR
17117 #include <sys/ndir.h>
17118 #else
17119 #ifdef I_SYS_DIR
17120 #ifdef hp9000s500
17121 #include <ndir.h>       /* may be wrong in the future */
17122 #else
17123 #include <sys/dir.h>
17124 #endif
17125 #endif
17126 #endif
17127 #endif 
17128 int main() { return closedir(opendir(".")); }
17129 EOM
17130         set try
17131         if eval $compile_ok; then
17132                 if $run ./try > /dev/null 2>&1 ; then
17133                         echo "Yes, it does."
17134                         val="$undef"
17135                 else
17136                         echo "No, it doesn't."
17137                         val="$define"
17138                 fi
17139         else
17140                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17141                 val="$define"
17142         fi
17143         ;;
17144 *)
17145         val="$undef";
17146         ;;
17147 esac
17148 set d_void_closedir
17149 eval $setvar
17150 $rm -f try try.*
17151 : see if there is a wait4
17152 set wait4 d_wait4
17153 eval $inlibc
17154
17155 : see if waitpid exists
17156 set waitpid d_waitpid
17157 eval $inlibc
17158
17159 : see if wcstombs exists
17160 set wcstombs d_wcstombs
17161 eval $inlibc
17162
17163 : see if wctomb exists
17164 set wctomb d_wctomb
17165 eval $inlibc
17166
17167 : see if writev exists
17168 set writev d_writev
17169 eval $inlibc
17170
17171 : preserve RCS keywords in files with variable substitution, grrr
17172 Date='$Date'
17173 Id='$Id'
17174 Log='$Log'
17175 RCSfile='$RCSfile'
17176 Revision='$Revision'
17177
17178 : check for alignment requirements
17179 echo " "
17180 case "$usecrosscompile$multiarch" in
17181 *$define*)
17182         $cat <<EOM
17183 You seem to be either cross-compiling or doing a multiarchitecture build,
17184 skipping the memory alignment check.
17185
17186 EOM
17187         case "$alignbytes" in
17188         '') alignbytes=8 ;;
17189         esac
17190         ;;
17191 *)
17192         case "$alignbytes" in
17193         '') echo "Checking alignment constraints..." >&4
17194                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17195                         $cat >try.c <<'EOCP'
17196 typedef long double NV;
17197 EOCP
17198                 else
17199                         $cat >try.c <<'EOCP'
17200 typedef double NV;
17201 EOCP
17202                 fi
17203                 $cat >>try.c <<'EOCP'
17204 #include <stdio.h>
17205 struct foobar {
17206         char foo;
17207         NV bar;
17208 } try_algn;
17209 int main()
17210 {
17211     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17212     return(0);
17213 }
17214 EOCP
17215                 set try
17216                 if eval $compile_ok; then
17217                         dflt=`$run ./try`
17218                 else
17219                         dflt='8'
17220                         echo "(I can't seem to compile the test program...)"
17221                 fi
17222                 ;;
17223         *) dflt="$alignbytes"
17224                 ;;
17225         esac
17226         rp="Doubles must be aligned on a how-many-byte boundary?"
17227         . ./myread
17228         alignbytes="$ans"
17229         $rm -f try.c try
17230         ;;
17231 esac
17232
17233
17234 : set the base revision
17235 baserev=5.0
17236
17237 : how do we concatenate cpp tokens here?
17238 echo " "
17239 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
17240 $cat >cpp_stuff.c <<'EOCP'
17241 #define RCAT(a,b)a/**/b
17242 #define ACAT(a,b)a ## b
17243 RCAT(Rei,ser)
17244 ACAT(Cir,cus)
17245 EOCP
17246 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17247 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17248         echo "Oh!  Smells like ANSI's been here." >&4
17249         echo "We can catify or stringify, separately or together!"
17250         cpp_stuff=42
17251 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17252         echo "Ah, yes!  The good old days!" >&4
17253         echo "However, in the good old days we don't know how to stringify and"
17254         echo "catify at the same time."
17255         cpp_stuff=1
17256 else
17257         $cat >&4 <<EOM
17258 Hmm, I don't seem to be able to concatenate tokens with your cpp.
17259 You're going to have to edit the values of CAT[2-5] in config.h...
17260 EOM
17261         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17262 fi
17263 $rm -f cpp_stuff.*
17264
17265 : see if this is a db.h system
17266 set db.h i_db
17267 eval $inhdr
17268
17269 case "$i_db" in
17270 $define)
17271         : Check db version.
17272         echo " "
17273         echo "Checking Berkeley DB version ..." >&4
17274         $cat >try.c <<EOCP
17275 #$d_const HASCONST
17276 #ifndef HASCONST
17277 #define const
17278 #endif
17279 #include <sys/types.h>
17280 #include <stdio.h>
17281 #$i_stdlib I_STDLIB
17282 #ifdef I_STDLIB
17283 #include <stdlib.h>
17284 #endif
17285 #include <db.h>
17286 int main(int argc, char *argv[])
17287 {
17288 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17289     int Major, Minor, Patch ;
17290     unsigned long Version ;
17291     (void)db_version(&Major, &Minor, &Patch) ;
17292     if (argc == 2) {
17293         printf("%d %d %d %d %d %d\n",
17294                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17295                Major, Minor, Patch);
17296         exit(0);
17297     }
17298     printf("You have Berkeley DB Version 2 or greater.\n");
17299
17300     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17301                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17302     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17303                 Major, Minor, Patch) ;
17304
17305     /* check that db.h & libdb are compatible */
17306     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17307         printf("db.h and libdb are incompatible.\n") ;
17308         exit(3);        
17309     }
17310
17311     printf("db.h and libdb are compatible.\n") ;
17312
17313     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17314                 + DB_VERSION_PATCH ;
17315
17316     /* needs to be >= 2.3.4 */
17317     if (Version < 2003004) {
17318     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17319         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17320         exit(2);        
17321     }
17322
17323     exit(0);
17324 #else
17325 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17326     if (argc == 2) {
17327         printf("1 0 0\n");
17328         exit(0);
17329     }
17330     printf("You have Berkeley DB Version 1.\n");
17331     exit(0);    /* DB version < 2: the coast is clear. */
17332 #else
17333     exit(1);    /* <db.h> not Berkeley DB? */
17334 #endif
17335 #endif
17336 }
17337 EOCP
17338         set try
17339         if eval $compile_ok && $run ./try; then
17340                 echo 'Looks OK.' >&4
17341                 set `$run ./try 1`
17342                 db_version_major=$1
17343                 db_version_minor=$2
17344                 db_version_patch=$3
17345         else
17346                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17347                 i_db=$undef
17348                 case " $libs " in
17349                 *"-ldb "*)
17350                         : Remove db from list of libraries to use
17351                         echo "Removing unusable -ldb from library list" >&4
17352                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17353                         shift
17354                         libs="$*"
17355                         echo "libs = $libs" >&4
17356                         ;;
17357                 esac
17358         fi
17359         $rm -f try.*
17360         ;;
17361 esac
17362
17363 case "$i_db" in
17364 define)
17365         : Check the return type needed for hash 
17366         echo " "
17367         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17368         $cat >try.c <<EOCP
17369 #$d_const HASCONST
17370 #ifndef HASCONST
17371 #define const
17372 #endif
17373 #include <sys/types.h>
17374 #include <db.h>
17375
17376 #ifndef DB_VERSION_MAJOR
17377 u_int32_t hash_cb (ptr, size)
17378 const void *ptr;
17379 size_t size;
17380 {
17381 }
17382 HASHINFO info;
17383 int main()
17384 {
17385         info.hash = hash_cb;
17386 }
17387 #endif
17388 EOCP
17389         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17390                 if $contains warning try.out >>/dev/null 2>&1 ; then
17391                         db_hashtype='int'
17392                 else
17393                         db_hashtype='u_int32_t'
17394                 fi
17395         else
17396                 : XXX Maybe we should just give up here.
17397                 db_hashtype=u_int32_t
17398                 $cat try.out >&4
17399                 echo "Help:  I can't seem to compile the db test program." >&4
17400                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17401         fi
17402         $rm -f try.*
17403         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17404         ;;
17405 *)      db_hashtype=u_int32_t
17406         ;;
17407 esac
17408 case "$i_db" in
17409 define)
17410         : Check the return type needed for prefix 
17411         echo " "
17412         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17413         cat >try.c <<EOCP
17414 #$d_const HASCONST
17415 #ifndef HASCONST
17416 #define const
17417 #endif
17418 #include <sys/types.h>
17419 #include <db.h>
17420
17421 #ifndef DB_VERSION_MAJOR
17422 size_t prefix_cb (key1, key2)
17423 const DBT *key1;
17424 const DBT *key2;
17425 {
17426 }
17427 BTREEINFO info;
17428 int main()
17429 {
17430         info.prefix = prefix_cb;
17431 }
17432 #endif
17433 EOCP
17434         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17435                 if $contains warning try.out >>/dev/null 2>&1 ; then
17436                         db_prefixtype='int'
17437                 else
17438                         db_prefixtype='size_t'
17439                 fi
17440         else
17441                 db_prefixtype='size_t'
17442                 : XXX Maybe we should just give up here.
17443                 $cat try.out >&4
17444                 echo "Help:  I can't seem to compile the db test program." >&4
17445                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17446         fi
17447         $rm -f try.*
17448         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17449         ;;
17450 *)      db_prefixtype='size_t'
17451         ;;
17452 esac
17453
17454
17455 : How can we generate normalized random numbers ?
17456 echo " "
17457 echo "Looking for a random number function..." >&4
17458 case "$randfunc" in
17459 '')
17460         if set drand48 val -f; eval $csym; $val; then
17461                 dflt="drand48"
17462                 echo "Good, found drand48()." >&4
17463         elif set random val -f; eval $csym; $val; then
17464                 dflt="random"
17465                 echo "OK, found random()." >&4
17466         else
17467                 dflt="rand"
17468                 echo "Yick, looks like I have to use rand()." >&4
17469         fi
17470         echo " "
17471         ;;
17472 *)
17473         dflt="$randfunc"
17474         ;;
17475 esac
17476 cont=true
17477
17478 case "$ccflags" in
17479 *-Dmy_rand=*|*-Dmy_srand=*)
17480         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17481         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17482         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17483         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17484         ;;
17485 esac
17486
17487 while $test "$cont"; do
17488         rp="Use which function to generate random numbers?"
17489         . ./myread
17490         if $test "$ans" = "$dflt"; then
17491                 : null
17492         else
17493                 randbits=''
17494         fi
17495         randfunc="$ans"
17496         if set $ans val -f; eval $csym; $val; then
17497                 cont=''
17498         else
17499                 dflt=y
17500                 rp="I cannot find function $ans. Use that name anyway?"
17501                 . ./myread
17502                 dflt=rand
17503                 case "$ans" in
17504                         [yY]*) cont='';;
17505                 esac
17506         fi
17507         case "$cont" in
17508         '')
17509                 case "$randfunc" in
17510                 drand48)
17511                         drand01="drand48()"
17512                         seedfunc="srand48"
17513                         randbits=48
17514                         randseedtype=long
17515                         ;;
17516                 rand|random)
17517                         case "$randbits" in
17518                         '')
17519 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17520                                 $cat >try.c <<EOCP
17521 #$i_unistd I_UNISTD
17522 #$i_stdlib I_STDLIB
17523 #include <stdio.h>
17524 #ifdef I_UNISTD
17525 #  include <unistd.h>
17526 #endif
17527 #ifdef I_STDLIB
17528 #  include <stdlib.h>
17529 #endif
17530 int main()
17531 {
17532         register int i;
17533         register unsigned long tmp;
17534         register unsigned long max = 0L;
17535
17536         for (i = 1000; i; i--) {
17537                 tmp = (unsigned long) $randfunc();
17538                 if (tmp > max) max = tmp;
17539         }
17540         for (i = 0; max; i++)
17541                 max /= 2;
17542         printf("%d\n",i);
17543 }
17544 EOCP
17545                                 set try
17546                                 if eval $compile_ok; then
17547                                         dflt=`try`
17548                                 else
17549                                         dflt='?'
17550                                         echo "(I can't seem to compile the test program...)"
17551                                 fi
17552                                 ;;
17553                         *)
17554                                 dflt="$randbits"
17555                                 ;;
17556                         esac
17557                         rp="How many bits does your $randfunc() function produce?"
17558                         . ./myread
17559                         randbits="$ans"
17560                         $rm -f try.c try
17561                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17562                         seedfunc="s$randfunc"
17563                         randseedtype=unsigned
17564                         ;;
17565                 *)
17566                         dflt="31"
17567                         rp="How many bits does your $randfunc() function produce?"
17568                         . ./myread
17569                         randbits="$ans"
17570                         seedfunc="s$randfunc"
17571                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17572                         if set $seedfunc val -f; eval $csym; $val; then
17573                                 echo "(Using $seedfunc() to seed random generator)"
17574                         else
17575                                 echo "(Warning: no $seedfunc() to seed random generator)"
17576                                 seedfunc=rand
17577                         fi
17578                         randseedtype=unsigned
17579                         ;;
17580                 esac
17581                 ;;
17582         esac
17583 done
17584
17585 echo " "
17586 echo "Determining whether or not we are on an EBCDIC system..." >&4
17587 $cat >try.c <<'EOM'
17588 int main()
17589 {
17590   if ('M'==0xd4) return 0;
17591   return 1;
17592 }
17593 EOM
17594
17595 val=$undef
17596 set try
17597 if eval $compile_ok; then
17598         if $run ./try; then
17599                 echo "You seem to speak EBCDIC." >&4
17600                 val="$define"
17601         else
17602                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17603         fi
17604 else
17605         echo "I'm unable to compile the test program." >&4
17606         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17607 fi
17608 $rm -f try try.*
17609 set ebcdic
17610 eval $setvar
17611
17612 echo " "
17613 $cat >&4 <<EOM
17614 Checking how to flush all pending stdio output...
17615 EOM
17616 # I only know how to find the first 32 possibly open files on SunOS.
17617 # See also hints/sunos_4_1.sh and util.c  --AD
17618 case "$osname" in
17619 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17620 esac
17621 $cat >>try.c <<EOCP
17622 #include <stdio.h>
17623 #$i_stdlib I_STDLIB
17624 #ifdef I_STDLIB
17625 #include <stdlib.h>
17626 #endif
17627 #$i_unistd I_UNISTD
17628 #ifdef I_UNISTD
17629 # include <unistd.h>
17630 #endif
17631 #$d_sysconf HAS_SYSCONF
17632 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17633 #ifdef HAS_STDIO_STREAM_ARRAY
17634 # define STDIO_STREAM_ARRAY $stdio_stream_array
17635 #endif
17636 int main() {
17637   FILE* p;
17638   unlink("try.out");
17639   p = fopen("try.out", "w");
17640 #ifdef TRY_FPUTC
17641   fputc('x', p);
17642 #else
17643 # ifdef TRY_FPRINTF
17644   fprintf(p, "x");
17645 # endif
17646 #endif
17647 #ifdef TRY_FFLUSH_NULL
17648   fflush(NULL);
17649 #endif
17650 #ifdef TRY_FFLUSH_ALL
17651   {
17652     long open_max = -1;
17653 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17654     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17655 # else
17656 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17657     open_max = sysconf(_SC_OPEN_MAX);
17658 #  else
17659 #   ifdef FOPEN_MAX
17660     open_max = FOPEN_MAX;
17661 #   else
17662 #    ifdef OPEN_MAX
17663     open_max = OPEN_MAX;
17664 #    else
17665 #     ifdef _NFILE
17666     open_max = _NFILE;
17667 #     endif
17668 #    endif
17669 #   endif
17670 #  endif
17671 # endif 
17672 # ifdef HAS_STDIO_STREAM_ARRAY
17673     if (open_max > 0) {
17674       long i;
17675       for (i = 0; i < open_max; i++)
17676             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17677                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17678                 STDIO_STREAM_ARRAY[i]._flag)
17679                 fflush(&STDIO_STREAM_ARRAY[i]);
17680     }   
17681   }
17682 # endif
17683 #endif
17684   _exit(42);
17685 }
17686 EOCP
17687 : first we have to find out how _not_ to flush
17688 $to try.c
17689 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17690     output=''
17691     set try -DTRY_FPUTC
17692     if eval $compile; then
17693             $run ./try 2>/dev/null
17694             code="$?"
17695             $from try.out
17696             if $test ! -s try.out -a "X$code" = X42; then
17697                 output=-DTRY_FPUTC
17698             fi
17699     fi
17700     case "$output" in
17701     '')
17702             set try -DTRY_FPRINTF
17703             if eval $compile; then
17704                     $run ./try 2>/dev/null
17705                     code="$?"
17706                     $from try.out
17707                     if $test ! -s try.out -a "X$code" = X42; then
17708                         output=-DTRY_FPRINTF
17709                     fi
17710             fi
17711         ;;
17712     esac
17713 fi
17714 : check for fflush NULL behaviour
17715 case "$fflushNULL" in
17716 '')     set try -DTRY_FFLUSH_NULL $output
17717         if eval $compile; then
17718                 $run ./try 2>/dev/null
17719                 code="$?"
17720                 $from try.out
17721                 if $test -s try.out -a "X$code" = X42; then
17722                         fflushNULL="`$cat try.out`"
17723                 else
17724                         if $test "X$code" != X42; then
17725                                 $cat >&4 <<EOM
17726 (If this test failed, don't worry, we'll try another method shortly.)
17727 EOM
17728                         fi
17729                 fi
17730         fi
17731         $rm -f core try.core core.try.*
17732         case "$fflushNULL" in
17733         x)      $cat >&4 <<EOM
17734 Your fflush(NULL) works okay for output streams.
17735 Let's see if it clobbers input pipes...
17736 EOM
17737 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17738 # bug that improperly flushes the input end of pipes.  So we avoid the
17739 # autoflush on fork/system/exec support for now. :-(
17740 $cat >tryp.c <<EOCP
17741 #include <stdio.h>
17742 int
17743 main(int argc, char **argv)
17744 {
17745     char buf[1024];
17746     int i;
17747     char *bp = buf;
17748     while (1) {
17749         while ((i = getc(stdin)) != -1
17750                && (*bp++ = i) != '\n'
17751                && bp < &buf[1024])
17752         /* DO NOTHING */ ;
17753         *bp = '\0';
17754         fprintf(stdout, "%s", buf);
17755         fflush(NULL);
17756         if (i == -1)
17757             return 0;
17758         bp = buf;
17759     }
17760 }
17761 EOCP
17762                 fflushNULL="$define"
17763                 set tryp
17764                 if eval $compile; then
17765                     $rm -f tryp.out
17766                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17767                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17768                        $cat >&4 <<EOM
17769 fflush(NULL) seems to behave okay with input streams.
17770 EOM
17771                         fflushNULL="$define"
17772                     else
17773                         $cat >&4 <<EOM
17774 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17775 EOM
17776                         fflushNULL="$undef"
17777                     fi
17778                 fi
17779                 $rm -f core tryp.c tryp.core core.tryp.*
17780                 ;;
17781         '')     $cat >&4 <<EOM
17782 Your fflush(NULL) isn't working (contrary to ANSI C).
17783 EOM
17784                 fflushNULL="$undef"
17785                 ;;
17786         *)      $cat >&4 <<EOM
17787 Cannot figure out whether your fflush(NULL) works or not.
17788 I'm assuming it doesn't (contrary to ANSI C).
17789 EOM
17790                 fflushNULL="$undef"
17791                 ;;
17792         esac
17793         ;;
17794 $define|true|[yY]*)
17795         fflushNULL="$define"
17796         ;;
17797 *)
17798         fflushNULL="$undef"
17799         ;;
17800 esac
17801 : check explicit looping only if NULL did not work, and if the pipe
17802 : bug does not show up on an explicit flush too
17803 case "$fflushNULL" in
17804 "$undef")
17805         $cat >tryp.c <<EOCP
17806 #include <stdio.h>
17807 int
17808 main(int argc, char **argv)
17809 {
17810     char buf[1024];
17811     int i;
17812     char *bp = buf;
17813     while (1) {
17814         while ((i = getc(stdin)) != -1
17815                && (*bp++ = i) != '\n'
17816                && bp < &buf[1024])
17817         /* DO NOTHING */ ;
17818         *bp = '\0';
17819         fprintf(stdout, "%s", buf);
17820         fflush(stdin);
17821         if (i == -1)
17822             return 0;
17823         bp = buf;
17824     }
17825 }
17826 EOCP
17827         set tryp
17828         if eval $compile; then
17829             $rm -f tryp.out
17830             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17831             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17832                $cat >&4 <<EOM
17833 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17834 EOM
17835                 : now check for fflushall behaviour
17836                 case "$fflushall" in
17837                 '')     set try -DTRY_FFLUSH_ALL $output
17838                         if eval $compile; then
17839                                 $cat >&4 <<EOM
17840 (Now testing the other method--but note that this also may fail.)
17841 EOM
17842                                 $run ./try 2>/dev/null
17843                                 code=$?
17844                                 $from try.out
17845                                 if $test -s try.out -a "X$code" = X42; then
17846                                         fflushall="`$cat try.out`"
17847                                 fi
17848                         fi
17849                         $rm -f core try.core core.try.*
17850                         case "$fflushall" in
17851                         x)      $cat >&4 <<EOM
17852 Whew. Flushing explicitly all the stdio streams works.
17853 EOM
17854                                 fflushall="$define"
17855                                 ;;
17856                         '')     $cat >&4 <<EOM
17857 Sigh. Flushing explicitly all the stdio streams doesn't work.
17858 EOM
17859                                 fflushall="$undef"
17860                                 ;;
17861                         *)      $cat >&4 <<EOM
17862 Cannot figure out whether flushing stdio streams explicitly works or not.
17863 I'm assuming it doesn't.
17864 EOM
17865                                 fflushall="$undef"
17866                                 ;;
17867                         esac
17868                         ;;
17869                 "$define"|true|[yY]*)
17870                         fflushall="$define"
17871                         ;;
17872                 *)
17873                         fflushall="$undef"
17874                         ;;
17875                 esac
17876             else
17877                 $cat >&4 <<EOM
17878 All is futile.  Even fflush(stdin) clobbers input pipes!
17879 EOM
17880                 fflushall="$undef"
17881             fi
17882         else
17883             fflushall="$undef"
17884         fi
17885         $rm -f core tryp.c tryp.core core.tryp.*
17886         ;;
17887 *)      fflushall="$undef"
17888         ;;
17889 esac
17890
17891 case "$fflushNULL$fflushall" in
17892 undefundef)
17893         $cat <<EOM
17894 OK, I give up.  I cannot figure out how to flush pending stdio output.
17895 We won't be flushing handles at all before fork/exec/popen.
17896 EOM
17897         ;;
17898 esac
17899 $rm -f try.* try$exe_ext
17900
17901 : Store the full pathname to the ar program for use in the C program
17902 : Respect a hint or command line value for full_ar.
17903 case "$full_ar" in
17904 '') full_ar=$ar ;;
17905 esac
17906
17907 : Store the full pathname to the sed program for use in the C program
17908 full_sed=$sed
17909
17910 : see what type gids are declared as in the kernel
17911 echo " "
17912 echo "Looking for the type for group ids returned by getgid()."
17913 set gid_t gidtype xxx stdio.h sys/types.h
17914 eval $typedef
17915 case "$gidtype" in
17916 xxx)
17917         xxx=`./findhdr sys/user.h`
17918         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17919         case $1 in
17920         unsigned) dflt="$1 $2" ;;
17921         *) dflt="$1" ;;
17922         esac
17923         ;;
17924 *) dflt="$gidtype";;
17925 esac
17926 case "$gidtype" in
17927 gid_t) echo "gid_t found." ;;
17928 *)      rp="What is the type for group ids returned by getgid()?"
17929         . ./myread
17930         gidtype="$ans"
17931         ;;
17932 esac
17933
17934 echo " "
17935 case "$gidtype" in
17936 *_t) zzz="$gidtype"     ;;
17937 *)   zzz="gid"          ;;
17938 esac
17939 echo "Checking the size of $zzz..." >&4 
17940 cat > try.c <<EOCP
17941 #include <sys/types.h>
17942 #include <stdio.h>
17943 #$i_stdlib I_STDLIB
17944 #ifdef I_STDLIB
17945 #include <stdlib.h>
17946 #endif
17947 int main() {
17948     printf("%d\n", (int)sizeof($gidtype));
17949     exit(0);
17950 }
17951 EOCP
17952 set try
17953 if eval $compile_ok; then
17954         yyy=`$run ./try`
17955         case "$yyy" in
17956         '')     gidsize=4
17957                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17958                 ;;
17959         *)      gidsize=$yyy
17960                 echo "Your $zzz is $gidsize bytes long."
17961                 ;;
17962         esac
17963 else
17964         gidsize=4
17965         echo "(I can't compile the test program--guessing $gidsize.)" >&4
17966 fi
17967
17968
17969 echo " "
17970 case "$gidtype" in
17971 *_t) zzz="$gidtype"     ;;
17972 *)   zzz="gid"          ;;
17973 esac
17974 echo "Checking the sign of $zzz..." >&4 
17975 cat > try.c <<EOCP
17976 #include <sys/types.h>
17977 #include <stdio.h>
17978 int main() {
17979         $gidtype foo = -1;
17980         if (foo < 0)
17981                 printf("-1\n");
17982         else
17983                 printf("1\n");
17984 }
17985 EOCP
17986 set try
17987 if eval $compile; then
17988         yyy=`$run ./try`
17989         case "$yyy" in
17990         '')     gidsign=1
17991                 echo "(I can't execute the test program--guessing unsigned.)" >&4
17992                 ;;
17993         *)      gidsign=$yyy
17994                 case "$gidsign" in
17995                  1) echo "Your $zzz is unsigned." ;;
17996                 -1) echo "Your $zzz is signed."   ;;
17997                 esac
17998                 ;;
17999         esac
18000 else
18001         gidsign=1
18002         echo "(I can't compile the test program--guessing unsigned.)" >&4
18003 fi
18004
18005
18006 echo " "
18007
18008 if $test X"$quadtype" != X; then
18009
18010 echo "Checking how to print 64-bit integers..." >&4
18011
18012 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18013         $cat >try.c <<'EOCP'
18014 #include <sys/types.h>
18015 #include <stdio.h>
18016 int main() {
18017   int q = 12345678901;
18018   printf("%ld\n", q);
18019 }
18020 EOCP
18021         set try
18022         if eval $compile; then
18023                 yyy=`$run ./try`
18024                 case "$yyy" in
18025                 12345678901)
18026                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18027                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18028                         echo "We will use %d."
18029                         ;;
18030                 esac
18031         fi
18032 fi
18033
18034 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18035         $cat >try.c <<'EOCP'
18036 #include <sys/types.h>
18037 #include <stdio.h>
18038 int main() {
18039   long q = 12345678901;
18040   printf("%ld\n", q);
18041 }
18042 EOCP
18043         set try
18044         if eval $compile; then
18045                 yyy=`$run ./try`
18046                 case "$yyy" in
18047                 12345678901)
18048                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18049                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18050                         echo "We will use %ld."
18051                         ;;
18052                 esac
18053         fi
18054 fi
18055
18056 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18057         $cat >try.c <<'EOCP'
18058 #include <sys/types.h>
18059 #include <inttypes.h>
18060 #include <stdio.h>
18061 int main() {
18062   int64_t q = 12345678901;
18063   printf("%" PRId64 "\n", q);
18064 }
18065 EOCP
18066         set try
18067         if eval $compile; then
18068                 yyy=`$run ./try`
18069                 case "$yyy" in
18070                 12345678901)
18071                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18072                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18073                         echo "We will use the C9X style."
18074                         ;;
18075                 esac
18076         fi
18077 fi
18078
18079 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18080         $cat >try.c <<EOCP
18081 #include <sys/types.h>
18082 #include <stdio.h>
18083 int main() {
18084   $quadtype q = 12345678901;
18085   printf("%Ld\n", q);
18086 }
18087 EOCP
18088         set try
18089         if eval $compile; then
18090                 yyy=`$run ./try`
18091                 case "$yyy" in
18092                 12345678901)
18093                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18094                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18095                         echo "We will use %Ld."
18096                         ;;
18097                 esac
18098         fi
18099 fi
18100
18101 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18102         $cat >try.c <<'EOCP'
18103 #include <sys/types.h>
18104 #include <stdio.h>
18105 int main() {
18106   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18107   printf("%lld\n", q);
18108 }
18109 EOCP
18110         set try
18111         if eval $compile; then
18112                 yyy=`$run ./try`
18113                 case "$yyy" in
18114                 12345678901)
18115                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18116                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18117                         echo "We will use the %lld style."
18118                         ;;
18119                 esac
18120         fi
18121 fi
18122
18123 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18124         $cat >try.c <<EOCP
18125 #include <sys/types.h>
18126 #include <stdio.h>
18127 int main() {
18128   $quadtype q = 12345678901;
18129   printf("%qd\n", q);
18130 }
18131 EOCP
18132         set try
18133         if eval $compile; then
18134                 yyy=`$run ./try`
18135                 case "$yyy" in
18136                 12345678901)
18137                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18138                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18139                         echo "We will use %qd."
18140                         ;;
18141                 esac
18142         fi
18143 fi
18144
18145 if $test X"$sPRId64" = X; then
18146         echo "Cannot figure out how to print 64-bit integers." >&4
18147 fi
18148
18149 $rm -f try try.*
18150
18151 fi
18152
18153 case "$sPRId64" in
18154 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18155         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18156         ;;
18157 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18158         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18159         ;;
18160 esac
18161
18162
18163 echo " "
18164 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18165
18166 if $test X"$ivsize" = X8; then
18167         ivdformat="$sPRId64"
18168         uvuformat="$sPRIu64"
18169         uvoformat="$sPRIo64"
18170         uvxformat="$sPRIx64"
18171         uvXUformat="$sPRIXU64"
18172 else
18173         if $test X"$ivsize" = X"$longsize"; then
18174                 ivdformat='"ld"'
18175                 uvuformat='"lu"'
18176                 uvoformat='"lo"'
18177                 uvxformat='"lx"'
18178                 uvXUformat='"lX"'
18179         else
18180                 if $test X"$ivsize" = X"$intsize"; then
18181                         ivdformat='"d"'
18182                         uvuformat='"u"'
18183                         uvoformat='"o"'
18184                         uvxformat='"x"'
18185                         uvXUformat='"X"'
18186                 else
18187                         : far out
18188                         if $test X"$ivsize" = X"$shortsize"; then
18189                                 ivdformat='"hd"'
18190                                 uvuformat='"hu"'
18191                                 uvoformat='"ho"'
18192                                 uvxformat='"hx"'
18193                                 uvXUformat='"hX"'
18194                         fi
18195                 fi
18196         fi
18197 fi
18198
18199 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18200         nveformat="$sPRIeldbl"
18201         nvfformat="$sPRIfldbl"
18202         nvgformat="$sPRIgldbl"
18203         nvEUformat="$sPRIEUldbl"
18204         nvFUformat="$sPRIFUldbl"
18205         nvGUformat="$sPRIGUldbl"
18206 else
18207         nveformat='"e"'
18208         nvfformat='"f"'
18209         nvgformat='"g"'
18210         nvEUformat='"E"'
18211         nvFUformat='"F"'
18212         nvGUformat='"G"'
18213 fi
18214
18215 case "$ivdformat" in
18216 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18217     exit 1
18218     ;;
18219 esac
18220
18221
18222 echo " "
18223 $echo "Checking the format string to be used for gids..." >&4
18224
18225 case "$gidsign" in
18226 -1)     if $test X"$gidsize" = X"$ivsize"; then
18227                 gidformat="$ivdformat"
18228         else
18229                 if $test X"$gidsize" = X"$longsize"; then
18230                         gidformat='"ld"'
18231                 else
18232                         if $test X"$gidsize" = X"$intsize"; then
18233                                 gidformat='"d"'
18234                         else
18235                                 if $test X"$gidsize" = X"$shortsize"; then
18236                                         gidformat='"hd"'
18237                                 fi
18238                         fi
18239                 fi
18240         fi
18241         ;;
18242 *)      if $test X"$gidsize" = X"$uvsize"; then
18243                 gidformat="$uvuformat"
18244         else
18245                 if $test X"$gidsize" = X"$longsize"; then
18246                         gidformat='"lu"'
18247                 else
18248                         if $test X"$gidsize" = X"$intsize"; then
18249                                 gidformat='"u"'
18250                         else
18251                                 if $test X"$gidsize" = X"$shortsize"; then
18252                                         gidformat='"hu"'
18253                                 fi
18254                         fi
18255                 fi
18256         fi
18257         ;;
18258 esac
18259
18260 : see if getgroups exists
18261 set getgroups d_getgrps
18262 eval $inlibc
18263
18264 : see if setgroups exists
18265 set setgroups d_setgrps
18266 eval $inlibc
18267
18268
18269 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18270 echo " "
18271 case "$d_getgrps$d_setgrps" in
18272 *define*)
18273         case "$groupstype" in
18274         '') dflt="$gidtype" ;;
18275         *)  dflt="$groupstype" ;;
18276         esac
18277         $cat <<EOM
18278 What type of pointer is the second argument to getgroups() and setgroups()?
18279 Usually this is the same as group ids, $gidtype, but not always.
18280
18281 EOM
18282         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18283         . ./myread
18284         groupstype="$ans"
18285         ;;
18286 *)  groupstype="$gidtype";;
18287 esac
18288
18289 echo " "
18290 echo "Checking if your $make program sets \$(MAKE)..." >&4
18291 case "$make_set_make" in
18292 '')
18293         $sed 's/^X //' > testmake.mak << 'EOF'
18294 Xall:
18295 X       @echo 'maketemp="$(MAKE)"'
18296 EOF
18297         case "`$make -f testmake.mak 2>/dev/null`" in
18298         *maketemp=*) make_set_make='#' ;;
18299         *)      make_set_make="MAKE=$make" ;;
18300         esac
18301         $rm -f testmake.mak
18302         ;;
18303 esac
18304 case "$make_set_make" in
18305 '#') echo "Yup, it does.";;
18306 *) echo "Nope, it doesn't.";;
18307 esac
18308
18309 : see what type is used for mode_t
18310 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18311 set mode_t modetype int stdio.h sys/types.h
18312 eval $typedef_ask
18313
18314 : see if stdarg is available
18315 echo " "
18316 if $test `./findhdr stdarg.h`; then
18317         echo "<stdarg.h> found." >&4
18318         valstd="$define"
18319 else
18320         echo "<stdarg.h> NOT found." >&4
18321         valstd="$undef"
18322 fi
18323
18324 : see if varags is available
18325 echo " "
18326 if $test `./findhdr varargs.h`; then
18327         echo "<varargs.h> found." >&4
18328 else
18329         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18330 fi
18331
18332 : set up the varargs testing programs
18333 $cat > varargs.c <<EOP
18334 #ifdef I_STDARG
18335 #include <stdarg.h>
18336 #endif
18337 #ifdef I_VARARGS
18338 #include <varargs.h>
18339 #endif
18340
18341 #ifdef I_STDARG
18342 int f(char *p, ...)
18343 #else
18344 int f(va_alist)
18345 va_dcl
18346 #endif
18347 {
18348         va_list ap;
18349 #ifndef I_STDARG
18350         char *p;
18351 #endif
18352 #ifdef I_STDARG
18353         va_start(ap,p);
18354 #else
18355         va_start(ap);
18356         p = va_arg(ap, char *);
18357 #endif
18358         va_end(ap);
18359 }
18360 EOP
18361 $cat > varargs <<EOP
18362 $startsh
18363 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18364         echo "true"
18365 else
18366         echo "false"
18367 fi
18368 $rm -f varargs$_o
18369 EOP
18370 chmod +x varargs
18371
18372 : now check which varargs header should be included
18373 echo " "
18374 i_varhdr=''
18375 case "$valstd" in
18376 "$define")
18377         if `./varargs I_STDARG`; then
18378                 val='stdarg.h'
18379         elif `./varargs I_VARARGS`; then
18380                 val='varargs.h'
18381         fi
18382         ;;
18383 *)
18384         if `./varargs I_VARARGS`; then
18385                 val='varargs.h'
18386         fi
18387         ;;
18388 esac
18389 case "$val" in
18390 '')
18391 echo "I could not find the definition for va_dcl... You have problems..." >&4
18392         val="$undef"; set i_stdarg; eval $setvar
18393         val="$undef"; set i_varargs; eval $setvar
18394         ;;
18395 *) 
18396         set i_varhdr
18397         eval $setvar
18398         case "$i_varhdr" in
18399         stdarg.h)
18400                 val="$define"; set i_stdarg; eval $setvar
18401                 val="$undef"; set i_varargs; eval $setvar
18402                 ;;
18403         varargs.h)
18404                 val="$undef"; set i_stdarg; eval $setvar
18405                 val="$define"; set i_varargs; eval $setvar
18406                 ;;
18407         esac
18408         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18409 esac
18410 $rm -f varargs*
18411
18412 : see if we need va_copy
18413 echo " "
18414 case "$i_stdarg" in
18415 "$define")
18416         $cat >try.c <<EOCP
18417 #include <stdarg.h>
18418 #include <stdio.h>
18419 #$i_stdlib I_STDLIB
18420 #ifdef I_STDLIB
18421 #include <stdlib.h>
18422 #endif
18423 #include <signal.h>
18424
18425 int
18426 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18427 {
18428   return vfprintf(f, fmt, *valp);
18429 }
18430  
18431 int    
18432 myvfprintf(FILE *f, const  char *fmt, va_list val)
18433 {
18434   return ivfprintf(f, fmt, &val);
18435 }
18436       
18437 int
18438 myprintf(char *fmt, ...) 
18439 {
18440   va_list val;
18441   va_start(val, fmt);
18442   return myvfprintf(stdout, fmt, val); 
18443 }         
18444
18445 int
18446 main(int ac, char **av)
18447 {
18448   signal(SIGSEGV, exit);
18449
18450   myprintf("%s%cs all right, then\n", "that", '\'');                            
18451   exit(0);      
18452 }
18453 EOCP
18454         set try
18455         if eval $compile && $run ./try 2>&1 >/dev/null; then
18456                 case "`$run ./try`" in
18457                 "that's all right, then")
18458                         okay=yes
18459                         ;;
18460                 esac
18461         fi
18462         case "$okay" in
18463         yes)    echo "It seems that you don't need va_copy()." >&4
18464                 need_va_copy="$undef"
18465                 ;;
18466         *)      echo "It seems that va_copy() or similar will be needed." >&4
18467                 need_va_copy="$define"
18468                 ;;
18469         esac
18470         $rm -f try.* core core.* *.core *.core.*
18471         ;;
18472 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18473         ;;
18474 esac
18475
18476 : see what type is used for size_t
18477 rp="What is the type used for the length parameter for string functions?"
18478 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18479 eval $typedef_ask
18480
18481 : check for type of arguments to gethostbyaddr. 
18482 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18483         case "$d_gethbyaddr" in
18484         $define)
18485                 $cat <<EOM
18486
18487 Checking to see what type of arguments are accepted by gethostbyaddr().
18488 EOM
18489                 hdrs="$define sys/types.h
18490                         $d_socket sys/socket.h 
18491                         $i_niin netinet/in.h 
18492                         $i_netdb netdb.h
18493                         $i_unistd unistd.h"
18494                 : The first arg can 'char *' or 'void *'
18495                 : The second arg is some of integral type
18496                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18497                         for yyy in size_t long int; do
18498                                 case "$netdb_host_type" in
18499                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18500                                         if ./protochk "$try" $hdrs; then
18501                                                 echo "Your system accepts $xxx for the first arg."
18502                                                 echo "...and $yyy for the second arg."
18503                                                 netdb_host_type="$xxx"
18504                                                 netdb_hlen_type="$yyy"
18505                                         fi
18506                                         ;;
18507                                 esac
18508                         done
18509                 done
18510                 : In case none of those worked, prompt the user.
18511                 case "$netdb_host_type" in
18512                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18513                         dflt='char *'
18514                         . ./myread
18515                         netdb_host_type=$ans
18516                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18517                         dflt="$sizetype"
18518                         . ./myread
18519                         netdb_hlen_type=$ans
18520                         ;;
18521                 esac
18522                 ;;
18523         *)      : no gethostbyaddr, so pick harmless defaults
18524                 netdb_host_type='char *'
18525                 netdb_hlen_type="$sizetype"
18526                 ;;
18527         esac
18528         # Remove the "const" if needed. -- but then we'll have a 
18529         # prototype clash!
18530         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18531 fi
18532
18533 : check for type of argument to gethostbyname. 
18534 if test "X$netdb_name_type" = X ; then
18535         case "$d_gethbyname" in
18536         $define)
18537                 $cat <<EOM
18538
18539 Checking to see what type of argument is accepted by gethostbyname().
18540 EOM
18541                 hdrs="$define sys/types.h
18542                         $d_socket sys/socket.h 
18543                         $i_niin netinet/in.h 
18544                         $i_netdb netdb.h
18545                         $i_unistd unistd.h"
18546                 for xxx in "const char *" "char *"; do
18547                         case "$netdb_name_type" in
18548                         '')     try="extern struct hostent *gethostbyname($xxx);"
18549                                 if ./protochk "$try" $hdrs; then
18550                                         echo "Your system accepts $xxx."
18551                                         netdb_name_type="$xxx"
18552                                 fi
18553                                 ;;
18554                         esac
18555                 done
18556                 : In case none of those worked, prompt the user.
18557                 case "$netdb_name_type" in
18558                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18559                         dflt='char *'
18560                         . ./myread
18561                         netdb_name_type=$ans
18562                         ;;
18563                 esac
18564                 ;;
18565         *)      : no gethostbyname, so pick harmless default
18566                 netdb_name_type='char *'
18567                 ;;
18568         esac
18569 fi
18570
18571 : check for type of 1st argument to getnetbyaddr. 
18572 if test "X$netdb_net_type" = X ; then
18573         case "$d_getnbyaddr" in
18574         $define)
18575                 $cat <<EOM
18576
18577 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18578 EOM
18579                 hdrs="$define sys/types.h
18580                         $d_socket sys/socket.h 
18581                         $i_niin netinet/in.h 
18582                         $i_netdb netdb.h
18583                         $i_unistd unistd.h"
18584                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18585                         case "$netdb_net_type" in
18586                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18587                                 if ./protochk "$try" $hdrs; then
18588                                         echo "Your system accepts $xxx."
18589                                         netdb_net_type="$xxx"
18590                                 fi
18591                                 ;;
18592                         esac
18593                 done
18594                 : In case none of those worked, prompt the user.
18595                 case "$netdb_net_type" in
18596                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18597                         dflt='long'
18598                         . ./myread
18599                         netdb_net_type=$ans
18600                         ;;
18601                 esac
18602                 ;;
18603         *)      : no getnetbyaddr, so pick harmless default
18604                 netdb_net_type='long'
18605                 ;;
18606         esac
18607 fi
18608 : locate the preferred pager for this system
18609 fn=f/
18610 case "$pager" in
18611 '')
18612         dflt=''
18613         case "$pg" in
18614         /*) dflt=$pg;;
18615         [a-zA-Z]:/*) dflt=$pg;;
18616         esac
18617         case "$more" in
18618         /*) dflt=$more;;
18619         [a-zA-Z]:/*) dflt=$more;;
18620         esac
18621         case "$less" in
18622         /*) dflt=$less;;
18623         [a-zA-Z]:/*) dflt=$less;;
18624         esac
18625         case "$dflt" in
18626         '') dflt=/usr/ucb/more;;
18627         esac
18628         ;;
18629 *)      dflt="$pager"
18630         : Instruct ./getfile to trust the hinted or previous pager value,
18631         : even if it does not begin with a slash.  For example, on os2,
18632         : pager might be cmd /c more.  See comments in UU/getfile.
18633         fn="f/($pager)"
18634         ;;
18635 esac
18636 echo " "
18637 rp='What pager is used on your system?'
18638 . ./getfile
18639 pager="$ans"
18640
18641 : see what type pids are declared as in the kernel
18642 rp="What is the type of process ids on this system?"
18643 set pid_t pidtype int stdio.h sys/types.h
18644 eval $typedef_ask
18645
18646 : Find earliest binary compatible site_perl subdirectory perl can use.
18647 xs_apiversion=$version # The current site_perl version.
18648 : Find earliest pure perl site_perl subdirectory perl can use.
18649 : The versioned directories started at 5.005.
18650 pm_apiversion='5.005'
18651
18652 : see if ar generates random libraries by itself
18653 echo " "
18654 echo "Checking how to generate random libraries on your machine..." >&4
18655 echo 'int bar1() { return bar2(); }' > bar1.c
18656 echo 'int bar2() { return 2; }' > bar2.c
18657 $cat > foo.c <<EOP
18658 #$i_stdlib I_STDLIB
18659 #ifdef I_STDLIB
18660 #include <stdlib.h>
18661 #endif
18662 int main() { printf("%d\n", bar1()); exit(0); }
18663 EOP
18664 $cc $ccflags -c bar1.c >/dev/null 2>&1
18665 $cc $ccflags -c bar2.c >/dev/null 2>&1
18666 $cc $ccflags -c foo.c >/dev/null 2>&1
18667 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18668 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18669         $run ./foobar >/dev/null 2>&1; then
18670         echo "$ar appears to generate random libraries itself."
18671         orderlib=false
18672         ranlib=":"
18673 elif $ar ts bar$_a >/dev/null 2>&1 &&
18674         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18675         $run ./foobar >/dev/null 2>&1; then
18676                 echo "a table of contents needs to be added with '$ar ts'."
18677                 orderlib=false
18678                 ranlib="$ar ts"
18679 else
18680         case "$ranlib" in
18681         :) ranlib='';;
18682         '')
18683                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18684                 $test -f $ranlib || ranlib=''
18685                 ;;
18686         esac
18687         if $test -n "$ranlib"; then
18688                 echo "your system has '$ranlib'; we'll use that."
18689                 orderlib=false
18690         else
18691                 echo "your system doesn't seem to support random libraries"
18692                 echo "so we'll use lorder and tsort to order the libraries."
18693                 orderlib=true
18694                 ranlib=":"
18695         fi
18696 fi
18697 $rm -f foo* bar* 
18698
18699 : check for type of arguments to select. 
18700 case "$selecttype" in
18701 '') case "$d_select" in
18702         $define)
18703                 echo " "
18704                 $cat <<EOM
18705 Checking to see what type of arguments are accepted by select().
18706 EOM
18707                 hdrs="$define sys/types.h
18708                         $i_systime sys/time.h 
18709                         $i_sysselct sys/select.h
18710                         $d_socket sys/socket.h"
18711                 : The first arg can be int, unsigned, or size_t
18712                 : The last arg may or may not be 'const'
18713                 val=''
18714                 : void pointer has been seen but using that
18715                 : breaks the selectminbits test
18716                 for xxx in 'fd_set *' 'int *'; do
18717                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18718                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18719                                         case "$val" in
18720                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18721                                                 if ./protochk "$try" $hdrs; then
18722                                                         echo "Your system accepts $xxx."
18723                                                         val="$xxx"
18724                                                 fi
18725                                                 ;;
18726                                         esac
18727                                 done
18728                         done
18729                 done
18730                 case "$val" in
18731                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18732                         case "$d_fd_set" in
18733                                 $define) dflt="fd_set *" ;;
18734                                 *)              dflt="int *" ;;
18735                         esac
18736                         . ./myread
18737                         val=$ans
18738                         ;;
18739                 esac
18740                 selecttype="$val"
18741                 ;;
18742         *)      : no select, so pick a harmless default
18743                 selecttype='int *'
18744                 ;;
18745         esac
18746         ;;
18747 esac
18748
18749 : check for the select 'width'
18750 case "$selectminbits" in
18751 '') safebits=`expr $ptrsize \* 8`
18752     case "$d_select" in
18753         $define)
18754                 $cat <<EOM
18755
18756 Checking to see on how many bits at a time your select() operates...
18757 EOM
18758                 $cat >try.c <<EOCP
18759 #include <sys/types.h>
18760 #$i_time I_TIME
18761 #$i_systime I_SYS_TIME
18762 #$i_systimek I_SYS_TIME_KERNEL
18763 #ifdef I_TIME
18764 #   include <time.h>
18765 #endif
18766 #ifdef I_SYS_TIME
18767 #   ifdef I_SYS_TIME_KERNEL
18768 #       define KERNEL
18769 #   endif
18770 #   include <sys/time.h>
18771 #   ifdef I_SYS_TIME_KERNEL
18772 #       undef KERNEL
18773 #   endif
18774 #endif
18775 #$i_sysselct I_SYS_SELECT
18776 #ifdef I_SYS_SELECT
18777 #include <sys/select.h>
18778 #endif
18779 #$d_socket HAS_SOCKET
18780 #ifdef HAS_SOCKET
18781 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18782 #endif
18783 #include <stdio.h>
18784 #$i_stdlib I_STDLIB
18785 #ifdef I_STDLIB
18786 #include <stdlib.h>
18787 #endif
18788 $selecttype b;
18789 #define S sizeof(*(b))
18790 #define MINBITS 64
18791 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18792 #define NBITS  (NBYTES * 8)
18793 int main() {
18794     char *s = malloc(NBYTES);
18795     struct timeval t;
18796     int i;
18797     FILE* fp;
18798     int fd;
18799
18800     if (!s)
18801         exit(1);
18802     fclose(stdin);
18803     fp = fopen("try.c", "r");
18804     if (fp == 0)
18805       exit(2);
18806     fd = fileno(fp);
18807     if (fd < 0)
18808       exit(3);
18809     b = ($selecttype)s;
18810     for (i = 0; i < NBITS; i++)
18811         FD_SET(i, b);
18812     t.tv_sec  = 0;
18813     t.tv_usec = 0;
18814     select(fd + 1, b, 0, 0, &t);
18815     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18816     free(s);
18817     printf("%d\n", i + 1);
18818     return 0;
18819 }
18820 EOCP
18821                 set try
18822                 if eval $compile_ok; then
18823                         selectminbits=`$run ./try`
18824                         case "$selectminbits" in
18825                         '')     cat >&4 <<EOM
18826 Cannot figure out on how many bits at a time your select() operates.
18827 I'll play safe and guess it is $safebits bits.
18828 EOM
18829                                 selectminbits=$safebits
18830                                 bits="$safebits bits"
18831                                 ;;
18832                         1)      bits="1 bit" ;;
18833                         *)      bits="$selectminbits bits" ;;
18834                         esac
18835                         echo "Your select() operates on $bits at a time." >&4
18836                 else
18837                         rp='What is the minimum number of bits your select() operates on?'
18838                         case "$byteorder" in
18839                         12345678)       dflt=64 ;;
18840                         1234)           dflt=32 ;;
18841                         *)              dflt=1  ;;
18842                         esac
18843                         . ./myread
18844                         val=$ans
18845                         selectminbits="$val"
18846                 fi
18847                 $rm -f try.* try
18848                 ;;
18849         *)      : no select, so pick a harmless default
18850                 selectminbits=$safebits
18851                 ;;
18852         esac
18853         ;;
18854 esac
18855
18856 : Trace out the files included by signal.h, then look for SIGxxx names.
18857 : Remove SIGARRAYSIZE used by HPUX.
18858 : Remove SIGSTKSIZE used by Linux.
18859 : Remove SIGSTKSZ used by Posix.
18860 : Remove SIGTYP void lines used by OS2.
18861 : Some cpps, like os390, dont give the file name anywhere
18862 if [ "X$fieldn" = X ]; then
18863         : Just make some guesses.  We check them later.
18864         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18865 else
18866         xxx=`echo '#include <signal.h>' |
18867         $cppstdin $cppminus $cppflags 2>/dev/null |
18868         $grep '^[       ]*#.*include' | 
18869         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18870 fi
18871 : Check this list of files to be sure we have parsed the cpp output ok.
18872 : This will also avoid potentially non-existent files, such 
18873 : as ../foo/bar.h
18874 xxxfiles=''
18875 for xx in $xxx /dev/null ; do
18876         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18877 done
18878 : If we have found no files, at least try signal.h
18879 case "$xxxfiles" in
18880 '')     xxxfiles=`./findhdr signal.h` ;;
18881 esac
18882 xxx=`awk '
18883 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18884         print substr($2, 4, 20)
18885 }
18886 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18887         print substr($3, 4, 20)
18888 }' $xxxfiles`
18889 : Append some common names just in case the awk scan failed.
18890 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18891 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18892 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18893 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18894 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18895
18896 : generate a few handy files for later
18897 $cat > signal.c <<EOCP
18898 #include <sys/types.h>
18899 #include <signal.h>
18900 #$i_stdlib I_STDLIB
18901 #ifdef I_STDLIB
18902 #include <stdlib.h>
18903 #endif
18904 #include <stdio.h>
18905 int main() {
18906
18907 /* Strange style to avoid deeply-nested #if/#else/#endif */
18908 #ifndef NSIG
18909 #  ifdef _NSIG
18910 #    define NSIG (_NSIG)
18911 #  endif
18912 #endif
18913
18914 #ifndef NSIG
18915 #  ifdef SIGMAX
18916 #    define NSIG (SIGMAX+1)
18917 #  endif
18918 #endif
18919
18920 #ifndef NSIG
18921 #  ifdef SIG_MAX
18922 #    define NSIG (SIG_MAX+1)
18923 #  endif
18924 #endif
18925
18926 #ifndef NSIG
18927 #  ifdef MAXSIG
18928 #    define NSIG (MAXSIG+1)
18929 #  endif
18930 #endif
18931
18932 #ifndef NSIG
18933 #  ifdef MAX_SIG
18934 #    define NSIG (MAX_SIG+1)
18935 #  endif
18936 #endif
18937
18938 #ifndef NSIG
18939 #  ifdef SIGARRAYSIZE
18940 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18941 #  endif
18942 #endif
18943
18944 #ifndef NSIG
18945 #  ifdef _sys_nsig
18946 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18947 #  endif
18948 #endif
18949
18950 /* Default to some arbitrary number that's big enough to get most
18951    of the common signals.
18952 */
18953 #ifndef NSIG
18954 #    define NSIG 50
18955 #endif
18956
18957 printf("NSIG %d\n", NSIG);
18958
18959 #ifndef JUST_NSIG
18960
18961 EOCP
18962
18963 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18964 {
18965         printf "#ifdef SIG"; printf $1; printf "\n"
18966         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18967         printf $1; printf ");\n"
18968         printf "#endif\n"
18969 }
18970 END {
18971         printf "#endif /* JUST_NSIG */\n";
18972         printf "exit(0);\n}\n";
18973 }
18974 ' >>signal.c
18975 $cat >signal.awk <<'EOP'
18976 BEGIN { ndups = 0 }
18977 $1 ~ /^NSIG$/ { nsig = $2 }
18978 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
18979     if ($2 > maxsig) { maxsig = $2 }
18980     if (sig_name[$2]) {
18981         dup_name[ndups] = $1
18982         dup_num[ndups] = $2
18983         ndups++ 
18984     }
18985     else {
18986         sig_name[$2] = $1
18987         sig_num[$2] = $2
18988     }
18989 }
18990 END { 
18991     if (nsig == 0) {
18992         nsig = maxsig + 1
18993     }
18994     printf("NSIG %d\n", nsig);
18995     for (n = 1; n < nsig; n++) {
18996         if (sig_name[n]) {
18997             printf("%s %d\n", sig_name[n], sig_num[n])
18998         }
18999         else {
19000             printf("NUM%d %d\n", n, n) 
19001         }
19002     }
19003     for (n = 0; n < ndups; n++) {
19004         printf("%s %d\n", dup_name[n], dup_num[n])
19005     }
19006 }
19007 EOP
19008 $cat >signal_cmd <<EOS
19009 $startsh
19010 if $test -s signal.lst; then
19011     echo "Using your existing signal.lst file"
19012         exit 0
19013 fi
19014 xxx="$xxx"
19015 EOS
19016 $cat >>signal_cmd <<'EOS'
19017
19018 set signal
19019 if eval $compile_ok; then
19020         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19021 else
19022         echo "(I can't seem be able to compile the whole test program)" >&4
19023         echo "(I'll try it in little pieces.)" >&4
19024         set signal -DJUST_NSIG
19025         if eval $compile_ok; then
19026                 $run ./signal$_exe > signal.nsg
19027                 $cat signal.nsg
19028         else
19029                 echo "I can't seem to figure out how many signals you have." >&4
19030                 echo "Guessing 50." >&4
19031                 echo 'NSIG 50' > signal.nsg
19032         fi
19033         : Now look at all the signal names, one at a time.
19034         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19035                 $cat > signal.c <<EOCP
19036 #include <sys/types.h>
19037 #include <signal.h>
19038 #include <stdio.h>
19039 int main() {
19040 printf("$xx %d\n", SIG${xx});
19041 return 0;
19042 }
19043 EOCP
19044                 set signal
19045                 if eval $compile; then
19046                         echo "SIG${xx} found."
19047                         $run ./signal$_exe  >> signal.ls1
19048                 else
19049                         echo "SIG${xx} NOT found."
19050                 fi
19051         done
19052         if $test -s signal.ls1; then
19053                 $cat signal.nsg signal.ls1 |
19054                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
19055         fi
19056
19057 fi
19058 if $test -s signal.lst; then
19059         :
19060 else
19061         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19062         echo 'kill -l' >signal
19063         set X `csh -f <signal`
19064         $rm -f signal
19065         shift
19066         case $# in
19067         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19068         esac
19069         echo $@ | $tr ' ' $trnl | \
19070             $awk '{ printf "%s %d\n", $1, ++s; }
19071                   END { printf "NSIG %d\n", ++s }' >signal.lst
19072 fi
19073 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19074 EOS
19075 chmod a+x signal_cmd
19076 $eunicefix signal_cmd
19077
19078 : generate list of signal names
19079 echo " "
19080 case "$sig_name_init" in
19081 '') doinit=yes ;;
19082 *)  case "$sig_num_init" in
19083     ''|*,*) doinit=yes ;;
19084     esac ;;
19085 esac
19086 case "$doinit" in
19087 yes)
19088         echo "Generating a list of signal names and numbers..." >&4
19089         . ./signal_cmd
19090         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19091         sig_name=`$awk 'BEGIN { printf "ZERO " }
19092                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19093         sig_num=`$awk  'BEGIN { printf "0 " }
19094                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19095         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19096                              !/^NSIG/   { printf "\"%s\", ", $1 }
19097                              END        { printf "0\n" }' signal.lst`
19098         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19099                              !/^NSIG/   { printf "%d, ", $2}
19100                              END        { printf "0\n"}' signal.lst`
19101         ;;
19102 esac
19103 echo "The following $sig_count signals are available:"
19104 echo " "
19105 echo $sig_name | $awk \
19106 'BEGIN { linelen = 0 }
19107 {
19108         for (i = 1; i <= NF; i++) {
19109                 name = "SIG" $i " "
19110                 linelen = linelen + length(name)
19111                 if (linelen > 70) {
19112                         printf "\n"
19113                         linelen = length(name)
19114                 }
19115                 printf "%s", name
19116         }
19117         printf "\n"
19118 }'
19119 sig_size=`echo $sig_name | awk '{print NF}'`
19120 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19121
19122 echo " "
19123 case "$sizetype" in
19124 *_t) zzz="$sizetype"    ;;
19125 *)   zzz="filesize"     ;;
19126 esac
19127 echo "Checking the size of $zzz..." >&4 
19128 cat > try.c <<EOCP
19129 #include <sys/types.h>
19130 #include <stdio.h>
19131 #$i_stdlib I_STDLIB
19132 #ifdef I_STDLIB
19133 #include <stdlib.h>
19134 #endif
19135 int main() {
19136     printf("%d\n", (int)sizeof($sizetype));
19137     exit(0);
19138 }
19139 EOCP
19140 set try
19141 if eval $compile_ok; then
19142         yyy=`$run ./try`
19143         case "$yyy" in
19144         '')     sizesize=4
19145                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19146                 ;;
19147         *)      sizesize=$yyy
19148                 echo "Your $zzz size is $sizesize bytes."
19149                 ;;
19150         esac
19151 else
19152         sizesize=4
19153         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19154 fi
19155
19156
19157 : check for socklen_t
19158 echo " "
19159 echo "Checking to see if you have socklen_t..." >&4
19160 $cat >try.c <<EOCP
19161 #include <sys/types.h>
19162 #$d_socket HAS_SOCKET
19163 #ifdef HAS_SOCKET
19164 #include <sys/socket.h>
19165 #endif
19166 int main() { socklen_t x = 16; }
19167 EOCP
19168 set try
19169 if eval $compile; then
19170         val="$define"
19171         echo "You have socklen_t."
19172 else
19173         val="$undef"
19174         echo "You do not have socklen_t."
19175         case "$sizetype" in
19176         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19177         esac
19178 fi
19179 $rm -f try try.*
19180 set d_socklen_t
19181 eval $setvar
19182
19183 : see if this is a socks.h system
19184 set socks.h i_socks
19185 eval $inhdr
19186
19187 : check for type of the size argument to socket calls
19188 case "$d_socket" in
19189 "$define")
19190         $cat <<EOM
19191
19192 Checking to see what type is the last argument of accept().
19193 EOM
19194         yyy=''
19195         case "$d_socklen_t" in
19196         "$define") yyy="$yyy socklen_t"
19197         esac
19198         yyy="$yyy $sizetype int long unsigned"
19199         for xxx in $yyy; do
19200                 case "$socksizetype" in
19201                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19202                         case "$usesocks" in
19203                         "$define")
19204                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19205                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19206                                         socksizetype="$xxx"
19207                                 fi
19208                                 ;;
19209                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19210                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19211                                         socksizetype="$xxx"
19212                                 fi
19213                                 ;;
19214                         esac
19215                         ;;
19216                 esac
19217         done
19218 : In case none of those worked, prompt the user.
19219         case "$socksizetype" in
19220         '')     rp='What is the type for socket address structure sizes?'
19221                 dflt='int'
19222                 . ./myread
19223                 socksizetype=$ans
19224                 ;;
19225         esac
19226         ;;
19227 *)      : no sockets, so pick relatively harmless default
19228         socksizetype='int'
19229         ;;
19230 esac
19231
19232 : see what type is used for signed size_t
19233 set ssize_t ssizetype int stdio.h sys/types.h
19234 eval $typedef
19235 dflt="$ssizetype"
19236 $cat > try.c <<EOM
19237 #include <stdio.h>
19238 #$i_stdlib I_STDLIB
19239 #ifdef I_STDLIB
19240 #include <stdlib.h>
19241 #endif
19242 #include <sys/types.h>
19243 #define Size_t $sizetype
19244 #define SSize_t $dflt
19245 int main()
19246 {
19247         if (sizeof(Size_t) == sizeof(SSize_t))
19248                 printf("$dflt\n");
19249         else if (sizeof(Size_t) == sizeof(int))
19250                 printf("int\n");
19251         else 
19252                 printf("long\n");
19253         exit(0);
19254 }
19255 EOM
19256 echo " "
19257 set try
19258 if eval $compile_ok && $run ./try > /dev/null; then
19259         ssizetype=`$run ./try`
19260         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19261 else
19262         $cat >&4 <<EOM
19263 Help! I can't compile and run the ssize_t test program: please enlighten me!
19264 (This is probably a misconfiguration in your system or libraries, and
19265 you really ought to fix it.  Still, I'll try anyway.)
19266
19267 I need a type that is the same size as $sizetype, but is guaranteed to
19268 be signed.  Common values are ssize_t, int and long.
19269
19270 EOM
19271         rp="What signed type is the same size as $sizetype?"
19272         . ./myread
19273         ssizetype="$ans"
19274 fi
19275 $rm -f try try.*
19276
19277 : see what type of char stdio uses.
19278 echo " "
19279 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19280 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19281         echo "Your stdio uses unsigned chars." >&4
19282         stdchar="unsigned char"
19283 else
19284         echo "Your stdio uses signed chars." >&4
19285         stdchar="char"
19286 fi
19287 $rm -f stdioh
19288
19289
19290
19291 : see what type uids are declared as in the kernel
19292 echo " "
19293 echo "Looking for the type for user ids returned by getuid()."
19294 set uid_t uidtype xxx stdio.h sys/types.h
19295 eval $typedef
19296 case "$uidtype" in
19297 xxx)
19298         xxx=`./findhdr sys/user.h`
19299         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19300         case $1 in
19301         unsigned) dflt="$1 $2" ;;
19302         *) dflt="$1" ;;
19303         esac
19304         ;;
19305 *) dflt="$uidtype";;
19306 esac
19307 case "$uidtype" in
19308 uid_t)  echo "uid_t found." ;;
19309 *)      rp="What is the type for user ids returned by getuid()?"
19310         . ./myread
19311         uidtype="$ans"
19312         ;;
19313 esac
19314
19315 echo " "
19316 case "$uidtype" in
19317 *_t) zzz="$uidtype"     ;;
19318 *)   zzz="uid"          ;;
19319 esac
19320 echo "Checking the size of $zzz..." >&4 
19321 cat > try.c <<EOCP
19322 #include <sys/types.h>
19323 #include <stdio.h>
19324 #$i_stdlib I_STDLIB
19325 #ifdef I_STDLIB
19326 #include <stdlib.h>
19327 #endif
19328 int main() {
19329     printf("%d\n", (int)sizeof($uidtype));
19330     exit(0);
19331 }
19332 EOCP
19333 set try
19334 if eval $compile_ok; then
19335         yyy=`$run ./try`
19336         case "$yyy" in
19337         '')     uidsize=4
19338                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19339                 ;;
19340         *)      uidsize=$yyy
19341                 echo "Your $zzz is $uidsize bytes long."
19342                 ;;
19343         esac
19344 else
19345         uidsize=4
19346         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19347 fi
19348
19349 echo " "
19350 case "$uidtype" in
19351 *_t) zzz="$uidtype"     ;;
19352 *)   zzz="uid"          ;;
19353 esac
19354 echo "Checking the sign of $zzz..." >&4
19355 cat > try.c <<EOCP
19356 #include <sys/types.h>
19357 #include <stdio.h>
19358 int main() {
19359         $uidtype foo = -1;
19360         if (foo < 0)
19361                 printf("-1\n");
19362         else
19363                 printf("1\n");
19364 }
19365 EOCP
19366 set try
19367 if eval $compile; then
19368         yyy=`$run ./try`
19369         case "$yyy" in
19370         '')     uidsign=1
19371                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19372                 ;;
19373         *)      uidsign=$yyy
19374                 case "$uidsign" in
19375                  1) echo "Your $zzz is unsigned." ;;
19376                 -1) echo "Your $zzz is signed."   ;;
19377                 esac
19378                 ;;
19379         esac
19380 else
19381         uidsign=1
19382         echo "(I can't compile the test program--guessing unsigned.)" >&4
19383 fi
19384
19385
19386
19387 echo " "
19388 $echo "Checking the format string to be used for uids..." >&4
19389
19390 case "$uidsign" in
19391 -1)     if $test X"$uidsize" = X"$ivsize"; then
19392                 uidformat="$ivdformat"
19393         else
19394                 if $test X"$uidsize" = X"$longsize"; then
19395                         uidformat='"ld"'
19396                 else
19397                         if $test X"$uidsize" = X"$intsize"; then
19398                                 uidformat='"d"'
19399                         else
19400                                 if $test X"$uidsize" = X"$shortsize"; then
19401                                         uidformat='"hd"'
19402                                 fi
19403                         fi
19404                 fi
19405         fi
19406         ;;
19407 *)      if $test X"$uidsize" = X"$uvsize"; then
19408                 uidformat="$uvuformat"
19409         else
19410                 if $test X"$uidsize" = X"$longsize"; then
19411                         uidformat='"lu"'
19412                 else
19413                         if $test X"$uidsize" = X"$intsize"; then
19414                                 uidformat='"u"'
19415                         else
19416                                 if $test X"$uidsize" = X"$shortsize"; then
19417                                         uidformat='"hu"'
19418                                 fi
19419                         fi
19420                 fi
19421         fi
19422         ;;
19423 esac
19424
19425 : determine compiler compiler
19426 case "$yacc" in
19427 '')
19428         dflt=yacc;;
19429 *)
19430         dflt="$yacc";;
19431 esac
19432 echo " "
19433 comp='yacc'
19434 if $test -f "$byacc$_exe"; then
19435         dflt="$byacc"
19436         comp="byacc or $comp"
19437 fi
19438 if $test -f "$bison$_exe"; then
19439         comp="$comp or bison -y"
19440 fi
19441 rp="Which compiler compiler ($comp) shall I use?"
19442 . ./myread
19443 yacc="$ans"
19444 case "$yacc" in
19445 *bis*)
19446         case "$yacc" in
19447         *-y*) ;;
19448         *)
19449                 yacc="$yacc -y"
19450                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19451                 ;;
19452         esac
19453         ;;
19454 esac
19455
19456 : see if this is a fp.h system
19457 set fp.h i_fp
19458 eval $inhdr
19459
19460 : see if this is a fp_class.h system
19461 set fp_class.h i_fp_class
19462 eval $inhdr
19463
19464 : see if this is a ieeefp.h system
19465 case "$i_ieeefp" in
19466 '' ) set ieeefp.h i_ieeefp
19467      eval $inhdr
19468      ;;
19469 esac
19470
19471 : see if this is a libutil.h system
19472 set libutil.h i_libutil
19473 eval $inhdr
19474
19475 : see if mach cthreads are available
19476 if test "X$usethreads" = "X$define"; then
19477         set mach/cthreads.h i_machcthr
19478         eval $inhdr
19479 else
19480         i_machcthr="$undef"
19481 fi
19482
19483
19484
19485 : see if this is a math.h system
19486 set math.h i_math
19487 eval $inhdr
19488
19489 : see if this is a mntent.h system
19490 set mntent.h i_mntent
19491 eval $inhdr
19492
19493 : see if ndbm.h is available
19494 set ndbm.h t_ndbm
19495 eval $inhdr
19496
19497 case "$t_ndbm" in
19498 $undef)
19499     # Some Linux distributions such as RedHat 7.1 put the
19500     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19501     if $test -f /usr/include/gdbm/ndbm.h; then
19502         echo '<gdbm/ndbm.h> found.'
19503         ccflags="$ccflags -I/usr/include/gdbm"
19504         cppflags="$cppflags -I/usr/include/gdbm"
19505         t_ndbm=$define
19506     fi
19507     ;;
19508 esac
19509
19510 case "$t_ndbm" in
19511 $define)
19512         : see if dbm_open exists
19513         set dbm_open d_dbm_open
19514         eval $inlibc
19515         case "$d_dbm_open" in
19516         $undef)
19517                 t_ndbm="$undef"
19518                 echo "We won't be including <ndbm.h>"
19519                 ;;
19520         esac
19521         ;;
19522 esac
19523 val="$t_ndbm"
19524 set i_ndbm
19525 eval $setvar
19526
19527 : see if net/errno.h is available
19528 val=''
19529 set net/errno.h val
19530 eval $inhdr
19531
19532 : Unfortunately, it causes problems on some systems.  Arrgh.
19533 case "$val" in
19534 $define)
19535         cat > try.c <<'EOM'
19536 #include <stdio.h>
19537 #include <errno.h>
19538 #include <net/errno.h>
19539 int func()
19540 {
19541         return ENOTSOCK;
19542 }
19543 EOM
19544         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19545                 echo "We'll be including <net/errno.h>." >&4
19546         else
19547                 echo "We won't be including <net/errno.h>." >&4
19548                 val="$undef"
19549         fi
19550         $rm -f try.* try
19551         ;;
19552 esac
19553 set i_neterrno
19554 eval $setvar
19555
19556 : see if netinet/tcp.h is available
19557 set netinet/tcp.h i_netinettcp
19558 eval $inhdr
19559
19560 : see if this is a poll.h system
19561 set poll.h i_poll
19562 eval $inhdr
19563
19564 : see if this is a prot.h system
19565 set prot.h i_prot
19566 eval $inhdr
19567
19568 echo " "
19569 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19570 $cat <<'EOSH' > Cppsym.know
19571 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19572 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19573 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19574 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19575 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19576 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19577 bull c cadmus clipper CMU COFF COMPILER_VERSION
19578 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19579 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19580 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19581 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19582 GLIBC GLIBC_MINOR
19583 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19584 H3050R H3050RX hbullx20 hcx host_mips
19585 hp200 hp300 hp700 HP700 hp800 hp9000
19586 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19587 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19588 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19589 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19590 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19591 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19592 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19593 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19594 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19595 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19596 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19597 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19598 MATH_HAS_NO_SIDE_EFFECTS
19599 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19600 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19601 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19602 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19603 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19604 NetBSD news1500 news1700 news1800 news1900 news3700
19605 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19606 ns32016 ns32332 ns32k nsc32000
19607 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19608 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19609 pc532 pdp11 PGC PIC plexus PORTAR posix
19610 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19611 POSIX_C_SOURCE POSIX_SOURCE POWER
19612 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19613 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19614 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19615 sony sony_news sonyrisc sparc sparclite spectrum
19616 stardent stdc STDC_EXT stratos sun sun3 sun386
19617 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19618 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19619 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19620 sysV68 sysV88 Tek4132 Tek4300 titan
19621 TM3200 TM5400 TM5600
19622 tower tower32 tower32_200 tower32_600 tower32_700
19623 tower32_800 tower32_850 tss
19624 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19625 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19626 unix UNIX95 UNIX99 unixpc unos
19627 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19628 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19629 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19630 USGr4 USGr4_2
19631 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19632 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19633 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19634 z8000
19635 EOSH
19636 # Maybe put other stuff here too.
19637 cat <<EOSH >>Cppsym.know
19638 $osname
19639 EOSH
19640 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19641 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19642 $cat Cppsym.know > Cppsym.c
19643 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19644 $rm -f Cppsym.a Cppsym.b Cppsym.c
19645 cat <<EOSH > Cppsym
19646 $startsh
19647 if $test \$# -gt 0; then
19648     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19649     if $test -s Cppsym.got; then
19650         $rm -f Cppsym.got
19651         exit 0
19652     fi
19653     $rm -f Cppsym.got
19654     exit 1
19655 else
19656     $tr " " "$trnl" | ./Cppsym.try
19657     exit 0
19658 fi
19659 EOSH
19660 chmod +x Cppsym
19661 $eunicefix Cppsym
19662 cat <<EOSH > Cppsym.try
19663 $startsh
19664 cat <<'EOCP' > try.c
19665 #include <stdio.h>
19666 int main() {
19667 EOCP
19668 $awk \\
19669 EOSH
19670 cat <<'EOSH' >> Cppsym.try
19671 'length($1) > 0 {
19672     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
19673     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
19674     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
19675     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
19676 }'       >> try.c
19677 echo 'return 0;}' >> try.c
19678 EOSH
19679 cat <<EOSH >> Cppsym.try
19680 ccflags="$ccflags"
19681 case "$osname-$gccversion" in
19682 irix-) ccflags="\$ccflags -woff 1178" ;;
19683 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19684 esac
19685 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19686 EOSH
19687 chmod +x Cppsym.try
19688 $eunicefix Cppsym.try
19689 ./Cppsym < Cppsym.know > Cppsym.true
19690 : now check the C compiler for additional symbols
19691 postprocess_cc_v=''
19692 case "$osname" in
19693 aix) postprocess_cc_v="|$tr , ' '" ;;
19694 esac
19695 $cat >ccsym <<EOS
19696 $startsh
19697 $cat >tmp.c <<EOF
19698 extern int foo;
19699 EOF
19700 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19701 do
19702         case "\$i" in
19703         -D*) echo "\$i" | $sed 's/^-D//';;
19704         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19705         esac
19706 done
19707 $rm -f try.c
19708 EOS
19709 postprocess_cc_v=''
19710 chmod +x ccsym
19711 $eunicefix ccsym
19712 ./ccsym > ccsym1.raw
19713 if $test -s ccsym1.raw; then
19714        $sort ccsym1.raw | $uniq >ccsym.raw
19715 else
19716        mv ccsym1.raw ccsym.raw
19717 fi
19718
19719 $awk '/\=/ { print $0; next }
19720         { print $0"=1" }' ccsym.raw >ccsym.list
19721 $awk '/\=/ { print $0; next }
19722         { print $0"=1" }' Cppsym.true >ccsym.true
19723 $comm -13 ccsym.true ccsym.list >ccsym.own
19724 $comm -12 ccsym.true ccsym.list >ccsym.com
19725 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19726 also=''
19727 if $test -z ccsym.raw; then
19728         echo "Your C compiler doesn't seem to define any symbols!" >&4
19729         echo " "
19730         echo "However, your C preprocessor defines the following symbols:"
19731         $cat Cppsym.true
19732         ccsymbols=''
19733         cppsymbols=`$cat Cppsym.true`
19734         cppsymbols=`echo $cppsymbols`
19735         cppccsymbols="$cppsymbols"
19736 else
19737         if $test -s ccsym.com; then
19738                 echo "Your C compiler and pre-processor define these symbols:"
19739                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19740                 also='also '
19741                 symbols='ones'
19742                 cppccsymbols=`$cat ccsym.com`
19743                 cppccsymbols=`echo $cppccsymbols`
19744                 $test "$silent" || sleep 1
19745         fi
19746         if $test -s ccsym.cpp; then
19747                 $test "$also" && echo " "
19748                 echo "Your C pre-processor ${also}defines the following symbols:"
19749                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19750                 also='further '
19751                 cppsymbols=`$cat ccsym.cpp`
19752                 cppsymbols=`echo $cppsymbols`
19753                 $test "$silent" || sleep 1
19754         fi
19755         if $test -s ccsym.own; then
19756                 $test "$also" && echo " "
19757                 echo "Your C compiler ${also}defines the following cpp symbols:"
19758                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19759                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19760                 ccsymbols=`$cat ccsym.own`
19761                 ccsymbols=`echo $ccsymbols`
19762                 $test "$silent" || sleep 1
19763         fi
19764 fi
19765
19766 : see if this is a termio system
19767 val="$undef"
19768 val2="$undef"
19769 val3="$undef"
19770 if $test `./findhdr termios.h`; then
19771         set tcsetattr i_termios
19772         eval $inlibc
19773         val3="$i_termios"
19774 fi
19775 echo " "
19776 case "$val3" in
19777 "$define") echo "You have POSIX termios.h... good!" >&4;;
19778 *) if ./Cppsym pyr; then
19779                 case "`/bin/universe`" in
19780                 ucb) if $test `./findhdr sgtty.h`; then
19781                                 val2="$define"
19782                                 echo "<sgtty.h> found." >&4
19783                         else
19784                                 echo "System is pyramid with BSD universe."
19785                                 echo "<sgtty.h> not found--you could have problems." >&4
19786                         fi;;
19787                 *) if $test `./findhdr termio.h`; then
19788                                 val="$define"
19789                                 echo "<termio.h> found." >&4
19790                         else
19791                                 echo "System is pyramid with USG universe."
19792                                 echo "<termio.h> not found--you could have problems." >&4
19793                         fi;;
19794                 esac
19795         elif ./usg; then
19796                 if $test `./findhdr termio.h`; then
19797                         echo "<termio.h> found." >&4
19798                         val="$define"
19799                 elif $test `./findhdr sgtty.h`; then
19800                         echo "<sgtty.h> found." >&4
19801                         val2="$define"
19802                 else
19803 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19804                 fi
19805         else
19806                 if $test `./findhdr sgtty.h`; then
19807                         echo "<sgtty.h> found." >&4
19808                         val2="$define"
19809                 elif $test `./findhdr termio.h`; then
19810                         echo "<termio.h> found." >&4
19811                         val="$define"
19812                 else
19813 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19814                 fi
19815         fi;;
19816 esac
19817 set i_termio; eval $setvar
19818 val=$val2; set i_sgtty; eval $setvar
19819 val=$val3; set i_termios; eval $setvar
19820
19821 : see if stddef is available
19822 set stddef.h i_stddef
19823 eval $inhdr
19824
19825 : see if this is a sunmath.h system
19826 set sunmath.h i_sunmath
19827 eval $inhdr
19828
19829 : see if sys/access.h is available
19830 set sys/access.h i_sysaccess
19831 eval $inhdr
19832
19833 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19834 set sys/filio.h i_sysfilio
19835 eval $inhdr
19836 echo " "
19837 if $test `./findhdr sys/ioctl.h`; then
19838         val="$define"
19839         echo '<sys/ioctl.h> found.' >&4
19840 else
19841         val="$undef"
19842         if $test $i_sysfilio = "$define"; then
19843             echo '<sys/ioctl.h> NOT found.' >&4
19844         else
19845                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19846                 $test $i_termio = "$define" && xxx="termio.h"
19847                 $test $i_termios = "$define" && xxx="termios.h"
19848 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19849         fi
19850 fi
19851 set i_sysioctl
19852 eval $setvar
19853
19854 : see if socket ioctl defs are in sys/sockio.h
19855 echo " "
19856 xxx=`./findhdr sys/sockio.h`
19857 if $test "$xxx"; then
19858         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19859                 val="$define"
19860                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19861         else
19862                 val="$undef"
19863                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19864         fi
19865 else
19866         val="$undef"
19867         $cat <<EOM
19868 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19869 EOM
19870 fi
19871 set i_syssockio
19872 eval $setvar
19873
19874
19875 : see if this is a syslog.h system
19876 set syslog.h i_syslog
19877 eval $inhdr
19878
19879
19880 : see if this is a sys/mode.h system
19881 set sys/mode.h i_sysmode
19882 eval $inhdr
19883
19884 : see if sys/resource.h has to be included
19885 set sys/resource.h i_sysresrc
19886 eval $inhdr
19887
19888 : see if sys/security.h is available
19889 set sys/security.h i_syssecrt
19890 eval $inhdr
19891
19892 : see if this is a sys/statvfs.h system
19893 set sys/statvfs.h i_sysstatvfs
19894 eval $inhdr
19895
19896 : see if this is a sys/un.h system
19897 set sys/un.h i_sysun
19898 eval $inhdr
19899
19900
19901 : see if this is a sys/utsname.h system
19902 set sys/utsname.h i_sysutsname
19903 eval $inhdr
19904
19905 : see if this is a syswait system
19906 set sys/wait.h i_syswait
19907 eval $inhdr
19908
19909 : see if this is a ustat.h system
19910 set ustat.h i_ustat
19911 eval $inhdr
19912
19913 : see if this is an utime system
19914 set utime.h i_utime
19915 eval $inhdr
19916
19917 : see if this is a values.h system
19918 set values.h i_values
19919 eval $inhdr
19920
19921 : see if this is a vfork system
19922 case "$d_vfork" in
19923 "$define")
19924         set vfork.h i_vfork
19925         eval $inhdr
19926         ;;
19927 *)
19928         i_vfork="$undef"
19929         ;;
19930 esac
19931
19932 : see if gdbm.h is available
19933 set gdbm.h t_gdbm
19934 eval $inhdr
19935 case "$t_gdbm" in
19936 $define)
19937         : see if gdbm_open exists
19938         set gdbm_open d_gdbm_open
19939         eval $inlibc
19940         case "$d_gdbm_open" in
19941         $undef)
19942                 t_gdbm="$undef"
19943                 echo "We won't be including <gdbm.h>"
19944                 ;;
19945         esac
19946         ;;
19947 esac
19948 val="$t_gdbm"
19949 set i_gdbm
19950 eval $setvar
19951
19952 echo " "
19953 echo "Looking for extensions..." >&4
19954 : If we are using the old config.sh, known_extensions may contain
19955 : old or inaccurate or duplicate values.
19956 known_extensions=''
19957 nonxs_extensions=''
19958 : We do not use find because it might not be available.
19959 : We do not just use MANIFEST because the user may have dropped
19960 : some additional extensions into the source tree and expect them
19961 : to be built.
19962
19963 : Function to recursively find available extensions, ignoring DynaLoader
19964 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19965 find_extensions='
19966     for xxx in *; do
19967        case "$xxx" in
19968            DynaLoader|dynaload) ;;
19969            *)
19970            if $test -f $xxx/$xxx.xs; then
19971                known_extensions="$known_extensions $1$xxx";
19972            elif $test -f $xxx/Makefile.PL; then
19973                nonxs_extensions="$nonxs_extensions $1$xxx";
19974            else
19975                if $test -d $xxx -a $# -lt 10; then
19976                    set $1$xxx/ $*;
19977                    cd "$xxx";
19978                    eval $find_extensions;
19979                    cd ..;
19980                    shift;
19981                fi;
19982            fi
19983            ;;
19984        esac;
19985     done'
19986 tdir=`pwd`
19987 cd "$rsrc/ext"
19988 set X
19989 shift
19990 eval $find_extensions
19991 # Special case:  Add in threads/shared since it is not picked up by the
19992 # recursive find above (and adding in general recursive finding breaks
19993 # SDBM_File/sdbm).  A.D.  10/25/2001.
19994 known_extensions="$known_extensions threads/shared"
19995 set X $nonxs_extensions
19996 shift
19997 nonxs_extensions="$*"
19998 set X $known_extensions
19999 shift
20000 known_extensions="$*"
20001 cd "$tdir"
20002
20003 : Now see which are supported on this system.
20004 avail_ext=''
20005 for xxx in $known_extensions ; do
20006         case "$xxx" in
20007         DB_File|db_file)
20008                 case "$i_db" in
20009                 $define) avail_ext="$avail_ext $xxx" ;;
20010                 esac
20011                 ;;
20012         GDBM_File|gdbm_fil)
20013                 case "$i_gdbm" in 
20014                 $define) avail_ext="$avail_ext $xxx" ;;
20015                 esac
20016                 ;;
20017         I18N/Langinfo|i18n_lan)
20018                 case "$i_langinfo$d_nl_langinfo" in 
20019                 $define$define) avail_ext="$avail_ext $xxx" ;;
20020                 esac
20021                 ;;
20022         NDBM_File|ndbm_fil)
20023                 case "$i_ndbm" in
20024                 $define)
20025                     case "$osname-$use64bitint" in
20026                     hpux-define)
20027                         case "$libs" in
20028                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20029                         esac
20030                         ;;
20031                     *) avail_ext="$avail_ext $xxx" ;;
20032                     esac
20033                     ;;
20034                 esac
20035                 ;;
20036         ODBM_File|odbm_fil) 
20037                 case "${i_dbm}${i_rpcsvcdbm}" in
20038                 *"${define}"*)
20039                     case "$osname-$use64bitint" in
20040                     hpux-define)
20041                         case "$libs" in
20042                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20043                         esac
20044                         ;;
20045                     *) avail_ext="$avail_ext $xxx" ;;
20046                     esac
20047                     ;;
20048                 esac
20049                 ;;
20050         POSIX|posix)
20051                 case "$useposix" in
20052                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20053                 esac
20054                 ;;
20055         Opcode|opcode)
20056                 case "$useopcode" in
20057                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20058                 esac
20059                 ;;
20060         Socket|socket)
20061                 case "$d_socket" in 
20062                 true|$define|y)
20063                     case "$osname" in
20064                     beos) ;; # not unless BONE
20065                     *) avail_ext="$avail_ext $xxx" ;;
20066                     esac
20067                     ;;
20068                 esac
20069                 ;;
20070         Sys/Syslog|sys/syslog)
20071                 : XXX syslog requires socket
20072                 case "$d_socket" in 
20073                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20074                 esac
20075                 ;;
20076         Thread|thread)
20077                 case "$usethreads" in
20078                 true|$define|y)
20079                         case "$useithreads" in
20080                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20081                         esac
20082                 esac
20083                 ;;
20084         XS/APItest|xs/apitest)
20085                 # This is just for testing.  Skip it unless we have dynamic loading.
20086
20087                 case "$usedl" in
20088                 $define) avail_ext="$avail_ext $xxx" ;;
20089                 esac
20090                 ;;
20091         XS/Typemap|xs/typemap)
20092                 # This is just for testing.  Skip it unless we have dynamic loading.
20093                 case "$usedl" in
20094                 $define) avail_ext="$avail_ext $xxx" ;;
20095                 esac
20096                 ;;
20097         threads|threads/shared)
20098                 # threads and threads::shared are special cases.
20099                 # To stop people from asking "Perl 5.8.0 was supposed
20100                 # to have this new fancy threads implementation but my
20101                 # perl doesn't have it" and from people trying to
20102                 # (re)install the threads module using CPAN.pm and
20103                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20104                 # the threads.pm and threads/shared.pm will always be
20105                 # there, croaking informatively ("you need to rebuild
20106                 # all of Perl with threads, sorry") when threads haven't
20107                 # been compiled in.
20108                 # --jhi
20109                 avail_ext="$avail_ext $xxx"
20110                 ;;
20111         IPC/SysV|ipc/sysv)
20112                 : XXX Do we need a useipcsysv variable here
20113                 case "${d_msg}${d_sem}${d_shm}" in 
20114                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20115                 esac
20116                 ;;
20117         *)      avail_ext="$avail_ext $xxx"
20118                 ;;
20119         esac
20120 done
20121
20122 set X $avail_ext
20123 shift
20124 avail_ext="$*"
20125
20126 case "$onlyextensions" in
20127 '') ;;
20128 *)  keepextensions=''
20129     echo "You have requested that only certains extensions be included..." >&4
20130     for i in $onlyextensions; do
20131         case " $avail_ext " in
20132         *" $i "*)
20133             echo "Keeping extension $i."
20134             keepextensions="$keepextensions $i"
20135             ;;
20136         *) echo "Ignoring extension $i." ;;
20137         esac
20138     done
20139     avail_ext="$keepextensions"
20140     ;;
20141 esac
20142
20143 case "$noextensions" in
20144 '') ;;
20145 *)  keepextensions=''
20146     echo "You have requested that certain extensions be ignored..." >&4
20147     for i in $avail_ext; do
20148         case " $noextensions " in
20149         *" $i "*) echo "Ignoring extension $i." ;;
20150         *) echo "Keeping extension $i.";
20151            keepextensions="$keepextensions $i"
20152            ;;
20153         esac
20154     done
20155     avail_ext="$keepextensions"
20156     ;;
20157 esac
20158
20159 : Now see which nonxs extensions are supported on this system.
20160 : For now assume all are.
20161 nonxs_ext=''
20162 for xxx in $nonxs_extensions ; do
20163         case "$xxx" in
20164         *)      nonxs_ext="$nonxs_ext $xxx"
20165                 ;;
20166         esac
20167 done
20168
20169 set X $nonxs_ext
20170 shift
20171 nonxs_ext="$*"
20172
20173 case $usedl in
20174 $define)
20175         $cat <<EOM
20176 A number of extensions are supplied with $package.  You may choose to
20177 compile these extensions for dynamic loading (the default), compile
20178 them into the $package executable (static loading), or not include
20179 them at all.  Answer "none" to include no extensions.
20180 Note that DynaLoader is always built and need not be mentioned here.
20181
20182 EOM
20183         case "$dynamic_ext" in
20184         '')
20185                 : Exclude those listed in static_ext
20186                 dflt=''
20187                 for xxx in $avail_ext; do
20188                         case " $static_ext " in
20189                         *" $xxx "*) ;;
20190                         *) dflt="$dflt $xxx" ;;
20191                         esac
20192                 done
20193                 set X $dflt
20194                 shift
20195                 dflt="$*"
20196                 ;;
20197         *)      dflt="$dynamic_ext"
20198                 # Perhaps we are reusing an old out-of-date config.sh.
20199                 case "$hint" in
20200                 previous)
20201                         if test X"$dynamic_ext" != X"$avail_ext"; then
20202                                 $cat <<EOM
20203 NOTICE:  Your previous config.sh list may be incorrect. 
20204 The extensions now available to you are 
20205         ${avail_ext}
20206 but the default list from your previous config.sh is
20207         ${dynamic_ext} 
20208
20209 EOM
20210                         fi
20211                         ;;
20212                 esac
20213                 ;;
20214         esac
20215         case "$dflt" in
20216         '')     dflt=none;;
20217         esac
20218         rp="What extensions do you wish to load dynamically?"
20219         . ./myread
20220         case "$ans" in
20221         none) dynamic_ext=' ' ;;
20222         *) dynamic_ext="$ans" ;;
20223         esac
20224
20225         case "$static_ext" in
20226         '')
20227                 : Exclude those already listed in dynamic linking
20228                 dflt=''
20229                 for xxx in $avail_ext; do
20230                         case " $dynamic_ext " in
20231                         *" $xxx "*) ;;
20232                         *) dflt="$dflt $xxx" ;;
20233                         esac
20234                 done
20235                 set X $dflt
20236                 shift
20237                 dflt="$*"
20238                 ;;
20239         *)  dflt="$static_ext" 
20240                 ;;
20241         esac
20242
20243         case "$dflt" in
20244         '')     dflt=none;;
20245         esac
20246         rp="What extensions do you wish to load statically?"
20247         . ./myread
20248         case "$ans" in
20249         none) static_ext=' ' ;;
20250         *) static_ext="$ans" ;;
20251         esac
20252         ;;
20253 *)
20254         $cat <<EOM
20255 A number of extensions are supplied with $package.  Answer "none" 
20256 to include no extensions. 
20257 Note that DynaLoader is always built and need not be mentioned here.
20258
20259 EOM
20260         case "$static_ext" in
20261         '') dflt="$avail_ext" ;;
20262         *)      dflt="$static_ext"
20263                 # Perhaps we are reusing an old out-of-date config.sh.
20264                 case "$hint" in
20265                 previous)
20266                         if test X"$static_ext" != X"$avail_ext"; then
20267                                 $cat <<EOM
20268 NOTICE:  Your previous config.sh list may be incorrect. 
20269 The extensions now available to you are 
20270         ${avail_ext}
20271 but the default list from your previous config.sh is
20272         ${static_ext} 
20273
20274 EOM
20275                         fi
20276                         ;;
20277                 esac
20278                 ;;
20279         esac
20280         : Exclude those that are not xs extensions
20281         case "$dflt" in
20282         '')     dflt=none;;
20283         esac
20284         rp="What extensions do you wish to include?"
20285         . ./myread
20286         case "$ans" in
20287         none) static_ext=' ' ;;
20288         *) static_ext="$ans" ;;
20289         esac
20290         ;;
20291 esac
20292 #        
20293 # Encode is a special case.  If we are building Encode as a static
20294 # extension, we need to explicitly list its subextensions as well.
20295 # For other nested extensions, this is handled automatically by
20296 # the appropriate Makefile.PL.
20297 case " $static_ext " in
20298         *" Encode "*) # Add the subextensions of Encode
20299         cd "$rsrc/ext"
20300         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20301                 static_ext="$static_ext Encode/$xxx"
20302         done
20303         cd "$tdir"
20304         ;;
20305 esac
20306
20307 set X $dynamic_ext $static_ext $nonxs_ext
20308 shift
20309 extensions="$*"
20310
20311 # Sanity check:  We require an extension suitable for use with
20312 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
20313 # should show up as failures in the test suite, but it's helpful to
20314 # catch them now.) The 'extensions' list is normally sorted
20315 # alphabetically, so we need to accept either
20316 #    DB_File ... Fcntl ... IO  ....
20317 # or something like
20318 #    Fcntl ... NDBM_File ... IO  ....
20319 case " $extensions"  in
20320 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
20321 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20322 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
20323 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20324    echo "WARNING: The Perl you are building will be quite crippled." >& 4
20325    ;;
20326 esac
20327
20328 : Remove libraries needed only for extensions
20329 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20330 : The exception is SunOS 4.x, which needs them.
20331 case "${osname}X${osvers}" in
20332 sunos*X4*)
20333     perllibs="$libs"
20334     ;;
20335 *) case "$usedl" in
20336     $define|true|[yY]*)
20337             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20338             shift
20339             perllibs="$*"
20340             ;;
20341     *)  perllibs="$libs"
20342             ;;
20343     esac
20344     ;;
20345 esac
20346
20347 : Remove build directory name from cppstdin so it can be used from
20348 : either the present location or the final installed location.
20349 echo " "
20350 : Get out of the UU directory to get correct path name.
20351 cd ..
20352 case "$cppstdin" in
20353 `pwd`/cppstdin)
20354         echo "Stripping down cppstdin path name"
20355         cppstdin=cppstdin
20356         ;;
20357 esac
20358 cd UU
20359
20360 : end of configuration questions
20361 echo " "
20362 echo "End of configuration questions."
20363 echo " "
20364
20365 : back to where it started
20366 if test -d ../UU; then
20367         cd ..
20368 fi
20369
20370 : configuration may be patched via a 'config.arch' file
20371 if $test -f config.arch; then
20372         echo "I see a config.arch file, loading it."
20373         . ./config.arch
20374 fi
20375
20376 : configuration may be patched via a 'config.over' file
20377 if $test -f config.over; then
20378         echo " "
20379         dflt=y
20380         rp='I see a config.over file.  Do you wish to load it?'
20381         . UU/myread
20382         case "$ans" in
20383         n*) echo "OK, I'll ignore it.";;
20384         *)      . ./config.over
20385                 echo "Configuration override changes have been loaded."
20386                 ;;
20387         esac
20388 fi
20389
20390 : in case they want portability, strip down executable paths
20391 case "$d_portable" in
20392 "$define")
20393         echo " "
20394         echo "Stripping down executable paths..." >&4
20395         for file in $loclist $trylist; do
20396                 eval temp=\$$file
20397                 eval $file=`basename $temp`
20398         done
20399         ;;
20400 esac
20401
20402 : create config.sh file
20403 echo " "
20404 echo "Creating config.sh..." >&4
20405 $spitshell <<EOT >config.sh
20406 $startsh
20407 #
20408 # This file was produced by running the Configure script. It holds all the
20409 # definitions figured out by Configure. Should you modify one of these values,
20410 # do not forget to propagate your changes by running "Configure -der". You may
20411 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20412 #
20413
20414 # Package name      : $package
20415 # Source directory  : $src
20416 # Configuration time: $cf_time
20417 # Configured by     : $cf_by
20418 # Target system     : $myuname
20419
20420 Author='$Author'
20421 Date='$Date'
20422 Header='$Header'
20423 Id='$Id'
20424 Locker='$Locker'
20425 Log='$Log'
20426 Mcc='$Mcc'
20427 RCSfile='$RCSfile'
20428 Revision='$Revision'
20429 Source='$Source'
20430 State='$State'
20431 _a='$_a'
20432 _exe='$_exe'
20433 _o='$_o'
20434 afs='$afs'
20435 afsroot='$afsroot'
20436 alignbytes='$alignbytes'
20437 ansi2knr='$ansi2knr'
20438 aphostname='$aphostname'
20439 api_revision='$api_revision'
20440 api_subversion='$api_subversion'
20441 api_version='$api_version'
20442 api_versionstring='$api_versionstring'
20443 ar='$ar'
20444 archlib='$archlib'
20445 archlibexp='$archlibexp'
20446 archname64='$archname64'
20447 archname='$archname'
20448 archobjs='$archobjs'
20449 asctime_r_proto='$asctime_r_proto'
20450 awk='$awk'
20451 baserev='$baserev'
20452 bash='$bash'
20453 bin='$bin'
20454 binexp='$binexp'
20455 bison='$bison'
20456 byacc='$byacc'
20457 byteorder='$byteorder'
20458 c='$c'
20459 castflags='$castflags'
20460 cat='$cat'
20461 cc='$cc'
20462 cccdlflags='$cccdlflags'
20463 ccdlflags='$ccdlflags'
20464 ccflags='$ccflags'
20465 ccflags_uselargefiles='$ccflags_uselargefiles'
20466 ccname='$ccname'
20467 ccsymbols='$ccsymbols'
20468 ccversion='$ccversion'
20469 cf_by='$cf_by'
20470 cf_email='$cf_email'
20471 cf_time='$cf_time'
20472 charsize='$charsize'
20473 chgrp='$chgrp'
20474 chmod='$chmod'
20475 chown='$chown'
20476 clocktype='$clocktype'
20477 comm='$comm'
20478 compress='$compress'
20479 contains='$contains'
20480 cp='$cp'
20481 cpio='$cpio'
20482 cpp='$cpp'
20483 cpp_stuff='$cpp_stuff'
20484 cppccsymbols='$cppccsymbols'
20485 cppflags='$cppflags'
20486 cpplast='$cpplast'
20487 cppminus='$cppminus'
20488 cpprun='$cpprun'
20489 cppstdin='$cppstdin'
20490 cppsymbols='$cppsymbols'
20491 crypt_r_proto='$crypt_r_proto'
20492 cryptlib='$cryptlib'
20493 csh='$csh'
20494 ctermid_r_proto='$ctermid_r_proto'
20495 ctime_r_proto='$ctime_r_proto'
20496 d_Gconvert='$d_Gconvert'
20497 d_PRIEUldbl='$d_PRIEUldbl'
20498 d_PRIFUldbl='$d_PRIFUldbl'
20499 d_PRIGUldbl='$d_PRIGUldbl'
20500 d_PRIXU64='$d_PRIXU64'
20501 d_PRId64='$d_PRId64'
20502 d_PRIeldbl='$d_PRIeldbl'
20503 d_PRIfldbl='$d_PRIfldbl'
20504 d_PRIgldbl='$d_PRIgldbl'
20505 d_PRIi64='$d_PRIi64'
20506 d_PRIo64='$d_PRIo64'
20507 d_PRIu64='$d_PRIu64'
20508 d_PRIx64='$d_PRIx64'
20509 d_SCNfldbl='$d_SCNfldbl'
20510 d__fwalk='$d__fwalk'
20511 d_access='$d_access'
20512 d_accessx='$d_accessx'
20513 d_aintl='$d_aintl'
20514 d_alarm='$d_alarm'
20515 d_archlib='$d_archlib'
20516 d_asctime_r='$d_asctime_r'
20517 d_atolf='$d_atolf'
20518 d_atoll='$d_atoll'
20519 d_attribut='$d_attribut'
20520 d_bcmp='$d_bcmp'
20521 d_bcopy='$d_bcopy'
20522 d_bsd='$d_bsd'
20523 d_bsdgetpgrp='$d_bsdgetpgrp'
20524 d_bsdsetpgrp='$d_bsdsetpgrp'
20525 d_bzero='$d_bzero'
20526 d_casti32='$d_casti32'
20527 d_castneg='$d_castneg'
20528 d_charvspr='$d_charvspr'
20529 d_chown='$d_chown'
20530 d_chroot='$d_chroot'
20531 d_chsize='$d_chsize'
20532 d_class='$d_class'
20533 d_closedir='$d_closedir'
20534 d_cmsghdr_s='$d_cmsghdr_s'
20535 d_const='$d_const'
20536 d_copysignl='$d_copysignl'
20537 d_crypt='$d_crypt'
20538 d_crypt_r='$d_crypt_r'
20539 d_csh='$d_csh'
20540 d_ctermid_r='$d_ctermid_r'
20541 d_ctime_r='$d_ctime_r'
20542 d_cuserid='$d_cuserid'
20543 d_dbl_dig='$d_dbl_dig'
20544 d_dbminitproto='$d_dbminitproto'
20545 d_difftime='$d_difftime'
20546 d_dirfd='$d_dirfd'
20547 d_dirnamlen='$d_dirnamlen'
20548 d_dlerror='$d_dlerror'
20549 d_dlopen='$d_dlopen'
20550 d_dlsymun='$d_dlsymun'
20551 d_dosuid='$d_dosuid'
20552 d_drand48_r='$d_drand48_r'
20553 d_drand48proto='$d_drand48proto'
20554 d_dup2='$d_dup2'
20555 d_eaccess='$d_eaccess'
20556 d_endgrent='$d_endgrent'
20557 d_endgrent_r='$d_endgrent_r'
20558 d_endhent='$d_endhent'
20559 d_endhostent_r='$d_endhostent_r'
20560 d_endnent='$d_endnent'
20561 d_endnetent_r='$d_endnetent_r'
20562 d_endpent='$d_endpent'
20563 d_endprotoent_r='$d_endprotoent_r'
20564 d_endpwent='$d_endpwent'
20565 d_endpwent_r='$d_endpwent_r'
20566 d_endsent='$d_endsent'
20567 d_endservent_r='$d_endservent_r'
20568 d_eofnblk='$d_eofnblk'
20569 d_eunice='$d_eunice'
20570 d_faststdio='$d_faststdio'
20571 d_fchdir='$d_fchdir'
20572 d_fchmod='$d_fchmod'
20573 d_fchown='$d_fchown'
20574 d_fcntl='$d_fcntl'
20575 d_fcntl_can_lock='$d_fcntl_can_lock'
20576 d_fd_macros='$d_fd_macros'
20577 d_fd_set='$d_fd_set'
20578 d_fds_bits='$d_fds_bits'
20579 d_fgetpos='$d_fgetpos'
20580 d_finite='$d_finite'
20581 d_finitel='$d_finitel'
20582 d_flexfnam='$d_flexfnam'
20583 d_flock='$d_flock'
20584 d_flockproto='$d_flockproto'
20585 d_fork='$d_fork'
20586 d_fp_class='$d_fp_class'
20587 d_fpathconf='$d_fpathconf'
20588 d_fpclass='$d_fpclass'
20589 d_fpclassify='$d_fpclassify'
20590 d_fpclassl='$d_fpclassl'
20591 d_fpos64_t='$d_fpos64_t'
20592 d_frexpl='$d_frexpl'
20593 d_fs_data_s='$d_fs_data_s'
20594 d_fseeko='$d_fseeko'
20595 d_fsetpos='$d_fsetpos'
20596 d_fstatfs='$d_fstatfs'
20597 d_fstatvfs='$d_fstatvfs'
20598 d_fsync='$d_fsync'
20599 d_ftello='$d_ftello'
20600 d_ftime='$d_ftime'
20601 d_getcwd='$d_getcwd'
20602 d_getespwnam='$d_getespwnam'
20603 d_getfsstat='$d_getfsstat'
20604 d_getgrent='$d_getgrent'
20605 d_getgrent_r='$d_getgrent_r'
20606 d_getgrgid_r='$d_getgrgid_r'
20607 d_getgrnam_r='$d_getgrnam_r'
20608 d_getgrps='$d_getgrps'
20609 d_gethbyaddr='$d_gethbyaddr'
20610 d_gethbyname='$d_gethbyname'
20611 d_gethent='$d_gethent'
20612 d_gethname='$d_gethname'
20613 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20614 d_gethostbyname_r='$d_gethostbyname_r'
20615 d_gethostent_r='$d_gethostent_r'
20616 d_gethostprotos='$d_gethostprotos'
20617 d_getitimer='$d_getitimer'
20618 d_getlogin='$d_getlogin'
20619 d_getlogin_r='$d_getlogin_r'
20620 d_getmnt='$d_getmnt'
20621 d_getmntent='$d_getmntent'
20622 d_getnbyaddr='$d_getnbyaddr'
20623 d_getnbyname='$d_getnbyname'
20624 d_getnent='$d_getnent'
20625 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20626 d_getnetbyname_r='$d_getnetbyname_r'
20627 d_getnetent_r='$d_getnetent_r'
20628 d_getnetprotos='$d_getnetprotos'
20629 d_getpagsz='$d_getpagsz'
20630 d_getpbyname='$d_getpbyname'
20631 d_getpbynumber='$d_getpbynumber'
20632 d_getpent='$d_getpent'
20633 d_getpgid='$d_getpgid'
20634 d_getpgrp2='$d_getpgrp2'
20635 d_getpgrp='$d_getpgrp'
20636 d_getppid='$d_getppid'
20637 d_getprior='$d_getprior'
20638 d_getprotobyname_r='$d_getprotobyname_r'
20639 d_getprotobynumber_r='$d_getprotobynumber_r'
20640 d_getprotoent_r='$d_getprotoent_r'
20641 d_getprotoprotos='$d_getprotoprotos'
20642 d_getprpwnam='$d_getprpwnam'
20643 d_getpwent='$d_getpwent'
20644 d_getpwent_r='$d_getpwent_r'
20645 d_getpwnam_r='$d_getpwnam_r'
20646 d_getpwuid_r='$d_getpwuid_r'
20647 d_getsbyname='$d_getsbyname'
20648 d_getsbyport='$d_getsbyport'
20649 d_getsent='$d_getsent'
20650 d_getservbyname_r='$d_getservbyname_r'
20651 d_getservbyport_r='$d_getservbyport_r'
20652 d_getservent_r='$d_getservent_r'
20653 d_getservprotos='$d_getservprotos'
20654 d_getspnam='$d_getspnam'
20655 d_getspnam_r='$d_getspnam_r'
20656 d_gettimeod='$d_gettimeod'
20657 d_gmtime_r='$d_gmtime_r'
20658 d_gnulibc='$d_gnulibc'
20659 d_grpasswd='$d_grpasswd'
20660 d_hasmntopt='$d_hasmntopt'
20661 d_htonl='$d_htonl'
20662 d_ilogbl='$d_ilogbl'
20663 d_index='$d_index'
20664 d_inetaton='$d_inetaton'
20665 d_int64_t='$d_int64_t'
20666 d_isascii='$d_isascii'
20667 d_isfinite='$d_isfinite'
20668 d_isinf='$d_isinf'
20669 d_isnan='$d_isnan'
20670 d_isnanl='$d_isnanl'
20671 d_killpg='$d_killpg'
20672 d_lchown='$d_lchown'
20673 d_ldbl_dig='$d_ldbl_dig'
20674 d_link='$d_link'
20675 d_localtime_r='$d_localtime_r'
20676 d_locconv='$d_locconv'
20677 d_lockf='$d_lockf'
20678 d_longdbl='$d_longdbl'
20679 d_longlong='$d_longlong'
20680 d_lseekproto='$d_lseekproto'
20681 d_lstat='$d_lstat'
20682 d_madvise='$d_madvise'
20683 d_mblen='$d_mblen'
20684 d_mbstowcs='$d_mbstowcs'
20685 d_mbtowc='$d_mbtowc'
20686 d_memchr='$d_memchr'
20687 d_memcmp='$d_memcmp'
20688 d_memcpy='$d_memcpy'
20689 d_memmove='$d_memmove'
20690 d_memset='$d_memset'
20691 d_mkdir='$d_mkdir'
20692 d_mkdtemp='$d_mkdtemp'
20693 d_mkfifo='$d_mkfifo'
20694 d_mkstemp='$d_mkstemp'
20695 d_mkstemps='$d_mkstemps'
20696 d_mktime='$d_mktime'
20697 d_mmap='$d_mmap'
20698 d_modfl='$d_modfl'
20699 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20700 d_modflproto='$d_modflproto'
20701 d_mprotect='$d_mprotect'
20702 d_msg='$d_msg'
20703 d_msg_ctrunc='$d_msg_ctrunc'
20704 d_msg_dontroute='$d_msg_dontroute'
20705 d_msg_oob='$d_msg_oob'
20706 d_msg_peek='$d_msg_peek'
20707 d_msg_proxy='$d_msg_proxy'
20708 d_msgctl='$d_msgctl'
20709 d_msgget='$d_msgget'
20710 d_msghdr_s='$d_msghdr_s'
20711 d_msgrcv='$d_msgrcv'
20712 d_msgsnd='$d_msgsnd'
20713 d_msync='$d_msync'
20714 d_munmap='$d_munmap'
20715 d_mymalloc='$d_mymalloc'
20716 d_nice='$d_nice'
20717 d_nl_langinfo='$d_nl_langinfo'
20718 d_nv_preserves_uv='$d_nv_preserves_uv'
20719 d_off64_t='$d_off64_t'
20720 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20721 d_oldpthreads='$d_oldpthreads'
20722 d_oldsock='$d_oldsock'
20723 d_open3='$d_open3'
20724 d_pathconf='$d_pathconf'
20725 d_pause='$d_pause'
20726 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20727 d_phostname='$d_phostname'
20728 d_pipe='$d_pipe'
20729 d_poll='$d_poll'
20730 d_portable='$d_portable'
20731 d_procselfexe='$d_procselfexe'
20732 d_pthread_atfork='$d_pthread_atfork'
20733 d_pthread_attr_setscope='$d_pthread_attr_setscope'
20734 d_pthread_yield='$d_pthread_yield'
20735 d_pwage='$d_pwage'
20736 d_pwchange='$d_pwchange'
20737 d_pwclass='$d_pwclass'
20738 d_pwcomment='$d_pwcomment'
20739 d_pwexpire='$d_pwexpire'
20740 d_pwgecos='$d_pwgecos'
20741 d_pwpasswd='$d_pwpasswd'
20742 d_pwquota='$d_pwquota'
20743 d_qgcvt='$d_qgcvt'
20744 d_quad='$d_quad'
20745 d_random_r='$d_random_r'
20746 d_readdir64_r='$d_readdir64_r'
20747 d_readdir='$d_readdir'
20748 d_readdir_r='$d_readdir_r'
20749 d_readlink='$d_readlink'
20750 d_readv='$d_readv'
20751 d_recvmsg='$d_recvmsg'
20752 d_rename='$d_rename'
20753 d_rewinddir='$d_rewinddir'
20754 d_rmdir='$d_rmdir'
20755 d_safebcpy='$d_safebcpy'
20756 d_safemcpy='$d_safemcpy'
20757 d_sanemcmp='$d_sanemcmp'
20758 d_sbrkproto='$d_sbrkproto'
20759 d_scalbnl='$d_scalbnl'
20760 d_sched_yield='$d_sched_yield'
20761 d_scm_rights='$d_scm_rights'
20762 d_seekdir='$d_seekdir'
20763 d_select='$d_select'
20764 d_sem='$d_sem'
20765 d_semctl='$d_semctl'
20766 d_semctl_semid_ds='$d_semctl_semid_ds'
20767 d_semctl_semun='$d_semctl_semun'
20768 d_semget='$d_semget'
20769 d_semop='$d_semop'
20770 d_sendmsg='$d_sendmsg'
20771 d_setegid='$d_setegid'
20772 d_seteuid='$d_seteuid'
20773 d_setgrent='$d_setgrent'
20774 d_setgrent_r='$d_setgrent_r'
20775 d_setgrps='$d_setgrps'
20776 d_sethent='$d_sethent'
20777 d_sethostent_r='$d_sethostent_r'
20778 d_setitimer='$d_setitimer'
20779 d_setlinebuf='$d_setlinebuf'
20780 d_setlocale='$d_setlocale'
20781 d_setlocale_r='$d_setlocale_r'
20782 d_setnent='$d_setnent'
20783 d_setnetent_r='$d_setnetent_r'
20784 d_setpent='$d_setpent'
20785 d_setpgid='$d_setpgid'
20786 d_setpgrp2='$d_setpgrp2'
20787 d_setpgrp='$d_setpgrp'
20788 d_setprior='$d_setprior'
20789 d_setproctitle='$d_setproctitle'
20790 d_setprotoent_r='$d_setprotoent_r'
20791 d_setpwent='$d_setpwent'
20792 d_setpwent_r='$d_setpwent_r'
20793 d_setregid='$d_setregid'
20794 d_setresgid='$d_setresgid'
20795 d_setresuid='$d_setresuid'
20796 d_setreuid='$d_setreuid'
20797 d_setrgid='$d_setrgid'
20798 d_setruid='$d_setruid'
20799 d_setsent='$d_setsent'
20800 d_setservent_r='$d_setservent_r'
20801 d_setsid='$d_setsid'
20802 d_setvbuf='$d_setvbuf'
20803 d_sfio='$d_sfio'
20804 d_shm='$d_shm'
20805 d_shmat='$d_shmat'
20806 d_shmatprototype='$d_shmatprototype'
20807 d_shmctl='$d_shmctl'
20808 d_shmdt='$d_shmdt'
20809 d_shmget='$d_shmget'
20810 d_sigaction='$d_sigaction'
20811 d_sigprocmask='$d_sigprocmask'
20812 d_sigsetjmp='$d_sigsetjmp'
20813 d_sockatmark='$d_sockatmark'
20814 d_sockatmarkproto='$d_sockatmarkproto'
20815 d_socket='$d_socket'
20816 d_socklen_t='$d_socklen_t'
20817 d_sockpair='$d_sockpair'
20818 d_socks5_init='$d_socks5_init'
20819 d_sqrtl='$d_sqrtl'
20820 d_srand48_r='$d_srand48_r'
20821 d_srandom_r='$d_srandom_r'
20822 d_sresgproto='$d_sresgproto'
20823 d_sresuproto='$d_sresuproto'
20824 d_statblks='$d_statblks'
20825 d_statfs_f_flags='$d_statfs_f_flags'
20826 d_statfs_s='$d_statfs_s'
20827 d_statvfs='$d_statvfs'
20828 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20829 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20830 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20831 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20832 d_stdio_stream_array='$d_stdio_stream_array'
20833 d_stdiobase='$d_stdiobase'
20834 d_stdstdio='$d_stdstdio'
20835 d_strchr='$d_strchr'
20836 d_strcoll='$d_strcoll'
20837 d_strctcpy='$d_strctcpy'
20838 d_strerrm='$d_strerrm'
20839 d_strerror='$d_strerror'
20840 d_strerror_r='$d_strerror_r'
20841 d_strftime='$d_strftime'
20842 d_strtod='$d_strtod'
20843 d_strtol='$d_strtol'
20844 d_strtold='$d_strtold'
20845 d_strtoll='$d_strtoll'
20846 d_strtoq='$d_strtoq'
20847 d_strtoul='$d_strtoul'
20848 d_strtoull='$d_strtoull'
20849 d_strtouq='$d_strtouq'
20850 d_strxfrm='$d_strxfrm'
20851 d_suidsafe='$d_suidsafe'
20852 d_symlink='$d_symlink'
20853 d_syscall='$d_syscall'
20854 d_syscallproto='$d_syscallproto'
20855 d_sysconf='$d_sysconf'
20856 d_sysernlst='$d_sysernlst'
20857 d_syserrlst='$d_syserrlst'
20858 d_system='$d_system'
20859 d_tcgetpgrp='$d_tcgetpgrp'
20860 d_tcsetpgrp='$d_tcsetpgrp'
20861 d_telldir='$d_telldir'
20862 d_telldirproto='$d_telldirproto'
20863 d_time='$d_time'
20864 d_times='$d_times'
20865 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20866 d_tm_tm_zone='$d_tm_tm_zone'
20867 d_tmpnam_r='$d_tmpnam_r'
20868 d_truncate='$d_truncate'
20869 d_ttyname_r='$d_ttyname_r'
20870 d_tzname='$d_tzname'
20871 d_u32align='$d_u32align'
20872 d_ualarm='$d_ualarm'
20873 d_umask='$d_umask'
20874 d_uname='$d_uname'
20875 d_union_semun='$d_union_semun'
20876 d_unordered='$d_unordered'
20877 d_usleep='$d_usleep'
20878 d_usleepproto='$d_usleepproto'
20879 d_ustat='$d_ustat'
20880 d_vendorarch='$d_vendorarch'
20881 d_vendorbin='$d_vendorbin'
20882 d_vendorlib='$d_vendorlib'
20883 d_vendorscript='$d_vendorscript'
20884 d_vfork='$d_vfork'
20885 d_void_closedir='$d_void_closedir'
20886 d_voidsig='$d_voidsig'
20887 d_voidtty='$d_voidtty'
20888 d_volatile='$d_volatile'
20889 d_vprintf='$d_vprintf'
20890 d_wait4='$d_wait4'
20891 d_waitpid='$d_waitpid'
20892 d_wcstombs='$d_wcstombs'
20893 d_wctomb='$d_wctomb'
20894 d_writev='$d_writev'
20895 d_xenix='$d_xenix'
20896 date='$date'
20897 db_hashtype='$db_hashtype'
20898 db_prefixtype='$db_prefixtype'
20899 db_version_major='$db_version_major'
20900 db_version_minor='$db_version_minor'
20901 db_version_patch='$db_version_patch'
20902 defvoidused='$defvoidused'
20903 direntrytype='$direntrytype'
20904 dlext='$dlext'
20905 dlsrc='$dlsrc'
20906 doublesize='$doublesize'
20907 drand01='$drand01'
20908 drand48_r_proto='$drand48_r_proto'
20909 dynamic_ext='$dynamic_ext'
20910 eagain='$eagain'
20911 ebcdic='$ebcdic'
20912 echo='$echo'
20913 egrep='$egrep'
20914 emacs='$emacs'
20915 endgrent_r_proto='$endgrent_r_proto'
20916 endhostent_r_proto='$endhostent_r_proto'
20917 endnetent_r_proto='$endnetent_r_proto'
20918 endprotoent_r_proto='$endprotoent_r_proto'
20919 endpwent_r_proto='$endpwent_r_proto'
20920 endservent_r_proto='$endservent_r_proto'
20921 eunicefix='$eunicefix'
20922 exe_ext='$exe_ext'
20923 expr='$expr'
20924 extensions='$extensions'
20925 extras='$extras'
20926 fflushNULL='$fflushNULL'
20927 fflushall='$fflushall'
20928 find='$find'
20929 firstmakefile='$firstmakefile'
20930 flex='$flex'
20931 fpossize='$fpossize'
20932 fpostype='$fpostype'
20933 freetype='$freetype'
20934 from='$from'
20935 full_ar='$full_ar'
20936 full_csh='$full_csh'
20937 full_sed='$full_sed'
20938 gccansipedantic='$gccansipedantic'
20939 gccosandvers='$gccosandvers'
20940 gccversion='$gccversion'
20941 getgrent_r_proto='$getgrent_r_proto'
20942 getgrgid_r_proto='$getgrgid_r_proto'
20943 getgrnam_r_proto='$getgrnam_r_proto'
20944 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20945 gethostbyname_r_proto='$gethostbyname_r_proto'
20946 gethostent_r_proto='$gethostent_r_proto'
20947 getlogin_r_proto='$getlogin_r_proto'
20948 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20949 getnetbyname_r_proto='$getnetbyname_r_proto'
20950 getnetent_r_proto='$getnetent_r_proto'
20951 getprotobyname_r_proto='$getprotobyname_r_proto'
20952 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20953 getprotoent_r_proto='$getprotoent_r_proto'
20954 getpwent_r_proto='$getpwent_r_proto'
20955 getpwnam_r_proto='$getpwnam_r_proto'
20956 getpwuid_r_proto='$getpwuid_r_proto'
20957 getservbyname_r_proto='$getservbyname_r_proto'
20958 getservbyport_r_proto='$getservbyport_r_proto'
20959 getservent_r_proto='$getservent_r_proto'
20960 getspnam_r_proto='$getspnam_r_proto'
20961 gidformat='$gidformat'
20962 gidsign='$gidsign'
20963 gidsize='$gidsize'
20964 gidtype='$gidtype'
20965 glibpth='$glibpth'
20966 gmake='$gmake'
20967 gmtime_r_proto='$gmtime_r_proto'
20968 gnulibc_version='$gnulibc_version'
20969 grep='$grep'
20970 groupcat='$groupcat'
20971 groupstype='$groupstype'
20972 gzip='$gzip'
20973 h_fcntl='$h_fcntl'
20974 h_sysfile='$h_sysfile'
20975 hint='$hint'
20976 hostcat='$hostcat'
20977 html1dir='$html1dir'
20978 html1direxp='$html1direxp'
20979 html3dir='$html3dir'
20980 html3direxp='$html3direxp'
20981 i16size='$i16size'
20982 i16type='$i16type'
20983 i32size='$i32size'
20984 i32type='$i32type'
20985 i64size='$i64size'
20986 i64type='$i64type'
20987 i8size='$i8size'
20988 i8type='$i8type'
20989 i_arpainet='$i_arpainet'
20990 i_bsdioctl='$i_bsdioctl'
20991 i_crypt='$i_crypt'
20992 i_db='$i_db'
20993 i_dbm='$i_dbm'
20994 i_dirent='$i_dirent'
20995 i_dld='$i_dld'
20996 i_dlfcn='$i_dlfcn'
20997 i_fcntl='$i_fcntl'
20998 i_float='$i_float'
20999 i_fp='$i_fp'
21000 i_fp_class='$i_fp_class'
21001 i_gdbm='$i_gdbm'
21002 i_grp='$i_grp'
21003 i_ieeefp='$i_ieeefp'
21004 i_inttypes='$i_inttypes'
21005 i_langinfo='$i_langinfo'
21006 i_libutil='$i_libutil'
21007 i_limits='$i_limits'
21008 i_locale='$i_locale'
21009 i_machcthr='$i_machcthr'
21010 i_malloc='$i_malloc'
21011 i_math='$i_math'
21012 i_memory='$i_memory'
21013 i_mntent='$i_mntent'
21014 i_ndbm='$i_ndbm'
21015 i_netdb='$i_netdb'
21016 i_neterrno='$i_neterrno'
21017 i_netinettcp='$i_netinettcp'
21018 i_niin='$i_niin'
21019 i_poll='$i_poll'
21020 i_prot='$i_prot'
21021 i_pthread='$i_pthread'
21022 i_pwd='$i_pwd'
21023 i_rpcsvcdbm='$i_rpcsvcdbm'
21024 i_sfio='$i_sfio'
21025 i_sgtty='$i_sgtty'
21026 i_shadow='$i_shadow'
21027 i_socks='$i_socks'
21028 i_stdarg='$i_stdarg'
21029 i_stddef='$i_stddef'
21030 i_stdlib='$i_stdlib'
21031 i_string='$i_string'
21032 i_sunmath='$i_sunmath'
21033 i_sysaccess='$i_sysaccess'
21034 i_sysdir='$i_sysdir'
21035 i_sysfile='$i_sysfile'
21036 i_sysfilio='$i_sysfilio'
21037 i_sysin='$i_sysin'
21038 i_sysioctl='$i_sysioctl'
21039 i_syslog='$i_syslog'
21040 i_sysmman='$i_sysmman'
21041 i_sysmode='$i_sysmode'
21042 i_sysmount='$i_sysmount'
21043 i_sysndir='$i_sysndir'
21044 i_sysparam='$i_sysparam'
21045 i_sysresrc='$i_sysresrc'
21046 i_syssecrt='$i_syssecrt'
21047 i_sysselct='$i_sysselct'
21048 i_syssockio='$i_syssockio'
21049 i_sysstat='$i_sysstat'
21050 i_sysstatfs='$i_sysstatfs'
21051 i_sysstatvfs='$i_sysstatvfs'
21052 i_systime='$i_systime'
21053 i_systimek='$i_systimek'
21054 i_systimes='$i_systimes'
21055 i_systypes='$i_systypes'
21056 i_sysuio='$i_sysuio'
21057 i_sysun='$i_sysun'
21058 i_sysutsname='$i_sysutsname'
21059 i_sysvfs='$i_sysvfs'
21060 i_syswait='$i_syswait'
21061 i_termio='$i_termio'
21062 i_termios='$i_termios'
21063 i_time='$i_time'
21064 i_unistd='$i_unistd'
21065 i_ustat='$i_ustat'
21066 i_utime='$i_utime'
21067 i_values='$i_values'
21068 i_varargs='$i_varargs'
21069 i_varhdr='$i_varhdr'
21070 i_vfork='$i_vfork'
21071 ignore_versioned_solibs='$ignore_versioned_solibs'
21072 inc_version_list='$inc_version_list'
21073 inc_version_list_init='$inc_version_list_init'
21074 incpath='$incpath'
21075 inews='$inews'
21076 installarchlib='$installarchlib'
21077 installbin='$installbin'
21078 installhtml1dir='$installhtml1dir'
21079 installhtml3dir='$installhtml3dir'
21080 installman1dir='$installman1dir'
21081 installman3dir='$installman3dir'
21082 installprefix='$installprefix'
21083 installprefixexp='$installprefixexp'
21084 installprivlib='$installprivlib'
21085 installscript='$installscript'
21086 installsitearch='$installsitearch'
21087 installsitebin='$installsitebin'
21088 installsitehtml1dir='$installsitehtml1dir'
21089 installsitehtml3dir='$installsitehtml3dir'
21090 installsitelib='$installsitelib'
21091 installsiteman1dir='$installsiteman1dir'
21092 installsiteman3dir='$installsiteman3dir'
21093 installsitescript='$installsitescript'
21094 installstyle='$installstyle'
21095 installusrbinperl='$installusrbinperl'
21096 installvendorarch='$installvendorarch'
21097 installvendorbin='$installvendorbin'
21098 installvendorhtml1dir='$installvendorhtml1dir'
21099 installvendorhtml3dir='$installvendorhtml3dir'
21100 installvendorlib='$installvendorlib'
21101 installvendorman1dir='$installvendorman1dir'
21102 installvendorman3dir='$installvendorman3dir'
21103 installvendorscript='$installvendorscript'
21104 intsize='$intsize'
21105 issymlink='$issymlink'
21106 ivdformat='$ivdformat'
21107 ivsize='$ivsize'
21108 ivtype='$ivtype'
21109 known_extensions='$known_extensions'
21110 ksh='$ksh'
21111 ld='$ld'
21112 lddlflags='$lddlflags'
21113 ldflags='$ldflags'
21114 ldflags_uselargefiles='$ldflags_uselargefiles'
21115 ldlibpthname='$ldlibpthname'
21116 less='$less'
21117 lib_ext='$lib_ext'
21118 libc='$libc'
21119 libperl='$libperl'
21120 libpth='$libpth'
21121 libs='$libs'
21122 libsdirs='$libsdirs'
21123 libsfiles='$libsfiles'
21124 libsfound='$libsfound'
21125 libspath='$libspath'
21126 libswanted='$libswanted'
21127 libswanted_uselargefiles='$libswanted_uselargefiles'
21128 line='$line'
21129 lint='$lint'
21130 lkflags='$lkflags'
21131 ln='$ln'
21132 lns='$lns'
21133 localtime_r_proto='$localtime_r_proto'
21134 locincpth='$locincpth'
21135 loclibpth='$loclibpth'
21136 longdblsize='$longdblsize'
21137 longlongsize='$longlongsize'
21138 longsize='$longsize'
21139 lp='$lp'
21140 lpr='$lpr'
21141 ls='$ls'
21142 lseeksize='$lseeksize'
21143 lseektype='$lseektype'
21144 mail='$mail'
21145 mailx='$mailx'
21146 make='$make'
21147 make_set_make='$make_set_make'
21148 mallocobj='$mallocobj'
21149 mallocsrc='$mallocsrc'
21150 malloctype='$malloctype'
21151 man1dir='$man1dir'
21152 man1direxp='$man1direxp'
21153 man1ext='$man1ext'
21154 man3dir='$man3dir'
21155 man3direxp='$man3direxp'
21156 man3ext='$man3ext'
21157 mips_type='$mips_type'
21158 mistrustnm='$mistrustnm'
21159 mkdir='$mkdir'
21160 mmaptype='$mmaptype'
21161 modetype='$modetype'
21162 more='$more'
21163 multiarch='$multiarch'
21164 mv='$mv'
21165 myarchname='$myarchname'
21166 mydomain='$mydomain'
21167 myhostname='$myhostname'
21168 myuname='$myuname'
21169 n='$n'
21170 need_va_copy='$need_va_copy'
21171 netdb_hlen_type='$netdb_hlen_type'
21172 netdb_host_type='$netdb_host_type'
21173 netdb_name_type='$netdb_name_type'
21174 netdb_net_type='$netdb_net_type'
21175 nm='$nm'
21176 nm_opt='$nm_opt'
21177 nm_so_opt='$nm_so_opt'
21178 nonxs_ext='$nonxs_ext'
21179 nroff='$nroff'
21180 nvEUformat='$nvEUformat'
21181 nvFUformat='$nvFUformat'
21182 nvGUformat='$nvGUformat'
21183 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21184 nveformat='$nveformat'
21185 nvfformat='$nvfformat'
21186 nvgformat='$nvgformat'
21187 nvsize='$nvsize'
21188 nvtype='$nvtype'
21189 o_nonblock='$o_nonblock'
21190 obj_ext='$obj_ext'
21191 old_pthread_create_joinable='$old_pthread_create_joinable'
21192 optimize='$optimize'
21193 orderlib='$orderlib'
21194 osname='$osname'
21195 osvers='$osvers'
21196 otherlibdirs='$otherlibdirs'
21197 package='$package'
21198 pager='$pager'
21199 passcat='$passcat'
21200 patchlevel='$patchlevel'
21201 path_sep='$path_sep'
21202 perl5='$perl5'
21203 perl='$perl'
21204 perl_patchlevel='$perl_patchlevel'
21205 perladmin='$perladmin'
21206 perllibs='$perllibs'
21207 perlpath='$perlpath'
21208 pg='$pg'
21209 phostname='$phostname'
21210 pidtype='$pidtype'
21211 plibpth='$plibpth'
21212 pm_apiversion='$pm_apiversion'
21213 pmake='$pmake'
21214 pr='$pr'
21215 prefix='$prefix'
21216 prefixexp='$prefixexp'
21217 privlib='$privlib'
21218 privlibexp='$privlibexp'
21219 procselfexe='$procselfexe'
21220 prototype='$prototype'
21221 ptrsize='$ptrsize'
21222 quadkind='$quadkind'
21223 quadtype='$quadtype'
21224 randbits='$randbits'
21225 randfunc='$randfunc'
21226 random_r_proto='$random_r_proto'
21227 randseedtype='$randseedtype'
21228 ranlib='$ranlib'
21229 rd_nodata='$rd_nodata'
21230 readdir64_r_proto='$readdir64_r_proto'
21231 readdir_r_proto='$readdir_r_proto'
21232 revision='$revision'
21233 rm='$rm'
21234 rmail='$rmail'
21235 run='$run'
21236 runnm='$runnm'
21237 sPRIEUldbl='$sPRIEUldbl'
21238 sPRIFUldbl='$sPRIFUldbl'
21239 sPRIGUldbl='$sPRIGUldbl'
21240 sPRIXU64='$sPRIXU64'
21241 sPRId64='$sPRId64'
21242 sPRIeldbl='$sPRIeldbl'
21243 sPRIfldbl='$sPRIfldbl'
21244 sPRIgldbl='$sPRIgldbl'
21245 sPRIi64='$sPRIi64'
21246 sPRIo64='$sPRIo64'
21247 sPRIu64='$sPRIu64'
21248 sPRIx64='$sPRIx64'
21249 sSCNfldbl='$sSCNfldbl'
21250 sched_yield='$sched_yield'
21251 scriptdir='$scriptdir'
21252 scriptdirexp='$scriptdirexp'
21253 sed='$sed'
21254 seedfunc='$seedfunc'
21255 selectminbits='$selectminbits'
21256 selecttype='$selecttype'
21257 sendmail='$sendmail'
21258 setgrent_r_proto='$setgrent_r_proto'
21259 sethostent_r_proto='$sethostent_r_proto'
21260 setlocale_r_proto='$setlocale_r_proto'
21261 setnetent_r_proto='$setnetent_r_proto'
21262 setprotoent_r_proto='$setprotoent_r_proto'
21263 setpwent_r_proto='$setpwent_r_proto'
21264 setservent_r_proto='$setservent_r_proto'
21265 sh='$sh'
21266 shar='$shar'
21267 sharpbang='$sharpbang'
21268 shmattype='$shmattype'
21269 shortsize='$shortsize'
21270 shrpenv='$shrpenv'
21271 shsharp='$shsharp'
21272 sig_count='$sig_count'
21273 sig_name='$sig_name'
21274 sig_name_init='$sig_name_init'
21275 sig_num='$sig_num'
21276 sig_num_init='$sig_num_init'
21277 sig_size='$sig_size'
21278 signal_t='$signal_t'
21279 sitearch='$sitearch'
21280 sitearchexp='$sitearchexp'
21281 sitebin='$sitebin'
21282 sitebinexp='$sitebinexp'
21283 sitehtml1dir='$sitehtml1dir'
21284 sitehtml1direxp='$sitehtml1direxp'
21285 sitehtml3dir='$sitehtml3dir'
21286 sitehtml3direxp='$sitehtml3direxp'
21287 sitelib='$sitelib'
21288 sitelib_stem='$sitelib_stem'
21289 sitelibexp='$sitelibexp'
21290 siteman1dir='$siteman1dir'
21291 siteman1direxp='$siteman1direxp'
21292 siteman3dir='$siteman3dir'
21293 siteman3direxp='$siteman3direxp'
21294 siteprefix='$siteprefix'
21295 siteprefixexp='$siteprefixexp'
21296 sitescript='$sitescript'
21297 sitescriptexp='$sitescriptexp'
21298 sizesize='$sizesize'
21299 sizetype='$sizetype'
21300 sleep='$sleep'
21301 smail='$smail'
21302 so='$so'
21303 sockethdr='$sockethdr'
21304 socketlib='$socketlib'
21305 socksizetype='$socksizetype'
21306 sort='$sort'
21307 spackage='$spackage'
21308 spitshell='$spitshell'
21309 srand48_r_proto='$srand48_r_proto'
21310 srandom_r_proto='$srandom_r_proto'
21311 src='$src'
21312 ssizetype='$ssizetype'
21313 startperl='$startperl'
21314 startsh='$startsh'
21315 static_ext='$static_ext'
21316 stdchar='$stdchar'
21317 stdio_base='$stdio_base'
21318 stdio_bufsiz='$stdio_bufsiz'
21319 stdio_cnt='$stdio_cnt'
21320 stdio_filbuf='$stdio_filbuf'
21321 stdio_ptr='$stdio_ptr'
21322 stdio_stream_array='$stdio_stream_array'
21323 strerror_r_proto='$strerror_r_proto'
21324 strings='$strings'
21325 submit='$submit'
21326 subversion='$subversion'
21327 sysman='$sysman'
21328 tail='$tail'
21329 tar='$tar'
21330 targetarch='$targetarch'
21331 tbl='$tbl'
21332 tee='$tee'
21333 test='$test'
21334 timeincl='$timeincl'
21335 timetype='$timetype'
21336 tmpnam_r_proto='$tmpnam_r_proto'
21337 to='$to'
21338 touch='$touch'
21339 tr='$tr'
21340 trnl='$trnl'
21341 troff='$troff'
21342 ttyname_r_proto='$ttyname_r_proto'
21343 u16size='$u16size'
21344 u16type='$u16type'
21345 u32size='$u32size'
21346 u32type='$u32type'
21347 u64size='$u64size'
21348 u64type='$u64type'
21349 u8size='$u8size'
21350 u8type='$u8type'
21351 uidformat='$uidformat'
21352 uidsign='$uidsign'
21353 uidsize='$uidsize'
21354 uidtype='$uidtype'
21355 uname='$uname'
21356 uniq='$uniq'
21357 uquadtype='$uquadtype'
21358 use5005threads='$use5005threads'
21359 use64bitall='$use64bitall'
21360 use64bitint='$use64bitint'
21361 usecrosscompile='$usecrosscompile'
21362 usedl='$usedl'
21363 usefaststdio='$usefaststdio'
21364 useithreads='$useithreads'
21365 uselargefiles='$uselargefiles'
21366 uselongdouble='$uselongdouble'
21367 usemorebits='$usemorebits'
21368 usemultiplicity='$usemultiplicity'
21369 usemymalloc='$usemymalloc'
21370 usenm='$usenm'
21371 useopcode='$useopcode'
21372 useperlio='$useperlio'
21373 useposix='$useposix'
21374 usereentrant='$usereentrant'
21375 usesfio='$usesfio'
21376 useshrplib='$useshrplib'
21377 usesocks='$usesocks'
21378 usethreads='$usethreads'
21379 usevendorprefix='$usevendorprefix'
21380 usevfork='$usevfork'
21381 usrinc='$usrinc'
21382 uuname='$uuname'
21383 uvXUformat='$uvXUformat'
21384 uvoformat='$uvoformat'
21385 uvsize='$uvsize'
21386 uvtype='$uvtype'
21387 uvuformat='$uvuformat'
21388 uvxformat='$uvxformat'
21389 vendorarch='$vendorarch'
21390 vendorarchexp='$vendorarchexp'
21391 vendorbin='$vendorbin'
21392 vendorbinexp='$vendorbinexp'
21393 vendorhtml1dir='$vendorhtml1dir'
21394 vendorhtml1direxp='$vendorhtml1direxp'
21395 vendorhtml3dir='$vendorhtml3dir'
21396 vendorhtml3direxp='$vendorhtml3direxp'
21397 vendorlib='$vendorlib'
21398 vendorlib_stem='$vendorlib_stem'
21399 vendorlibexp='$vendorlibexp'
21400 vendorman1dir='$vendorman1dir'
21401 vendorman1direxp='$vendorman1direxp'
21402 vendorman3dir='$vendorman3dir'
21403 vendorman3direxp='$vendorman3direxp'
21404 vendorprefix='$vendorprefix'
21405 vendorprefixexp='$vendorprefixexp'
21406 vendorscript='$vendorscript'
21407 vendorscriptexp='$vendorscriptexp'
21408 version='$version'
21409 version_patchlevel_string='$version_patchlevel_string'
21410 versiononly='$versiononly'
21411 vi='$vi'
21412 voidflags='$voidflags'
21413 xlibpth='$xlibpth'
21414 xs_apiversion='$xs_apiversion'
21415 yacc='$yacc'
21416 yaccflags='$yaccflags'
21417 zcat='$zcat'
21418 zip='$zip'
21419 EOT
21420
21421 : Add in command line options if available
21422 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21423
21424 : add special variables
21425 $test -f $src/patchlevel.h && \
21426 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21427 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21428 echo "PERL_CONFIG_SH=true" >>config.sh
21429
21430 : propagate old symbols
21431 if $test -f UU/config.sh; then
21432         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21433         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21434         $sort | $uniq -u >UU/oldsyms
21435         set X `cat UU/oldsyms`
21436         shift
21437         case $# in
21438         0) ;;
21439         *)
21440                 cat <<EOM
21441 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21442 EOM
21443                 echo "# Variables propagated from previous config.sh file." >>config.sh
21444                 for sym in `cat UU/oldsyms`; do
21445                         echo "    Propagating $hint variable "'$'"$sym..."
21446                         eval 'tmp="$'"${sym}"'"'
21447                         echo "$tmp" | \
21448                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21449                 done
21450                 ;;
21451         esac
21452 fi
21453
21454 : Finish up by extracting the .SH files
21455 case "$alldone" in
21456 exit)
21457         $rm -rf UU
21458         echo "Extraction done."
21459         exit 0
21460         ;;
21461 cont)
21462         ;;
21463 '')
21464         dflt=''
21465         nostick=true
21466         $cat <<EOM
21467
21468 If you'd like to make any changes to the config.sh file before I begin
21469 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21470
21471 EOM
21472         rp="Press return or use a shell escape to edit config.sh:"
21473         . UU/myread
21474         nostick=''
21475         case "$ans" in
21476         '') ;;
21477         *) : in case they cannot read
21478                 sh 1>&4 -c "$ans";;
21479         esac
21480         ;;
21481 esac
21482
21483 : if this fails, just run all the .SH files by hand
21484 . ./config.sh
21485
21486 echo " "
21487 exec 1>&4
21488 pwd=`pwd`
21489 . ./UU/extract
21490 cd "$pwd"
21491
21492 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21493         dflt=y
21494         case "$silent" in
21495         true) ;;
21496         *)
21497                 $cat <<EOM
21498
21499 Now you need to generate make dependencies by running "$make depend".
21500 You might prefer to run it in background: "$make depend > makedepend.out &"
21501 It can take a while, so you might not want to run it right now.
21502
21503 EOM
21504                 ;;
21505         esac
21506         rp="Run $make depend now?"
21507         . UU/myread
21508         case "$ans" in
21509         y*)
21510                 $make depend && echo "Now you must run '$make'."
21511                 ;;
21512         *)
21513                 echo "You must run '$make depend' then '$make'."
21514                 ;;
21515         esac
21516 elif test -f [Mm]akefile; then
21517         echo " "
21518         echo "Now you must run a $make."
21519 else
21520         echo "Configure done."
21521 fi
21522
21523 if $test -f Policy.sh; then
21524     $cat <<EOM
21525
21526 If you compile $package on a different machine or from a different object
21527 directory, copy the Policy.sh file from this object directory to the
21528 new one before you run Configure -- this will help you with most of
21529 the policy defaults.
21530
21531 EOM
21532 fi
21533 if $test -f config.msg; then
21534     echo "Hmm.  I also noted the following information while running:"
21535     echo " "
21536     $cat config.msg >&4
21537     $rm -f config.msg
21538 fi
21539 $rm -f kit*isdone ark*isdone
21540 $rm -rf UU
21541
21542 : End of Configure
21543