This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
add test for Change 22194:
[perl5.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Mon Jan 19 17:27:25 MET 2004 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ c2$$
49
50 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
51         cat >&4 <<EOF
52 ***
53 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
54 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
55 *** Please read the README.plan9 for further instructions.
56 *** Cannot continue, aborting.
57 ***
58 EOF
59         exit 1
60 fi
61
62 : compute my invocation name
63 me=$0
64 case "$0" in
65 */*)
66         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
67         test "$me" || me=$0
68         ;;
69 esac
70
71 : Proper separator for the PATH environment variable
72 p_=:
73 : On OS/2 this directory should exist if this is not floppy only system :-]
74 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
75     if test -n "$OS2_SHELL"; then
76                 p_=\;
77                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
78                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
79                 is_os2=yes
80         elif test -n "$DJGPP"; then
81                 case "X${MACHTYPE:-nonesuchmach}" in
82                 *cygwin) ;;
83                 *) p_=\; ;;
84                 esac
85         fi
86 fi
87
88 : Proper PATH setting
89 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
90 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
91 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
92 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
93 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
94 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
95 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
96 paths="$paths /sbin /usr/sbin /usr/libexec"
97 paths="$paths /system/gnu_library/bin"
98
99 for p in $paths
100 do
101         case "$p_$PATH$p_" in
102         *$p_$p$p_*) ;;
103         *) test -d $p && PATH=$PATH$p_$p ;;
104         esac
105 done
106
107 PATH=.$p_$PATH
108 export PATH
109
110 : shall we be using ksh?
111 inksh=''
112 needksh=''
113 avoidksh=''
114 newsh=/bin/ksh
115 changesh=''
116 if (PATH=.; alias -x) >/dev/null 2>&1; then
117                 inksh=true
118 fi
119 if test -f /hp-ux -a -f /bin/ksh; then
120         needksh='to avoid sh bug in "here document" expansion'
121 fi
122 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
123         if test X`/usr/bin/uname -v` = X4; then
124                 avoidksh="to avoid AIX 4's /bin/sh"
125                 newsh=/usr/bin/bsh
126         fi
127 fi
128 if test -f /osf_boot -a -f /usr/sbin/setld; then
129         if test X`/usr/bin/uname -s` = XOSF1; then
130                 avoidksh="to avoid Digital UNIX' ksh"
131                 newsh=/bin/sh
132                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
133         fi
134 fi
135 case "$inksh/$needksh" in
136 /[a-z]*)
137                 ENV=''
138                 changesh=true
139                 reason="$needksh"
140         ;;
141 esac
142 case "$inksh/$avoidksh" in
143 true/[a-z]*)
144         changesh=true
145         reason="$avoidksh"
146         ;;
147 esac
148 case "$inksh/$needksh-$avoidksh-" in
149 true/--)
150                 cat <<EOM
151 (I see you are using the Korn shell.  Some ksh's blow up on $me,
152 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
153 EOM
154         ;;
155 esac
156 case "$changesh" in
157 true)
158         export newsh
159         echo "(Feeding myself to $newsh $reason.)"
160         case "$0" in
161         Configure|*/Configure) exec $newsh $0 "$@";;
162         *) exec $newsh Configure "$@";;
163         esac
164         ;;
165 esac
166
167 : if needed set CDPATH to a harmless value that is not chatty
168 : avoid bash 2.02 problems with empty CDPATH.
169 case "$CDPATH" in
170 '')     ;;
171 *)      case "$SHELL" in
172         *bash*) CDPATH='.' ;;
173         *)              CDPATH='' ;;
174         esac
175         ;;
176 esac
177 : Configure runs within the UU subdirectory
178 test -d UU || mkdir UU
179 cd UU && rm -f ./*
180
181 ccname=''
182 ccversion=''
183 ccsymbols=''
184 cppccsymbols=''
185 cppsymbols=''
186 from=''
187 run=''
188 targetarch=''
189 to=''
190 usecrosscompile=''
191 mistrustnm=''
192 perllibs=''
193 dynamic_ext=''
194 extensions=''
195 known_extensions=''
196 nonxs_ext=''
197 static_ext=''
198 useopcode=''
199 useposix=''
200 extras=''
201 d_bsd=''
202 d_eunice=''
203 d_xenix=''
204 eunicefix=''
205 Mcc=''
206 ar=''
207 awk=''
208 bash=''
209 bison=''
210 byacc=''
211 cat=''
212 chgrp=''
213 chmod=''
214 chown=''
215 comm=''
216 compress=''
217 cp=''
218 cpio=''
219 cpp=''
220 csh=''
221 date=''
222 echo=''
223 egrep=''
224 emacs=''
225 expr=''
226 find=''
227 flex=''
228 gmake=''
229 grep=''
230 gzip=''
231 inews=''
232 ksh=''
233 less=''
234 line=''
235 lint=''
236 ln=''
237 lp=''
238 lpr=''
239 ls=''
240 mail=''
241 mailx=''
242 make=''
243 mkdir=''
244 more=''
245 mv=''
246 nm=''
247 nroff=''
248 perl=''
249 pg=''
250 pmake=''
251 pr=''
252 rm=''
253 rmail=''
254 sed=''
255 sendmail=''
256 shar=''
257 sleep=''
258 smail=''
259 sort=''
260 submit=''
261 tail=''
262 tar=''
263 tbl=''
264 tee=''
265 test=''
266 touch=''
267 tr=''
268 troff=''
269 uname=''
270 uniq=''
271 uuname=''
272 vi=''
273 zcat=''
274 zip=''
275 full_ar=''
276 full_sed=''
277 libswanted=''
278 hint=''
279 myuname=''
280 osname=''
281 osvers=''
282 Author=''
283 Date=''
284 Header=''
285 Id=''
286 Locker=''
287 Log=''
288 RCSfile=''
289 Revision=''
290 Source=''
291 State=''
292 _a=''
293 _exe=''
294 _o=''
295 archobjs=''
296 exe_ext=''
297 firstmakefile=''
298 lib_ext=''
299 obj_ext=''
300 path_sep=''
301 afs=''
302 afsroot=''
303 alignbytes=''
304 ansi2knr=''
305 archlib=''
306 archlibexp=''
307 d_archlib=''
308 installarchlib=''
309 archname=''
310 myarchname=''
311 d_atolf=''
312 d_atoll=''
313 baserev=''
314 bin=''
315 binexp=''
316 installbin=''
317 byteorder=''
318 cc=''
319 ccflags=''
320 cppflags=''
321 ldflags=''
322 lkflags=''
323 locincpth=''
324 optimize=''
325 cf_email=''
326 cf_by=''
327 cf_time=''
328 charsize=''
329 contains=''
330 cpp_stuff=''
331 cpplast=''
332 cppminus=''
333 cpprun=''
334 cppstdin=''
335 d__fwalk=''
336 d_access=''
337 d_accessx=''
338 d_aintl=''
339 d_alarm=''
340 asctime_r_proto=''
341 d_asctime_r=''
342 d_attribut=''
343 d_bcmp=''
344 d_bcopy=''
345 d_bzero=''
346 d_casti32=''
347 castflags=''
348 d_castneg=''
349 d_chown=''
350 d_chroot=''
351 d_chsize=''
352 d_class=''
353 d_closedir=''
354 d_void_closedir=''
355 d_cmsghdr_s=''
356 d_const=''
357 d_copysignl=''
358 cryptlib=''
359 d_crypt=''
360 crypt_r_proto=''
361 d_crypt_r=''
362 d_csh=''
363 full_csh=''
364 ctermid_r_proto=''
365 d_ctermid_r=''
366 ctime_r_proto=''
367 d_ctime_r=''
368 d_cuserid=''
369 d_dbl_dig=''
370 d_dbminitproto=''
371 d_difftime=''
372 d_dirfd=''
373 d_dlerror=''
374 d_dlopen=''
375 d_dlsymun=''
376 d_dosuid=''
377 d_suidsafe=''
378 d_drand48_r=''
379 drand48_r_proto=''
380 d_drand48proto=''
381 d_dup2=''
382 d_eaccess=''
383 d_endgrent=''
384 d_endgrent_r=''
385 endgrent_r_proto=''
386 d_endhent=''
387 d_endhostent_r=''
388 endhostent_r_proto=''
389 d_endnent=''
390 d_endnetent_r=''
391 endnetent_r_proto=''
392 d_endpent=''
393 d_endprotoent_r=''
394 endprotoent_r_proto=''
395 d_endpwent=''
396 d_endpwent_r=''
397 endpwent_r_proto=''
398 d_endsent=''
399 d_endservent_r=''
400 endservent_r_proto=''
401 d_faststdio=''
402 d_fchdir=''
403 d_fchmod=''
404 d_fchown=''
405 d_fcntl=''
406 d_fcntl_can_lock=''
407 d_fd_macros=''
408 d_fd_set=''
409 d_fds_bits=''
410 d_fgetpos=''
411 d_finite=''
412 d_finitel=''
413 d_flexfnam=''
414 d_flock=''
415 d_flockproto=''
416 d_fork=''
417 d_fp_class=''
418 d_fpclass=''
419 d_fpclassify=''
420 d_fpclassl=''
421 d_fpos64_t=''
422 d_frexpl=''
423 d_fs_data_s=''
424 d_fseeko=''
425 d_fsetpos=''
426 d_fstatfs=''
427 d_fsync=''
428 d_ftello=''
429 d_ftime=''
430 d_gettimeod=''
431 d_Gconvert=''
432 d_getcwd=''
433 d_getespwnam=''
434 d_getfsstat=''
435 d_getgrent=''
436 d_getgrent_r=''
437 getgrent_r_proto=''
438 d_getgrgid_r=''
439 getgrgid_r_proto=''
440 d_getgrnam_r=''
441 getgrnam_r_proto=''
442 d_getgrps=''
443 d_gethbyaddr=''
444 d_gethbyname=''
445 d_gethent=''
446 aphostname=''
447 d_gethname=''
448 d_phostname=''
449 d_uname=''
450 d_gethostbyaddr_r=''
451 gethostbyaddr_r_proto=''
452 d_gethostbyname_r=''
453 gethostbyname_r_proto=''
454 d_gethostent_r=''
455 gethostent_r_proto=''
456 d_gethostprotos=''
457 d_getitimer=''
458 d_getlogin=''
459 d_getlogin_r=''
460 getlogin_r_proto=''
461 d_getmnt=''
462 d_getmntent=''
463 d_getnbyaddr=''
464 d_getnbyname=''
465 d_getnent=''
466 d_getnetbyaddr_r=''
467 getnetbyaddr_r_proto=''
468 d_getnetbyname_r=''
469 getnetbyname_r_proto=''
470 d_getnetent_r=''
471 getnetent_r_proto=''
472 d_getnetprotos=''
473 d_getpagsz=''
474 d_getpent=''
475 d_getpgid=''
476 d_getpgrp2=''
477 d_bsdgetpgrp=''
478 d_getpgrp=''
479 d_getppid=''
480 d_getprior=''
481 d_getpbyname=''
482 d_getpbynumber=''
483 d_getprotobyname_r=''
484 getprotobyname_r_proto=''
485 d_getprotobynumber_r=''
486 getprotobynumber_r_proto=''
487 d_getprotoent_r=''
488 getprotoent_r_proto=''
489 d_getprotoprotos=''
490 d_getprpwnam=''
491 d_getpwent=''
492 d_getpwent_r=''
493 getpwent_r_proto=''
494 d_getpwnam_r=''
495 getpwnam_r_proto=''
496 d_getpwuid_r=''
497 getpwuid_r_proto=''
498 d_getsent=''
499 d_getservbyname_r=''
500 getservbyname_r_proto=''
501 d_getservbyport_r=''
502 getservbyport_r_proto=''
503 d_getservent_r=''
504 getservent_r_proto=''
505 d_getservprotos=''
506 d_getspnam=''
507 d_getspnam_r=''
508 getspnam_r_proto=''
509 d_getsbyname=''
510 d_getsbyport=''
511 d_gmtime_r=''
512 gmtime_r_proto=''
513 d_gnulibc=''
514 gnulibc_version=''
515 d_hasmntopt=''
516 d_htonl=''
517 d_ilogbl=''
518 d_inetaton=''
519 d_int64_t=''
520 d_isascii=''
521 d_isfinite=''
522 d_isinf=''
523 d_isnan=''
524 d_isnanl=''
525 d_killpg=''
526 d_lchown=''
527 d_ldbl_dig=''
528 d_link=''
529 d_localtime_r=''
530 localtime_r_proto=''
531 d_locconv=''
532 d_lockf=''
533 d_longdbl=''
534 longdblsize=''
535 d_longlong=''
536 longlongsize=''
537 d_lseekproto=''
538 d_lstat=''
539 d_madvise=''
540 d_mblen=''
541 d_mbstowcs=''
542 d_mbtowc=''
543 d_memchr=''
544 d_memcmp=''
545 d_memcpy=''
546 d_memmove=''
547 d_memset=''
548 d_mkdir=''
549 d_mkdtemp=''
550 d_mkfifo=''
551 d_mkstemp=''
552 d_mkstemps=''
553 d_mktime=''
554 d_mmap=''
555 mmaptype=''
556 d_modfl=''
557 d_modfl_pow32_bug=''
558 d_modflproto=''
559 d_mprotect=''
560 d_msg=''
561 d_msgctl=''
562 d_msgget=''
563 d_msghdr_s=''
564 d_msgrcv=''
565 d_msgsnd=''
566 d_msync=''
567 d_munmap=''
568 d_nice=''
569 d_nl_langinfo=''
570 d_off64_t=''
571 d_open3=''
572 d_fpathconf=''
573 d_pathconf=''
574 d_pause=''
575 d_pipe=''
576 d_poll=''
577 d_portable=''
578 d_procselfexe=''
579 procselfexe=''
580 d_old_pthread_create_joinable=''
581 old_pthread_create_joinable=''
582 d_pthread_atfork=''
583 d_pthread_attr_setscope=''
584 d_pthread_yield=''
585 d_sched_yield=''
586 sched_yield=''
587 d_qgcvt=''
588 d_random_r=''
589 random_r_proto=''
590 d_readdir64_r=''
591 readdir64_r_proto=''
592 d_readdir=''
593 d_rewinddir=''
594 d_seekdir=''
595 d_telldir=''
596 d_readdir_r=''
597 readdir_r_proto=''
598 d_readlink=''
599 d_readv=''
600 d_recvmsg=''
601 d_rename=''
602 d_rmdir=''
603 d_safebcpy=''
604 d_safemcpy=''
605 d_sanemcmp=''
606 d_sbrkproto=''
607 d_scalbnl=''
608 d_select=''
609 d_sem=''
610 d_semctl=''
611 d_semget=''
612 d_semop=''
613 d_sendmsg=''
614 d_setegid=''
615 d_seteuid=''
616 d_setgrent=''
617 d_setgrent_r=''
618 setgrent_r_proto=''
619 d_setgrps=''
620 d_sethent=''
621 d_sethostent_r=''
622 sethostent_r_proto=''
623 d_setitimer=''
624 d_setlinebuf=''
625 d_setlocale=''
626 d_setlocale_r=''
627 setlocale_r_proto=''
628 d_setnent=''
629 d_setnetent_r=''
630 setnetent_r_proto=''
631 d_setpent=''
632 d_setpgid=''
633 d_setpgrp2=''
634 d_bsdsetpgrp=''
635 d_setpgrp=''
636 d_setprior=''
637 d_setproctitle=''
638 d_setprotoent_r=''
639 setprotoent_r_proto=''
640 d_setpwent=''
641 d_setpwent_r=''
642 setpwent_r_proto=''
643 d_setregid=''
644 d_setresgid=''
645 d_setresuid=''
646 d_setreuid=''
647 d_setrgid=''
648 d_setruid=''
649 d_setsent=''
650 d_setservent_r=''
651 setservent_r_proto=''
652 d_setsid=''
653 d_setvbuf=''
654 d_sfio=''
655 usesfio=''
656 d_shm=''
657 d_shmat=''
658 d_shmatprototype=''
659 shmattype=''
660 d_shmctl=''
661 d_shmdt=''
662 d_shmget=''
663 d_sigaction=''
664 d_sigprocmask=''
665 d_sigsetjmp=''
666 d_sockatmark=''
667 d_sockatmarkproto=''
668 d_msg_ctrunc=''
669 d_msg_dontroute=''
670 d_msg_oob=''
671 d_msg_peek=''
672 d_msg_proxy=''
673 d_oldsock=''
674 d_scm_rights=''
675 d_socket=''
676 d_sockpair=''
677 sockethdr=''
678 socketlib=''
679 d_socklen_t=''
680 d_socks5_init=''
681 d_sqrtl=''
682 d_srand48_r=''
683 srand48_r_proto=''
684 d_srandom_r=''
685 srandom_r_proto=''
686 d_sresgproto=''
687 d_sresuproto=''
688 d_statblks=''
689 d_statfs_f_flags=''
690 d_statfs_s=''
691 d_fstatvfs=''
692 d_statvfs=''
693 d_stdio_cnt_lval=''
694 d_stdio_ptr_lval=''
695 d_stdio_ptr_lval_nochange_cnt=''
696 d_stdio_ptr_lval_sets_cnt=''
697 d_stdiobase=''
698 d_stdstdio=''
699 stdio_base=''
700 stdio_bufsiz=''
701 stdio_cnt=''
702 stdio_filbuf=''
703 stdio_ptr=''
704 d_index=''
705 d_strchr=''
706 d_strcoll=''
707 d_strctcpy=''
708 d_strerrm=''
709 d_strerror=''
710 d_sysernlst=''
711 d_syserrlst=''
712 d_strerror_r=''
713 strerror_r_proto=''
714 d_strftime=''
715 d_strtod=''
716 d_strtol=''
717 d_strtold=''
718 d_strtoll=''
719 d_strtoq=''
720 d_strtoul=''
721 d_strtoull=''
722 d_strtouq=''
723 d_strxfrm=''
724 d_symlink=''
725 d_syscall=''
726 d_syscallproto=''
727 d_sysconf=''
728 d_system=''
729 d_tcgetpgrp=''
730 d_tcsetpgrp=''
731 d_telldirproto=''
732 d_time=''
733 timetype=''
734 clocktype=''
735 d_times=''
736 d_tmpnam_r=''
737 tmpnam_r_proto=''
738 d_truncate=''
739 d_ttyname_r=''
740 ttyname_r_proto=''
741 d_tzname=''
742 d_u32align=''
743 d_ualarm=''
744 d_umask=''
745 d_semctl_semid_ds=''
746 d_semctl_semun=''
747 d_union_semun=''
748 d_unordered=''
749 d_usleep=''
750 d_usleepproto=''
751 d_ustat=''
752 d_vfork=''
753 usevfork=''
754 d_voidsig=''
755 signal_t=''
756 d_volatile=''
757 d_charvspr=''
758 d_vprintf=''
759 d_wait4=''
760 d_waitpid=''
761 d_wcstombs=''
762 d_wctomb=''
763 d_writev=''
764 dlext=''
765 cccdlflags=''
766 ccdlflags=''
767 dlsrc=''
768 ld=''
769 lddlflags=''
770 usedl=''
771 doublesize=''
772 ebcdic=''
773 fflushNULL=''
774 fflushall=''
775 fpossize=''
776 fpostype=''
777 gccansipedantic=''
778 gccosandvers=''
779 gccversion=''
780 gidformat=''
781 gidsign=''
782 gidsize=''
783 gidtype=''
784 groupstype=''
785 h_fcntl=''
786 h_sysfile=''
787 html1dir=''
788 html1direxp=''
789 installhtml1dir=''
790 html3dir=''
791 html3direxp=''
792 installhtml3dir=''
793 i_arpainet=''
794 i_crypt=''
795 db_hashtype=''
796 db_prefixtype=''
797 db_version_major=''
798 db_version_minor=''
799 db_version_patch=''
800 i_db=''
801 i_dbm=''
802 i_rpcsvcdbm=''
803 d_dirnamlen=''
804 direntrytype=''
805 i_dirent=''
806 i_dld=''
807 i_dlfcn=''
808 i_fcntl=''
809 i_float=''
810 i_fp=''
811 i_fp_class=''
812 i_gdbm=''
813 d_grpasswd=''
814 i_grp=''
815 i_ieeefp=''
816 i_inttypes=''
817 i_langinfo=''
818 i_libutil=''
819 i_limits=''
820 i_locale=''
821 i_machcthr=''
822 i_malloc=''
823 i_math=''
824 i_memory=''
825 i_mntent=''
826 i_ndbm=''
827 i_netdb=''
828 i_neterrno=''
829 i_netinettcp=''
830 i_niin=''
831 i_sysin=''
832 i_poll=''
833 i_prot=''
834 i_pthread=''
835 d_pwage=''
836 d_pwchange=''
837 d_pwclass=''
838 d_pwcomment=''
839 d_pwexpire=''
840 d_pwgecos=''
841 d_pwpasswd=''
842 d_pwquota=''
843 i_pwd=''
844 i_sfio=''
845 i_shadow=''
846 i_socks=''
847 i_stddef=''
848 i_stdlib=''
849 i_string=''
850 strings=''
851 i_sunmath=''
852 i_sysaccess=''
853 i_sysdir=''
854 i_sysfile=''
855 d_voidtty=''
856 i_bsdioctl=''
857 i_sysfilio=''
858 i_sysioctl=''
859 i_syssockio=''
860 i_syslog=''
861 i_sysmman=''
862 i_sysmode=''
863 i_sysmount=''
864 i_sysndir=''
865 i_sysparam=''
866 i_sysresrc=''
867 i_syssecrt=''
868 i_sysselct=''
869 i_sysstat=''
870 i_sysstatfs=''
871 i_sysstatvfs=''
872 i_systimes=''
873 i_systypes=''
874 i_sysuio=''
875 i_sysun=''
876 i_sysutsname=''
877 i_sysvfs=''
878 i_syswait=''
879 i_sgtty=''
880 i_termio=''
881 i_termios=''
882 d_tm_tm_gmtoff=''
883 d_tm_tm_zone=''
884 i_systime=''
885 i_systimek=''
886 i_time=''
887 timeincl=''
888 i_unistd=''
889 i_ustat=''
890 i_utime=''
891 i_values=''
892 i_stdarg=''
893 i_varargs=''
894 i_varhdr=''
895 i_vfork=''
896 inc_version_list=''
897 inc_version_list_init=''
898 installprefix=''
899 installprefixexp=''
900 installstyle=''
901 installusrbinperl=''
902 intsize=''
903 longsize=''
904 shortsize=''
905 issymlink=''
906 libc=''
907 ldlibpthname=''
908 libperl=''
909 shrpenv=''
910 useshrplib=''
911 glibpth=''
912 libpth=''
913 loclibpth=''
914 plibpth=''
915 xlibpth=''
916 ignore_versioned_solibs=''
917 libs=''
918 libsdirs=''
919 libsfiles=''
920 libsfound=''
921 libspath=''
922 lns=''
923 d_PRIEUldbl=''
924 d_PRIFUldbl=''
925 d_PRIGUldbl=''
926 d_PRIeldbl=''
927 d_PRIfldbl=''
928 d_PRIgldbl=''
929 d_SCNfldbl=''
930 sPRIEUldbl=''
931 sPRIFUldbl=''
932 sPRIGUldbl=''
933 sPRIeldbl=''
934 sPRIfldbl=''
935 sPRIgldbl=''
936 sSCNfldbl=''
937 lseeksize=''
938 lseektype=''
939 make_set_make=''
940 d_mymalloc=''
941 freetype=''
942 mallocobj=''
943 mallocsrc=''
944 malloctype=''
945 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 case "$cf_by" in
3462 "")
3463         cf_by=`(logname) 2>/dev/null`
3464         case "$cf_by" in
3465         "")
3466                 cf_by=`(whoami) 2>/dev/null`
3467                 case "$cf_by" in
3468                 "") cf_by=unknown ;;
3469                 esac ;;
3470         esac ;;
3471 esac
3472
3473 : set up the script used to warn in case of inconsistency
3474 cat <<EOS >whoa
3475 $startsh
3476 EOS
3477 cat <<'EOSC' >>whoa
3478 dflt=y
3479 echo " "
3480 echo "*** WHOA THERE!!! ***" >&4
3481 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3482 rp="    Keep the $hint value?"
3483 . ./myread
3484 case "$ans" in
3485 y) td=$was; tu=$was;;
3486 esac
3487 EOSC
3488
3489 : function used to set $1 to $val
3490 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3491 case "$val$was" in
3492 $define$undef) . ./whoa; eval "$var=\$td";;
3493 $undef$define) . ./whoa; eval "$var=\$tu";;
3494 *) eval "$var=$val";;
3495 esac'
3496
3497 case "$usesocks" in
3498 $define|true|[yY]*)     dflt='y';;
3499 *) dflt='n';;
3500 esac
3501 cat <<EOM
3502
3503 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3504 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3505 to use the PerlIO abstraction layer, this will be implicitly selected.
3506
3507 If this doesn't make any sense to you, just accept the default '$dflt'.
3508 EOM
3509 rp='Build Perl for SOCKS?'
3510 . ./myread
3511 case "$ans" in
3512 y|Y)    val="$define" ;;     
3513 *)      val="$undef" ;;
3514 esac
3515 set usesocks
3516 eval $setvar
3517
3518 case "$usesocks" in
3519 $define|true|[yY]*) useperlio="$define";;
3520 esac
3521
3522 case "$useperlio" in
3523 $define|true|[yY]*|'')  dflt='y';;
3524 *) dflt='n';;
3525 esac
3526 cat <<EOM
3527
3528 Previous version of $package used the standard IO mechanisms as
3529 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
3530 alternate IO mechanisms via the PerlIO abstraction layer, but the
3531 stdio mechanism is still available if needed.  The abstraction layer
3532 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3533 Using PerlIO with sfio may cause problems with some extension modules.
3534
3535 If this doesn't make any sense to you, just accept the default '$dflt'.
3536 EOM
3537 rp='Use the PerlIO abstraction layer?'
3538 . ./myread
3539 case "$ans" in
3540 y|Y) 
3541         val="$define"
3542         ;;
3543 *)      
3544         echo "Ok, doing things the stdio way."
3545         val="$undef"
3546         ;;
3547 esac
3548 set useperlio
3549 eval $setvar 
3550
3551 case "$usesocks" in
3552 $define|true|[yY]*)
3553         case "$useperlio" in
3554         $define|true|[yY]*) ;;
3555         *)      cat >&4 <<EOM
3556
3557 You are using the SOCKS proxy protocol library which means that you
3558 should also use the PerlIO layer.  You may be headed for trouble.
3559
3560 EOM
3561                 ;;
3562         esac
3563         ;;
3564 esac
3565
3566         
3567 case "$usethreads" in
3568 $define|true|[yY]*)     dflt='y';;
3569 *)     # Catch case where user specified ithreads or 5005threads but
3570        # forgot -Dusethreads (A.D. 4/2002)
3571        case "$useithreads$use5005threads" in
3572        *$define*)      
3573                 case "$useperlio" in
3574                 "$define")      dflt='y' ;;
3575                 *)              dflt='n' ;;
3576                 esac
3577                 ;;
3578        *)       dflt='n';;
3579        esac
3580        ;;
3581 esac
3582 cat <<EOM
3583
3584 Perl can be built to take advantage of threads on some systems.
3585 To do so, Configure can be run with -Dusethreads.
3586
3587 Note that Perl built with threading support runs slightly slower
3588 and uses more memory than plain Perl. The current implementation
3589 is believed to be stable, but it is fairly new, and so should be
3590 treated with caution.
3591
3592 If this doesn't make any sense to you, just accept the default '$dflt'.
3593 EOM
3594 rp='Build a threading Perl?'
3595 . ./myread
3596 case "$ans" in
3597 y|Y)    val="$define" ;;
3598 *)      val="$undef" ;;
3599 esac
3600 set usethreads
3601 eval $setvar
3602
3603 case "$usethreads" in
3604 $define)
3605         $cat <<EOM
3606
3607 Since release 5.6, Perl has had two different threading implementations,
3608 the newer interpreter-based version (ithreads) with one interpreter per
3609 thread, and the older 5.005 version (5005threads).
3610 The 5005threads version is effectively unmaintained and will probably be
3611 removed in Perl 5.10, so there should be no need to build a Perl using it
3612 unless needed for backwards compatibility with some existing 5.005threads
3613 code.
3614
3615 EOM
3616         : Default to ithreads unless overridden on command line or with
3617         : old config.sh
3618         dflt='y'
3619         case "$use5005threads" in
3620                 $define|true|[yY]*) dflt='n';;
3621         esac
3622         case "$useithreads" in
3623                 $undef|false|[nN]*) dflt='n';;
3624         esac
3625         rp='Use the newer interpreter-based ithreads?'
3626         . ./myread
3627         case "$ans" in
3628         y|Y)    val="$define" ;;
3629         *)      val="$undef" ;;
3630         esac
3631         set useithreads
3632         eval $setvar
3633         : Now set use5005threads to the opposite value.
3634         case "$useithreads" in
3635         $define) val="$undef" ;;
3636         *) val="$define" ;;
3637         esac
3638         set use5005threads
3639         eval $setvar
3640         ;;
3641 *)
3642         useithreads="$undef"
3643         use5005threads="$undef"
3644         ;;
3645 esac
3646
3647 case "$useithreads$use5005threads" in
3648 "$define$define")
3649         $cat >&4 <<EOM
3650
3651 You cannot have both the ithreads and the 5.005 threads enabled
3652 at the same time.  Disabling the 5.005 threads since they are
3653 much less stable than the ithreads.
3654
3655 EOM
3656         use5005threads="$undef"
3657         ;;
3658 esac
3659
3660 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3661         cat >&4 <<EOF
3662 ***
3663 *** To build with ithreads you must also use the PerlIO layer.
3664 *** Cannot continue, aborting.
3665 ***
3666 EOF
3667         exit 1
3668 fi
3669
3670 case "$d_oldpthreads" in
3671 '')     : Configure tests would be welcome here.  For now, assume undef.
3672         val="$undef" ;;
3673 *)      val="$d_oldpthreads" ;;
3674 esac
3675 set d_oldpthreads
3676 eval $setvar
3677
3678
3679 : Look for a hint-file generated 'call-back-unit'.  If the
3680 : user has specified that a threading perl is to be built,
3681 : we may need to set or change some other defaults.
3682 if $test -f usethreads.cbu; then
3683     echo "Your platform has some specific hints regarding threaded builds, using them..."
3684     . ./usethreads.cbu
3685 else
3686     case "$usethreads" in
3687         "$define"|true|[yY]*)
3688                 $cat <<EOM
3689 (Your platform does not have any specific hints for threaded builds.
3690  Assuming POSIX threads, then.)
3691 EOM
3692         ;;
3693     esac
3694 fi
3695
3696 cat <<EOM
3697
3698 Perl can be built so that multiple Perl interpreters can coexist
3699 within the same Perl executable.
3700 EOM
3701
3702 case "$useithreads" in
3703 $define)
3704         cat <<EOM
3705 This multiple interpreter support is required for interpreter-based threads.
3706 EOM
3707         val="$define"
3708         ;;
3709 *)      case "$usemultiplicity" in
3710         $define|true|[yY]*)     dflt='y';;
3711         *) dflt='n';;
3712         esac
3713         echo " "
3714         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3715         rp='Build Perl for multiplicity?'
3716         . ./myread
3717         case "$ans" in
3718         y|Y)    val="$define" ;;
3719         *)      val="$undef" ;;
3720         esac
3721         ;;
3722 esac
3723 set usemultiplicity
3724 eval $setvar
3725
3726
3727 case "$usemorebits" in
3728 "$define"|true|[yY]*)
3729         use64bitint="$define"
3730         uselongdouble="$define"
3731         usemorebits="$define"
3732         ;;
3733 *)      usemorebits="$undef"
3734         ;;
3735 esac
3736
3737 : make some quick guesses about what we are up against
3738 echo " "
3739 $echo $n "Hmm...  $c"
3740 echo exit 1 >bsd
3741 echo exit 1 >usg
3742 echo exit 1 >v7
3743 echo exit 1 >osf1
3744 echo exit 1 >eunice
3745 echo exit 1 >xenix
3746 echo exit 1 >venix
3747 echo exit 1 >os2
3748 d_bsd="$undef"
3749 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3750 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3751 then
3752         echo "Looks kind of like an OSF/1 system, but we'll see..."
3753         echo exit 0 >osf1
3754 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3755         xxx=`./loc addbib blurfl $pth`
3756         if $test -f $xxx; then
3757         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3758                 echo exit 0 >bsd
3759                 echo exit 0 >usg
3760         else
3761                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3762                         echo "Looks kind of like an extended USG system, but we'll see..."
3763                 else
3764                         echo "Looks kind of like a USG system, but we'll see..."
3765                 fi
3766                 echo exit 0 >usg
3767         fi
3768 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3769         echo "Looks kind of like a BSD system, but we'll see..."
3770         d_bsd="$define"
3771         echo exit 0 >bsd
3772 else
3773         echo "Looks kind of like a Version 7 system, but we'll see..."
3774         echo exit 0 >v7
3775 fi
3776 case "$eunicefix" in
3777 *unixtovms*)
3778         $cat <<'EOI'
3779 There is, however, a strange, musty smell in the air that reminds me of
3780 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3781 EOI
3782         echo exit 0 >eunice
3783         d_eunice="$define"
3784 : it so happens the Eunice I know will not run shell scripts in Unix format
3785         ;;
3786 *)
3787         echo " "
3788         echo "Congratulations.  You aren't running Eunice."
3789         d_eunice="$undef"
3790         ;;
3791 esac
3792 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3793 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3794 : semicolon as a patch separator
3795 case "$p_" in
3796 :) ;;
3797 *)
3798         $cat <<'EOI'
3799 I have the feeling something is not exactly right, however...don't tell me...
3800 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3801 (Or you may be running DOS with DJGPP.)
3802 EOI
3803         echo exit 0 >os2
3804         ;;
3805 esac
3806 if test -f /xenix; then
3807         echo "Actually, this looks more like a XENIX system..."
3808         echo exit 0 >xenix
3809         d_xenix="$define"
3810 else
3811         echo " "
3812         echo "It's not Xenix..."
3813         d_xenix="$undef"
3814 fi
3815 chmod +x xenix
3816 $eunicefix xenix
3817 if test -f /venix; then
3818         echo "Actually, this looks more like a VENIX system..."
3819         echo exit 0 >venix
3820 else
3821         echo " "
3822         if ./xenix; then
3823                 : null
3824         else
3825                 echo "Nor is it Venix..."
3826         fi
3827 fi
3828 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3829 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3830 $rm -f foo
3831
3832 case "$cc" in
3833 '') dflt=cc;;
3834 *) dflt="$cc";;
3835 esac
3836 rp="Use which C compiler?"
3837 . ./myread
3838 cc="$ans"
3839
3840 : See if they have not cc but they do have gcc
3841 . ./trygcc
3842 : Look for a hint-file generated 'call-back-unit'.  Now that the
3843 : user has specified the compiler, we may need to set or change some
3844 : other defaults.
3845 if $test -f cc.cbu; then
3846     . ./cc.cbu
3847 fi
3848 . ./checkcc
3849
3850 echo " "
3851 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3852 $cat >try.c <<EOM
3853 #include <stdio.h>
3854 int main() {
3855 #ifdef __GNUC__
3856 #ifdef __VERSION__
3857         printf("%s\n", __VERSION__);
3858 #else
3859         printf("%s\n", "1");
3860 #endif
3861 #endif
3862         return(0);
3863 }
3864 EOM
3865 if $cc -o try $ccflags $ldflags try.c; then
3866         gccversion=`$run ./try`
3867         case "$gccversion" in
3868         '') echo "You are not using GNU cc." ;;
3869         *)  echo "You are using GNU cc $gccversion."
3870             ccname=gcc
3871             ;;
3872         esac
3873 else
3874         echo " "
3875         echo "*** WHOA THERE!!! ***" >&4
3876         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3877         case "$knowitall" in
3878         '')
3879         echo "    You'd better start hunting for one and let me know about it." >&4
3880                 exit 1
3881                 ;;
3882         esac
3883 fi
3884 $rm -f try try.*
3885 case "$gccversion" in
3886 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3887 esac
3888 case "$gccversion" in
3889 '') gccosandvers='' ;;
3890 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3891    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3892    gccshortvers=''
3893    case "$gccosandvers" in
3894    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3895    $osname$osvers) ;; # looking good
3896    $osname*) cat <<EOM >&4
3897
3898 *** WHOA THERE!!! ***
3899
3900     Your gcc has not been compiled for the exact release of
3901     your operating system ($gccosandvers versus $osname$osvers).
3902
3903     In general it is a good idea to keep gcc synchronized with
3904     the operating system because otherwise serious problems
3905     may ensue when trying to compile software, like Perl.
3906
3907     I'm trying to be optimistic here, though, and will continue.
3908     If later during the configuration and build icky compilation
3909     problems appear (headerfile conflicts being the most common
3910     manifestation), I suggest reinstalling the gcc to match
3911     your operating system release.
3912
3913 EOM
3914       ;;
3915    *) gccosandvers='' ;; # failed to parse, better be silent
3916    esac
3917    ;;
3918 esac
3919 case "$ccname" in
3920 '') ccname="$cc" ;;
3921 esac
3922
3923 # gcc 3.* complain about adding -Idirectories that they already know about,
3924 # so we will take those off from locincpth.
3925 case "$gccversion" in
3926 3*)
3927     echo "main(){}">try.c
3928     for incdir in $locincpth; do
3929        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3930              grep '^c[cp]p*[01]: warning: changing search order '`
3931        if test "X$warn" != X; then
3932            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3933        fi
3934     done
3935     $rm -f try try.*
3936 esac
3937
3938 : decide how portable to be.  Allow command line overrides.
3939 case "$d_portable" in
3940 "$undef") ;;
3941 *)      d_portable="$define" ;;
3942 esac
3943
3944 : set up shell script to do ~ expansion
3945 cat >filexp <<EOSS
3946 $startsh
3947 : expand filename
3948 case "\$1" in
3949  ~/*|~)
3950         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3951         ;;
3952  ~*)
3953         if $test -f /bin/csh; then
3954                 /bin/csh -f -c "glob \$1"
3955                 failed=\$?
3956                 echo ""
3957                 exit \$failed
3958         else
3959                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3960                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3961                 if $test ! -d "\$dir"; then
3962                         me=\`basename \$0\`
3963                         echo "\$me: can't locate home directory for: \$name" >&2
3964                         exit 1
3965                 fi
3966                 case "\$1" in
3967                 */*)
3968                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3969                         ;;
3970                 *)
3971                         echo \$dir
3972                         ;;
3973                 esac
3974         fi
3975         ;;
3976 *)
3977         echo \$1
3978         ;;
3979 esac
3980 EOSS
3981 chmod +x filexp
3982 $eunicefix filexp
3983
3984 : now set up to get a file name
3985 cat <<EOS >getfile
3986 $startsh
3987 EOS
3988 cat <<'EOSC' >>getfile
3989 tilde=''
3990 fullpath=''
3991 already=''
3992 skip=''
3993 none_ok=''
3994 exp_file=''
3995 nopath_ok=''
3996 orig_rp="$rp"
3997 orig_dflt="$dflt"
3998 case "$gfpth" in
3999 '') gfpth='.' ;;
4000 esac
4001
4002 case "$fn" in
4003 *\(*)
4004         : getfile will accept an answer from the comma-separated list
4005         : enclosed in parentheses even if it does not meet other criteria.
4006         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
4007         fn=`echo $fn | sed 's/(.*)//'`
4008         ;;
4009 esac
4010
4011 case "$fn" in
4012 *:*)
4013         loc_file=`expr $fn : '.*:\(.*\)'`
4014         fn=`expr $fn : '\(.*\):.*'`
4015         ;;
4016 esac
4017
4018 case "$fn" in
4019 *~*) tilde=true;;
4020 esac
4021 case "$fn" in
4022 */*) fullpath=true;;
4023 esac
4024 case "$fn" in
4025 *+*) skip=true;;
4026 esac
4027 case "$fn" in
4028 *n*) none_ok=true;;
4029 esac
4030 case "$fn" in
4031 *e*) exp_file=true;;
4032 esac
4033 case "$fn" in
4034 *p*) nopath_ok=true;;
4035 esac
4036
4037 case "$fn" in
4038 *f*) type='File';;
4039 *d*) type='Directory';;
4040 *l*) type='Locate';;
4041 esac
4042
4043 what="$type"
4044 case "$what" in
4045 Locate) what='File';;
4046 esac
4047
4048 case "$exp_file" in
4049 '')
4050         case "$d_portable" in
4051         "$define") ;;
4052         *) exp_file=true;;
4053         esac
4054         ;;
4055 esac
4056
4057 cd ..
4058 while test "$type"; do
4059         redo=''
4060         rp="$orig_rp"
4061         dflt="$orig_dflt"
4062         case "$tilde" in
4063         true) rp="$rp (~name ok)";;
4064         esac
4065         . UU/myread
4066         if test -f UU/getfile.ok && \
4067                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4068         then
4069                 value="$ans"
4070                 ansexp="$ans"
4071                 break
4072         fi
4073         case "$ans" in
4074         none)
4075                 value=''
4076                 ansexp=''
4077                 case "$none_ok" in
4078                 true) type='';;
4079                 esac
4080                 ;;
4081         *)
4082                 case "$tilde" in
4083                 '') value="$ans"
4084                         ansexp="$ans";;
4085                 *)
4086                         value=`UU/filexp $ans`
4087                         case $? in
4088                         0)
4089                                 if test "$ans" != "$value"; then
4090                                         echo "(That expands to $value on this system.)"
4091                                 fi
4092                                 ;;
4093                         *) value="$ans";;
4094                         esac
4095                         ansexp="$value"
4096                         case "$exp_file" in
4097                         '') value="$ans";;
4098                         esac
4099                         ;;
4100                 esac
4101                 case "$fullpath" in
4102                 true)
4103                         case "$ansexp" in
4104                         /*) value="$ansexp" ;;
4105                         [a-zA-Z]:/*) value="$ansexp" ;;
4106                         *)
4107                                 redo=true
4108                                 case "$already" in
4109                                 true)
4110                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4111                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4112                                         ;;
4113                                 *)
4114                                 echo "Please give a full path name, starting with slash." >&4
4115                                         case "$tilde" in
4116                                         true)
4117                                 echo "Note that using ~name is ok provided it expands well." >&4
4118                                                 already=true
4119                                                 ;;
4120                                         esac
4121                                 esac
4122                                 ;;
4123                         esac
4124                         ;;
4125                 esac
4126                 case "$redo" in
4127                 '')
4128                         case "$type" in
4129                         File)
4130                                 for fp in $gfpth; do
4131                                         if test "X$fp" = X.; then
4132                                             pf="$ansexp"
4133                                         else    
4134                                             pf="$fp/$ansexp"
4135                                         fi
4136                                         if test -f "$pf"; then
4137                                                 type=''
4138                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4139                                         then
4140                                                 echo "($value is not a plain file, but that's ok.)"
4141                                                 type=''
4142                                         fi
4143                                         if test X"$type" = X; then
4144                                             value="$pf"
4145                                             break
4146                                         fi
4147                                 done
4148                                 ;;
4149                         Directory)
4150                                 for fp in $gfpth; do
4151                                         if test "X$fp" = X.; then
4152                                             dir="$ans"
4153                                             direxp="$ansexp"
4154                                         else    
4155                                             dir="$fp/$ansexp"
4156                                             direxp="$fp/$ansexp"
4157                                         fi
4158                                         if test -d "$direxp"; then
4159                                                 type=''
4160                                                 value="$dir"
4161                                                 break
4162                                         fi
4163                                 done
4164                                 ;;
4165                         Locate)
4166                                 if test -d "$ansexp"; then
4167                                         echo "(Looking for $loc_file in directory $value.)"
4168                                         value="$value/$loc_file"
4169                                         ansexp="$ansexp/$loc_file"
4170                                 fi
4171                                 if test -f "$ansexp"; then
4172                                         type=''
4173                                 fi
4174                                 case "$nopath_ok" in
4175                                 true)   case "$value" in
4176                                         */*) ;;
4177                                         *)      echo "Assuming $value will be in people's path."
4178                                                 type=''
4179                                                 ;;
4180                                         esac
4181                                         ;;
4182                                 esac
4183                                 ;;
4184                         esac
4185
4186                         case "$skip" in
4187                         true) type='';
4188                         esac
4189
4190                         case "$type" in
4191                         '') ;;
4192                         *)
4193                                 if test "$fastread" = yes; then
4194                                         dflt=y
4195                                 else
4196                                         dflt=n
4197                                 fi
4198                                 rp="$what $value doesn't exist.  Use that name anyway?"
4199                                 . UU/myread
4200                                 dflt=''
4201                                 case "$ans" in
4202                                 y*) type='';;
4203                                 *) echo " ";;
4204                                 esac
4205                                 ;;
4206                         esac
4207                         ;;
4208                 esac
4209                 ;;
4210         esac
4211 done
4212 cd UU
4213 ans="$value"
4214 rp="$orig_rp"
4215 dflt="$orig_dflt"
4216 rm -f getfile.ok
4217 test "X$gfpthkeep" != Xy && gfpth=""
4218 EOSC
4219
4220 : What should the include directory be ?
4221 echo " "
4222 $echo $n "Hmm...  $c"
4223 dflt='/usr/include'
4224 incpath=''
4225 mips_type=''
4226 if $test -f /bin/mips && /bin/mips; then
4227         echo "Looks like a MIPS system..."
4228         $cat >usr.c <<'EOCP'
4229 #ifdef SYSTYPE_BSD43
4230 /bsd43
4231 #endif
4232 EOCP
4233         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4234                 dflt='/bsd43/usr/include'
4235                 incpath='/bsd43'
4236                 mips_type='BSD 4.3'
4237         else
4238                 mips_type='System V'
4239         fi
4240         $rm -f usr.c usr.out
4241         echo "and you're compiling with the $mips_type compiler and libraries."
4242         xxx_prompt=y
4243         echo "exit 0" >mips
4244 else
4245         echo "Doesn't look like a MIPS system."
4246         xxx_prompt=n
4247         echo "exit 1" >mips
4248 fi
4249 chmod +x mips
4250 $eunicefix mips
4251 case "$usrinc" in
4252 '') ;;
4253 *) dflt="$usrinc";;
4254 esac
4255 case "$xxx_prompt" in
4256 y)      fn=d/
4257         echo " "
4258         rp='Where are the include files you want to use?'
4259         . ./getfile
4260         usrinc="$ans"
4261         ;;
4262 *)      usrinc="$dflt"
4263         ;;
4264 esac
4265
4266 : see how we invoke the C preprocessor
4267 echo " "
4268 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4269 cat <<'EOT' >testcpp.c
4270 #define ABC abc
4271 #define XYZ xyz
4272 ABC.XYZ
4273 EOT
4274 cd ..
4275 if test ! -f cppstdin; then
4276         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4277                 # AIX cc -E doesn't show the absolute headerfile
4278                 # locations but we'll cheat by using the -M flag.
4279                 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
4280         else
4281                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4282         fi
4283 else
4284         echo "Keeping your $hint cppstdin wrapper."
4285 fi
4286 chmod 755 cppstdin
4287 wrapper=`pwd`/cppstdin
4288 ok='false'
4289 cd UU
4290
4291 if $test "X$cppstdin" != "X" && \
4292         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4293         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4294 then
4295         echo "You used to use $cppstdin $cppminus so we'll use that again."
4296         case "$cpprun" in
4297         '') echo "But let's see if we can live without a wrapper..." ;;
4298         *)
4299                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4300                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4301                 then
4302                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4303                         ok='true'
4304                 else
4305                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4306                 fi
4307                 ;;
4308         esac
4309 else
4310         case "$cppstdin" in
4311         '') ;;
4312         *)
4313                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4314                 ;;
4315         esac
4316 fi
4317
4318 if $ok; then
4319         : nothing
4320 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4321         $cc -E <testcpp.c >testcpp.out 2>&1; \
4322         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4323         echo "Yup, it does."
4324         x_cpp="$cc -E"
4325         x_minus='';
4326 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4327         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4328         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4329         echo "Yup, it does."
4330         x_cpp="$cc -E"
4331         x_minus='-';
4332 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4333         $cc -P <testcpp.c >testcpp.out 2>&1; \
4334         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4335         echo "Yipee, that works!"
4336         x_cpp="$cc -P"
4337         x_minus='';
4338 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4339         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4340         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4341         echo "At long last!"
4342         x_cpp="$cc -P"
4343         x_minus='-';
4344 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4345         $cpp <testcpp.c >testcpp.out 2>&1; \
4346         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4347         echo "It works!"
4348         x_cpp="$cpp"
4349         x_minus='';
4350 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4351         $cpp - <testcpp.c >testcpp.out 2>&1; \
4352         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4353         echo "Hooray, it works!  I was beginning to wonder."
4354         x_cpp="$cpp"
4355         x_minus='-';
4356 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4357         $wrapper <testcpp.c >testcpp.out 2>&1; \
4358         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4359         x_cpp="$wrapper"
4360         x_minus=''
4361         echo "Eureka!"
4362 else
4363         dflt=''
4364         rp="No dice.  I can't find a C preprocessor.  Name one:"
4365         . ./myread
4366         x_cpp="$ans"
4367         x_minus=''
4368         $x_cpp <testcpp.c >testcpp.out 2>&1
4369         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4370                 echo "OK, that will do." >&4
4371         else
4372 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4373                 exit 1
4374         fi
4375 fi
4376
4377 case "$ok" in
4378 false)
4379         cppstdin="$x_cpp"
4380         cppminus="$x_minus"
4381         cpprun="$x_cpp"
4382         cpplast="$x_minus"
4383         set X $x_cpp
4384         shift
4385         case "$1" in
4386         "$cpp")
4387                 echo "Perhaps can we force $cc -E using a wrapper..."
4388                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4389                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4390                 then
4391                         echo "Yup, we can."
4392                         cppstdin="$wrapper"
4393                         cppminus='';
4394                 else
4395                         echo "Nope, we'll have to live without it..."
4396                 fi
4397                 ;;
4398         esac
4399         case "$cpprun" in
4400         "$wrapper")
4401                 cpprun=''
4402                 cpplast=''
4403                 ;;
4404         esac
4405         ;;
4406 esac
4407
4408 case "$cppstdin" in
4409 "$wrapper"|'cppstdin') ;;
4410 *) $rm -f $wrapper;;
4411 esac
4412 $rm -f testcpp.c testcpp.out
4413
4414 : Set private lib path
4415 case "$plibpth" in
4416 '') if ./mips; then
4417                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4418         fi;;
4419 esac
4420 case "$libpth" in
4421 ' ') dlist='';;
4422 '') dlist="$loclibpth $plibpth $glibpth";;
4423 *) dlist="$libpth";;
4424 esac
4425
4426 : Now check and see which directories actually exist, avoiding duplicates
4427 libpth=''
4428 for xxx in $dlist
4429 do
4430     if $test -d $xxx; then
4431                 case " $libpth " in
4432                 *" $xxx "*) ;;
4433                 *) libpth="$libpth $xxx";;
4434                 esac
4435     fi
4436 done
4437 $cat <<'EOM'
4438
4439 Some systems have incompatible or broken versions of libraries.  Among
4440 the directories listed in the question below, please remove any you
4441 know not to be holding relevant libraries, and add any that are needed.
4442 Say "none" for none.
4443
4444 EOM
4445 case "$libpth" in
4446 '') dflt='none';;
4447 *)
4448         set X $libpth
4449         shift
4450         dflt=${1+"$@"}
4451         ;;
4452 esac
4453 rp="Directories to use for library searches?"
4454 . ./myread
4455 case "$ans" in
4456 none) libpth=' ';;
4457 *) libpth="$ans";;
4458 esac
4459
4460 : compute shared library extension
4461 case "$so" in
4462 '')
4463         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4464                 dflt='sl'
4465         else
4466                 dflt='so'
4467         fi
4468         ;;
4469 *) dflt="$so";;
4470 esac
4471 $cat <<EOM
4472
4473 On some systems, shared libraries may be available.  Answer 'none' if
4474 you want to suppress searching of shared libraries for the remainder
4475 of this configuration.
4476
4477 EOM
4478 rp='What is the file extension used for shared libraries?'
4479 . ./myread
4480 so="$ans"
4481
4482 : Define several unixisms.
4483 : Hints files or command line option can be used to override them.
4484 : The convoluted testing is in case hints files set either the old
4485 : or the new name.
4486 case "$_exe" in
4487 '')     case "$exe_ext" in
4488         '')     ;;
4489         *)      _exe="$exe_ext" ;;
4490         esac
4491         ;;
4492 esac
4493 case "$_a" in
4494 '')     case "$lib_ext" in
4495     '') _a='.a';;
4496         *)      _a="$lib_ext" ;;
4497         esac
4498         ;;
4499 esac
4500 case "$_o" in
4501 '') case "$obj_ext" in
4502         '')     _o='.o';;
4503         *)      _o="$obj_ext";;
4504         esac
4505         ;;
4506 esac
4507 case "$p_" in
4508 '') case "$path_sep" in
4509         '')     p_=':';;
4510         *)      p_="$path_sep";;
4511         esac
4512         ;;
4513 esac
4514 exe_ext=$_exe
4515 lib_ext=$_a
4516 obj_ext=$_o
4517 path_sep=$p_
4518
4519 : Which makefile gets called first.  This is used by make depend.
4520 case "$firstmakefile" in
4521 '') firstmakefile='makefile';;
4522 esac
4523
4524 case "$ccflags" in
4525 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4526 esac
4527
4528 case "$uselongdouble" in
4529 $define|true|[yY]*)     dflt='y';;
4530 *) dflt='n';;
4531 esac
4532 cat <<EOM
4533
4534 Perl can be built to take advantage of long doubles which
4535 (if available) may give more accuracy and range for floating point numbers.
4536
4537 If this doesn't make any sense to you, just accept the default '$dflt'.
4538 EOM
4539 rp='Try to use long doubles if available?'
4540 . ./myread
4541 case "$ans" in
4542 y|Y)    val="$define"   ;;
4543 *)      val="$undef"    ;;
4544 esac
4545 set uselongdouble
4546 eval $setvar
4547
4548 case "$uselongdouble" in
4549 true|[yY]*) uselongdouble="$define" ;;
4550 esac
4551
4552 : Look for a hint-file generated 'call-back-unit'.  If the
4553 : user has specified that long doubles should be used,
4554 : we may need to set or change some other defaults.
4555 if $test -f uselongdouble.cbu; then
4556     echo "Your platform has some specific hints regarding long doubles, using them..."
4557     . ./uselongdouble.cbu
4558 else
4559     case "$uselongdouble" in
4560         $define)
4561                 $cat <<EOM
4562 (Your platform does not have any specific hints for long doubles.)
4563 EOM
4564         ;;
4565     esac
4566 fi
4567
4568 : Looking for optional libraries
4569 echo " "
4570 echo "Checking for optional libraries..." >&4
4571 case "$libs" in
4572 ' '|'') dflt='';;
4573 *) dflt="$libs";;
4574 esac
4575 case "$libswanted" in
4576 '') libswanted='c_s';;
4577 esac
4578 case "$usesocks" in
4579 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4580 esac
4581 libsfound=''
4582 libsfiles=''
4583 libsdirs=''
4584 libspath=''
4585 for thisdir in $libpth $xlibpth; do
4586   test -d $thisdir && libspath="$libspath $thisdir"
4587 done
4588 for thislib in $libswanted; do
4589         for thisdir in $libspath; do
4590             xxx=''
4591             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4592                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4593                 $test -f "$xxx" && eval $libscheck
4594                 $test -f "$xxx" && libstyle=shared
4595             fi
4596             if test ! -f "$xxx"; then
4597                 xxx=$thisdir/lib$thislib.$so
4598                 $test -f "$xxx" && eval $libscheck
4599                 $test -f "$xxx" && libstyle=shared
4600             fi  
4601             if test ! -f "$xxx"; then
4602                 xxx=$thisdir/lib$thislib$_a
4603                 $test -f "$xxx" && eval $libscheck
4604                 $test -f "$xxx" && libstyle=static
4605             fi
4606             if test ! -f "$xxx"; then
4607                 xxx=$thisdir/$thislib$_a
4608                 $test -f "$xxx" && eval $libscheck
4609                 $test -f "$xxx" && libstyle=static
4610             fi
4611             if test ! -f "$xxx"; then
4612                 xxx=$thisdir/lib${thislib}_s$_a
4613                 $test -f "$xxx" && eval $libscheck
4614                 $test -f "$xxx" && libstyle=static
4615                 $test -f "$xxx" && thislib=${thislib}_s
4616             fi
4617             if test ! -f "$xxx"; then
4618                 xxx=$thisdir/Slib$thislib$_a
4619                 $test -f "$xxx" && eval $libscheck
4620                 $test -f "$xxx" && libstyle=static
4621             fi
4622             if $test -f "$xxx"; then
4623                 case "$libstyle" in
4624                 shared) echo "Found -l$thislib (shared)." ;;
4625                 static) echo "Found -l$thislib." ;;
4626                 *)      echo "Found -l$thislib ($libstyle)." ;;
4627                 esac
4628                 case " $dflt " in
4629                 *"-l$thislib "*);;
4630                 *) dflt="$dflt -l$thislib"
4631                    libsfound="$libsfound $xxx"
4632                    yyy=`basename $xxx`
4633                    libsfiles="$libsfiles $yyy"
4634                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4635                    case " $libsdirs " in
4636                    *" $yyy "*) ;;
4637                    *) libsdirs="$libsdirs $yyy" ;;
4638                    esac
4639                    ;;
4640                 esac
4641                 break
4642             fi  
4643         done
4644         if $test ! -f "$xxx"; then
4645             echo "No -l$thislib."
4646         fi
4647 done
4648 set X $dflt
4649 shift
4650 dflt="$*"
4651 case "$libs" in
4652 '') dflt="$dflt";;
4653 *) dflt="$libs";;
4654 esac
4655 case "$dflt" in
4656 ' '|'') dflt='none';;
4657 esac
4658
4659 $cat <<EOM
4660
4661 In order to compile $package on your machine, a number of libraries
4662 are usually needed.  Include any other special libraries here as well.
4663 Say "none" for none.  The default list is almost always right.
4664 EOM
4665
4666 echo " "
4667 rp="What libraries to use?"
4668 . ./myread
4669 case "$ans" in
4670 none) libs=' ';;
4671 *) libs="$ans";;
4672 esac
4673
4674 : determine optimization, if desired, or use for debug flag also
4675 case "$optimize" in
4676 ' '|$undef) dflt='none';;
4677 '') dflt='-O';;
4678 *) dflt="$optimize";;
4679 esac
4680 $cat <<EOH
4681
4682 By default, $package compiles with the -O flag to use the optimizer.
4683 Alternately, you might want to use the symbolic debugger, which uses
4684 the -g flag (on traditional Unix systems).  Either flag can be
4685 specified here.  To use neither flag, specify the word "none".
4686
4687 EOH
4688 rp="What optimizer/debugger flag should be used?"
4689 . ./myread
4690 optimize="$ans"
4691 case "$optimize" in
4692 'none') optimize=" ";;
4693 esac
4694
4695 dflt=''
4696 : We will not override a previous value, but we might want to
4697 : augment a hint file
4698 case "$hint" in
4699 default|recommended)
4700         case "$gccversion" in
4701         1*) dflt='-fpcc-struct-return' ;;
4702         esac
4703         case "$optimize" in
4704         *-g*) dflt="$dflt -DDEBUGGING";;
4705         esac
4706         case "$gccversion" in
4707         2*) if test -d /etc/conf/kconfig.d &&
4708                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4709                 then
4710                         dflt="$dflt -posix"
4711                 fi
4712                 ;;
4713         esac
4714         case "$gccversion" in
4715         1*) ;;
4716         2.[0-8]*) ;;
4717         ?*)     echo " "
4718                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4719                 echo 'int main(void) { return 0; }' > gcctest.c
4720                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4721                         echo "Yes, it does." 2>&1
4722                         case "$ccflags" in
4723                         *strict-aliasing*) 
4724                                 echo "Leaving current flags $ccflags alone." 2>&1
4725                                 ;;
4726                         *) dflt="$dflt -fno-strict-aliasing" ;;
4727                         esac
4728                 else
4729                         echo "Nope, it doesn't, but that's ok." 2>&1
4730                 fi
4731                 ;;
4732         esac
4733         ;;
4734 esac
4735
4736 case "$mips_type" in
4737 *BSD*|'') inclwanted="$locincpth $usrinc";;
4738 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4739 esac
4740 for thisincl in $inclwanted; do
4741         if $test -d $thisincl; then
4742                 if $test x$thisincl != x$usrinc; then
4743                         case "$dflt" in
4744                         *" -I$thisincl "*);;
4745                         *) dflt="$dflt -I$thisincl ";;
4746                         esac
4747                 fi
4748         fi
4749 done
4750
4751 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4752         xxx=true;
4753 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4754         xxx=true;
4755 else
4756         xxx=false;
4757 fi;
4758 if $xxx; then
4759         case "$dflt" in
4760         *$2*);;
4761         *) dflt="$dflt -D$2";;
4762         esac;
4763 fi'
4764
4765 set signal.h LANGUAGE_C; eval $inctest
4766
4767 case "$usesocks" in
4768 $define)
4769         ccflags="$ccflags -DSOCKS"
4770         ;;
4771 esac
4772
4773 case "$hint" in
4774 default|recommended) dflt="$ccflags $dflt" ;;
4775 *) dflt="$ccflags";;
4776 esac
4777
4778 case "$dflt" in
4779 ''|' ') dflt=none;;
4780 esac
4781
4782 $cat <<EOH
4783
4784 Your C compiler may want other flags.  For this question you should include
4785 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4786 but you should NOT include libraries or ld flags like -lwhatever.  If you
4787 want $package to honor its debug switch, you should include -DDEBUGGING here.
4788 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4789
4790 To use no flags, specify the word "none".
4791
4792 EOH
4793 set X $dflt
4794 shift
4795 dflt=${1+"$@"}
4796 rp="Any additional cc flags?"
4797 . ./myread
4798 case "$ans" in
4799 none) ccflags='';;
4800 *) ccflags="$ans";;
4801 esac
4802
4803 : the following weeds options from ccflags that are of no interest to cpp
4804 case "$cppflags" in
4805 '') cppflags="$ccflags" ;;
4806 *)  cppflags="$cppflags $ccflags" ;;
4807 esac
4808 case "$gccversion" in
4809 1*) cppflags="$cppflags -D__GNUC__"
4810 esac
4811 case "$mips_type" in
4812 '');;
4813 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4814 esac
4815 case "$cppflags" in
4816 '');;
4817 *)
4818         echo " "
4819         echo "Let me guess what the preprocessor flags are..." >&4
4820         set X $cppflags
4821         shift
4822         cppflags=''
4823         $cat >cpp.c <<'EOM'
4824 #define BLURFL foo
4825
4826 BLURFL xx LFRULB
4827 EOM
4828         previous=''
4829         for flag in $*
4830         do
4831                 case "$flag" in
4832                 -*) ftry="$flag";;
4833                 *) ftry="$previous $flag";;
4834                 esac
4835                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4836                         >cpp1.out 2>/dev/null && \
4837                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4838                         >cpp2.out 2>/dev/null && \
4839                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4840                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4841                 then
4842                         cppflags="$cppflags $ftry"
4843                         previous=''
4844                 else
4845                         previous="$flag"
4846                 fi
4847         done
4848         set X $cppflags
4849         shift
4850         cppflags=${1+"$@"}
4851         case "$cppflags" in
4852         *-*)  echo "They appear to be: $cppflags";;
4853         esac
4854         $rm -f cpp.c cpp?.out
4855         ;;
4856 esac
4857
4858 : flags used in final linking phase
4859 case "$ldflags" in
4860 '') if ./venix; then
4861                 dflt='-i -z'
4862         else
4863                 dflt=''
4864         fi
4865         case "$ccflags" in
4866         *-posix*) dflt="$dflt -posix" ;;
4867         esac
4868         ;;
4869 *) dflt="$ldflags";;
4870 esac
4871
4872 : Try to guess additional flags to pick up local libraries.
4873 for thislibdir in $libpth; do
4874         case " $loclibpth " in
4875         *" $thislibdir "*)
4876                 case "$dflt " in 
4877                 *"-L$thislibdir "*) ;;
4878                 *)  dflt="$dflt -L$thislibdir" ;;
4879                 esac
4880                 ;;
4881         esac
4882 done
4883
4884 case "$dflt" in
4885 '') dflt='none' ;;
4886 esac
4887
4888 $cat <<EOH
4889
4890 Your C linker may need flags.  For this question you should
4891 include -L/whatever and any other flags used by the C linker, but you
4892 should NOT include libraries like -lwhatever.
4893
4894 Make sure you include the appropriate -L/path flags if your C linker
4895 does not normally search all of the directories you specified above,
4896 namely
4897         $libpth
4898 To use no flags, specify the word "none".
4899
4900 EOH
4901
4902 rp="Any additional ld flags (NOT including libraries)?"
4903 . ./myread
4904 case "$ans" in
4905 none) ldflags='';;
4906 *) ldflags="$ans";;
4907 esac
4908 rmlist="$rmlist pdp11"
4909
4910 : coherency check
4911 echo " "
4912 echo "Checking your choice of C compiler and flags for coherency..." >&4
4913 $cat > try.c <<'EOF'
4914 #include <stdio.h>
4915 int main() { printf("Ok\n"); return(0); }
4916 EOF
4917 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4918 shift
4919 $cat >try.msg <<'EOM'
4920 I've tried to compile and run the following simple program:
4921
4922 EOM
4923 $cat try.c >> try.msg
4924
4925 $cat >> try.msg <<EOM
4926
4927 I used the command:
4928
4929         $*
4930         $run ./try
4931
4932 and I got the following output:
4933
4934 EOM
4935 dflt=y
4936 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4937         if $sh -c "$run ./try" >>try.msg 2>&1; then
4938                 xxx=`$run ./try`
4939                 case "$xxx" in
4940                 "Ok") dflt=n ;;
4941                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4942                         case " $libs " in
4943                         *" -lsfio "*)
4944                                 cat >> try.msg <<'EOQS'
4945 If $libs contains -lsfio, and sfio is mis-configured, then it
4946 sometimes (apparently) runs and exits with a 0 status, but with no
4947 output!  It may have to do with sfio's use of _exit vs. exit.
4948
4949 EOQS
4950                                 rp="You have a big problem.  Shall I abort Configure"
4951                                 dflt=y
4952                                 ;;
4953                         esac
4954                         ;;
4955                 esac
4956         else
4957                 echo "The program compiled OK, but exited with status $?." >>try.msg
4958                 rp="You have a problem.  Shall I abort Configure"
4959                 dflt=y
4960         fi
4961 else
4962         echo "I can't compile the test program." >>try.msg
4963         rp="You have a BIG problem.  Shall I abort Configure"
4964         dflt=y
4965 fi
4966 case "$dflt" in
4967 y)
4968         $cat try.msg >&4
4969         case "$knowitall" in
4970         '')
4971                 echo "(The supplied flags or libraries might be incorrect.)"
4972                 ;;
4973         *) dflt=n;;
4974         esac
4975         echo " "
4976         . ./myread
4977         case "$ans" in
4978         n*|N*) ;;
4979         *)      echo "Ok.  Stopping Configure." >&4
4980                 exit 1
4981                 ;;
4982         esac
4983         ;;
4984 n) echo "OK, that should do.";;
4985 esac
4986 $rm -f try try.* core
4987
4988 : define a shorthand compile call
4989 compile='
4990 mc_file=$1;
4991 shift;
4992 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4993 : define a shorthand compile call for compilations that should be ok.
4994 compile_ok='
4995 mc_file=$1;
4996 shift;
4997 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4998
4999 : determine filename position in cpp output
5000 echo " "
5001 echo "Computing filename position in cpp output for #include directives..." >&4
5002 case "$osname" in
5003 vos) testaccess=-e ;;
5004 *)   testaccess=-r ;;
5005 esac
5006 echo '#include <stdio.h>' > foo.c
5007 $cat >fieldn <<EOF
5008 $startsh
5009 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5010 $grep '^[       ]*#.*stdio\.h' | \
5011 while read cline; do
5012         pos=1
5013         set \$cline
5014         while $test \$# -gt 0; do
5015                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5016                         echo "\$pos"
5017                         exit 0
5018                 fi
5019                 shift
5020                 pos=\`expr \$pos + 1\`
5021         done
5022 done
5023 EOF
5024 chmod +x fieldn
5025 fieldn=`./fieldn`
5026 $rm -f foo.c fieldn
5027 case $fieldn in
5028 '') pos='???';;
5029 1) pos=first;;
5030 2) pos=second;;
5031 3) pos=third;;
5032 *) pos="${fieldn}th";;
5033 esac
5034 echo "Your cpp writes the filename in the $pos field of the line."
5035
5036 case "$osname" in
5037 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5038 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5039 *)   cppfilter='' ;;
5040 esac
5041 : locate header file
5042 $cat >findhdr <<EOF
5043 $startsh
5044 wanted=\$1
5045 name=''
5046 for usrincdir in $usrinc
5047 do
5048         if test -f \$usrincdir/\$wanted; then
5049                 echo "\$usrincdir/\$wanted"
5050                 exit 0
5051         fi
5052 done
5053 awkprg='{ print \$$fieldn }'
5054 echo "#include <\$wanted>" > foo\$\$.c
5055 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5056 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5057 while read cline; do
5058         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5059         case "\$name" in
5060         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5061         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5062         *) exit 2;;
5063         esac;
5064 done;
5065 #
5066 # status = 0: grep returned 0 lines, case statement not executed
5067 # status = 1: headerfile found
5068 # status = 2: while loop executed, no headerfile found
5069 #
5070 status=\$?
5071 $rm -f foo\$\$.c;
5072 if test \$status -eq 1; then
5073         exit 0;
5074 fi
5075 exit 1
5076 EOF
5077 chmod +x findhdr
5078
5079 : define an alternate in-header-list? function
5080 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5081 cont=true; xxf="echo \"<\$1> found.\" >&4";
5082 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5083 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5084 esac;
5085 case $# in 4) instead=instead;; *) instead="at last";; esac;
5086 while $test "$cont"; do
5087         xxx=`./findhdr $1`
5088         var=$2; eval "was=\$$2";
5089         if $test "$xxx" && $test -r "$xxx";
5090         then eval $xxf;
5091         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5092                 cont="";
5093         else eval $xxnf;
5094         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5095         set $yyy; shift; shift; yyy=$@;
5096         case $# in 0) cont="";;
5097         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5098                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5099         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5100                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5101         esac;
5102 done;
5103 while $test "$yyy";
5104 do set $yyy; var=$2; eval "was=\$$2";
5105         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5106         set $yyy; shift; shift; yyy=$@;
5107 done'
5108
5109 : see if stdlib is available
5110 set stdlib.h i_stdlib
5111 eval $inhdr
5112
5113 : check for lengths of integral types
5114 echo " "
5115 case "$intsize" in
5116 '')
5117         echo "Checking to see how big your integers are..." >&4
5118         $cat >try.c <<EOCP
5119 #include <stdio.h>
5120 #$i_stdlib I_STDLIB
5121 #ifdef I_STDLIB
5122 #include <stdlib.h>
5123 #endif
5124 int main()
5125 {
5126         printf("intsize=%d;\n", (int)sizeof(int));
5127         printf("longsize=%d;\n", (int)sizeof(long));
5128         printf("shortsize=%d;\n", (int)sizeof(short));
5129         exit(0);
5130 }
5131 EOCP
5132         set try
5133         if eval $compile_ok && $run ./try > /dev/null; then
5134                 eval `$run ./try`
5135                 echo "Your integers are $intsize bytes long."
5136                 echo "Your long integers are $longsize bytes long."
5137                 echo "Your short integers are $shortsize bytes long."
5138         else
5139                 $cat >&4 <<EOM
5140 !
5141 Help! I can't compile and run the intsize test program: please enlighten me!
5142 (This is probably a misconfiguration in your system or libraries, and
5143 you really ought to fix it.  Still, I'll try anyway.)
5144 !
5145 EOM
5146                 dflt=4
5147                 rp="What is the size of an integer (in bytes)?"
5148                 . ./myread
5149                 intsize="$ans"
5150                 dflt=$intsize
5151                 rp="What is the size of a long integer (in bytes)?"
5152                 . ./myread
5153                 longsize="$ans"
5154                 dflt=2
5155                 rp="What is the size of a short integer (in bytes)?"
5156                 . ./myread
5157                 shortsize="$ans"
5158         fi
5159         ;;
5160 esac
5161 $rm -f try try.*
5162
5163 : check for long long
5164 echo " "
5165 echo "Checking to see if you have long long..." >&4
5166 echo 'int main() { long long x = 7; return 0; }' > try.c
5167 set try
5168 if eval $compile; then
5169         val="$define"
5170         echo "You have long long."
5171 else
5172         val="$undef"
5173         echo "You do not have long long."
5174 fi
5175 $rm try.*
5176 set d_longlong
5177 eval $setvar
5178
5179 : check for length of long long
5180 case "${d_longlong}${longlongsize}" in
5181 $define)
5182         echo " "
5183         echo "Checking to see how big your long longs are..." >&4
5184         $cat >try.c <<'EOCP'
5185 #include <stdio.h>
5186 int main()
5187 {
5188     printf("%d\n", (int)sizeof(long long));
5189     return(0);
5190 }
5191 EOCP
5192         set try
5193         if eval $compile_ok; then
5194                 longlongsize=`$run ./try`
5195                 echo "Your long longs are $longlongsize bytes long."
5196         else
5197                 dflt='8'
5198                 echo " "
5199                 echo "(I can't seem to compile the test program.  Guessing...)"
5200                 rp="What is the size of a long long (in bytes)?"
5201                 . ./myread
5202                 longlongsize="$ans"
5203         fi
5204         if $test "X$longsize" = "X$longlongsize"; then
5205                 echo "(That isn't any different from an ordinary long.)"
5206         fi      
5207         ;;
5208 esac
5209 $rm -f try.* try
5210
5211 : see if inttypes.h is available
5212 : we want a real compile instead of Inhdr because some systems
5213 : have an inttypes.h which includes non-existent headers
5214 echo " "
5215 $cat >try.c <<EOCP
5216 #include <inttypes.h>
5217 int main() {
5218         static int32_t foo32 = 0x12345678;
5219 }
5220 EOCP
5221 set try
5222 if eval $compile; then
5223         echo "<inttypes.h> found." >&4
5224         val="$define"
5225 else
5226         echo "<inttypes.h> NOT found." >&4
5227         val="$undef"
5228 fi
5229 $rm -f try.c try
5230 set i_inttypes
5231 eval $setvar
5232
5233 : check for int64_t
5234 echo " "
5235 echo "Checking to see if you have int64_t..." >&4
5236 $cat >try.c <<EOCP
5237 #include <sys/types.h>
5238 #$i_inttypes I_INTTYPES
5239 #ifdef I_INTTYPES
5240 #include <inttypes.h>
5241 #endif
5242 int main() { int64_t x = 7; }
5243 EOCP
5244 set try
5245 if eval $compile; then
5246         val="$define"
5247         echo "You have int64_t."
5248 else
5249         val="$undef"
5250         echo "You do not have int64_t."
5251 fi
5252 $rm -f try try.*
5253 set d_int64_t
5254 eval $setvar
5255
5256
5257 echo " "
5258 echo "Checking which 64-bit integer type we could use..." >&4
5259
5260 case "$intsize" in
5261 8) val=int
5262    set quadtype
5263    eval $setvar
5264    val='"unsigned int"'
5265    set uquadtype
5266    eval $setvar
5267    quadkind=1
5268    ;;
5269 *) case "$longsize" in
5270    8) val=long
5271       set quadtype
5272       eval $setvar
5273       val='"unsigned long"'
5274       set uquadtype
5275       eval $setvar
5276       quadkind=2
5277       ;;
5278    *) case "$d_longlong:$longlongsize" in
5279       define:8)
5280         val='"long long"'
5281         set quadtype
5282         eval $setvar
5283         val='"unsigned long long"'
5284         set uquadtype
5285         eval $setvar
5286         quadkind=3
5287         ;;
5288       *) case "$d_int64_t" in
5289          define)
5290            val=int64_t
5291            set quadtype
5292            eval $setvar
5293            val=uint64_t
5294            set uquadtype
5295            eval $setvar
5296            quadkind=4
5297            ;;
5298          esac
5299          ;;
5300       esac
5301       ;;
5302    esac
5303    ;;
5304 esac
5305
5306 case "$quadtype" in
5307 '')     echo "Alas, no 64-bit integer types in sight." >&4
5308         d_quad="$undef"
5309         ;;
5310 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5311         d_quad="$define"
5312         ;;
5313 esac
5314
5315
5316 case "$uselonglong" in
5317 "$define"|true|[yY]*)
5318         cat <<EOM >&4
5319
5320 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5321 EOM
5322         use64bitint="$define"
5323         ;;
5324 esac                          
5325 case "$use64bits" in
5326 "$define"|true|[yY]*)
5327         cat <<EOM >&4
5328
5329 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5330 EOM
5331         use64bitint="$define"
5332         ;;
5333 esac                          
5334 case "$use64bitints" in
5335 "$define"|true|[yY]*)
5336         cat <<EOM >&4
5337
5338 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5339 EOM
5340         use64bitint="$define"
5341         ;;
5342 esac                          
5343 case "$use64bitsint" in
5344 "$define"|true|[yY]*)
5345         cat <<EOM >&4
5346
5347 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5348 EOM
5349         use64bitint="$define"
5350         ;;
5351 esac                          
5352 case "$uselonglongs" in
5353 "$define"|true|[yY]*)
5354         cat <<EOM >&4
5355
5356 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5357 EOM
5358         use64bitint="$define"
5359         ;;
5360 esac                          
5361 case "$use64bitsall" in
5362 "$define"|true|[yY]*)
5363         cat <<EOM >&4
5364
5365 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5366 EOM
5367         use64bitall="$define"
5368         ;;
5369 esac                          
5370
5371 case "$ccflags" in
5372 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5373 esac
5374 case "$use64bitall" in
5375 "$define"|true|[yY]*) use64bitint="$define" ;;
5376 esac
5377
5378 case "$longsize" in
5379 8) cat <<EOM
5380
5381 You have natively 64-bit long integers.
5382 EOM
5383    val="$define"
5384    ;;
5385 *) case "$use64bitint" in
5386    "$define"|true|[yY]*) dflt='y';;
5387    *) dflt='n';;
5388    esac
5389    case "$d_quad" in
5390    "$define") ;;
5391    *) dflt='n' ;;
5392    esac
5393    cat <<EOM
5394
5395 Perl can be built to take advantage of 64-bit integer types
5396 on some systems.  To do so, Configure can be run with -Duse64bitint.
5397 Choosing this option will most probably introduce binary incompatibilities.
5398
5399 If this doesn't make any sense to you, just accept the default '$dflt'.
5400 (The default has been chosen based on your configuration.)
5401 EOM
5402    rp='Try to use 64-bit integers, if available?'
5403    . ./myread
5404    case "$ans" in
5405    [yY]*) val="$define" ;;
5406    *)     val="$undef"  ;;
5407    esac
5408    ;;
5409 esac
5410 set use64bitint
5411 eval $setvar
5412
5413 case "$use64bitall" in
5414 "$define"|true|[yY]*) dflt='y' ;;
5415 *) case "$longsize" in
5416    8) dflt='y' ;;
5417    *) dflt='n' ;;
5418    esac
5419    ;;
5420 esac    
5421 cat <<EOM
5422
5423 You may also choose to try maximal 64-bitness.  It means using as much
5424 64-bitness as possible on the platform.  This in turn means even more
5425 binary incompatibilities.  On the other hand, your platform may not
5426 have any more 64-bitness available than what you already have chosen.
5427
5428 If this doesn't make any sense to you, just accept the default '$dflt'.
5429 (The default has been chosen based on your configuration.)
5430 EOM
5431 rp='Try to use maximal 64-bit support, if available?'
5432 . ./myread
5433 case "$ans" in
5434 [yY]*) val="$define" ;;
5435 *)     val="$undef"  ;;
5436 esac
5437 set use64bitall
5438 eval $setvar
5439 case "$use64bitall" in
5440 "$define")
5441         case "$use64bitint" in
5442         "$undef")
5443                 cat <<EOM
5444
5445 Since you have chosen a maximally 64-bit build, I'm also turning on
5446 the use of 64-bit integers.
5447 EOM
5448                 use64bitint="$define" ;;
5449         esac
5450         ;;
5451 esac
5452
5453 : Look for a hint-file generated 'call-back-unit'.  If the
5454 : user has specified that a 64-bit perl is to be built,
5455 : we may need to set or change some other defaults.
5456         if $test -f use64bitint.cbu; then
5457         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5458                 . ./use64bitint.cbu
5459         fi
5460 case "$use64bitint" in
5461 "$define"|true|[yY]*)
5462         case "$longsize" in
5463         4) case "$archname64" in
5464            '') archname64=64int ;;
5465            esac
5466            ;;
5467         esac
5468         ;;
5469 esac
5470
5471 : Look for a hint-file generated 'call-back-unit'.  If the
5472 : user has specified that a maximally 64-bit perl is to be built,
5473 : we may need to set or change some other defaults.
5474         if $test -f use64bitall.cbu; then
5475         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5476                 . ./use64bitall.cbu
5477         fi
5478 case "$use64bitall" in
5479 "$define"|true|[yY]*)
5480         case "$longsize" in
5481         4) case "$archname64" in
5482            ''|64int) archname64=64all ;;
5483            esac
5484            ;;
5485         esac
5486         ;;
5487 esac
5488
5489 case "$d_quad:$use64bitint" in
5490 $undef:$define)
5491         cat >&4 <<EOF
5492
5493 *** You have chosen to use 64-bit integers,
5494 *** but none cannot be found.
5495 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5496 *** Cannot continue, aborting.
5497
5498 EOF
5499         exit 1
5500         ;;
5501 esac
5502
5503 : check for length of double
5504 echo " "
5505 case "$doublesize" in
5506 '')
5507         echo "Checking to see how big your double precision numbers are..." >&4
5508         $cat >try.c <<EOCP
5509 #include <stdio.h>
5510 #$i_stdlib I_STDLIB
5511 #ifdef I_STDLIB
5512 #include <stdlib.h>
5513 #endif
5514 int main()
5515 {
5516     printf("%d\n", (int)sizeof(double));
5517     exit(0);
5518 }
5519 EOCP
5520         set try
5521         if eval $compile_ok; then
5522                 doublesize=`$run ./try`
5523                 echo "Your double is $doublesize bytes long."
5524         else
5525                 dflt='8'
5526                 echo "(I can't seem to compile the test program.  Guessing...)"
5527                 rp="What is the size of a double precision number (in bytes)?"
5528                 . ./myread
5529                 doublesize="$ans"
5530         fi
5531         ;;
5532 esac
5533 $rm -f try.c try
5534
5535 : check for long doubles
5536 echo " "
5537 echo "Checking to see if you have long double..." >&4
5538 echo 'int main() { long double x = 7.0; }' > try.c
5539 set try
5540 if eval $compile; then
5541         val="$define"
5542         echo "You have long double."
5543 else
5544         val="$undef"
5545         echo "You do not have long double."
5546 fi
5547 $rm try.*
5548 set d_longdbl
5549 eval $setvar
5550
5551 : check for length of long double
5552 case "${d_longdbl}${longdblsize}" in
5553 $define)
5554         echo " "
5555         echo "Checking to see how big your long doubles are..." >&4
5556         $cat >try.c <<'EOCP'
5557 #include <stdio.h>
5558 int main()
5559 {
5560         printf("%d\n", sizeof(long double));
5561 }
5562 EOCP
5563         set try
5564         set try
5565         if eval $compile; then
5566                 longdblsize=`$run ./try`
5567                 echo "Your long doubles are $longdblsize bytes long."
5568         else
5569                 dflt='8'
5570                 echo " "
5571                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5572                 rp="What is the size of a long double (in bytes)?"
5573                 . ./myread
5574                 longdblsize="$ans"
5575         fi
5576         if $test "X$doublesize" = "X$longdblsize"; then
5577                 echo "That isn't any different from an ordinary double."
5578                 echo "I'll keep your setting anyway, but you may see some"
5579                 echo "harmless compilation warnings."
5580         fi      
5581         ;;
5582 esac
5583 $rm -f try.* try
5584
5585 : determine the architecture name
5586 echo " "
5587 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5588         tarch=`arch`"-$osname"
5589 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5590         if uname -m > tmparch 2>&1 ; then
5591                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5592                         -e 's/$/'"-$osname/" tmparch`
5593         else
5594                 tarch="$osname"
5595         fi
5596         $rm -f tmparch
5597 else
5598         tarch="$osname"
5599 fi
5600 case "$myarchname" in
5601 ''|"$tarch") ;;
5602 *)
5603         echo "(Your architecture name used to be $myarchname.)"
5604         archname=''
5605         ;;
5606 esac
5607 case "$targetarch" in
5608 '') ;;
5609 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5610 esac
5611 myarchname="$tarch"
5612 case "$archname" in
5613 '') dflt="$tarch";;
5614 *) dflt="$archname";;
5615 esac
5616 rp='What is your architecture name'
5617 . ./myread
5618 archname="$ans"
5619 case "$usethreads" in
5620 $define)
5621         echo "Threads selected." >&4
5622         case "$archname" in
5623         *-thread*) echo "...and architecture name already has -thread." >&4
5624                 ;;
5625         *)      archname="$archname-thread"
5626                 echo "...setting architecture name to $archname." >&4
5627                 ;;
5628         esac
5629         ;;
5630 esac
5631 case "$usemultiplicity" in
5632 $define)
5633         echo "Multiplicity selected." >&4
5634         case "$archname" in
5635         *-multi*) echo "...and architecture name already has -multi." >&4
5636                 ;;
5637         *)      archname="$archname-multi"
5638                 echo "...setting architecture name to $archname." >&4
5639                 ;;
5640         esac
5641         ;;
5642 esac
5643 case "$use64bitint$use64bitall" in
5644 *"$define"*)
5645         case "$archname64" in
5646         '')
5647                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5648                 ;;
5649         *)
5650                 case "$use64bitint" in
5651                 "$define") echo "64 bit integers selected." >&4 ;;
5652                 esac
5653                 case "$use64bitall" in
5654                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5655                 esac
5656                 case "$archname" in
5657                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5658                         ;;
5659                 *)      archname="$archname-$archname64"
5660                         echo "...setting architecture name to $archname." >&4
5661                         ;;
5662                 esac
5663                 ;;
5664         esac
5665 esac
5666 case "$uselongdouble" in
5667 $define)
5668         echo "Long doubles selected." >&4
5669         case "$longdblsize" in
5670         $doublesize)
5671                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5672                 ;;
5673         *)
5674                 case "$archname" in
5675                 *-ld*) echo "...and architecture name already has -ld." >&4
5676                         ;;
5677                 *)      archname="$archname-ld"
5678                         echo "...setting architecture name to $archname." >&4
5679                         ;;
5680                 esac
5681                 ;;
5682         esac
5683         ;;
5684 esac
5685 case "$useperlio" in
5686 $define)
5687         echo "Perlio selected." >&4
5688         ;;
5689 *)
5690         echo "Perlio not selected, using stdio." >&4
5691         case "$archname" in
5692         *-stdio*) echo "...and architecture name already has -stdio." >&4
5693                 ;;
5694         *)      archname="$archname-stdio"
5695                 echo "...setting architecture name to $archname." >&4
5696                 ;;
5697         esac
5698         ;;
5699 esac
5700 if $test -f archname.cbu; then
5701         echo "Your platform has some specific hints for architecture name, using them..."
5702         . ./archname.cbu
5703 fi
5704
5705 : determine root of directory hierarchy where package will be installed.
5706 case "$prefix" in
5707 '')
5708         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5709         ;;
5710 *?/)
5711         dflt=`echo "$prefix" | sed 's/.$//'`
5712         ;;
5713 *)
5714         dflt="$prefix"
5715         ;;
5716 esac
5717 $cat <<EOM
5718
5719 By default, $package will be installed in $dflt/bin, manual pages
5720 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5721 installation directories. Typically this is something like /usr/local.
5722 If you wish to have binaries under /usr/bin but other parts of the
5723 installation under /usr/local, that's ok: you will be prompted
5724 separately for each of the installation directories, the prefix being
5725 only used to set the defaults.
5726
5727 EOM
5728 fn=d~
5729 rp='Installation prefix to use?'
5730 . ./getfile
5731 oldprefix=''
5732 case "$prefix" in
5733 '') ;;
5734 *)
5735         case "$ans" in
5736         "$prefix") ;;
5737         *) oldprefix="$prefix";;
5738         esac
5739         ;;
5740 esac
5741 prefix="$ans"
5742 prefixexp="$ansexp"
5743
5744 case "$afsroot" in
5745 '')     afsroot=/afs ;;
5746 *)      afsroot=$afsroot ;;
5747 esac
5748
5749 : is AFS running?
5750 echo " "
5751 case "$afs" in
5752 $define|true)   afs=true ;;
5753 $undef|false)   afs=false ;;
5754 *)      if test -d $afsroot; then
5755                 afs=true
5756         else
5757                 afs=false
5758         fi
5759         ;;
5760 esac
5761 if $afs; then
5762         echo "AFS may be running... I'll be extra cautious then..." >&4
5763 else
5764         echo "AFS does not seem to be running..." >&4
5765 fi
5766
5767 : determine installation prefix for where package is to be installed.
5768 if $afs; then 
5769 $cat <<EOM
5770
5771 Since you are running AFS, I need to distinguish the directory in which
5772 files will reside from the directory in which they are installed (and from
5773 which they are presumably copied to the former directory by occult means).
5774
5775 EOM
5776         case "$installprefix" in
5777         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5778         *) dflt="$installprefix";;
5779         esac
5780 else
5781 $cat <<EOM
5782
5783 In some special cases, particularly when building $package for distribution,
5784 it is convenient to distinguish the directory in which files should be
5785 installed from the directory ($prefix) in which they will
5786 eventually reside.  For most users, these two directories are the same.
5787
5788 EOM
5789         case "$installprefix" in
5790         '') dflt=$prefix ;;
5791         *) dflt=$installprefix;;
5792         esac
5793 fi
5794 fn=d~
5795 rp='What installation prefix should I use for installing files?'
5796 . ./getfile
5797 installprefix="$ans"
5798 installprefixexp="$ansexp"
5799
5800 : set the prefixit variable, to compute a suitable default value
5801 prefixit='case "$3" in
5802 ""|none)
5803         case "$oldprefix" in
5804         "") eval "$1=\"\$$2\"";;
5805         *)
5806                 case "$3" in
5807                 "") eval "$1=";;
5808                 none)
5809                         eval "tp=\"\$$2\"";
5810                         case "$tp" in
5811                         ""|" ") eval "$1=\"\$$2\"";;
5812                         *) eval "$1=";;
5813                         esac;;
5814                 esac;;
5815         esac;;
5816 *)
5817         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5818         case "$tp" in
5819         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5820         /*-$oldprefix/*|\~*-$oldprefix/*)
5821                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5822         *) eval "$1=\"\$$2\"";;
5823         esac;;
5824 esac'
5825
5826 : get the patchlevel
5827 echo " "
5828 echo "Getting the current patchlevel..." >&4
5829 if $test -r $rsrc/patchlevel.h;then
5830         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5831         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5832         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5833         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5834         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5835         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5836        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5837 else
5838         revision=0
5839         patchlevel=0
5840         subversion=0
5841         api_revision=0
5842         api_version=0
5843         api_subversion=0
5844         perl_patchlevel=0
5845         $echo "(You do not have patchlevel.h.  Eek.)"
5846 fi
5847 if $test -r $rsrc/.patch ; then  
5848         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5849                 perl_patchlevel=`cat $rsrc/.patch`
5850         fi
5851 fi
5852 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5853 version_patchlevel_string="version $patchlevel subversion $subversion"
5854 case "$perl_patchlevel" in
5855 0|'') ;;
5856 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5857 esac
5858
5859 $echo "(You have $package $version_patchlevel_string.)"
5860
5861 case "$osname" in
5862 dos|vms)
5863         : XXX Should be a Configure test for double-dots in filenames.
5864         version=`echo $revision $patchlevel $subversion | \
5865                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5866         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5867                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5868         ;;
5869 *)
5870         version=`echo $revision $patchlevel $subversion | \
5871                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5872         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5873                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5874         ;;
5875 esac
5876 : Special case the 5.005_xx maintenance series, which used 5.005
5877 : without any subversion label as a subdirectory in $sitelib
5878 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5879         api_versionstring='5.005'
5880 fi
5881
5882 : determine installation style
5883 : For now, try to deduce it from prefix unless it is already set.
5884 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5885 case "$installstyle" in
5886 '')     case "$prefix" in
5887                 *perl*) dflt='lib';;
5888                 *) dflt='lib/perl5' ;;
5889         esac
5890         ;;
5891 *)      dflt="$installstyle" ;;
5892 esac
5893 : Probably not worth prompting for this since we prompt for all
5894 : the directories individually, and the prompt would be too long and
5895 : confusing anyway.
5896 installstyle=$dflt
5897
5898 : determine where private library files go
5899 : Usual default is /usr/local/lib/perl5/$version.
5900 : Also allow things like /opt/perl/lib/$version, since 
5901 : /opt/perl/lib/perl5... would be redundant.
5902 : The default "style" setting is made in installstyle.U
5903 case "$installstyle" in
5904 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5905 *)       set dflt privlib lib/$version ;;
5906 esac
5907 eval $prefixit
5908 $cat <<EOM
5909
5910 There are some auxiliary files for $package that need to be put into a
5911 private library directory that is accessible by everyone.
5912
5913 EOM
5914 fn=d~+
5915 rp='Pathname where the private library files will reside?'
5916 . ./getfile
5917 privlib="$ans"
5918 privlibexp="$ansexp"
5919 : Change installation prefix, if necessary.
5920 if $test X"$prefix" != X"$installprefix"; then
5921         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5922 else
5923         installprivlib="$privlibexp"
5924 fi
5925
5926 : set the prefixup variable, to restore leading tilda escape
5927 prefixup='case "$prefixexp" in
5928 "$prefix") ;;
5929 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5930 esac'
5931
5932 : determine where public architecture dependent libraries go
5933 set archlib archlib
5934 eval $prefixit
5935 : privlib default is /usr/local/lib/$package/$version
5936 : archlib default is /usr/local/lib/$package/$version/$archname
5937 : privlib may have an optional trailing /share.
5938 tdflt=`echo $privlib | $sed 's,/share$,,'`
5939 tdflt=$tdflt/$archname
5940 case "$archlib" in
5941 '')     dflt=$tdflt
5942         ;;
5943 *)      dflt="$archlib"
5944     ;;
5945 esac
5946 $cat <<EOM
5947
5948 $spackage contains architecture-dependent library files.  If you are
5949 sharing libraries in a heterogeneous environment, you might store
5950 these files in a separate location.  Otherwise, you can just include
5951 them with the rest of the public library files.
5952
5953 EOM
5954 fn=d+~
5955 rp='Where do you want to put the public architecture-dependent libraries?'
5956 . ./getfile
5957 archlib="$ans"
5958 archlibexp="$ansexp"
5959 if $test X"$archlib" = X"$privlib"; then
5960         d_archlib="$undef"
5961 else
5962         d_archlib="$define"
5963 fi
5964 : Change installation prefix, if necessary.
5965 if $test X"$prefix" != X"$installprefix"; then
5966         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5967 else
5968         installarchlib="$archlibexp"
5969 fi
5970
5971 : see if setuid scripts can be secure
5972 $cat <<EOM
5973
5974 Some kernels have a bug that prevents setuid #! scripts from being
5975 secure.  Some sites have disabled setuid #! scripts because of this.
5976
5977 First let's decide if your kernel supports secure setuid #! scripts.
5978 (If setuid #! scripts would be secure but have been disabled anyway,
5979 don't say that they are secure if asked.)
5980
5981 EOM
5982
5983 val="$undef"
5984 if $test -d /dev/fd; then
5985         echo "#!$ls" >reflect
5986         chmod +x,u+s reflect
5987         ./reflect >flect 2>&1
5988         if $contains "/dev/fd" flect >/dev/null; then
5989                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5990                 val="$define"
5991         else
5992                 $cat <<EOM
5993 If you are not sure if they are secure, I can check but I'll need a
5994 username and password different from the one you are using right now.
5995 If you don't have such a username or don't want me to test, simply
5996 enter 'none'.
5997
5998 EOM
5999                 rp='Other username to test security of setuid scripts with?'
6000                 dflt='none'
6001                 . ./myread
6002                 case "$ans" in
6003                 n|none)
6004                         case "$d_suidsafe" in
6005                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6006                                 dflt=n;;
6007                         "$undef")
6008                                 echo "Well, the $hint value is *not* secure." >&4
6009                                 dflt=n;;
6010                         *)      echo "Well, the $hint value *is* secure." >&4
6011                                 dflt=y;;
6012                         esac
6013                         ;;
6014                 *)
6015                         $rm -f reflect flect
6016                         echo "#!$ls" >reflect
6017                         chmod +x,u+s reflect
6018                         echo >flect
6019                         chmod a+w flect
6020                         echo '"su" will (probably) prompt you for '"$ans's password."
6021                         su $ans -c './reflect >flect'
6022                         if $contains "/dev/fd" flect >/dev/null; then
6023                                 echo "Okay, it looks like setuid scripts are secure." >&4
6024                                 dflt=y
6025                         else
6026                                 echo "I don't think setuid scripts are secure." >&4
6027                                 dflt=n
6028                         fi
6029                         ;;
6030                 esac
6031                 rp='Does your kernel have *secure* setuid scripts?'
6032                 . ./myread
6033                 case "$ans" in
6034                 [yY]*)  val="$define";;
6035                 *)      val="$undef";;
6036                 esac
6037         fi
6038 else
6039         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6040         echo "(That's for file descriptors, not floppy disks.)"
6041         val="$undef"
6042 fi
6043 set d_suidsafe
6044 eval $setvar
6045
6046 $rm -f reflect flect
6047
6048 : now see if they want to do setuid emulation
6049 echo " "
6050 val="$undef"
6051 case "$d_suidsafe" in
6052 "$define")
6053         val="$undef"
6054         echo "No need to emulate SUID scripts since they are secure here." >&4
6055         ;;
6056 *)
6057         $cat <<EOM
6058 Some systems have disabled setuid scripts, especially systems where
6059 setuid scripts cannot be secure.  On systems where setuid scripts have
6060 been disabled, the setuid/setgid bits on scripts are currently
6061 useless.  It is possible for $package to detect those bits and emulate
6062 setuid/setgid in a secure fashion.  This emulation will only work if
6063 setuid scripts have been disabled in your kernel.
6064
6065 EOM
6066         case "$d_dosuid" in
6067         "$define") dflt=y ;;
6068         *) dflt=n ;;
6069         esac
6070         rp="Do you want to do setuid/setgid emulation?"
6071         . ./myread
6072         case "$ans" in
6073         [yY]*)  val="$define";;
6074         *)      val="$undef";;
6075         esac
6076         ;;
6077 esac
6078 set d_dosuid
6079 eval $setvar
6080
6081 : see if this is a malloc.h system
6082 : we want a real compile instead of Inhdr because some systems have a
6083 : malloc.h that just gives a compile error saying to use stdlib.h instead
6084 echo " "
6085 $cat >try.c <<EOCP
6086 #include <stdlib.h>
6087 #include <malloc.h>
6088 int main () { return 0; }
6089 EOCP
6090 set try
6091 if eval $compile; then
6092     echo "<malloc.h> found." >&4
6093     val="$define"
6094 else
6095     echo "<malloc.h> NOT found." >&4
6096     val="$undef"
6097 fi
6098 $rm -f try.c try
6099 set i_malloc
6100 eval $setvar
6101
6102 : check for void type
6103 echo " "
6104 echo "Checking to see how well your C compiler groks the void type..." >&4
6105 case "$voidflags" in
6106 '')
6107         $cat >try.c <<EOCP
6108 #$i_stdlib I_STDLIB
6109 #ifdef I_STDLIB
6110 #include <stdlib.h>
6111 #endif
6112 #if TRY & 1
6113 void sub() {
6114 #else
6115 sub() {
6116 #endif
6117         extern void moo();      /* function returning void */
6118         void (*goo)();          /* ptr to func returning void */
6119 #if TRY & 8
6120         void *hue;              /* generic ptr */
6121 #endif
6122 #if TRY & 2
6123         void (*foo[10])();
6124 #endif
6125
6126 #if TRY & 4
6127         if(goo == moo) {
6128                 exit(0);
6129         }
6130 #endif
6131         exit(0);
6132 }
6133 int main() { sub(); }
6134 EOCP
6135         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6136                 voidflags=$defvoidused
6137         echo "Good.  It appears to support void to the level $package wants.">&4
6138                 if $contains warning .out >/dev/null 2>&1; then
6139                         echo "However, you might get some warnings that look like this:"
6140                         $cat .out
6141                 fi
6142         else
6143 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6144                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6145                         echo "It supports 1..."
6146                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6147                                 echo "It also supports 2..."
6148                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6149                                         voidflags=7
6150                                         echo "And it supports 4 but not 8 definitely."
6151                                 else
6152                                         echo "It doesn't support 4..."
6153                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6154                                                 voidflags=11
6155                                                 echo "But it supports 8."
6156                                         else
6157                                                 voidflags=3
6158                                                 echo "Neither does it support 8."
6159                                         fi
6160                                 fi
6161                         else
6162                                 echo "It does not support 2..."
6163                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6164                                         voidflags=13
6165                                         echo "But it supports 4 and 8."
6166                                 else
6167                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6168                                                 voidflags=5
6169                                                 echo "And it supports 4 but has not heard about 8."
6170                                         else
6171                                                 echo "However it supports 8 but not 4."
6172                                         fi
6173                                 fi
6174                         fi
6175                 else
6176                         echo "There is no support at all for void."
6177                         voidflags=0
6178                 fi
6179         fi
6180 esac
6181 case "$voidflags" in
6182 "$defvoidused") ;;
6183 *)      $cat >&4 <<'EOM'
6184   Support flag bits are:
6185     1: basic void declarations.
6186     2: arrays of pointers to functions returning void.
6187     4: operations between pointers to and addresses of void functions.
6188     8: generic void pointers.
6189 EOM
6190         dflt="$voidflags";
6191         rp="Your void support flags add up to what?"
6192         . ./myread
6193         voidflags="$ans"
6194         ;;
6195 esac
6196 $rm -f try.* .out
6197
6198 : check for length of pointer
6199 echo " "
6200 case "$ptrsize" in
6201 '')
6202         echo "Checking to see how big your pointers are..." >&4
6203         if test "$voidflags" -gt 7; then
6204                 echo '#define VOID_PTR char *' > try.c
6205         else
6206                 echo '#define VOID_PTR void *' > try.c
6207         fi
6208         $cat >>try.c <<EOCP
6209 #include <stdio.h>
6210 #$i_stdlib I_STDLIB
6211 #ifdef I_STDLIB
6212 #include <stdlib.h>
6213 #endif
6214 int main()
6215 {
6216     printf("%d\n", (int)sizeof(VOID_PTR));
6217     exit(0);
6218 }
6219 EOCP
6220         set try
6221         if eval $compile_ok; then
6222                 ptrsize=`$run ./try`
6223                 echo "Your pointers are $ptrsize bytes long."
6224         else
6225                 dflt='4'
6226                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6227                 rp="What is the size of a pointer (in bytes)?"
6228                 . ./myread
6229                 ptrsize="$ans"
6230         fi
6231         ;;
6232 esac
6233 $rm -f try.c try
6234 case "$use64bitall" in
6235 "$define"|true|[yY]*)
6236         case "$ptrsize" in
6237         4)      cat <<EOM >&4
6238
6239 *** You have chosen a maximally 64-bit build,
6240 *** but your pointers are only 4 bytes wide.
6241 *** Please rerun Configure without -Duse64bitall.
6242 EOM
6243                 case "$d_quad" in
6244                 define)
6245                         cat <<EOM >&4
6246 *** Since you have quads, you could possibly try with -Duse64bitint.
6247 EOM
6248                         ;;
6249                 esac
6250                 cat <<EOM >&4
6251 *** Cannot continue, aborting.
6252
6253 EOM
6254
6255                 exit 1
6256                 ;;
6257         esac
6258         ;;
6259 esac
6260
6261
6262 : determine which malloc to compile in
6263 echo " "
6264 case "$usemymalloc" in
6265 [yY]*|true|$define)     dflt='y' ;;
6266 [nN]*|false|$undef)     dflt='n' ;;
6267 *)      case "$ptrsize" in
6268         4) dflt='y' ;;
6269         *) dflt='n' ;;
6270         esac
6271         ;;
6272 esac
6273 rp="Do you wish to attempt to use the malloc that comes with $package?"
6274 . ./myread
6275 usemymalloc="$ans"
6276 case "$ans" in
6277 y*|true)
6278         usemymalloc='y'
6279         mallocsrc='malloc.c'
6280         mallocobj="malloc$_o"
6281         d_mymalloc="$define"
6282         case "$libs" in
6283         *-lmalloc*)
6284                 : Remove malloc from list of libraries to use
6285                 echo "Removing unneeded -lmalloc from library list" >&4
6286                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6287                 shift
6288                 libs="$*"
6289                 echo "libs = $libs" >&4
6290                 ;;
6291         esac
6292         ;;
6293 *)
6294         usemymalloc='n'
6295         mallocsrc=''
6296         mallocobj=''
6297         d_mymalloc="$undef"
6298         ;;
6299 esac
6300
6301 : compute the return types of malloc and free
6302 echo " "
6303 $cat >malloc.c <<END
6304 #$i_malloc I_MALLOC
6305 #$i_stdlib I_STDLIB
6306 #include <stdio.h>
6307 #include <sys/types.h>
6308 #ifdef I_MALLOC
6309 #include <malloc.h>
6310 #endif
6311 #ifdef I_STDLIB
6312 #include <stdlib.h>
6313 #endif
6314 #ifdef TRY_MALLOC
6315 void *malloc();
6316 #endif
6317 #ifdef TRY_FREE
6318 void free();
6319 #endif
6320 END
6321 case "$malloctype" in
6322 '')
6323         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6324                 malloctype='void *'
6325         else
6326                 malloctype='char *'
6327         fi
6328         ;;
6329 esac
6330 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6331
6332 case "$freetype" in
6333 '')
6334         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6335                 freetype='void'
6336         else
6337                 freetype='int'
6338         fi
6339         ;;
6340 esac
6341 echo "Your system uses $freetype free(), it would seem." >&4
6342 $rm -f malloc.[co]
6343 $cat <<EOM
6344
6345 After $package is installed, you may wish to install various
6346 add-on modules and utilities.  Typically, these add-ons will
6347 be installed under $prefix with the rest
6348 of this package.  However, you may wish to install such add-ons
6349 elsewhere under a different prefix.
6350
6351 If you do not wish to put everything under a single prefix, that's
6352 ok.  You will be prompted for the individual locations; this siteprefix
6353 is only used to suggest the defaults.
6354
6355 The default should be fine for most people.
6356
6357 EOM
6358 fn=d~+
6359 rp='Installation prefix to use for add-on modules and utilities?'
6360 : XXX Here might be another good place for an installstyle setting.
6361 case "$siteprefix" in
6362 '') dflt=$prefix ;;
6363 *)  dflt=$siteprefix ;;
6364 esac
6365 . ./getfile
6366 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6367 oldsiteprefix=''
6368 case "$siteprefix" in
6369 '') ;;
6370 *)      case "$ans" in
6371         "$prefix") ;;
6372         *) oldsiteprefix="$prefix";;
6373         esac
6374         ;;
6375 esac
6376 siteprefix="$ans"
6377 siteprefixexp="$ansexp"
6378
6379 : determine where site specific libraries go.
6380 : Usual default is /usr/local/lib/perl5/site_perl/$version
6381 : The default "style" setting is made in installstyle.U
6382 : XXX No longer works with Prefixit stuff.
6383 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6384 case "$sitelib" in
6385 '') case "$installstyle" in
6386         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6387         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6388         esac
6389         ;;
6390 *)      dflt="$sitelib"
6391         ;;
6392 esac
6393 $cat <<EOM
6394
6395 The installation process will create a directory for
6396 site-specific extensions and modules.  Most users find it convenient
6397 to place all site-specific files in this directory rather than in the
6398 main distribution directory.
6399
6400 EOM
6401 fn=d~+
6402 rp='Pathname for the site-specific library files?'
6403 . ./getfile
6404 sitelib="$ans"
6405 sitelibexp="$ansexp"
6406 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6407 : Change installation prefix, if necessary.
6408 if $test X"$prefix" != X"$installprefix"; then
6409         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6410 else
6411         installsitelib="$sitelibexp"
6412 fi
6413
6414 : determine where site specific architecture-dependent libraries go.
6415 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6416 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6417 : sitelib may have an optional trailing /share.
6418 case "$sitearch" in
6419 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6420         dflt="$dflt/$archname"
6421         ;;
6422 *)      dflt="$sitearch"
6423         ;;
6424 esac
6425 set sitearch sitearch none
6426 eval $prefixit
6427 $cat <<EOM
6428
6429 The installation process will also create a directory for
6430 architecture-dependent site-specific extensions and modules.
6431
6432 EOM
6433 fn=d~+
6434 rp='Pathname for the site-specific architecture-dependent library files?'
6435 . ./getfile
6436 sitearch="$ans"
6437 sitearchexp="$ansexp"
6438 : Change installation prefix, if necessary.
6439 if $test X"$prefix" != X"$installprefix"; then
6440         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6441 else
6442         installsitearch="$sitearchexp"
6443 fi
6444
6445 $cat <<EOM
6446
6447 The installation process will also create a directory for
6448 vendor-supplied add-ons.  Vendors who supply perl with their system
6449 may find it convenient to place all vendor-supplied files in this
6450 directory rather than in the main distribution directory.  This will
6451 ease upgrades between binary-compatible maintenance versions of perl.
6452
6453 Of course you may also use these directories in whatever way you see
6454 fit.  For example, you might use them to access modules shared over a
6455 company-wide network.
6456
6457 The default answer should be fine for most people.
6458 This causes further questions about vendor add-ons to be skipped
6459 and no vendor-specific directories will be configured for perl.
6460
6461 EOM
6462 rp='Do you want to configure vendor-specific add-on directories?'
6463 case "$usevendorprefix" in
6464 define|true|[yY]*) dflt=y ;;
6465 *)      : User may have set vendorprefix directly on Configure command line.
6466         case "$vendorprefix" in
6467         ''|' ') dflt=n ;;
6468         *)      dflt=y ;;
6469         esac
6470         ;;
6471 esac
6472 . ./myread
6473 case "$ans" in
6474 [yY]*)  fn=d~+
6475         rp='Installation prefix to use for vendor-supplied add-ons?'
6476         case "$vendorprefix" in
6477         '') dflt='' ;;
6478         *)  dflt=$vendorprefix ;;
6479         esac
6480         . ./getfile
6481         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6482         oldvendorprefix=''
6483         case "$vendorprefix" in
6484         '') ;;
6485         *)      case "$ans" in
6486                 "$prefix") ;;
6487                 *) oldvendorprefix="$prefix";;
6488                 esac
6489                 ;;
6490         esac
6491         usevendorprefix="$define"
6492         vendorprefix="$ans"
6493         vendorprefixexp="$ansexp"
6494         ;;
6495 *)      usevendorprefix="$undef"
6496         vendorprefix=''
6497         vendorprefixexp=''
6498         ;;
6499 esac
6500
6501 case "$vendorprefix" in
6502 '')     d_vendorlib="$undef"
6503         vendorlib=''
6504         vendorlibexp=''
6505         ;;
6506 *)      d_vendorlib="$define"
6507         : determine where vendor-supplied modules go.
6508         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6509         case "$vendorlib" in
6510         '')
6511                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6512                 case "$installstyle" in
6513                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6514                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6515                 esac
6516                 ;;
6517         *)      dflt="$vendorlib"
6518                 ;;
6519         esac
6520         fn=d~+
6521         rp='Pathname for the vendor-supplied library files?'
6522         . ./getfile
6523         vendorlib="$ans"
6524         vendorlibexp="$ansexp"
6525         ;;
6526 esac
6527 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6528 : Change installation prefix, if necessary.
6529 if $test X"$prefix" != X"$installprefix"; then
6530         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6531 else
6532         installvendorlib="$vendorlibexp"
6533 fi
6534
6535 case "$vendorprefix" in
6536 '')     d_vendorarch="$undef"
6537         vendorarch=''
6538         vendorarchexp=''
6539         ;;
6540 *)      d_vendorarch="$define"
6541         : determine where vendor-supplied architecture-dependent libraries go.
6542         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6543         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6544         : vendorlib may have an optional trailing /share.
6545         case "$vendorarch" in
6546         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6547                 dflt="$dflt/$archname"
6548                 ;;
6549         *)      dflt="$vendorarch" ;;
6550         esac
6551         fn=d~+
6552         rp='Pathname for vendor-supplied architecture-dependent files?'
6553         . ./getfile
6554         vendorarch="$ans"
6555         vendorarchexp="$ansexp"
6556         ;;
6557 esac
6558 : Change installation prefix, if necessary.
6559 if $test X"$prefix" != X"$installprefix"; then
6560         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6561 else
6562         installvendorarch="$vendorarchexp"
6563 fi
6564
6565 : Final catch-all directories to search
6566 $cat <<EOM
6567
6568 Lastly, you can have perl look in other directories for extensions and
6569 modules in addition to those already specified.
6570 These directories will be searched after 
6571         $sitearch 
6572         $sitelib 
6573 EOM
6574 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6575 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6576 echo ' '
6577 case "$otherlibdirs" in
6578 ''|' ') dflt='none' ;;
6579 *)      dflt="$otherlibdirs" ;;
6580 esac
6581 $cat <<EOM
6582 Enter a colon-separated set of extra paths to include in perl's @INC
6583 search path, or enter 'none' for no extra paths.
6584
6585 EOM
6586
6587 rp='Colon-separated list of additional directories for perl to search?'
6588 . ./myread
6589 case "$ans" in
6590 ' '|''|none)    otherlibdirs=' ' ;;     
6591 *)      otherlibdirs="$ans" ;;
6592 esac
6593 case "$otherlibdirs" in
6594 ' ') val=$undef ;;
6595 *)      val=$define ;;
6596 esac
6597 set d_perl_otherlibdirs
6598 eval $setvar
6599
6600 : Cruising for prototypes
6601 echo " "
6602 echo "Checking out function prototypes..." >&4
6603 $cat >prototype.c <<EOCP
6604 #$i_stdlib I_STDLIB
6605 #ifdef I_STDLIB
6606 #include <stdlib.h>
6607 #endif
6608 int main(int argc, char *argv[]) {
6609         exit(0);}
6610 EOCP
6611 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6612         echo "Your C compiler appears to support function prototypes."
6613         val="$define"
6614 else
6615         echo "Your C compiler doesn't seem to understand function prototypes."
6616         val="$undef"
6617 fi
6618 set prototype
6619 eval $setvar
6620 $rm -f prototype*
6621
6622 case "$prototype" in
6623 "$define") ;;
6624 *)      ansi2knr='ansi2knr'
6625         echo " "
6626         cat <<EOM >&4
6627
6628 $me:  FATAL ERROR:
6629 This version of $package can only be compiled by a compiler that 
6630 understands function prototypes.  Unfortunately, your C compiler 
6631         $cc $ccflags
6632 doesn't seem to understand them.  Sorry about that.
6633
6634 If GNU cc is available for your system, perhaps you could try that instead.  
6635
6636 Eventually, we hope to support building Perl with pre-ANSI compilers.
6637 If you would like to help in that effort, please contact <perlbug@perl.org>.
6638
6639 Aborting Configure now.
6640 EOM
6641         exit 2
6642         ;;
6643 esac
6644
6645 : determine where public executables go
6646 echo " "
6647 set dflt bin bin
6648 eval $prefixit
6649 fn=d~
6650 rp='Pathname where the public executables will reside?'
6651 . ./getfile
6652 if $test "X$ansexp" != "X$binexp"; then
6653         installbin=''
6654 fi
6655 bin="$ans"
6656 binexp="$ansexp"
6657 : Change installation prefix, if necessary.
6658 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6659 if $test X"$prefix" != X"$installprefix"; then
6660         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6661 else
6662         installbin="$binexp"
6663 fi
6664
6665 echo " "
6666 case "$extras" in
6667 '') dflt='n';;
6668 *) dflt='y';;
6669 esac
6670 cat <<EOM
6671 Perl can be built with extra modules or bundles of modules which
6672 will be fetched from the CPAN and installed alongside Perl.
6673
6674 Notice that you will need access to the CPAN; either via the Internet,
6675 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6676 be asked later to configure the CPAN.pm module which will in turn do
6677 the installation of the rest of the extra modules or bundles.)
6678
6679 Notice also that if the modules require any external software such as
6680 libraries and headers (the libz library and the zlib.h header for the
6681 Compress::Zlib module, for example) you MUST have any such software
6682 already installed, this configuration process will NOT install such
6683 things for you.
6684
6685 If this doesn't make any sense to you, just accept the default '$dflt'.
6686 EOM
6687 rp='Install any extra modules (y or n)?'
6688 . ./myread
6689 case "$ans" in
6690 y|Y)
6691         cat <<EOM
6692
6693 Please list any extra modules or bundles to be installed from CPAN,
6694 with spaces between the names.  The names can be in any format the
6695 'install' command of CPAN.pm will understand.  (Answer 'none',
6696 without the quotes, to install no extra modules or bundles.)
6697 EOM
6698         rp='Extras?'
6699         dflt="$extras"
6700         . ./myread
6701         extras="$ans"
6702 esac
6703 case "$extras" in
6704 ''|'none')
6705         val=''
6706         $rm -f ../extras.lst
6707         ;;
6708 *)      echo "(Saving the list of extras for later...)"
6709         echo "$extras" > ../extras.lst
6710         val="'$extras'"
6711         ;;
6712 esac
6713 set extras
6714 eval $setvar
6715 echo " "
6716
6717 : determine where html pages for programs go
6718 set html1dir html1dir none
6719 eval $prefixit
6720 $cat <<EOM
6721
6722 If you wish to install html files for programs in $spackage, indicate 
6723 the appropriate directory here.  To skip installing html files,
6724 answer "none".
6725 EOM
6726 case "$html1dir" in
6727 ''|none|$undef|' ') dflt=none ;;
6728 *) dflt=$html1dir ;;
6729 esac
6730 fn=dn+~
6731 rp="Directory for the main $spackage html pages?"
6732 . ./getfile
6733 html1dir="$ans"
6734 html1direxp="$ansexp"
6735 : Use ' ' for none so value is preserved next time through Configure
6736 $test X"$html1dir" = "X" && html1dir=' '
6737 : Change installation prefix, if necessary.
6738 if $test X"$prefix" != X"$installprefix"; then
6739         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6740 else
6741         installhtml1dir="$html1direxp"
6742 fi
6743
6744 : determine where html pages for libraries and modules go
6745 set html3dir html3dir none
6746 eval $prefixit
6747 $cat <<EOM
6748
6749 If you wish to install html files for modules associated with $spackage,
6750 indicate the appropriate directory here.  To skip installing html files,
6751 answer "none".
6752 EOM
6753 : There is no obvious default.  If they have specified html1dir, then
6754 : try to key off that, possibly changing .../html1 into .../html3.
6755 case "$html3dir" in
6756 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6757 *) dflt=$html3dir ;;
6758 esac
6759 fn=dn+~
6760 rp="Directory for the $spackage module html pages?"
6761 . ./getfile
6762 html3dir="$ans"
6763 html3direxp="$ansexp"
6764 : Use ' ' for none so value is preserved next time through Configure
6765 $test X"$html3dir" = "X" && html3dir=' '
6766 : Change installation prefix, if necessary.
6767 if $test X"$prefix" != X"$installprefix"; then
6768         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6769 else
6770         installhtml3dir="$html3direxp"
6771 fi
6772
6773 : Find perl5.005 or later.
6774 echo "Looking for a previously installed perl5.005 or later... "
6775 case "$perl5" in
6776 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6777                 : Check if this perl is recent and can load a simple module
6778                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6779                         perl5=$tdir/perl
6780                         break;
6781                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6782                         perl5=$tdir/perl5
6783                         break;
6784                 fi
6785         done
6786         ;;
6787 *)      perl5="$perl5"
6788         ;;
6789 esac
6790 case "$perl5" in
6791 '')     echo "None found.  That's ok.";;
6792 *)      echo "Using $perl5." ;;
6793 esac
6794
6795 : Determine list of previous versions to include in @INC
6796 $cat > getverlist <<EOPL
6797 #!$perl5 -w
6798 use File::Basename;
6799 \$api_versionstring = "$api_versionstring";
6800 \$version = "$version";
6801 \$stem = "$sitelib_stem";
6802 \$archname = "$archname";
6803 EOPL
6804         $cat >> getverlist <<'EOPL'
6805 # Can't have leading @ because metaconfig interprets it as a command!
6806 ;@inc_version_list=();
6807 # XXX Redo to do opendir/readdir? 
6808 if (-d $stem) {
6809     chdir($stem);
6810     ;@candidates = glob("5.*");
6811 }
6812 else {
6813     ;@candidates = ();
6814 }
6815
6816 # XXX ToDo:  These comparisons must be reworked when two-digit
6817 # subversions come along, so that 5.7.10 compares as greater than
6818 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6819 # widespread that we can use the built-in version vectors rather
6820 # than reinventing them here.  For 5.6.0, however, we must
6821 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6822 foreach $d (@candidates) {
6823     if ($d lt $version) {
6824         if ($d ge $api_versionstring) {
6825             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6826         }
6827         elsif ($d ge "5.005") {
6828             unshift(@inc_version_list, grep { -d } $d);
6829         }
6830     }
6831     else {
6832         # Skip newer version.  I.e. don't look in
6833         # 5.7.0 if we're installing 5.6.1.
6834     }
6835 }
6836
6837 if (@inc_version_list) {
6838     print join(' ', @inc_version_list);
6839 }
6840 else {
6841     # Blank space to preserve value for next Configure run.
6842     print " ";
6843 }
6844 EOPL
6845 chmod +x getverlist
6846 case "$inc_version_list" in
6847 '')     if test -x "$perl5$exe_ext"; then
6848                 dflt=`$perl5 getverlist`
6849         else
6850                 dflt='none'
6851         fi
6852         ;;
6853 $undef) dflt='none' ;;
6854 *)  eval dflt=\"$inc_version_list\" ;;
6855 esac
6856 case "$dflt" in
6857 ''|' ') dflt=none ;;
6858 esac
6859 case "$dflt" in
6860 5.005) dflt=none ;;
6861 esac
6862 $cat <<EOM
6863
6864 In order to ease the process of upgrading, this version of perl 
6865 can be configured to use modules built and installed with earlier 
6866 versions of perl that were installed under $prefix.  Specify here
6867 the list of earlier versions that this version of perl should check.
6868 If Configure detected no earlier versions of perl installed under
6869 $prefix, then the list will be empty.  Answer 'none' to tell perl
6870 to not search earlier versions.
6871
6872 The default should almost always be sensible, so if you're not sure,
6873 just accept the default.
6874 EOM
6875
6876 rp='List of earlier versions to include in @INC?'
6877 . ./myread
6878 case "$ans" in
6879 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6880 *) inc_version_list="$ans" ;;
6881 esac
6882 case "$inc_version_list" in
6883 ''|' ') 
6884         inc_version_list_init='0';;
6885 *)      inc_version_list_init=`echo $inc_version_list |
6886                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6887         ;;
6888 esac
6889 $rm -f getverlist
6890
6891 : determine whether to install perl also as /usr/bin/perl
6892
6893 echo " "
6894 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6895         $cat <<EOM
6896 Many scripts expect perl to be installed as /usr/bin/perl.
6897
6898 If you want to, I can install the perl you are about to compile
6899 as /usr/bin/perl (in addition to $bin/perl).
6900 EOM
6901         if test -f /usr/bin/perl; then
6902             $cat <<EOM
6903
6904 However, please note that because you already have a /usr/bin/perl,
6905 overwriting that with a new Perl would very probably cause problems.
6906 Therefore I'm assuming you don't want to do that (unless you insist).
6907
6908 EOM
6909             case "$installusrbinperl" in
6910             "$define"|[yY]*)    dflt='y';;
6911             *)                  dflt='n';;
6912             esac
6913         else
6914             $cat <<EOM
6915
6916 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6917
6918 EOM
6919             case "$installusrbinperl" in
6920             "$undef"|[nN]*)     dflt='n';;
6921             *)                  dflt='y';;
6922             esac
6923         fi
6924         rp="Do you want to install perl as /usr/bin/perl?"
6925         . ./myread
6926         case "$ans" in
6927         [yY]*)  val="$define";;
6928         *)      val="$undef" ;;
6929         esac
6930 else
6931         val="$undef"
6932 fi
6933 set installusrbinperl
6934 eval $setvar
6935
6936 echo " "
6937 echo "Checking for GNU C Library..." >&4
6938 cat >try.c <<'EOCP'
6939 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
6940    alone are insufficient to distinguish different versions, such as
6941    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
6942    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
6943 */
6944 #include <stdio.h>
6945 int main(void)
6946 {
6947 #ifdef __GLIBC__
6948 #   ifdef __GLIBC_MINOR__
6949 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6950 #           include <gnu/libc-version.h>
6951             printf("%s\n",  gnu_get_libc_version());
6952 #       else
6953             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
6954 #       endif
6955 #   else
6956         printf("%d\n",  __GLIBC__);
6957 #   endif
6958     return 0;
6959 #else
6960     return 1;
6961 #endif
6962 }
6963 EOCP
6964 set try
6965 if eval $compile_ok && $run ./try > glibc.ver; then
6966         val="$define"
6967         gnulibc_version=`$cat glibc.ver`
6968         echo "You are using the GNU C Library version $gnulibc_version"
6969 else
6970         val="$undef"
6971         gnulibc_version=''
6972         echo "You are not using the GNU C Library"
6973 fi
6974 $rm -f try try.* glibc.ver
6975 set d_gnulibc
6976 eval $setvar
6977
6978 : see if nm is to be used to determine whether a symbol is defined or not
6979 case "$usenm" in
6980 '')
6981         dflt=''
6982         case "$d_gnulibc" in
6983         "$define")
6984                 echo " "
6985                 echo "nm probably won't work on the GNU C Library." >&4
6986                 dflt=n
6987                 ;;
6988         esac
6989         case "$dflt" in
6990         '') 
6991                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
6992                         echo " "
6993                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
6994                         echo "'nm' won't be sufficient on this sytem." >&4
6995                         dflt=n
6996                 fi
6997                 ;;
6998         esac
6999         case "$dflt" in
7000         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7001                 if $test $dflt -gt 20; then
7002                         dflt=y
7003                 else
7004                         dflt=n
7005                 fi
7006                 ;;
7007         esac
7008         ;;
7009 *)
7010         case "$usenm" in
7011         true|$define) dflt=y;;
7012         *) dflt=n;;
7013         esac
7014         ;;
7015 esac
7016 $cat <<EOM
7017
7018 I can use $nm to extract the symbols from your C libraries. This
7019 is a time consuming task which may generate huge output on the disk (up
7020 to 3 megabytes) but that should make the symbols extraction faster. The
7021 alternative is to skip the 'nm' extraction part and to compile a small
7022 test program instead to determine whether each symbol is present. If
7023 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7024 this may be the best solution.
7025
7026 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7027
7028 EOM
7029 rp="Shall I use $nm to extract C symbols from the libraries?"
7030 . ./myread
7031 case "$ans" in
7032 [Nn]*) usenm=false;;
7033 *) usenm=true;;
7034 esac
7035
7036 runnm=$usenm
7037 case "$reuseval" in
7038 true) runnm=false;;
7039 esac
7040
7041 : nm options which may be necessary
7042 case "$nm_opt" in
7043 '') if $test -f /mach_boot; then
7044                 nm_opt=''       # Mach
7045         elif $test -d /usr/ccs/lib; then
7046                 nm_opt='-p'     # Solaris (and SunOS?)
7047         elif $test -f /dgux; then
7048                 nm_opt='-p'     # DG-UX
7049         elif $test -f /lib64/rld; then
7050                 nm_opt='-p'     # 64-bit Irix
7051         else
7052                 nm_opt=''
7053         fi;;
7054 esac
7055
7056 : nm options which may be necessary for shared libraries but illegal
7057 : for archive libraries.  Thank you, Linux.
7058 case "$nm_so_opt" in
7059 '')     case "$myuname" in
7060         *linux*)
7061                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7062                         nm_so_opt='--dynamic'
7063                 fi
7064                 ;;
7065         esac
7066         ;;
7067 esac
7068
7069 case "$runnm" in
7070 true)
7071 : get list of predefined functions in a handy place
7072 echo " "
7073 case "$libc" in
7074 '') libc=unknown
7075         case "$libs" in
7076         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7077         esac
7078         ;;
7079 esac
7080 case "$libs" in
7081 '') ;;
7082 *)  for thislib in $libs; do
7083         case "$thislib" in
7084         -lc|-lc_s)
7085                 : Handle C library specially below.
7086                 ;;
7087         -l*)
7088                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7089                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7090                         :
7091                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7092                         :
7093                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7094                         :
7095                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7096                         :
7097                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7098                         :
7099                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7100                         :
7101                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7102                         :
7103                 else
7104                         try=''
7105                 fi
7106                 libnames="$libnames $try"
7107                 ;;
7108         *) libnames="$libnames $thislib" ;;
7109         esac
7110         done
7111         ;;
7112 esac
7113 xxx=normal
7114 case "$libc" in
7115 unknown)
7116         set /lib/libc.$so
7117         for xxx in $libpth; do
7118                 $test -r $1 || set $xxx/libc.$so
7119                 : The messy sed command sorts on library version numbers.
7120                 $test -r $1 || \
7121                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7122                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7123                                 h
7124                                 s/[0-9][0-9]*/0000&/g
7125                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7126                                 G
7127                                 s/\n/ /' | \
7128                          $sort | $sed -e 's/^.* //'`
7129                 eval set \$$#
7130         done
7131         $test -r $1 || set /usr/ccs/lib/libc.$so
7132         $test -r $1 || set /lib/libsys_s$_a
7133         ;;
7134 *)
7135         set blurfl
7136         ;;
7137 esac
7138 if $test -r "$1"; then
7139         echo "Your (shared) C library seems to be in $1."
7140         libc="$1"
7141 elif $test -r /lib/libc && $test -r /lib/clib; then
7142         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7143         xxx=apollo
7144         libc='/lib/clib /lib/libc'
7145         if $test -r /lib/syslib; then
7146                 echo "(Your math library is in /lib/syslib.)"
7147                 libc="$libc /lib/syslib"
7148         fi
7149 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7150         echo "Your C library seems to be in $libc, as you said before."
7151 elif $test -r $incpath/usr/lib/libc$_a; then
7152         libc=$incpath/usr/lib/libc$_a;
7153         echo "Your C library seems to be in $libc.  That's fine."
7154 elif $test -r /lib/libc$_a; then
7155         libc=/lib/libc$_a;
7156         echo "Your C library seems to be in $libc.  You're normal."
7157 else
7158         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7159                 :
7160         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7161                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7162         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7163                 :
7164         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7165                 :
7166         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7167                 :
7168         else
7169                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7170         fi
7171         if $test -r "$tans"; then
7172                 echo "Your C library seems to be in $tans, of all places."
7173                 libc=$tans
7174         else
7175                 libc='blurfl'
7176         fi
7177 fi
7178 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7179         dflt="$libc"
7180         cat <<EOM
7181
7182 If the guess above is wrong (which it might be if you're using a strange
7183 compiler, or your machine supports multiple models), you can override it here.
7184
7185 EOM
7186 else
7187         dflt=''
7188         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7189         cat >&4 <<EOM
7190 I can't seem to find your C library.  I've looked in the following places:
7191
7192 EOM
7193         $sed 's/^/      /' libpath
7194         cat <<EOM
7195
7196 None of these seems to contain your C library. I need to get its name...
7197
7198 EOM
7199 fi
7200 fn=f
7201 rp='Where is your C library?'
7202 . ./getfile
7203 libc="$ans"
7204
7205 echo " "
7206 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7207 set X `cat libnames`
7208 shift
7209 xxx=files
7210 case $# in 1) xxx=file; esac
7211 echo "Extracting names from the following $xxx for later perusal:" >&4
7212 echo " "
7213 $sed 's/^/      /' libnames >&4
7214 echo " "
7215 $echo $n "This may take a while...$c" >&4
7216
7217 for file in $*; do
7218         case $file in
7219         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7220         *) $nm $nm_opt $file 2>/dev/null;;
7221         esac
7222 done >libc.tmp
7223
7224 $echo $n ".$c"
7225 $grep fprintf libc.tmp > libc.ptf
7226 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7227 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7228 xxx='[ADTSIW]'
7229 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7230         eval $xscan;\
7231         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7232                 eval $xrun
7233 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7234         eval $xscan;\
7235         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7236                 eval $xrun
7237 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7238         eval $xscan;\
7239         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7240                 eval $xrun
7241 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7242         eval $xscan;\
7243         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7244                 eval $xrun
7245 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7246         eval $xscan;\
7247         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7248                 eval $xrun
7249 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7250         eval $xscan;\
7251         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7252                 eval $xrun
7253 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7254                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7255         eval $xscan;\
7256         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7257                 eval $xrun
7258 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7259         eval $xscan;\
7260         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7261                 eval $xrun
7262 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7263         eval $xscan;\
7264         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7265                 eval $xrun
7266 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7267         eval $xscan;\
7268         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7269                 eval $xrun
7270 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7271         eval $xscan;\
7272         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7273                 eval $xrun
7274 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7275         eval $xscan;\
7276         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7277                 eval $xrun
7278 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7279         eval $xscan;\
7280         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7281                 eval $xrun
7282 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7283         eval $xscan;\
7284         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7285                 eval $xrun
7286 else
7287         $nm -p $* 2>/dev/null >libc.tmp
7288         $grep fprintf libc.tmp > libc.ptf
7289         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7290                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7291         then
7292                 nm_opt='-p'
7293                 eval $xrun
7294         else
7295                 echo " "
7296                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7297                 com=''
7298                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7299                         for thisname in $libnames $libc; do
7300                                 $ar t $thisname >>libc.tmp
7301                         done
7302                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7303                         echo "Ok." >&4
7304                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7305                         # Repeat libc to extract forwarders to DLL entries too
7306                         for thisname in $libnames $libc; do
7307                                 $ar tv $thisname >>libc.tmp
7308                                 # Revision 50 of EMX has bug in $ar.
7309                                 # it will not extract forwarders to DLL entries
7310                                 # Use emximp which will extract exactly them.
7311                                 emximp -o tmp.imp $thisname \
7312                                     2>/dev/null && \
7313                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7314                                     < tmp.imp >>libc.tmp
7315                                 $rm tmp.imp
7316                         done
7317                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7318                         echo "Ok." >&4
7319                 else
7320                         echo "$ar didn't seem to work right." >&4
7321                         echo "Maybe this is a Cray...trying bld instead..." >&4
7322                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7323                         then
7324                                 for thisname in $libnames; do
7325                                         bld t $libnames | \
7326                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7327                                         $ar t $thisname >>libc.tmp
7328                                 done
7329                                 echo "Ok." >&4
7330                         else
7331                                 echo "That didn't work either.  Giving up." >&4
7332                                 exit 1
7333                         fi
7334                 fi
7335         fi
7336 fi
7337 nm_extract="$com"
7338 case "$PASE" in
7339 define)
7340     echo " "
7341     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7342     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7343     ;;
7344 *)  if $test -f /lib/syscalls.exp; then
7345         echo " "
7346         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7347         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7348     fi
7349     ;;
7350 esac
7351 ;;
7352 esac
7353 $rm -f libnames libpath
7354
7355 : see if dld is available
7356 set dld.h i_dld
7357 eval $inhdr
7358
7359 : is a C symbol defined?
7360 csym='tlook=$1;
7361 case "$3" in
7362 -v) tf=libc.tmp; tdc="";;
7363 -a) tf=libc.tmp; tdc="[]";;
7364 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7365 esac;
7366 tx=yes;
7367 case "$reuseval-$4" in
7368 true-) ;;
7369 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7370 esac;
7371 case "$tx" in
7372 yes)
7373         tval=false;
7374         if $test "$runnm" = true; then
7375                 if $contains $tlook $tf >/dev/null 2>&1; then
7376                         tval=true;
7377                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7378                         echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7379                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7380                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7381                         $rm -f try$_exe try.c core core.* try.core;
7382                 fi;
7383         else
7384                 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7385                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7386                 $rm -f try$_exe try.c;
7387         fi;
7388         ;;
7389 *)
7390         case "$tval" in
7391         $define) tval=true;;
7392         *) tval=false;;
7393         esac;
7394         ;;
7395 esac;
7396 eval "$2=$tval"'
7397
7398 : define an is-in-libc? function
7399 inlibc='echo " "; td=$define; tu=$undef;
7400 sym=$1; var=$2; eval "was=\$$2";
7401 tx=yes;
7402 case "$reuseval$was" in
7403 true) ;;
7404 true*) tx=no;;
7405 esac;
7406 case "$tx" in
7407 yes)
7408         set $sym tres -f;
7409         eval $csym;
7410         case "$tres" in
7411         true)
7412                 echo "$sym() found." >&4;
7413                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7414         *)
7415                 echo "$sym() NOT found." >&4;
7416                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7417         esac;;
7418 *)
7419         case "$was" in
7420         $define) echo "$sym() found." >&4;;
7421         *) echo "$sym() NOT found." >&4;;
7422         esac;;
7423 esac'
7424
7425 : see if dlopen exists
7426 xxx_runnm="$runnm"
7427 runnm=false
7428 set dlopen d_dlopen
7429 eval $inlibc
7430 runnm="$xxx_runnm"
7431
7432 : determine which dynamic loading, if any, to compile in
7433 echo " "
7434 dldir="ext/DynaLoader"
7435 case "$usedl" in
7436 $define|y|true)
7437         dflt='y'
7438         usedl="$define"
7439         ;;
7440 $undef|n|false)
7441         dflt='n'
7442         usedl="$undef"
7443         ;;
7444 *) 
7445         dflt='n'
7446         case "$d_dlopen" in
7447             $define) dflt='y' ;;
7448         esac
7449         case "$i_dld" in
7450             $define) dflt='y' ;;
7451         esac
7452         : Does a dl_xxx.xs file exist for this operating system
7453         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7454         ;;
7455 esac
7456 rp="Do you wish to use dynamic loading?"
7457 . ./myread
7458 usedl="$ans"
7459 case "$ans" in
7460 y*) usedl="$define"
7461         case "$dlsrc" in
7462         '')
7463                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7464                         dflt="$dldir/dl_${osname}.xs"
7465                 elif $test "$d_dlopen" = "$define" ; then
7466                         dflt="$dldir/dl_dlopen.xs"
7467                 elif $test "$i_dld" = "$define" ; then
7468                         dflt="$dldir/dl_dld.xs"
7469                 else
7470                         dflt=''
7471                 fi
7472                 ;;
7473         *)      dflt="$dldir/$dlsrc"
7474                 ;;
7475         esac
7476     echo "The following dynamic loading files are available:"
7477         : Can not go over to $dldir because getfile has path hard-coded in.
7478         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7479         rp="Source file to use for dynamic loading"
7480         fn="fne"
7481         gfpth="$src"
7482         . ./getfile
7483         usedl="$define"
7484         : emulate basename
7485         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7486
7487         $cat << EOM
7488
7489 Some systems may require passing special flags to $cc -c to
7490 compile modules that will be used to create a shared library.
7491 To use no flags, say "none".
7492
7493 EOM
7494     case "$cccdlflags" in
7495     '') case "$gccversion" in
7496                 '') case "$osname" in
7497                         hpux)   dflt='+z' ;;
7498                         next)   dflt='none' ;;
7499                         irix*)  dflt='-KPIC' ;;
7500                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7501                         sunos)  dflt='-pic' ;;
7502                         *)      dflt='none' ;;
7503                     esac
7504                         ;;
7505                 *)  case "$osname" in
7506                         darwin) dflt='none' ;;
7507                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7508                         *)      dflt='-fpic' ;;
7509                     esac ;;
7510             esac ;;
7511         ' ') dflt='none' ;;
7512     *)  dflt="$cccdlflags" ;;
7513     esac
7514     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7515     . ./myread
7516     case "$ans" in
7517     none) cccdlflags=' ' ;;
7518     *) cccdlflags="$ans" ;;
7519     esac
7520
7521     cat << EOM
7522
7523 Some systems use ld to create libraries that can be dynamically loaded,
7524 while other systems (such as those using ELF) use $cc.
7525
7526 EOM
7527         case "$ld" in
7528         '')     $cat >try.c <<EOM
7529 /* Test for whether ELF binaries are produced */
7530 #include <fcntl.h>
7531 #$i_stdlib I_STDLIB
7532 #ifdef I_STDLIB
7533 #include <stdlib.h>
7534 #endif
7535 int main() {
7536         char b[4];
7537         int i = open("a.out",O_RDONLY);
7538         if(i == -1) 
7539                 exit(1); /* fail */
7540         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7541                 exit(0); /* succeed (yes, it's ELF) */
7542         else
7543                 exit(1); /* fail */
7544 }
7545 EOM
7546                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7547                         cat <<EOM
7548 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7549 EOM
7550                         dflt="$cc"
7551                 else
7552                         echo "I'll use ld to build dynamic libraries."
7553                         dflt='ld'
7554                 fi
7555                 rm -f try.c a.out
7556                 ;;
7557         *)      dflt="$ld"
7558                 ;;
7559         esac
7560
7561     rp="What command should be used to create dynamic libraries?"
7562     . ./myread
7563         ld="$ans"
7564
7565     cat << EOM
7566
7567 Some systems may require passing special flags to $ld to create a
7568 library that can be dynamically loaded.  If your ld flags include
7569 -L/other/path options to locate libraries outside your loader's normal
7570 search path, you may need to specify those -L options here as well.  To
7571 use no flags, say "none".
7572
7573 EOM
7574     case "$lddlflags" in
7575     '') case "$osname" in
7576                         beos) dflt='-nostart' ;;
7577                         hpux) dflt='-b';
7578                               case "$gccversion" in
7579                               '') dflt="$dflt +vnocompatwarnings" ;;
7580                               esac
7581                               ;;        
7582                         linux|irix*)    dflt='-shared' ;;
7583                         next)  dflt='none' ;;
7584                         solaris) dflt='-G' ;;
7585                         sunos) dflt='-assert nodefinitions' ;;
7586                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7587                 *)     dflt='none' ;;
7588                         esac
7589                         ;;
7590     *) dflt="$lddlflags" ;;
7591     esac
7592
7593         : Try to guess additional flags to pick up local libraries.
7594         : Be careful not to append to a plain 'none'
7595         case "$dflt" in
7596         none) dflt='' ;;
7597         esac
7598         for thisflag in $ldflags; do
7599                 case "$thisflag" in
7600                 -L*|-R*|-Wl,-R*)
7601                         case " $dflt " in
7602                         *" $thisflag "*) ;;
7603                         *) dflt="$dflt $thisflag" ;;
7604                         esac
7605                         ;;
7606                 esac
7607         done
7608
7609         case "$dflt" in
7610         ''|' ') dflt='none' ;;
7611         esac
7612
7613     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7614     . ./myread
7615     case "$ans" in
7616     none) lddlflags=' ' ;;
7617     *) lddlflags="$ans" ;;
7618     esac
7619
7620         cat <<EOM
7621
7622 Some systems may require passing special flags to $cc to indicate that
7623 the resulting executable will use dynamic linking.  To use no flags,
7624 say "none".
7625
7626 EOM
7627     case "$ccdlflags" in
7628     '') case "$osname" in
7629                 hpux)   dflt='-Wl,-E' ;;
7630                 linux)  dflt='-rdynamic' ;;
7631                 next)   dflt='none' ;;
7632                 sunos)  dflt='none' ;;
7633                 *)      dflt='none' ;;
7634             esac ;;
7635     ' ')  dflt='none' ;;
7636     *)  dflt="$ccdlflags" ;;
7637     esac
7638     rp="Any special flags to pass to $cc to use dynamic linking?"
7639     . ./myread
7640     case "$ans" in
7641     none) ccdlflags=' ' ;;
7642     *) ccdlflags="$ans" ;;
7643     esac
7644     ;;
7645 *)  usedl="$undef"
7646         ld='ld'
7647     dlsrc='dl_none.xs'
7648     lddlflags=''
7649     ccdlflags=''
7650     ;;
7651 esac
7652
7653 also=''
7654 case "$usedl" in
7655 $undef)
7656         # No dynamic loading being used, so don't bother even to prompt.
7657         useshrplib='false'
7658         ;;
7659 *)      case "$useshrplib" in
7660         '')     case "$osname" in
7661                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7662                         dflt=y
7663                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7664                         ;;
7665                 next*)
7666                         case "$osvers" in
7667                         4*)     dflt=y
7668                                 also='Building a shared libperl is needed for MAB support.'
7669                                 ;;
7670                         *)      dflt=n
7671                                 ;;
7672                         esac
7673                         ;;
7674                 *)      dflt=n
7675                         ;;
7676                 esac
7677                 ;;
7678         $define|true|[Yy]*)
7679                 dflt=y
7680                 ;;
7681         *)      dflt=n
7682                 ;;
7683         esac
7684         $cat << EOM
7685
7686 The perl executable is normally obtained by linking perlmain.c with
7687 libperl${_a}, any static extensions (usually just DynaLoader), and
7688 any other libraries needed on this system (such as -lm, etc.).  Since
7689 your system supports dynamic loading, it is probably possible to build
7690 a shared libperl.$so.  If you will have more than one executable linked
7691 to libperl.$so, this will significantly reduce the size of each
7692 executable, but it may have a noticeable affect on performance.  The
7693 default is probably sensible for your system.
7694 $also
7695
7696 EOM
7697         rp="Build a shared libperl.$so (y/n)"
7698         . ./myread
7699         case "$ans" in
7700         true|$define|[Yy]*)
7701                 useshrplib='true'  ;;
7702         *)      useshrplib='false' ;;
7703         esac
7704         ;;
7705 esac
7706
7707 case "$useshrplib" in
7708 true)
7709         case "$libperl" in
7710         '')
7711                 # Figure out a good name for libperl.so.  Since it gets stored in
7712                 # a version-specific architecture-dependent library, the version
7713                 # number isn't really that important, except for making cc/ld happy.
7714                 #
7715                 # A name such as libperl.so.3.1
7716                 majmin="libperl.$so.$patchlevel.$subversion"
7717                 # A name such as libperl.so.301
7718                 majonly=`echo $patchlevel $subversion |
7719                         $awk '{printf "%d%02d", $1, $2}'`
7720                 majonly=libperl.$so.$majonly
7721                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7722                 # rely on figuring it out from the naming of libc.
7723                 case "${osname}${osvers}" in
7724                 next4*)
7725                         dflt=libperl.5.$so
7726                         # XXX How handle the --version stuff for MAB?
7727                         ;;
7728                 linux*)  # ld won't link with a bare -lperl otherwise.
7729                         dflt=libperl.$so
7730                         ;;
7731                 cygwin*) # ld links against an importlib
7732                         dflt=libperl$lib_ext
7733                         ;;
7734                 *)      # Try to guess based on whether libc has major.minor.
7735                         case "$libc" in
7736                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7737                         *libc.$so.[0-9]*) dflt=$majonly ;;
7738                         *)      dflt=libperl.$so ;;
7739                         esac
7740                         ;;
7741                 esac
7742                 ;;
7743         *)      dflt=$libperl
7744                 ;;
7745         esac
7746         cat << EOM
7747
7748 I need to select a good name for the shared libperl.  If your system uses
7749 library names with major and minor numbers, then you might want something
7750 like $majmin.  Alternatively, if your system uses a single version
7751 number for shared libraries, then you might want to use $majonly.
7752 Or, your system might be quite happy with a simple libperl.$so.
7753
7754 Since the shared libperl will get installed into a version-specific
7755 architecture-dependent directory, the version number of the shared perl
7756 library probably isn't important, so the default should be o.k.
7757
7758 EOM
7759         rp='What name do you want to give to the shared libperl?'
7760         . ./myread
7761         libperl=$ans
7762         echo "Ok, I'll use $libperl"
7763         ;;
7764 *)
7765         libperl="libperl${_a}"
7766         ;;
7767 esac
7768
7769 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7770 case "$shrpdir" in
7771 '') ;;
7772 *)      $cat >&4 <<EOM
7773 WARNING:  Use of the shrpdir variable for the installation location of
7774 the shared $libperl is not supported.  It was never documented and
7775 will not work in this version.  Let me (perlbug@perl.org)
7776 know of any problems this may cause.
7777
7778 EOM
7779         case "$shrpdir" in
7780         "$archlibexp/CORE")
7781                 $cat >&4 <<EOM
7782 But your current setting of $shrpdir is
7783 the default anyway, so it's harmless.
7784 EOM
7785                 ;;
7786         *)
7787                 $cat >&4 <<EOM
7788 Further, your current attempted setting of $shrpdir
7789 conflicts with the value of $archlibexp/CORE
7790 that installperl will use.
7791 EOM
7792                 ;;
7793         esac
7794         ;;
7795 esac
7796
7797 # How will the perl executable find the installed shared $libperl?
7798 # Add $xxx to ccdlflags.
7799 # If we can't figure out a command-line option, use $shrpenv to
7800 # set env LD_RUN_PATH.  The main perl makefile uses this.
7801 shrpdir=$archlibexp/CORE
7802 xxx=''
7803 tmp_shrpenv=''
7804 if "$useshrplib"; then
7805     case "$osname" in 
7806         aix)
7807                 # We'll set it in Makefile.SH...
7808                 ;;
7809         solaris)
7810                 xxx="-R $shrpdir"
7811                 ;;
7812         freebsd|netbsd|openbsd)
7813                 xxx="-Wl,-R$shrpdir"
7814                 ;;
7815         bsdos|linux|irix*|dec_osf)
7816                 xxx="-Wl,-rpath,$shrpdir"
7817                 ;;
7818         next)
7819                 # next doesn't like the default...
7820                 ;;
7821         beos)
7822                 # beos doesn't like the default, either.
7823                 ;;
7824         hpux*)
7825                 # hpux doesn't like the default, either.
7826                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7827                 ;;
7828         *)
7829                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7830                 ;;
7831         esac
7832         case "$xxx" in
7833         '') ;;
7834         *)      
7835                 # Only add $xxx if it isn't already in ccdlflags.
7836                 case " $ccdlflags " in
7837                 *" $xxx "*)     ;;
7838                 *)      ccdlflags="$ccdlflags $xxx"
7839                         cat <<EOM >&4
7840
7841 Adding $xxx to the flags
7842 passed to $ld so that the perl executable will find the 
7843 installed shared $libperl.
7844
7845 EOM
7846                         ;;
7847                 esac
7848                 ;;
7849         esac
7850 fi
7851 # Fix ccdlflags in AIX for building external extensions.
7852 # (For building Perl itself bare -bE:perl.exp is needed,
7853 #  Makefile.SH takes care of this.)
7854 case "$osname" in
7855 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7856 esac
7857 # Respect a hint or command-line value.
7858 case "$shrpenv" in
7859 '') shrpenv="$tmp_shrpenv" ;;
7860 esac
7861 case "$ldlibpthname" in
7862 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7863 none)   ldlibpthname='' ;;
7864 esac
7865
7866 : determine where manual pages are on this system
7867 echo " "
7868 case "$sysman" in
7869 '') 
7870         syspath='/usr/share/man/man1 /usr/man/man1'
7871         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7872         syspath="$syspath /usr/man/u_man/man1"
7873         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7874         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7875         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7876         sysman=`./loc . /usr/man/man1 $syspath`
7877         ;;
7878 esac
7879 if $test -d "$sysman"; then
7880         echo "System manual is in $sysman." >&4
7881 else
7882         echo "Could not find manual pages in source form." >&4
7883 fi
7884
7885 : determine where manual pages go
7886 set man1dir man1dir none
7887 eval $prefixit
7888 $cat <<EOM
7889
7890 $spackage has manual pages available in source form.
7891 EOM
7892 case "$nroff" in
7893 nroff)
7894         echo "However, you don't have nroff, so they're probably useless to you."
7895         case "$man1dir" in
7896         '') man1dir="none";;
7897         esac;;
7898 esac
7899 echo "If you don't want the manual sources installed, answer 'none'."
7900 case "$man1dir" in
7901 ' ') dflt=none
7902         ;;
7903 '')
7904         lookpath="$prefixexp/share/man/man1"
7905         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7906         lookpath="$lookpath $prefixexp/man/p_man/man1"
7907         lookpath="$lookpath $prefixexp/man/u_man/man1"
7908         lookpath="$lookpath $prefixexp/man/man.1"
7909         case "$sysman" in
7910         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7911         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7912         esac
7913         set dflt
7914         eval $prefixup
7915         ;;
7916 *)  dflt="$man1dir"
7917         ;;
7918 esac
7919 echo " "
7920 fn=dn+~
7921 rp="Where do the main $spackage manual pages (source) go?"
7922 . ./getfile
7923 if $test "X$man1direxp" != "X$ansexp"; then
7924         installman1dir=''
7925 fi
7926 man1dir="$ans"
7927 man1direxp="$ansexp"
7928 case "$man1dir" in
7929 '')     man1dir=' '
7930         installman1dir='';;
7931 esac
7932
7933 : Change installation prefix, if necessary.
7934 if $test X"$prefix" != X"$installprefix"; then
7935         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7936 else
7937         installman1dir="$man1direxp"
7938 fi
7939
7940 : What suffix to use on installed man pages
7941
7942 case "$man1dir" in
7943 ' ')
7944         man1ext='0'
7945         ;;
7946 *)
7947         rp="What suffix should be used for the main $spackage man pages?"
7948         case "$man1ext" in
7949         '')     case "$man1dir" in
7950                 *1)  dflt=1 ;;
7951                 *1p) dflt=1p ;;
7952                 *1pm) dflt=1pm ;;
7953                 *l) dflt=l;;
7954                 *n) dflt=n;;
7955                 *o) dflt=o;;
7956                 *p) dflt=p;;
7957                 *C) dflt=C;;
7958                 *L) dflt=L;;
7959                 *L1) dflt=L1;;
7960                 *) dflt=1;;
7961                 esac
7962                 ;;
7963         *)      dflt="$man1ext";;
7964         esac
7965         . ./myread
7966         man1ext="$ans"
7967         ;;
7968 esac
7969
7970 : see if we can have long filenames
7971 echo " "
7972 first=123456789abcdef
7973 $rm -f $first
7974 if (echo hi >$first) 2>/dev/null; then
7975         if $test -f 123456789abcde; then
7976                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7977                 val="$undef"
7978         else
7979                 echo 'You can have filenames longer than 14 characters.'>&4
7980                 val="$define"
7981         fi
7982 else
7983         $cat <<'EOM'
7984 You can't have filenames longer than 14 chars.
7985 You can't even think about them!
7986 EOM
7987         val="$undef"
7988 fi 
7989 set d_flexfnam
7990 eval $setvar
7991 $rm -rf 123456789abcde*
7992
7993 : determine where library module manual pages go
7994 set man3dir man3dir none
7995 eval $prefixit
7996 $cat <<EOM
7997
7998 $spackage has manual pages for many of the library modules.
7999 EOM
8000
8001 case "$nroff" in
8002 nroff)
8003         $cat <<'EOM'
8004 However, you don't have nroff, so they're probably useless to you.
8005 EOM
8006         case "$man3dir" in
8007         '') man3dir="none";;
8008         esac;;
8009 esac
8010
8011 case "$d_flexfnam" in
8012 undef)
8013         $cat <<'EOM'
8014 However, your system can't handle the long file names like File::Basename.3. 
8015 EOM
8016         case "$man3dir" in
8017         '') man3dir="none";;
8018         esac;;
8019 esac
8020
8021 echo "If you don't want the manual sources installed, answer 'none'."
8022 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8023 case "$man3dir" in
8024 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8025         if $test -d "$privlib/man/man3"; then
8026                 cat <<EOM >&4
8027
8028 WARNING:  Previous versions of perl installed man3 pages into
8029 $privlib/man/man3.  This version will suggest a 
8030 new default of $dflt.  
8031 EOM
8032                 tdflt=$dflt
8033                 dflt='n'
8034                 rp='Do you wish to preserve the old behavior?(y/n)'
8035                 . ./myread
8036                 case "$ans" in
8037                 y*) dflt="$privlib/man/man3" ;;
8038                 *)  dflt=$tdflt ;;
8039                 esac
8040     fi
8041         ;;
8042 *)      dflt="$man3dir" ;;
8043 esac
8044 case "$dflt" in
8045 ' ') dflt=none ;;
8046 esac
8047 echo " "
8048 fn=dn+~
8049 rp="Where do the $package library man pages (source) go?"
8050 . ./getfile
8051 man3dir="$ans"
8052 man3direxp="$ansexp"
8053 case "$man3dir" in
8054 '')     man3dir=' '
8055         installman3dir='';;
8056 esac
8057
8058 : Change installation prefix, if necessary.
8059 if $test X"$prefix" != X"$installprefix"; then
8060         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8061 else
8062         installman3dir="$man3direxp"
8063 fi
8064
8065 : What suffix to use on installed man pages
8066 case "$man3dir" in
8067 ' ')
8068         man3ext='0'
8069         ;;
8070 *)
8071         rp="What suffix should be used for the $package library man pages?"
8072         case "$man3ext" in
8073         '')     case "$man3dir" in
8074                 *3)  dflt=3 ;;
8075                 *3p) dflt=3p ;;
8076                 *3pm) dflt=3pm ;;
8077                 *l) dflt=l;;
8078                 *n) dflt=n;;
8079                 *o) dflt=o;;
8080                 *p) dflt=p;;
8081                 *C) dflt=C;;
8082                 *L) dflt=L;;
8083                 *L3) dflt=L3;;
8084                 *) dflt=3;;
8085                 esac
8086                 ;;
8087         *)      dflt="$man3ext";;
8088         esac
8089         . ./myread
8090         man3ext="$ans"
8091         ;;
8092 esac
8093
8094 : see if we have to deal with yellow pages, now NIS.
8095 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8096         if $test -f /usr/etc/nibindd; then
8097                 echo " "
8098                 echo "I'm fairly confident you're on a NeXT."
8099                 echo " "
8100                 rp='Do you get the hosts file via NetInfo?'
8101                 dflt=y
8102                 case "$hostcat" in
8103                 nidump*) ;;
8104                 '') ;;
8105                 *) dflt=n;;
8106                 esac
8107                 . ./myread
8108                 case "$ans" in
8109                 y*) hostcat='nidump hosts .';;
8110                 *)      case "$hostcat" in
8111                         nidump*) hostcat='';;
8112                         esac
8113                         ;;
8114                 esac
8115         fi
8116         case "$hostcat" in
8117         nidump*) ;;
8118         *)
8119                 case "$hostcat" in
8120                 *ypcat*) dflt=y;;
8121                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8122                                 dflt=y
8123                         else
8124                                 dflt=n
8125                         fi;;
8126                 *) dflt=n;;
8127                 esac
8128                 echo " "
8129                 rp='Are you getting the hosts file via yellow pages?'
8130                 . ./myread
8131                 case "$ans" in
8132                 y*) hostcat='ypcat hosts';;
8133                 *) hostcat='cat /etc/hosts';;
8134                 esac
8135                 ;;
8136         esac
8137 fi
8138 case "$hostcat" in
8139 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8140 esac
8141 case "$groupcat" in
8142 '') test -f /etc/group && groupcat='cat /etc/group';;
8143 esac
8144 case "$passcat" in
8145 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8146 esac
8147
8148 : now get the host name
8149 echo " "
8150 echo "Figuring out host name..." >&4
8151 case "$myhostname" in
8152 '') cont=true
8153         echo 'Maybe "hostname" will work...'
8154         if tans=`sh -c hostname 2>&1` ; then
8155                 myhostname=$tans
8156                 phostname=hostname
8157                 cont=''
8158         fi
8159         ;;
8160 *) cont='';;
8161 esac
8162 if $test "$cont"; then
8163         if ./xenix; then
8164                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8165                 if tans=`cat /etc/systemid 2>&1` ; then
8166                         myhostname=$tans
8167                         phostname='cat /etc/systemid'
8168                         echo "Whadyaknow.  Xenix always was a bit strange..."
8169                         cont=''
8170                 fi
8171         elif $test -r /etc/systemid; then
8172                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8173         fi
8174 fi
8175 if $test "$cont"; then
8176         echo 'No, maybe "uuname -l" will work...'
8177         if tans=`sh -c 'uuname -l' 2>&1` ; then
8178                 myhostname=$tans
8179                 phostname='uuname -l'
8180         else
8181                 echo 'Strange.  Maybe "uname -n" will work...'
8182                 if tans=`sh -c 'uname -n' 2>&1` ; then
8183                         myhostname=$tans
8184                         phostname='uname -n'
8185                 else
8186                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8187                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8188                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8189                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8190                         else
8191                                 case "$myhostname" in
8192                                 '') echo "Does this machine have an identity crisis or something?"
8193                                         phostname='';;
8194                                 *)
8195                                         echo "Well, you said $myhostname before..."
8196                                         phostname='echo $myhostname';;
8197                                 esac
8198                         fi
8199                 fi
8200         fi
8201 fi
8202 case "$myhostname" in
8203 '') myhostname=noname ;;
8204 esac
8205 : you do not want to know about this
8206 set $myhostname
8207 myhostname=$1
8208
8209 : verify guess
8210 if $test "$myhostname" ; then
8211         dflt=y
8212         rp='Your host name appears to be "'$myhostname'".'" Right?"
8213         . ./myread
8214         case "$ans" in
8215         y*) ;;
8216         *) myhostname='';;
8217         esac
8218 fi
8219
8220 : bad guess or no guess
8221 while $test "X$myhostname" = X ; do
8222         dflt=''
8223         rp="Please type the (one word) name of your host:"
8224         . ./myread
8225         myhostname="$ans"
8226 done
8227
8228 : translate upper to lower if necessary
8229 case "$myhostname" in
8230 *[A-Z]*)
8231         echo "(Normalizing case in your host name)"
8232         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8233         ;;
8234 esac
8235
8236 case "$myhostname" in
8237 *.*)
8238         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8239         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8240         echo "(Trimming domain name from host name--host name is now $myhostname)"
8241         ;;
8242 *) case "$mydomain" in
8243         '')
8244                 {
8245                         test "X$hostcat" = "Xypcat hosts" &&
8246                         ypmatch "$myhostname" hosts 2>/dev/null |\
8247                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8248                         $test -s hosts
8249                 } || {
8250                         test "X$hostcat" != "X" &&
8251                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8252                                         /[       ]$myhostname[  . ]/p" > hosts
8253                 }
8254                 tmp_re="[       . ]"
8255                 if $test -f hosts; then
8256                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8257                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8258                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8259                                 hosts | $sort | $uniq | \
8260                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8261                         case `$echo X$dflt` in
8262                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8263                                 dflt=.
8264                                 ;;
8265                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8266                                 ;;
8267                         esac
8268                 else
8269                         echo "(I cannot locate a hosts database anywhere)"
8270                         dflt=.
8271                 fi
8272                 case "$dflt" in
8273                 .)
8274                         tans=`./loc resolv.conf X /etc /usr/etc`
8275                         if $test -f "$tans"; then
8276                                 echo "(Attempting domain name extraction from $tans)"
8277                                 dflt=.`$sed -n -e 's/   / /g' \
8278                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8279                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8280                                 case "$dflt" in
8281                                 .) dflt=.`$sed -n -e 's/        / /g' \
8282                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8283                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8284                                         ;;
8285                                 esac
8286                         fi
8287                         ;;
8288                 esac
8289                 case "$dflt" in
8290                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8291                         dflt=.`sh -c domainname 2>/dev/null`
8292                         case "$dflt" in
8293                         '') dflt='.';;
8294                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8295                         esac
8296                         ;;
8297                 esac
8298                 case "$dflt$osname" in
8299                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8300                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8301                         ;;
8302                 esac
8303                 case "$dflt" in
8304                 .) echo "(Lost all hope -- silly guess then)"
8305                         dflt='.nonet'
8306                         ;;
8307                 esac
8308                 $rm -f hosts
8309                 ;;
8310         *) dflt="$mydomain";;
8311         esac;;
8312 esac
8313 echo " "
8314 rp="What is your domain name?"
8315 . ./myread
8316 tans="$ans"
8317 case "$ans" in
8318 '') ;;
8319 .*) ;;
8320 *) tans=".$tans";;
8321 esac
8322 mydomain="$tans"
8323
8324 : translate upper to lower if necessary
8325 case "$mydomain" in
8326 *[A-Z]*)
8327         echo "(Normalizing case in your domain name)"
8328         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8329         ;;
8330 esac
8331
8332 : a little sanity check here
8333 case "$phostname" in
8334 '') ;;
8335 *)
8336         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8337         $myhostname$mydomain|$myhostname) ;;
8338         *)
8339                 case "$phostname" in
8340                 sed*)
8341                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8342                         ;;
8343                 *)
8344                         echo "(That doesn't agree with your $phostname command, by the way.)"
8345                         ;;
8346                 esac
8347         ;;
8348         esac
8349         ;;
8350 esac
8351
8352 $cat <<EOM
8353
8354 I need to get your e-mail address in Internet format if possible, i.e.
8355 something like user@host.domain. Please answer accurately since I have
8356 no easy means to double check it. The default value provided below
8357 is most probably close to reality but may not be valid from outside
8358 your organization...
8359
8360 EOM
8361 cont=x
8362 while test "$cont"; do
8363         case "$cf_email" in
8364         '') dflt="$cf_by@$myhostname$mydomain";;
8365         *) dflt="$cf_email";;
8366         esac
8367         rp='What is your e-mail address?'
8368         . ./myread
8369         cf_email="$ans"
8370         case "$cf_email" in
8371         *@*.*) cont='' ;;
8372         *)
8373                 rp='Address does not look like an Internet one.  Use it anyway?'
8374                 case "$fastread" in
8375                 yes) dflt=y ;;
8376                 *) dflt=n ;;
8377                 esac
8378                 . ./myread
8379                 case "$ans" in
8380                 y*) cont='' ;;
8381                 *) echo " " ;;
8382                 esac
8383                 ;;
8384         esac
8385 done
8386
8387 $cat <<EOM
8388
8389 If you or somebody else will be maintaining perl at your site, please
8390 fill in the correct e-mail address here so that they may be contacted
8391 if necessary. Currently, the "perlbug" program included with perl
8392 will send mail to this address in addition to perlbug@perl.org. You may
8393 enter "none" for no administrator.
8394
8395 EOM
8396 case "$perladmin" in
8397 '') dflt="$cf_email";;
8398 *) dflt="$perladmin";;
8399 esac
8400 rp='Perl administrator e-mail address'
8401 . ./myread
8402 perladmin="$ans"
8403
8404 : determine whether to only install version-specific parts.
8405 echo " "
8406 $cat <<EOM
8407 Do you want to install only the version-specific parts of the perl
8408 distribution?  Usually you do *not* want to do this.
8409 EOM
8410 case "$versiononly" in
8411 "$define"|[Yy]*|true) dflt='y' ;;
8412 *) dflt='n';
8413 esac
8414 rp="Do you want to install only the version-specific parts of perl?"
8415 . ./myread
8416 case "$ans" in
8417 [yY]*)  val="$define";;
8418 *)      val="$undef" ;;
8419 esac
8420 set versiononly
8421 eval $setvar
8422
8423 case "$versiononly" in
8424 "$define") inc_version_list=''
8425            inc_version_list_init=0
8426            ;;
8427 esac
8428
8429 : figure out how to guarantee perl startup
8430 case "$startperl" in
8431 '')
8432         case "$sharpbang" in
8433         *!)
8434                 $cat <<EOH
8435
8436 I can use the #! construct to start perl on your system. This will
8437 make startup of perl scripts faster, but may cause problems if you
8438 want to share those scripts and perl is not in a standard place
8439 ($binexp/perl) on all your platforms. The alternative is to force
8440 a shell by starting the script with a single ':' character.
8441
8442 EOH
8443                 case "$versiononly" in
8444                 "$define")      dflt="$binexp/perl$version";;  
8445                 *)              dflt="$binexp/perl";;
8446                 esac
8447                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8448                 . ./myread
8449                 case "$ans" in
8450                 none)   startperl=": # use perl";;
8451                 *)      startperl="#!$ans"
8452                         if $test 30 -lt `echo "$ans" | wc -c`; then
8453                                 $cat >&4 <<EOM
8454
8455 WARNING:  Some systems limit the #! command to 32 characters.
8456 If you experience difficulty running Perl scripts with #!, try
8457 installing Perl in a directory with a shorter pathname.
8458
8459 EOM
8460                         fi ;;
8461                 esac
8462                 ;;
8463         *) startperl=": # use perl"
8464                 ;;
8465         esac
8466         ;;
8467 esac
8468 echo "I'll use $startperl to start perl scripts."
8469
8470 : figure best path for perl in scripts
8471 case "$perlpath" in
8472 '')
8473         case "$versiononly" in
8474         "$define")      perlpath="$binexp/perl$version";;
8475         *)              perlpath="$binexp/perl";;
8476         esac
8477         case "$startperl" in
8478         *!*) ;;
8479         *)
8480                 $cat <<EOH
8481
8482 I will use the "eval 'exec'" idiom to start Perl on your system.
8483 I can use the full path of your Perl binary for this purpose, but
8484 doing so may cause problems if you want to share those scripts and
8485 Perl is not always in a standard place ($binexp/perl).
8486
8487 EOH
8488                 dflt="$binexp/perl"
8489                 rp="What path shall I use in \"eval 'exec'\"?"
8490                 . ./myread
8491                 perlpath="$ans"
8492                 ;;
8493         esac
8494         ;;
8495 esac
8496 case "$startperl" in
8497 *!*)    ;;
8498 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8499 esac
8500
8501 : determine where public executable scripts go
8502 set scriptdir scriptdir
8503 eval $prefixit
8504 case "$scriptdir" in
8505 '')
8506         dflt="$bin"
8507         : guess some guesses
8508         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8509         $test -d /usr/share/bin     && dflt=/usr/share/bin
8510         $test -d /usr/local/script  && dflt=/usr/local/script
8511         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8512         $test -d $prefixexp/script  && dflt=$prefixexp/script
8513         set dflt
8514         eval $prefixup
8515         ;;
8516 *)  dflt="$scriptdir"
8517         ;;
8518 esac
8519 $cat <<EOM
8520  
8521 Some installations have a separate directory just for executable scripts so
8522 that they can mount it across multiple architectures but keep the scripts in
8523 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8524 Or you might just lump your scripts in with all your other executables.
8525  
8526 EOM
8527 fn=d~
8528 rp='Where do you keep publicly executable scripts?'
8529 . ./getfile
8530 if $test "X$ansexp" != "X$scriptdirexp"; then
8531         installscript=''
8532 fi
8533 scriptdir="$ans"
8534 scriptdirexp="$ansexp"
8535 : Change installation prefix, if necessary.
8536 if $test X"$prefix" != X"$installprefix"; then
8537         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8538 else
8539         installscript="$scriptdirexp"
8540 fi
8541
8542 : determine where add-on public executables go
8543 case "$sitebin" in
8544 '')     dflt=$siteprefix/bin ;;
8545 *)      dflt=$sitebin ;;
8546 esac
8547 fn=d~
8548 rp='Pathname where the add-on public executables should be installed?'
8549 . ./getfile
8550 sitebin="$ans"
8551 sitebinexp="$ansexp"
8552 : Change installation prefix, if necessary.
8553 if $test X"$prefix" != X"$installprefix"; then
8554         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8555 else
8556         installsitebin="$sitebinexp"
8557 fi
8558
8559 : determine where add-on html pages go
8560 : There is no standard location, so try to copy the previously-selected
8561 : directory structure for the core html pages.
8562 case "$sitehtml1dir" in
8563 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8564 *)     dflt=$sitehtml1dir ;;
8565 esac
8566 case "$dflt" in
8567 ''|' ') dflt=none ;;
8568 esac
8569 fn=dn+~
8570 rp='Pathname where the site-specific html pages should be installed?'
8571 . ./getfile
8572 sitehtml1dir="$ans"
8573 sitehtml1direxp="$ansexp"
8574 : Change installation prefix, if necessary.
8575 if $test X"$prefix" != X"$installprefix"; then
8576         installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
8577 else
8578         installsitehtml1dir="$sitehtml1direxp"
8579 fi
8580
8581 : determine where add-on library html pages go
8582 : There is no standard location, so try to copy the previously-selected
8583 : directory structure for the core html pages.
8584 case "$sitehtml3dir" in
8585 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8586 *)     dflt=$sitehtml3dir ;;
8587 esac
8588 case "$dflt" in
8589 ''|' ') dflt=none ;;
8590 esac
8591 fn=dn+~
8592 rp='Pathname where the site-specific library html pages should be installed?'
8593 . ./getfile
8594 sitehtml3dir="$ans"
8595 sitehtml3direxp="$ansexp"
8596 : Change installation prefix, if necessary.
8597 if $test X"$prefix" != X"$installprefix"; then
8598         installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
8599 else
8600         installsitehtml3dir="$sitehtml3direxp"
8601 fi
8602
8603 : determine where add-on manual pages go
8604 case "$siteman1dir" in
8605 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8606 *)      dflt=$siteman1dir ;;
8607 esac
8608 case "$dflt" in
8609 ''|' ') dflt=none ;;
8610 esac
8611 fn=dn+~
8612 rp='Pathname where the site-specific manual pages should be installed?'
8613 . ./getfile
8614 siteman1dir="$ans"
8615 siteman1direxp="$ansexp"
8616 : Change installation prefix, if necessary.
8617 if $test X"$prefix" != X"$installprefix"; then
8618         installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
8619 else
8620         installsiteman1dir="$siteman1direxp"
8621 fi
8622
8623 : determine where add-on library man pages go
8624 case "$siteman3dir" in
8625 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8626 *)      dflt=$siteman3dir ;;
8627 esac
8628 case "$dflt" in
8629 ''|' ') dflt=none ;;
8630 esac
8631 fn=dn+~
8632 rp='Pathname where the site-specific library manual pages should be installed?'
8633 . ./getfile
8634 siteman3dir="$ans"
8635 siteman3direxp="$ansexp"
8636 : Change installation prefix, if necessary.
8637 if $test X"$prefix" != X"$installprefix"; then
8638         installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
8639 else
8640         installsiteman3dir="$siteman3direxp"
8641 fi
8642
8643 : determine where add-on public executable scripts go
8644 case "$sitescript" in
8645 '')     dflt=$siteprefix/script
8646         $test -d $dflt || dflt=$sitebin ;;
8647 *)  dflt="$sitescript" ;;
8648 esac
8649 fn=d~+
8650 rp='Pathname where add-on public executable scripts should be installed?'
8651 . ./getfile
8652 sitescript="$ans"
8653 sitescriptexp="$ansexp"
8654 : Change installation prefix, if necessary.
8655 if $test X"$prefix" != X"$installprefix"; then
8656         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8657 else
8658         installsitescript="$sitescriptexp"
8659 fi
8660
8661 case "$usefaststdio" in
8662 $define|true|[yY]*|'')
8663         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8664         case "$xversion" in
8665         [68])   dflt='y' ;;
8666         *)      dflt='n' ;;
8667         esac
8668         ;;
8669 *) dflt='n';;
8670 esac
8671 cat <<EOM
8672
8673 Perl can be built to use 'fast stdio', which means using the stdio
8674 library but also directly manipulating the stdio buffers to enable
8675 faster I/O.  Using stdio is better for backward compatibility (especially
8676 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8677 interface has been preferred instead of stdio.
8678
8679 If this doesn't make any sense to you, just accept the default '$dflt'.
8680 EOM
8681 rp='Use the "fast stdio" if available?'
8682 . ./myread
8683 case "$ans" in
8684 y|Y)    val="$define" ;;     
8685 *)      val="$undef" ;;
8686 esac
8687 set usefaststdio
8688 eval $setvar
8689
8690
8691 : define an is-a-typedef? function
8692 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8693 case "$inclist" in
8694 "") inclist="sys/types.h";;
8695 esac;
8696 eval "varval=\$$var";
8697 case "$varval" in
8698 "")
8699         $rm -f temp.c;
8700         for inc in $inclist; do
8701                 echo "#include <$inc>" >>temp.c;
8702         done;
8703         echo "#ifdef $type" >> temp.c;
8704         echo "printf(\"We have $type\");" >> temp.c;
8705         echo "#endif" >> temp.c;
8706         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8707         if $contains $type temp.E >/dev/null 2>&1; then
8708                 eval "$var=\$type";
8709         else
8710                 eval "$var=\$def";
8711         fi;
8712         $rm -f temp.?;;
8713 *) eval "$var=\$varval";;
8714 esac'
8715
8716 : define an is-a-typedef? function that prompts if the type is not available.
8717 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8718 case "$inclist" in
8719 "") inclist="sys/types.h";;
8720 esac;
8721 eval "varval=\$$var";
8722 case "$varval" in
8723 "")
8724         $rm -f temp.c;
8725         for inc in $inclist; do
8726                 echo "#include <$inc>" >>temp.c;
8727         done;
8728         echo "#ifdef $type" >> temp.c;
8729         echo "printf(\"We have $type\");" >> temp.c;
8730         echo "#endif" >> temp.c;
8731         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8732         echo " " ;
8733         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8734         if $contains $type temp.E >/dev/null 2>&1; then
8735                 echo "$type found." >&4;
8736                 eval "$var=\$type";
8737         else
8738                 echo "$type NOT found." >&4;
8739                 dflt="$def";
8740                 . ./myread ;
8741                 eval "$var=\$ans";
8742         fi;
8743         $rm -f temp.?;;
8744 *) eval "$var=\$varval";;
8745 esac'
8746
8747 : see what type lseek is declared as in the kernel
8748 rp="What is the type used for lseek's offset on this system?"
8749 set off_t lseektype long stdio.h sys/types.h
8750 eval $typedef_ask
8751
8752 echo " "
8753 echo "Checking to see how big your file offsets are..." >&4
8754 $cat >try.c <<EOCP
8755 #include <sys/types.h>
8756 #include <stdio.h>
8757 int main()
8758 {
8759     printf("%d\n", (int)sizeof($lseektype));
8760     return(0); 
8761 }
8762 EOCP
8763 set try
8764 if eval $compile_ok; then
8765         lseeksize=`$run ./try`
8766         echo "Your file offsets are $lseeksize bytes long."
8767 else
8768         dflt=$longsize
8769         echo " "
8770         echo "(I can't seem to compile the test program.  Guessing...)"
8771         rp="What is the size of your file offsets (in bytes)?"
8772         . ./myread
8773         lseeksize="$ans"
8774 fi
8775 $rm -f try.c try
8776
8777 : see what type file positions are declared as in the library
8778 rp="What is the type for file position used by fsetpos()?"
8779 set fpos_t fpostype long stdio.h sys/types.h
8780 eval $typedef_ask
8781
8782 echo " "
8783 case "$fpostype" in
8784 *_t) zzz="$fpostype"    ;;
8785 *)   zzz="fpos_t"       ;;
8786 esac
8787 echo "Checking the size of $zzz..." >&4 
8788 cat > try.c <<EOCP
8789 #include <sys/types.h>
8790 #include <stdio.h>
8791 #$i_stdlib I_STDLIB
8792 #ifdef I_STDLIB
8793 #include <stdlib.h>
8794 #endif
8795 int main() {
8796     printf("%d\n", (int)sizeof($fpostype));
8797     exit(0);
8798 }
8799 EOCP
8800 set try
8801 if eval $compile_ok; then
8802         yyy=`$run ./try`
8803         case "$yyy" in
8804         '')     fpossize=4
8805                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8806                 ;;
8807         *)      fpossize=$yyy
8808                 echo "Your $zzz is $fpossize bytes long."
8809                 ;;
8810         esac
8811 else
8812         dflt="$longsize"
8813         echo " " >&4
8814         echo "(I can't compile the test program.  Guessing...)" >&4
8815         rp="What is the size of your file positions (in bytes)?"
8816         . ./myread
8817         fpossize="$ans"
8818 fi
8819
8820 # Backward compatibility (uselfs is deprecated).
8821 case "$uselfs" in
8822 "$define"|true|[yY]*)
8823         cat <<EOM >&4
8824
8825 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8826 EOM
8827         uselargefiles="$define"
8828         ;;
8829 esac                          
8830
8831 case "$lseeksize:$fpossize" in
8832 8:8) cat <<EOM
8833
8834 You can have files larger than 2 gigabytes.
8835 EOM
8836    val="$define" ;;
8837 *)    case "$uselargefiles" in
8838    "$undef"|false|[nN]*) dflt='n' ;;
8839    *)   dflt='y' ;;
8840    esac
8841    cat <<EOM
8842
8843 Perl can be built to understand large files (files larger than 2 gigabytes)
8844 on some systems.  To do so, Configure can be run with -Duselargefiles.
8845
8846 If this doesn't make any sense to you, just accept the default '$dflt'.
8847 EOM
8848    rp='Try to understand large files, if available?'
8849    . ./myread
8850    case "$ans" in
8851    y|Y)         val="$define" ;;
8852    *)           val="$undef"  ;;
8853    esac
8854    ;;
8855 esac
8856 set uselargefiles
8857 eval $setvar
8858 : Look for a hint-file generated 'call-back-unit'.  If the
8859 : user has specified that a large files perl is to be built,
8860 : we may need to set or change some other defaults.
8861 if $test -f uselargefiles.cbu; then
8862         echo "Your platform has some specific hints regarding large file builds, using them..."
8863         . ./uselargefiles.cbu
8864 fi
8865 case "$uselargefiles" in
8866 "$define")
8867         if $test -f uselargefiles.cbu; then
8868                 echo " "
8869                 echo "Rechecking to see how big your file offsets are..." >&4
8870                 $cat >try.c <<EOCP
8871 #include <sys/types.h>
8872 #include <stdio.h>
8873 int main()
8874 {
8875     printf("%d\n", (int)sizeof($lseektype));
8876     return(0); 
8877 }
8878 EOCP
8879                 set try
8880                 if eval $compile_ok; then
8881                         lseeksize=`$run ./try`
8882                         $echo "Your file offsets are now $lseeksize bytes long."
8883                 else
8884                         dflt="$lseeksize"
8885                         echo " "
8886                         echo "(I can't seem to compile the test program.  Guessing...)"
8887                         rp="What is the size of your file offsets (in bytes)?"
8888                         . ./myread
8889                         lseeksize="$ans"
8890                 fi
8891                 case "$fpostype" in
8892                 *_t) zzz="$fpostype"    ;;
8893                 *)   zzz="fpos_t"       ;;
8894                 esac
8895                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8896                 $cat > try.c <<EOCP
8897 #include <sys/types.h>
8898 #include <stdio.h>
8899 #$i_stdlib I_STDLIB
8900 #ifdef I_STDLIB
8901 #include <stdlib.h>
8902 #endif
8903 int main() {
8904     printf("%d\n", (int)sizeof($fpostype));
8905     return(0);
8906 }
8907 EOCP
8908                 set try
8909                 if eval $compile_ok; then
8910                         yyy=`$run ./try`
8911                         dflt="$lseeksize"
8912                         case "$yyy" in
8913                         '')     echo " "
8914                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8915                                 ;;
8916                         *)      fpossize=$yyy
8917                                 echo " $fpossize bytes." >&4
8918                                 ;;
8919                         esac
8920                 else
8921                         dflt="$fpossize"
8922                         echo " "
8923                         echo "(I can't compile the test program.  Guessing...)" >&4
8924                         rp="What is the size of your file positions (in bytes)?"
8925                         . ./myread
8926                         fpossize="$ans"
8927                 fi
8928                 $rm -f try.c try
8929         fi
8930         ;;
8931 esac
8932
8933 case "$vendorprefix" in
8934 '')     d_vendorbin="$undef"
8935         vendorbin=''
8936         vendorbinexp=''
8937         ;;
8938 *)      d_vendorbin="$define"
8939         : determine where vendor-supplied executables go.
8940         case "$vendorbin" in
8941         '') dflt=$vendorprefix/bin ;;
8942         *)      dflt="$vendorbin" ;;
8943         esac
8944         fn=d~+
8945         rp='Pathname for the vendor-supplied executables directory?'
8946         . ./getfile
8947         vendorbin="$ans"
8948         vendorbinexp="$ansexp"
8949         ;;
8950 esac
8951 : Change installation prefix, if necessary.
8952 if $test X"$prefix" != X"$installprefix"; then
8953         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8954 else
8955         installvendorbin="$vendorbinexp"
8956 fi
8957
8958 case "$vendorprefix" in
8959 '')     vendorhtml1dir=''
8960         vendorhtml1direxp=''
8961         ;;
8962 *)      : determine where vendor-supplied html pages go.
8963         : There is no standard location, so try to copy the previously-selected
8964         : directory structure for the core html pages.
8965         : XXX Better default suggestions would be welcome.
8966         case "$vendorhtml1dir" in
8967         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8968         *)      dflt=$vendorhtml1dir ;;
8969         esac
8970         case "$dflt" in
8971         ''|' ') dflt=none ;;
8972         esac
8973         fn=dn+~
8974         rp='Pathname for the vendor-supplied html pages?'
8975         . ./getfile
8976         vendorhtml1dir="$ans"
8977         vendorhtml1direxp="$ansexp"
8978         ;;
8979 esac
8980 : Use ' ' for none so value is preserved next time through Configure
8981 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
8982 : Change installation prefix, if necessary.
8983 if $test X"$prefix" != X"$installprefix"; then
8984         installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
8985 else
8986         installvendorhtml1dir="$vendorhtml1direxp"
8987 fi
8988
8989 case "$vendorprefix" in
8990 '')     vendorhtml3dir=''
8991         vendorhtml3direxp=''
8992         ;;
8993 *)      : determine where vendor-supplied module html pages go.
8994         : There is no standard location, so try to copy the previously-selected
8995         : directory structure for the core html pages.
8996         : XXX Better default suggestions would be welcome.
8997         case "$vendorhtml3dir" in
8998         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8999         *)      dflt=$vendorhtml3dir ;;
9000         esac
9001         case "$dflt" in
9002         ''|' ') dflt=none ;;
9003         esac
9004         fn=dn+~
9005         rp='Pathname for the vendor-supplied html pages?'
9006         . ./getfile
9007         vendorhtml3dir="$ans"
9008         vendorhtml3direxp="$ansexp"
9009         ;;
9010 esac
9011 : Use ' ' for none so value is preserved next time through Configure
9012 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9013 : Change installation prefix, if necessary.
9014 if $test X"$prefix" != X"$installprefix"; then
9015         installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
9016 else
9017         installvendorhtml3dir="$vendorhtml3direxp"
9018 fi
9019
9020 case "$vendorprefix" in
9021 '')     vendorman1dir=''
9022         vendorman1direxp=''
9023         ;;
9024 *)      : determine where vendor-supplied manual pages go.
9025         case "$vendorman1dir" in
9026         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9027         *)      dflt=$vendorman1dir ;;
9028         esac
9029         case "$dflt" in
9030         ''|' ') dflt=none ;;
9031         esac
9032         fn=nd~+
9033         rp='Pathname for the vendor-supplied manual section 1 pages?'
9034         . ./getfile
9035         vendorman1dir="$ans"
9036         vendorman1direxp="$ansexp"
9037         ;;
9038 esac
9039 : Use ' ' for none so value is preserved next time through Configure
9040 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9041 : Change installation prefix, if necessary.
9042 if $test X"$prefix" != X"$installprefix"; then
9043         installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
9044 else
9045         installvendorman1dir="$vendorman1direxp"
9046 fi
9047
9048 case "$vendorprefix" in
9049 '')     vendorman3dir=''
9050         vendorman3direxp=''
9051         ;;
9052 *)      : determine where vendor-supplied module manual pages go.
9053         case "$vendorman3dir" in
9054         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9055         *)      dflt=$vendorman3dir ;;
9056         esac
9057         case "$dflt" in
9058         ''|' ') dflt=none ;;
9059         esac
9060         fn=nd~+
9061         rp='Pathname for the vendor-supplied manual section 3 pages?'
9062         . ./getfile
9063         vendorman3dir="$ans"
9064         vendorman3direxp="$ansexp"
9065         ;;
9066 esac
9067 : Use ' ' for none so value is preserved next time through Configure
9068 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9069 : Change installation prefix, if necessary.
9070 if $test X"$prefix" != X"$installprefix"; then
9071         installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
9072 else
9073         installvendorman3dir="$vendorman3direxp"
9074 fi
9075
9076 case "$vendorprefix" in
9077 '')     d_vendorscript="$undef"
9078         vendorscript=''
9079         vendorscriptexp=''
9080         ;;
9081 *)      d_vendorscript="$define"
9082         : determine where vendor-supplied scripts go.
9083         case "$vendorscript" in
9084         '')     dflt=$vendorprefix/script
9085                 $test -d $dflt || dflt=$vendorbin ;;
9086         *)  dflt="$vendorscript" ;;
9087         esac
9088         $cat <<EOM
9089
9090 The installation process will create a directory for 
9091 vendor-supplied scripts.
9092
9093 EOM
9094         fn=d~+
9095         rp='Pathname for the vendor-supplied scripts directory?'
9096         . ./getfile
9097         vendorscript="$ans"
9098         vendorscriptexp="$ansexp"
9099         ;;
9100 esac
9101 : Change installation prefix, if necessary.
9102 if $test X"$prefix" != X"$installprefix"; then
9103         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9104 else
9105         installvendorscript="$vendorscriptexp"
9106 fi
9107
9108 : see if qgcvt exists
9109 set qgcvt d_qgcvt
9110 eval $inlibc
9111
9112 echo " "
9113
9114 if $test X"$d_longdbl" = X"$define"; then
9115
9116 echo "Checking how to print long doubles..." >&4
9117
9118 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9119         $cat >try.c <<'EOCP'
9120 #include <sys/types.h>
9121 #include <stdio.h>
9122 int main() {
9123   double d = 123.456;
9124   printf("%.3f\n", d);
9125 }
9126 EOCP
9127         set try
9128         if eval $compile; then
9129                 yyy=`$run ./try`
9130                 case "$yyy" in
9131                 123.456)
9132                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9133                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9134                         echo "We will use %f."
9135                         ;;
9136                 esac
9137         fi
9138 fi
9139
9140 if $test X"$sPRIfldbl" = X; then
9141         $cat >try.c <<'EOCP'
9142 #include <sys/types.h>
9143 #include <stdio.h>
9144 int main() {
9145   long double d = 123.456;
9146   printf("%.3Lf\n", d);
9147 }
9148 EOCP
9149         set try
9150         if eval $compile; then
9151                 yyy=`$run ./try`
9152                 case "$yyy" in
9153                 123.456)
9154                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9155                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9156                         echo "We will use %Lf."
9157                         ;;
9158                 esac
9159         fi
9160 fi
9161
9162 if $test X"$sPRIfldbl" = X; then
9163         $cat >try.c <<'EOCP'
9164 #include <sys/types.h>
9165 #include <stdio.h>
9166 int main() {
9167   long double d = 123.456;
9168   printf("%.3llf\n", d);
9169 }
9170 EOCP
9171         set try
9172         if eval $compile; then
9173                 yyy=`$run ./try`
9174                 case "$yyy" in
9175                 123.456)
9176                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9177                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9178                         echo "We will use %llf."
9179                         ;;
9180                 esac
9181         fi
9182 fi
9183
9184 if $test X"$sPRIfldbl" = X; then
9185         $cat >try.c <<'EOCP'
9186 #include <sys/types.h>
9187 #include <stdio.h>
9188 int main() {
9189   long double d = 123.456;
9190   printf("%.3lf\n", d);
9191 }
9192 EOCP
9193         set try
9194         if eval $compile; then
9195                 yyy=`$run ./try`
9196                 case "$yyy" in
9197                 123.456)
9198                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9199                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9200                         echo "We will use %lf."
9201                         ;;
9202                 esac
9203         fi
9204 fi
9205
9206 if $test X"$sPRIfldbl" = X; then
9207         echo "Cannot figure out how to print long doubles." >&4
9208 else
9209         sSCNfldbl=$sPRIfldbl    # expect consistency
9210 fi
9211
9212 $rm -f try try.*
9213
9214 fi # d_longdbl
9215
9216 case "$sPRIfldbl" in
9217 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9218         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9219         d_SCNfldbl="$undef";
9220         ;;
9221 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9222         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9223         d_SCNfldbl="$define";
9224         ;;
9225 esac
9226
9227 : Check how to convert floats to strings.
9228
9229 if test "X$d_Gconvert" = X; then
9230
9231 echo " "
9232 echo "Checking for an efficient way to convert floats to strings."
9233 echo " " > try.c
9234 case "$uselongdouble" in
9235 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9236 esac
9237 case "$d_longdbl" in
9238 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9239 esac
9240 case "$d_PRIgldbl" in
9241 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9242 esac
9243 $cat >>try.c <<EOP
9244 #ifdef TRY_gconvert
9245 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9246 char *myname = "gconvert";
9247 #endif
9248 #ifdef TRY_gcvt
9249 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9250 char *myname = "gcvt";
9251 #endif
9252 #ifdef TRY_qgcvt
9253 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9254 char *myname = "qgcvt";
9255 #define DOUBLETYPE long double
9256 #endif
9257 #ifdef TRY_sprintf
9258 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9259 #ifdef HAS_PRIgldbl
9260 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9261 #else
9262 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9263 #endif
9264 #else
9265 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9266 #endif
9267 char *myname = "sprintf";
9268 #endif
9269
9270 #ifndef DOUBLETYPE
9271 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9272 #define DOUBLETYPE long double
9273 #else
9274 #define DOUBLETYPE double
9275 #endif
9276 #endif
9277
9278 #include <stdio.h>
9279
9280 #define I_STDLIB $i_stdlib
9281 #ifdef I_STDLIB
9282 #include <stdlib.h>
9283 #endif
9284
9285 int
9286 checkit(expect, got)
9287 char *expect;
9288 char *got;
9289 {
9290     if (strcmp(expect, got)) {
9291                 printf("%s oddity:  Expected %s, got %s\n",
9292                         myname, expect, got);
9293                 exit(1);
9294         }
9295 }
9296
9297 int main()
9298
9299         char buf[64]; 
9300         buf[63] = '\0';
9301
9302         /* This must be 1st test on (which?) platform */
9303         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9304         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9305         checkit("0.1", buf);
9306
9307         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9308         checkit("0.01", buf);
9309
9310         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9311         checkit("0.001", buf);
9312
9313         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9314         checkit("0.0001", buf);
9315
9316         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9317         if (strlen(buf) > 5)
9318             checkit("9e-005", buf); /* for Microsoft ?? */
9319         else
9320             checkit("9e-05", buf);
9321
9322         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9323         checkit("1", buf);
9324
9325         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9326         checkit("1.1", buf);
9327
9328         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9329         checkit("1.01", buf);
9330
9331         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9332         checkit("1.001", buf);
9333
9334         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9335         checkit("1.0001", buf);
9336
9337         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9338         checkit("1.00001", buf);
9339
9340         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9341         checkit("1.000001", buf);
9342
9343         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9344         checkit("0", buf);
9345
9346         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9347         checkit("-1", buf);
9348
9349         /* Some Linux gcvt's give 1.e+5 here. */
9350         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9351         checkit("100000", buf);
9352         
9353         /* Some Linux gcvt's give -1.e+5 here. */
9354         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9355         checkit("-100000", buf);
9356
9357         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9358         checkit("123.456", buf);
9359
9360         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9361         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9362         /* 34 should be enough to scare even long double
9363          * places into using the e notation. */
9364         if (strlen(buf) > 5)
9365             checkit("1e+034", buf); /* for Microsoft */
9366         else
9367             checkit("1e+34", buf);
9368
9369         /* For Perl, if you add additional tests here, also add them to
9370          * t/base/num.t for benefit of platforms not using Configure or
9371          * overriding d_Gconvert */
9372
9373         exit(0);
9374 }
9375 EOP
9376 : first add preferred functions to our list
9377 xxx_list=""
9378 for xxx_convert in $gconvert_preference; do
9379     case $xxx_convert in
9380     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9381     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9382     esac 
9383 done
9384 : then add any others
9385 for xxx_convert in gconvert gcvt sprintf; do
9386     case "$xxx_list" in
9387     *$xxx_convert*) ;;
9388     *) xxx_list="$xxx_list $xxx_convert" ;;
9389     esac 
9390 done
9391
9392 case "$d_longdbl$uselongdouble" in
9393 "$define$define")
9394     : again, add prefered functions to our list first
9395     xxx_ld_list=""
9396     for xxx_convert in $gconvert_ld_preference; do
9397         case $xxx_convert in
9398         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9399         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9400         esac
9401     done
9402     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9403     for xxx_convert in qgcvt sprintf $xxx_list; do
9404         case "$xxx_ld_list" in
9405         $xxx_convert*|*" $xxx_convert"*) ;;
9406         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9407         esac
9408     done
9409     : if sprintf cannot do long doubles, move it to the end
9410     if test "$d_PRIgldbl" != "$define"; then
9411         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9412     fi
9413     : if no qgcvt, remove it
9414     if test "$d_qgcvt" != "$define"; then
9415         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9416     fi
9417     : use the ld_list
9418     xxx_list="$xxx_ld_list"
9419     ;;
9420 esac
9421
9422 for xxx_convert in $xxx_list; do
9423         echo "Trying $xxx_convert..."
9424         $rm -f try try$_o
9425         set try -DTRY_$xxx_convert
9426         if eval $compile; then
9427                 echo "$xxx_convert() found." >&4
9428                 if $run ./try; then
9429                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9430                         break;
9431                 else
9432                         echo "...But $xxx_convert didn't work as I expected."
9433                         xxx_convert=''
9434                 fi
9435         else
9436                 echo "$xxx_convert NOT found." >&4
9437         fi
9438 done
9439
9440 if test X$xxx_convert = X; then
9441     echo "*** WHOA THERE!!! ***" >&4
9442     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9443     xxx_convert=sprintf
9444 fi
9445
9446 case "$xxx_convert" in
9447 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9448 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9449 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9450 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9451    "$define$define$define")
9452       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9453    "$define$define$undef")
9454       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9455    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9456    esac
9457    ;;  
9458 esac
9459
9460 fi
9461
9462 : see if _fwalk exists
9463 set fwalk d__fwalk
9464 eval $inlibc
9465
9466 : Initialize h_fcntl
9467 h_fcntl=false
9468
9469 : Initialize h_sysfile
9470 h_sysfile=false
9471
9472 : access call always available on UNIX
9473 set access d_access
9474 eval $inlibc
9475
9476 : locate the flags for 'access()'
9477 case "$d_access" in
9478 "$define")
9479         echo " "
9480         $cat >access.c <<EOCP
9481 #include <sys/types.h>
9482 #ifdef I_FCNTL
9483 #include <fcntl.h>
9484 #endif
9485 #ifdef I_SYS_FILE
9486 #include <sys/file.h>
9487 #endif
9488 #ifdef I_UNISTD
9489 #include <unistd.h>
9490 #endif
9491 #$i_stdlib I_STDLIB
9492 #ifdef I_STDLIB
9493 #include <stdlib.h>
9494 #endif
9495 int main() {
9496         exit(R_OK);
9497 }
9498 EOCP
9499         : check sys/file.h first, no particular reason here
9500         if $test `./findhdr sys/file.h` && \
9501                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9502                 h_sysfile=true;
9503                 echo "<sys/file.h> defines the *_OK access constants." >&4
9504         elif $test `./findhdr fcntl.h` && \
9505                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9506                 h_fcntl=true;
9507                 echo "<fcntl.h> defines the *_OK access constants." >&4
9508         elif $test `./findhdr unistd.h` && \
9509                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9510                 echo "<unistd.h> defines the *_OK access constants." >&4
9511         else
9512                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9513         fi
9514         ;;
9515 esac
9516 $rm -f access*
9517
9518 : see if accessx exists
9519 set accessx d_accessx
9520 eval $inlibc
9521
9522 : see if aintl exists
9523 set aintl d_aintl
9524 eval $inlibc
9525
9526 : see if alarm exists
9527 set alarm d_alarm
9528 eval $inlibc
9529
9530 : see if POSIX threads are available
9531 set pthread.h i_pthread
9532 eval $inhdr
9533
9534 : define a fucntion to check prototypes
9535 $cat > protochk <<EOSH
9536 $startsh
9537 cc="$cc"
9538 optimize="$optimize"
9539 ccflags="$ccflags"
9540 prototype="$prototype"
9541 define="$define"
9542 rm=$rm
9543 usethreads=$usethreads
9544 i_pthread=$i_pthread
9545 pthread_h_first=$pthread_h_first
9546 EOSH
9547
9548 $cat >> protochk <<'EOSH'
9549
9550 $rm -f try.c
9551 foo="$1"
9552 shift
9553 while test $# -ge 2; do
9554         case "$1" in
9555                 $define) echo "#include <$2>" >> try.c ;;
9556                 literal) echo "$2" >> try.c ;;
9557         esac
9558     # Extra magic for the benefit of systems that need pthread.h
9559     # to be included early to correctly detect threadsafe functions.
9560     # Such functions must guarantee themselves, though, that the usethreads
9561     # and i_pthread have been defined, before calling protochk.
9562     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9563         echo "#include <pthread.h>" >> try.c
9564         pthread_h_done=yes
9565     fi
9566     shift 2
9567 done
9568 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9569 cat >> try.c <<'EOCP'
9570 #ifdef CAN_PROTOTYPE
9571 #define _(args) args
9572 #else
9573 #define _(args) ()
9574 #endif
9575 EOCP
9576 echo "$foo" >> try.c
9577 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9578 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9579 status=$?
9580 $rm -f try.[co]
9581 exit $status
9582 EOSH
9583 chmod +x protochk
9584 $eunicefix protochk
9585
9586 hasproto='varname=$1; func=$2; shift; shift;
9587 while $test $# -ge 2; do
9588         case "$1" in
9589         $define) echo "#include <$2>";;
9590         esac ;
9591     shift 2;
9592 done > try.c;
9593 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9594 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9595         echo "$func() prototype found.";
9596         val="$define";
9597 else
9598         echo "$func() prototype NOT found.";
9599         val="$undef";
9600 fi;
9601 set $varname;
9602 eval $setvar;
9603 $rm -f try.c tryout.c'
9604
9605 : see if sys/types.h has to be included
9606 set sys/types.h i_systypes
9607 eval $inhdr
9608
9609 : see if sys/select.h has to be included
9610 set sys/select.h i_sysselct
9611 eval $inhdr
9612
9613 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9614 while $test $# -ge 2; do
9615         case "$1" in
9616         $define) echo "#include <$2>";;
9617         esac ;
9618     shift 2;
9619 done > try.c;
9620 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9621 set try;
9622 if eval $compile; then
9623         val="$define";
9624 else
9625         val="$undef";
9626 fi;
9627 set $varname;
9628 eval $setvar;
9629 $rm -f try.c try.o'
9630
9631 : see if we should include time.h, sys/time.h, or both
9632 echo " "
9633 if test "X$timeincl" = X; then
9634         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9635         $echo $n "I'm now running the test program...$c"
9636         $cat >try.c <<EOCP
9637 #include <sys/types.h>
9638 #ifdef I_TIME
9639 #include <time.h>
9640 #endif
9641 #ifdef I_SYSTIME
9642 #ifdef SYSTIMEKERNEL
9643 #define KERNEL
9644 #endif
9645 #include <sys/time.h>
9646 #endif
9647 #ifdef I_SYSSELECT
9648 #include <sys/select.h>
9649 #endif
9650 #$i_stdlib I_STDLIB
9651 #ifdef I_STDLIB
9652 #include <stdlib.h>
9653 #endif
9654 int main()
9655 {
9656         struct tm foo;
9657 #ifdef S_TIMEVAL
9658         struct timeval bar;
9659 #endif
9660 #ifdef S_TIMEZONE
9661         struct timezone tzp;
9662 #endif
9663         if (foo.tm_sec == foo.tm_sec)
9664                 exit(0);
9665 #ifdef S_TIMEVAL
9666         if (bar.tv_sec == bar.tv_sec)
9667                 exit(0);
9668 #endif
9669         exit(1);
9670 }
9671 EOCP
9672         flags=''
9673         for s_timezone in '-DS_TIMEZONE' ''; do
9674         sysselect=''
9675         for s_timeval in '-DS_TIMEVAL' ''; do
9676         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9677         for i_time in '' '-DI_TIME'; do
9678         for i_systime in '-DI_SYSTIME' ''; do
9679                 case "$flags" in
9680                 '') $echo $n ".$c"
9681                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9682                         if eval $compile; then
9683                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9684                                 shift
9685                                 flags="$*"
9686                                 echo " "
9687                                 $echo $n "Succeeded with $flags$c"
9688                         fi
9689                         ;;
9690                 esac
9691         done
9692         done
9693         done
9694         done
9695         done
9696         timeincl=''
9697         echo " "
9698         case "$flags" in
9699         *SYSTIMEKERNEL*) i_systimek="$define"
9700                 timeincl=`./findhdr sys/time.h`
9701                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9702         *) i_systimek="$undef";;
9703         esac
9704         case "$flags" in
9705         *I_TIME*) i_time="$define"
9706                 timeincl=`./findhdr time.h`" $timeincl"
9707                 echo "We'll include <time.h>." >&4;;
9708         *) i_time="$undef";;
9709         esac
9710         case "$flags" in
9711         *I_SYSTIME*) i_systime="$define"
9712                 timeincl=`./findhdr sys/time.h`" $timeincl"
9713                 echo "We'll include <sys/time.h>." >&4;;
9714         *) i_systime="$undef";;
9715         esac
9716         $rm -f try.c try
9717 fi
9718 : see if struct tm knows about tm_zone
9719 case "$i_systime$i_time" in
9720 *$define*) 
9721         echo " "
9722         echo "Checking to see if your struct tm has tm_zone field..." >&4
9723         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9724         eval $hasfield
9725         ;;
9726 *)      val="$undef"
9727         set d_tm_tm_zone
9728         eval $setvar
9729         ;;
9730 esac
9731 case "$d_tm_tm_zone" in
9732 "$define")      echo "Yes, it does."   ;;
9733 *)              echo "No, it doesn't." ;;
9734 esac
9735 : see if struct tm knows about tm_gmtoff
9736 case "$i_systime$i_time" in
9737 *$define*) 
9738         echo " "
9739         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9740         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9741         eval $hasfield
9742         ;;
9743 *)      val="$undef"
9744         set d_tm_tm_gmtoff
9745         eval $setvar
9746         ;;
9747 esac
9748 case "$d_tm_tm_gmtoff" in
9749 "$define")      echo "Yes, it does."   ;;
9750 *)              echo "No, it doesn't." ;;
9751 esac
9752
9753 : see if asctime_r exists
9754 set asctime_r d_asctime_r
9755 eval $inlibc
9756 case "$d_asctime_r" in
9757 "$define")
9758         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9759         case "$d_asctime_r_proto:$usethreads" in
9760         ":define")      d_asctime_r_proto=define
9761                 set d_asctime_r_proto asctime_r $hdrs
9762                 eval $hasproto ;;
9763         *)      ;;
9764         esac
9765         case "$d_asctime_r_proto" in
9766         define)
9767         case "$asctime_r_proto" in
9768         ''|0) try='char* asctime_r(const struct tm*, char*);'
9769         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9770         esac
9771         case "$asctime_r_proto" in
9772         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9773         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9774         esac
9775         case "$asctime_r_proto" in
9776         ''|0) try='int asctime_r(const struct tm*, char*);'
9777         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9778         esac
9779         case "$asctime_r_proto" in
9780         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9781         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9782         esac
9783         case "$asctime_r_proto" in
9784         ''|0)   d_asctime_r=undef
9785                 asctime_r_proto=0
9786                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9787         * )     case "$asctime_r_proto" in
9788                 REENTRANT_PROTO*) ;;
9789                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9790                 esac
9791                 echo "Prototype: $try" ;;
9792         esac
9793         ;;
9794         *)      case "$usethreads" in
9795                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9796                 esac
9797                 d_asctime_r=undef
9798                 asctime_r_proto=0
9799                 ;;
9800         esac
9801         ;;
9802 *)      asctime_r_proto=0
9803         ;;
9804 esac
9805
9806 : see if atolf exists
9807 set atolf d_atolf
9808 eval $inlibc
9809
9810 : see if atoll exists
9811 set atoll d_atoll
9812 eval $inlibc
9813
9814 : Look for GNU-cc style attribute checking
9815 echo " "
9816 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9817 $cat >attrib.c <<'EOCP'
9818 #include <stdio.h>
9819 void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
9820 EOCP
9821 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9822         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9823                 echo "Your C compiler doesn't fully support __attribute__."
9824                 val="$undef"
9825         else
9826                 echo "Your C compiler supports __attribute__."
9827                 val="$define"
9828         fi
9829 else
9830         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9831         val="$undef"
9832 fi
9833 set d_attribut
9834 eval $setvar
9835 $rm -f attrib*
9836
9837 : see if bcmp exists
9838 set bcmp d_bcmp
9839 eval $inlibc
9840
9841 : see if bcopy exists
9842 set bcopy d_bcopy
9843 eval $inlibc
9844
9845 : see if this is a unistd.h system
9846 set unistd.h i_unistd
9847 eval $inhdr
9848
9849 : see if getpgrp exists
9850 set getpgrp d_getpgrp
9851 eval $inlibc
9852
9853 case "$d_getpgrp" in
9854 "$define")
9855         echo " "
9856         echo "Checking to see which flavor of getpgrp is in use..."
9857         $cat >try.c <<EOP
9858 #$i_unistd I_UNISTD
9859 #include <sys/types.h>
9860 #ifdef I_UNISTD
9861 #  include <unistd.h>
9862 #endif
9863 #$i_stdlib I_STDLIB
9864 #ifdef I_STDLIB
9865 #include <stdlib.h>
9866 #endif
9867 int main()
9868 {
9869         if (getuid() == 0) {
9870                 printf("(I see you are running Configure as super-user...)\n");
9871                 setuid(1);
9872         }
9873 #ifdef TRY_BSD_PGRP
9874         if (getpgrp(1) == 0)
9875                 exit(0);
9876 #else
9877         if (getpgrp() > 0)
9878                 exit(0);
9879 #endif
9880         exit(1);
9881 }
9882 EOP
9883         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9884                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9885                 val="$define"
9886         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9887                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9888                 val="$undef"
9889         else
9890                 echo "I can't seem to compile and run the test program."
9891                 if ./usg; then
9892                         xxx="a USG one, i.e. you use getpgrp()."
9893                 else
9894                         # SVR4 systems can appear rather BSD-ish.
9895                         case "$i_unistd" in
9896                         $undef)
9897                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9898                                 val="$define"
9899                                 ;;
9900                         $define)
9901                                 xxx="probably a USG one, i.e. you use getpgrp()."
9902                                 val="$undef"
9903                                 ;;
9904                         esac
9905                 fi
9906                 echo "Assuming your getpgrp is $xxx" >&4
9907         fi
9908         ;;
9909 *) val="$undef";;
9910 esac
9911 set d_bsdgetpgrp
9912 eval $setvar
9913 $rm -f try try.*
9914
9915 : see if setpgrp exists
9916 set setpgrp d_setpgrp
9917 eval $inlibc
9918
9919 case "$d_setpgrp" in
9920 "$define")
9921         echo " "
9922         echo "Checking to see which flavor of setpgrp is in use..."
9923         $cat >try.c <<EOP
9924 #$i_unistd I_UNISTD
9925 #include <sys/types.h>
9926 #ifdef I_UNISTD
9927 #  include <unistd.h>
9928 #endif
9929 #$i_stdlib I_STDLIB
9930 #ifdef I_STDLIB
9931 #include <stdlib.h>
9932 #endif
9933 int main()
9934 {
9935         if (getuid() == 0) {
9936                 printf("(I see you are running Configure as super-user...)\n");
9937                 setuid(1);
9938         }
9939 #ifdef TRY_BSD_PGRP
9940         if (-1 == setpgrp(1, 1))
9941                 exit(0);
9942 #else
9943         if (setpgrp() != -1)
9944                 exit(0);
9945 #endif
9946         exit(1);
9947 }
9948 EOP
9949         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9950                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9951                 val="$define"
9952         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9953                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9954                 val="$undef"
9955         else
9956                 echo "(I can't seem to compile and run the test program.)"
9957                 if ./usg; then
9958                         xxx="a USG one, i.e. you use setpgrp()."
9959                 else
9960                         # SVR4 systems can appear rather BSD-ish.
9961                         case "$i_unistd" in
9962                         $undef)
9963                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9964                                 val="$define"
9965                                 ;;
9966                         $define)
9967                                 xxx="probably a USG one, i.e. you use setpgrp()."
9968                                 val="$undef"
9969                                 ;;
9970                         esac
9971                 fi
9972                 echo "Assuming your setpgrp is $xxx" >&4
9973         fi
9974         ;;
9975 *) val="$undef";;
9976 esac
9977 set d_bsdsetpgrp
9978 eval $setvar
9979 $rm -f try try.*
9980 : see if bzero exists
9981 set bzero d_bzero
9982 eval $inlibc
9983
9984 : see if signal is declared as pointer to function returning int or void
9985 echo " "
9986 xxx=`./findhdr signal.h`
9987 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9988 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
9989         echo "You have int (*signal())() instead of void." >&4
9990         val="$undef"
9991 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
9992         echo "You have void (*signal())()." >&4
9993         val="$define"
9994 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9995         echo "You have int (*signal())() instead of void." >&4
9996         val="$undef"
9997 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9998         echo "You have void (*signal())()." >&4
9999         val="$define"
10000 else
10001         case "$d_voidsig" in
10002         '')
10003         echo "I can't determine whether signal handler returns void or int..." >&4
10004                 dflt=void
10005                 rp="What type does your signal handler return?"
10006                 . ./myread
10007                 case "$ans" in
10008                 v*) val="$define";;
10009                 *) val="$undef";;
10010                 esac;;
10011         "$define")
10012                 echo "As you already told me, signal handler returns void." >&4
10013                 val="$define"
10014                 ;;
10015         *)      echo "As you already told me, signal handler returns int." >&4
10016                 val="$undef"
10017                 ;;
10018         esac
10019 fi
10020 set d_voidsig
10021 eval $setvar
10022 case "$d_voidsig" in
10023 "$define") signal_t="void";;
10024 *) signal_t="int";;
10025 esac
10026 $rm -f $$.tmp
10027
10028 : check for ability to cast large floats to 32-bit ints.
10029 echo " "
10030 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10031 if $test "$intsize" -ge 4; then
10032         xxx=int
10033 else
10034         xxx=long
10035 fi
10036 $cat >try.c <<EOCP
10037 #include <stdio.h>
10038 #$i_stdlib I_STDLIB
10039 #ifdef I_STDLIB
10040 #include <stdlib.h>
10041 #endif
10042 #include <sys/types.h>
10043 #include <signal.h>
10044 $signal_t blech(s) int s; { exit(3); }
10045 int main()
10046 {
10047         $xxx i32;
10048         double f, g;
10049         int result = 0;
10050         char str[16];
10051         signal(SIGFPE, blech);
10052
10053         /* Don't let compiler optimize the test away.  Store the number 
10054            in a writable string for gcc to pass to sscanf under HP/UX.
10055         */
10056         sprintf(str, "2147483647");
10057         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10058         g = 10 * f;
10059         i32  = ($xxx) g;
10060
10061         /* x86 processors will probably give 0x8000 0000, which is a
10062        sign change.  We don't want that.  We want to mimic SPARC
10063            behavior here, which is to preserve the sign and give
10064            back 0x7fff ffff.
10065         */
10066         if (i32 != ($xxx) f)
10067                 result |= 1;
10068         exit(result);
10069 }
10070 EOCP
10071 set try
10072 if eval $compile_ok; then
10073         $run ./try
10074         yyy=$?
10075 else
10076         echo "(I can't seem to compile the test program--assuming it can't)"
10077         yyy=1
10078 fi
10079 case "$yyy" in
10080 0)      val="$define"
10081         echo "Yup, it can."
10082         ;;
10083 *)      val="$undef"
10084         echo "Nope, it can't."
10085         ;;
10086 esac
10087 set d_casti32
10088 eval $setvar
10089 $rm -f try try.*
10090
10091 : check for ability to cast negative floats to unsigned
10092 echo " "
10093 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10094 $cat >try.c <<EOCP
10095 #include <stdio.h>
10096 #$i_stdlib I_STDLIB
10097 #ifdef I_STDLIB
10098 #include <stdlib.h>
10099 #endif
10100 #include <sys/types.h>
10101 #include <signal.h>
10102 $signal_t blech(s) int s; { exit(7); }
10103 $signal_t blech_in_list(s) int s; { exit(4); }
10104 unsigned long dummy_long(p) unsigned long p; { return p; }
10105 unsigned int dummy_int(p) unsigned int p; { return p; }
10106 unsigned short dummy_short(p) unsigned short p; { return p; }
10107 int main()
10108 {
10109         double f;
10110         unsigned long along;
10111         unsigned int aint;
10112         unsigned short ashort;
10113         int result = 0;
10114         char str[16];
10115         
10116         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10117            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10118            optimized the whole file away
10119         */
10120         /* Store the number in a writable string for gcc to pass to 
10121            sscanf under HP/UX.
10122         */
10123         sprintf(str, "-123");
10124         sscanf(str, "%lf", &f);  /* f = -123.; */
10125
10126         signal(SIGFPE, blech);
10127         along = (unsigned long)f;
10128         aint = (unsigned int)f;
10129         ashort = (unsigned short)f;
10130         if (along != (unsigned long)-123)
10131                 result |= 1;
10132         if (aint != (unsigned int)-123)
10133                 result |= 1;
10134         if (ashort != (unsigned short)-123)
10135                 result |= 1;
10136         sprintf(str, "1073741824.");
10137         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10138         f = f + f;
10139         along = 0;
10140         along = (unsigned long)f;
10141         if (along != 0x80000000)
10142                 result |= 2;
10143         f -= 1.;
10144         along = 0;
10145         along = (unsigned long)f;
10146         if (along != 0x7fffffff)
10147                 result |= 1;
10148         f += 2.;
10149         along = 0;
10150         along = (unsigned long)f;
10151         if (along != 0x80000001)
10152                 result |= 2;
10153         if (result)
10154                 exit(result);
10155         signal(SIGFPE, blech_in_list);
10156         sprintf(str, "123.");
10157         sscanf(str, "%lf", &f);  /* f = 123.; */
10158         along = dummy_long((unsigned long)f);
10159         aint = dummy_int((unsigned int)f);
10160         ashort = dummy_short((unsigned short)f);
10161         if (along != (unsigned long)123)
10162                 result |= 4;
10163         if (aint != (unsigned int)123)
10164                 result |= 4;
10165         if (ashort != (unsigned short)123)
10166                 result |= 4;
10167         exit(result);
10168
10169 }
10170 EOCP
10171 set try
10172 if eval $compile_ok; then
10173         $run ./try
10174         castflags=$?
10175 else
10176         echo "(I can't seem to compile the test program--assuming it can't)"
10177         castflags=7
10178 fi
10179 case "$castflags" in
10180 0)      val="$define"
10181         echo "Yup, it can."
10182         ;;
10183 *)      val="$undef"
10184         echo "Nope, it can't."
10185         ;;
10186 esac
10187 set d_castneg
10188 eval $setvar
10189 $rm -f try.*
10190
10191 : see if vprintf exists
10192 echo " "
10193 if set vprintf val -f d_vprintf; eval $csym; $val; then
10194         echo 'vprintf() found.' >&4
10195         val="$define"
10196         $cat >try.c <<EOF
10197 #include <varargs.h>
10198 #$i_stdlib I_STDLIB
10199 #ifdef I_STDLIB
10200 #include <stdlib.h>
10201 #endif
10202
10203 int main() { xxx("foo"); }
10204
10205 xxx(va_alist)
10206 va_dcl
10207 {
10208         va_list args;
10209         char buf[10];
10210
10211         va_start(args);
10212         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10213 }
10214 EOF
10215         set try
10216         if eval $compile && $run ./try; then
10217                 echo "Your vsprintf() returns (int)." >&4
10218                 val2="$undef"
10219         else
10220                 echo "Your vsprintf() returns (char*)." >&4
10221                 val2="$define"
10222         fi
10223 else
10224         echo 'vprintf() NOT found.' >&4
10225                 val="$undef"
10226                 val2="$undef"
10227 fi
10228 $rm -f try try.*
10229 set d_vprintf
10230 eval $setvar
10231 val=$val2
10232 set d_charvspr
10233 eval $setvar
10234
10235 : see if chown exists
10236 set chown d_chown
10237 eval $inlibc
10238
10239 : see if chroot exists
10240 set chroot d_chroot
10241 eval $inlibc
10242
10243 : see if chsize exists
10244 set chsize d_chsize
10245 eval $inlibc
10246
10247 : see if class exists
10248 set class d_class
10249 eval $inlibc
10250
10251 hasstruct='varname=$1; struct=$2; shift; shift;
10252 while $test $# -ge 2; do
10253         case "$1" in
10254         $define) echo "#include <$2>";;
10255         esac ;
10256     shift 2;
10257 done > try.c;
10258 echo "int main () { struct $struct foo; }" >> try.c;
10259 set try;
10260 if eval $compile; then
10261         val="$define";
10262 else
10263         val="$undef";
10264 fi;
10265 set $varname;
10266 eval $setvar;
10267 $rm -f try.c try.o'
10268
10269 socketlib=''
10270 sockethdr=''
10271 : see whether socket exists
10272 echo " "
10273 $echo $n "Hmm... $c" >&4
10274 if set socket val -f d_socket; eval $csym; $val; then
10275         echo "Looks like you have Berkeley networking support." >&4
10276         d_socket="$define"
10277         if set setsockopt val -f; eval $csym; $val; then
10278                 d_oldsock="$undef"
10279         else
10280                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10281                 d_oldsock="$define"
10282         fi
10283 else
10284         if $contains socklib libc.list >/dev/null 2>&1; then
10285                 echo "Looks like you have Berkeley networking support." >&4
10286                 d_socket="$define"
10287                 : we will have to assume that it supports the 4.2 BSD interface
10288                 d_oldsock="$undef"
10289         else
10290                 echo "You don't have Berkeley networking in libc$_a..." >&4
10291                 if test "X$d_socket" = "X$define"; then
10292                    echo "...but you seem to believe that you have sockets." >&4
10293                 else
10294                         for net in net socket
10295                         do
10296                                 if test -f /usr/lib/lib$net$_a; then
10297                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10298                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10299                                         if $contains socket libc.list >/dev/null 2>&1; then
10300                                                 d_socket="$define"
10301                                                 socketlib="-l$net"
10302                                                 case "$net" in
10303                                                 net)
10304                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10305                                                         sockethdr="-I/usr/netinclude"
10306                                                         ;;
10307                                                 esac
10308                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10309                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10310                                                         d_oldsock="$undef"
10311                                                 else
10312                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10313                                                         d_oldsock="$define"
10314                                                 fi
10315                                                 break
10316                                         fi
10317                                 fi
10318                         done
10319                         if test "X$d_socket" != "X$define"; then
10320                            echo "or anywhere else I see." >&4
10321                            d_socket="$undef"
10322                            d_oldsock="$undef"
10323                         fi
10324                 fi
10325         fi
10326 fi
10327
10328 : see if socketpair exists
10329 set socketpair d_sockpair
10330 eval $inlibc
10331
10332
10333 echo " "
10334 echo "Checking the availability of certain socket constants..." >&4
10335 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10336         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10337         $cat >try.c <<EOF
10338 #include <sys/types.h>
10339 #include <sys/socket.h>
10340 int main() {
10341     int i = $ENUM;
10342 }
10343 EOF
10344         val="$undef"
10345         set try; if eval $compile; then
10346                 val="$define"
10347         fi
10348         set d_${enum}; eval $setvar
10349         $rm -f try.c try
10350 done
10351
10352 : see if this is a sys/uio.h system
10353 set sys/uio.h i_sysuio
10354 eval $inhdr
10355
10356
10357 echo " "
10358 echo "Checking to see if your system supports struct cmsghdr..." >&4
10359 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10360 eval $hasstruct
10361 case "$d_cmsghdr_s" in
10362 "$define")      echo "Yes, it does."   ;;
10363 *)              echo "No, it doesn't." ;;
10364 esac
10365
10366
10367 : check for const keyword
10368 echo " "
10369 echo 'Checking to see if your C compiler knows about "const"...' >&4
10370 $cat >const.c <<'EOCP'
10371 typedef struct spug { int drokk; } spug;
10372 int main()
10373 {
10374         const char *foo;
10375         const spug y;
10376 }
10377 EOCP
10378 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10379         val="$define"
10380         echo "Yup, it does."
10381 else
10382         val="$undef"
10383         echo "Nope, it doesn't."
10384 fi
10385 set d_const
10386 eval $setvar
10387
10388 : see if copysignl exists
10389 set copysignl d_copysignl
10390 eval $inlibc
10391
10392 : see if crypt exists
10393 echo " "
10394 set crypt d_crypt
10395 eval $inlibc
10396 case "$d_crypt" in
10397 $define) cryptlib='' ;;
10398 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10399                 echo 'crypt() found.' >&4
10400                 val="$define"
10401                 cryptlib=''
10402         else
10403                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10404                 if $test -z "$cryptlib"; then
10405                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10406                 else
10407                         cryptlib=-lcrypt
10408                 fi
10409                 if $test -z "$cryptlib"; then
10410                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10411                 else
10412                         cryptlib=-lcrypt
10413                 fi
10414                 if $test -z "$cryptlib"; then
10415                         cryptlib=`./loc libcrypt$_a "" $libpth`
10416                 else
10417                         cryptlib=-lcrypt
10418                 fi
10419                 if $test -z "$cryptlib"; then
10420                         echo 'crypt() NOT found.' >&4
10421                         val="$undef"
10422                 else
10423                         val="$define"
10424                 fi
10425         fi
10426         set d_crypt
10427         eval $setvar
10428         ;;
10429 esac
10430
10431 : see if this is a crypt.h system
10432 set crypt.h i_crypt
10433 eval $inhdr
10434
10435 : see if crypt_r exists
10436 set crypt_r d_crypt_r
10437 eval $inlibc
10438 case "$d_crypt_r" in
10439 "$define")
10440         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10441         case "$d_crypt_r_proto:$usethreads" in
10442         ":define")      d_crypt_r_proto=define
10443                 set d_crypt_r_proto crypt_r $hdrs
10444                 eval $hasproto ;;
10445         *)      ;;
10446         esac
10447         case "$d_crypt_r_proto" in
10448         define)
10449         case "$crypt_r_proto" in
10450         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10451         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10452         esac
10453         case "$crypt_r_proto" in
10454         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10455         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10456         esac
10457         case "$crypt_r_proto" in
10458         ''|0)   d_crypt_r=undef
10459                 crypt_r_proto=0
10460                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10461         * )     case "$crypt_r_proto" in
10462                 REENTRANT_PROTO*) ;;
10463                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10464                 esac
10465                 echo "Prototype: $try" ;;
10466         esac
10467         ;;
10468         *)      case "$usethreads" in
10469                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10470                 esac
10471                 d_crypt_r=undef
10472                 crypt_r_proto=0
10473                 ;;
10474         esac
10475         ;;
10476 *)      crypt_r_proto=0
10477         ;;
10478 esac
10479
10480 : get csh whereabouts
10481 case "$csh" in
10482 'csh') val="$undef" ;;
10483 *) val="$define" ;;
10484 esac
10485 set d_csh
10486 eval $setvar
10487 : Respect a hint or command line value for full_csh.
10488 case "$full_csh" in
10489 '') full_csh=$csh ;;
10490 esac
10491
10492 : see if ctermid_r exists
10493 set ctermid_r d_ctermid_r
10494 eval $inlibc
10495 case "$d_ctermid_r" in
10496 "$define")
10497         hdrs="$i_systypes sys/types.h define stdio.h "
10498         case "$d_ctermid_r_proto:$usethreads" in
10499         ":define")      d_ctermid_r_proto=define
10500                 set d_ctermid_r_proto ctermid_r $hdrs
10501                 eval $hasproto ;;
10502         *)      ;;
10503         esac
10504         case "$d_ctermid_r_proto" in
10505         define)
10506         case "$ctermid_r_proto" in
10507         ''|0) try='char* ctermid_r(char*);'
10508         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10509         esac
10510         case "$ctermid_r_proto" in
10511         ''|0)   d_ctermid_r=undef
10512                 ctermid_r_proto=0
10513                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10514         * )     case "$ctermid_r_proto" in
10515                 REENTRANT_PROTO*) ;;
10516                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10517                 esac
10518                 echo "Prototype: $try" ;;
10519         esac
10520         ;;
10521         *)      case "$usethreads" in
10522                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10523                 esac
10524                 d_ctermid_r=undef
10525                 ctermid_r_proto=0
10526                 ;;
10527         esac
10528         ;;
10529 *)      ctermid_r_proto=0
10530         ;;
10531 esac
10532
10533 : see if ctime_r exists
10534 set ctime_r d_ctime_r
10535 eval $inlibc
10536 case "$d_ctime_r" in
10537 "$define")
10538         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10539         case "$d_ctime_r_proto:$usethreads" in
10540         ":define")      d_ctime_r_proto=define
10541                 set d_ctime_r_proto ctime_r $hdrs
10542                 eval $hasproto ;;
10543         *)      ;;
10544         esac
10545         case "$d_ctime_r_proto" in
10546         define)
10547         case "$ctime_r_proto" in
10548         ''|0) try='char* ctime_r(const time_t*, char*);'
10549         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10550         esac
10551         case "$ctime_r_proto" in
10552         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10553         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10554         esac
10555         case "$ctime_r_proto" in
10556         ''|0) try='int ctime_r(const time_t*, char*);'
10557         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10558         esac
10559         case "$ctime_r_proto" in
10560         ''|0) try='int ctime_r(const time_t*, char*, int);'
10561         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10562         esac
10563         case "$ctime_r_proto" in
10564         ''|0)   d_ctime_r=undef
10565                 ctime_r_proto=0
10566                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10567         * )     case "$ctime_r_proto" in
10568                 REENTRANT_PROTO*) ;;
10569                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10570                 esac
10571                 echo "Prototype: $try" ;;
10572         esac
10573         ;;
10574         *)      case "$usethreads" in
10575                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10576                 esac
10577                 d_ctime_r=undef
10578                 ctime_r_proto=0
10579                 ;;
10580         esac
10581         ;;
10582 *)      ctime_r_proto=0
10583         ;;
10584 esac
10585
10586 : see if cuserid exists
10587 set cuserid d_cuserid
10588 eval $inlibc
10589
10590 : see if this is a limits.h system
10591 set limits.h i_limits
10592 eval $inhdr
10593
10594 : see if this is a float.h system
10595 set float.h i_float
10596 eval $inhdr
10597
10598 : See if number of significant digits in a double precision number is known
10599 echo " "
10600 $cat >dbl_dig.c <<EOM
10601 #$i_limits I_LIMITS
10602 #$i_float I_FLOAT
10603 #ifdef I_LIMITS
10604 #include <limits.h>
10605 #endif
10606 #ifdef I_FLOAT
10607 #include <float.h>
10608 #endif
10609 #ifdef DBL_DIG
10610 printf("Contains DBL_DIG");
10611 #endif
10612 EOM
10613 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10614 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10615         echo "DBL_DIG found." >&4
10616         val="$define"
10617 else
10618         echo "DBL_DIG NOT found." >&4
10619         val="$undef"
10620 fi
10621 $rm -f dbl_dig.?
10622 set d_dbl_dig
10623 eval $setvar
10624
10625 : see if dbm.h is available
10626 : see if dbmclose exists
10627 set dbmclose d_dbmclose
10628 eval $inlibc
10629
10630 case "$d_dbmclose" in
10631 $define)
10632         set dbm.h i_dbm
10633         eval $inhdr
10634         case "$i_dbm" in
10635         $define)
10636                 val="$undef"
10637                 set i_rpcsvcdbm
10638                 eval $setvar
10639                 ;;
10640         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10641                 eval $inhdr
10642                 ;;
10643         esac
10644         ;;
10645 *)      echo "We won't be including <dbm.h>"
10646         val="$undef"
10647         set i_dbm
10648         eval $setvar
10649         val="$undef"
10650         set i_rpcsvcdbm
10651         eval $setvar
10652         ;;
10653 esac
10654
10655 : see if prototype for dbminit is available
10656 echo " "
10657 set d_dbminitproto dbminit $i_dbm dbm.h
10658 eval $hasproto
10659
10660 : see if difftime exists
10661 set difftime d_difftime
10662 eval $inlibc
10663
10664 : see if this is a dirent system
10665 echo " "
10666 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10667         val="$define"
10668         echo "<dirent.h> found." >&4
10669 else
10670         val="$undef"
10671         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10672                 echo "<sys/dir.h> found." >&4
10673                 echo " "
10674         else
10675                 xinc=`./findhdr sys/ndir.h`
10676         fi
10677         echo "<dirent.h> NOT found." >&4
10678 fi
10679 set i_dirent
10680 eval $setvar
10681
10682 : Look for type of directory structure.
10683 echo " "
10684 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10685
10686 case "$direntrytype" in
10687 ''|' ')
10688         case "$i_dirent" in
10689         $define) guess1='struct dirent' ;;
10690         *) guess1='struct direct'  ;;
10691         esac
10692         ;;
10693 *)      guess1="$direntrytype"
10694         ;;
10695 esac
10696
10697 case "$guess1" in
10698 'struct dirent') guess2='struct direct' ;;
10699 *) guess2='struct dirent' ;;
10700 esac
10701                 
10702 if $contains "$guess1" try.c >/dev/null 2>&1; then
10703         direntrytype="$guess1"
10704         echo "Your directory entries are $direntrytype." >&4
10705 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10706         direntrytype="$guess2"
10707         echo "Your directory entries seem to be $direntrytype." >&4
10708 else
10709         echo "I don't recognize your system's directory entries." >&4
10710         rp="What type is used for directory entries on this system?"
10711         dflt="$guess1"
10712         . ./myread
10713         direntrytype="$ans"
10714 fi
10715 $rm -f try.c
10716
10717
10718 : see if the directory entry stores field length
10719 echo " "
10720 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10721 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10722         echo "Good, your directory entry keeps length information in d_namlen." >&4
10723         val="$define"
10724 else
10725         echo "Your directory entry does not know about the d_namlen field." >&4
10726         val="$undef"
10727 fi
10728 set d_dirnamlen
10729 eval $setvar
10730 $rm -f try.c
10731
10732 : see if this is an sysdir system
10733 set sys/dir.h i_sysdir
10734 eval $inhdr
10735
10736 : see if this is an sysndir system
10737 set sys/ndir.h i_sysndir
10738 eval $inhdr
10739
10740 : Look for dirfd
10741 echo " "
10742 $cat >dirfd.c <<EOM
10743 #include <stdio.h>
10744 #$i_stdlib I_STDLIB
10745 #ifdef I_STDLIB
10746 #include <stdlib.h>
10747 #endif
10748 #$i_dirent I_DIRENT             /**/
10749 #$i_sysdir I_SYS_DIR            /**/
10750 #$i_sysndir I_SYS_NDIR          /**/
10751 #$i_systypes I_SYS_TYPES        /**/
10752 #if defined(I_SYS_TYPES)
10753 #include <sys/types.h>
10754 #endif
10755 #if defined(I_DIRENT)
10756 #include <dirent.h>
10757 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10758 #include <sys/dir.h>
10759 #endif
10760 #else
10761 #ifdef I_SYS_NDIR
10762 #include <sys/ndir.h>
10763 #else
10764 #ifdef I_SYS_DIR
10765 #ifdef hp9000s500
10766 #include <ndir.h>       /* may be wrong in the future */
10767 #else
10768 #include <sys/dir.h>
10769 #endif
10770 #endif
10771 #endif
10772 #endif 
10773 int main() {
10774         DIR *dirp = opendir(".");
10775         if (dirfd(dirp) >= 0)
10776                 exit(0);
10777         else
10778                 exit(1);
10779 }
10780 EOM
10781 set dirfd
10782 if eval $compile; then
10783         val="$define"
10784 fi
10785 case "$val" in
10786 $define)        echo "dirfd() found." >&4       ;;
10787 *)              echo "dirfd() NOT found." >&4   ;;
10788 esac
10789 set d_dirfd
10790 eval $setvar
10791 $rm -f dirfd*
10792
10793 : see if dlerror exists
10794 xxx_runnm="$runnm"
10795 runnm=false
10796 set dlerror d_dlerror
10797 eval $inlibc
10798 runnm="$xxx_runnm"
10799
10800 : see if dlfcn is available
10801 set dlfcn.h i_dlfcn
10802 eval $inhdr
10803
10804 case "$usedl" in
10805 $define|y|true)
10806         $cat << EOM
10807
10808 On a few systems, the dynamically loaded modules that perl generates and uses
10809 will need a different extension than shared libs. The default will probably
10810 be appropriate.
10811
10812 EOM
10813         case "$dlext" in
10814         '')     dflt="$so" ;;
10815         *)      dflt="$dlext" ;;
10816         esac
10817         rp='What is the extension of dynamically loaded modules'
10818         . ./myread
10819         dlext="$ans"
10820         ;;
10821 *)
10822         dlext="none"
10823         ;;
10824 esac
10825
10826 : Check if dlsym need a leading underscore
10827 echo " "
10828 val="$undef"
10829
10830 case "$dlsrc" in
10831 dl_dlopen.xs)
10832         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10833         $cat >dyna.c <<'EOM'
10834 fred () { }
10835 EOM
10836
10837 $cat >fred.c<<EOM
10838
10839 #include <stdio.h>
10840 #$i_stdlib I_STDLIB
10841 #ifdef I_STDLIB
10842 #include <stdlib.h>
10843 #endif
10844 #$i_dlfcn I_DLFCN
10845 #ifdef I_DLFCN
10846 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10847 #else
10848 #include <sys/types.h>
10849 #include <nlist.h>
10850 #include <link.h>
10851 #endif
10852
10853 extern int fred() ;
10854
10855 int main()
10856 {
10857     void * handle ;
10858     void * symbol ;
10859 #ifndef RTLD_LAZY
10860     int mode = 1 ;
10861 #else
10862     int mode = RTLD_LAZY ;
10863 #endif
10864     handle = dlopen("./dyna.$dlext", mode) ;
10865     if (handle == NULL) {
10866         printf ("1\n") ;
10867         fflush (stdout) ;
10868         exit(0);
10869     }
10870     symbol = dlsym(handle, "fred") ;
10871     if (symbol == NULL) {
10872         /* try putting a leading underscore */
10873         symbol = dlsym(handle, "_fred") ;
10874         if (symbol == NULL) {
10875             printf ("2\n") ;
10876             fflush (stdout) ;
10877             exit(0);
10878         }
10879         printf ("3\n") ;
10880     }
10881     else
10882         printf ("4\n") ;
10883     fflush (stdout) ;
10884     exit(0);
10885 }
10886 EOM
10887         : Call the object file tmp-dyna.o in case dlext=o.
10888         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10889                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10890                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10891                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10892                 xxx=`$run ./fred`
10893                 case $xxx in
10894                 1)      echo "Test program failed using dlopen." >&4
10895                         echo "Perhaps you should not use dynamic loading." >&4;;
10896                 2)      echo "Test program failed using dlsym." >&4
10897                         echo "Perhaps you should not use dynamic loading." >&4;;
10898                 3)      echo "dlsym needs a leading underscore" >&4
10899                         val="$define" ;;
10900                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10901                 esac
10902         else
10903                 echo "I can't compile and run the test program." >&4
10904                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10905         fi
10906         ;;
10907 esac
10908                 
10909 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10910
10911 set d_dlsymun
10912 eval $setvar
10913
10914 : see if drand48_r exists
10915 set drand48_r d_drand48_r
10916 eval $inlibc
10917 case "$d_drand48_r" in
10918 "$define")
10919         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10920         case "$d_drand48_r_proto:$usethreads" in
10921         ":define")      d_drand48_r_proto=define
10922                 set d_drand48_r_proto drand48_r $hdrs
10923                 eval $hasproto ;;
10924         *)      ;;
10925         esac
10926         case "$d_drand48_r_proto" in
10927         define)
10928         case "$drand48_r_proto" in
10929         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10930         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10931         esac
10932         case "$drand48_r_proto" in
10933         ''|0)   d_drand48_r=undef
10934                 drand48_r_proto=0
10935                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10936         * )     case "$drand48_r_proto" in
10937                 REENTRANT_PROTO*) ;;
10938                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10939                 esac
10940                 echo "Prototype: $try" ;;
10941         esac
10942         ;;
10943         *)      case "$usethreads" in
10944                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10945                 esac
10946                 d_drand48_r=undef
10947                 drand48_r_proto=0
10948                 ;;
10949         esac
10950         ;;
10951 *)      drand48_r_proto=0
10952         ;;
10953 esac
10954
10955 : see if prototype for drand48 is available
10956 echo " "
10957 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10958 eval $hasproto
10959
10960 : see if dup2 exists
10961 set dup2 d_dup2
10962 eval $inlibc
10963
10964 : see if eaccess exists
10965 set eaccess d_eaccess
10966 eval $inlibc
10967
10968 : see if endgrent exists
10969 set endgrent d_endgrent
10970 eval $inlibc
10971
10972 : see if this is an grp system
10973 set grp.h i_grp
10974 eval $inhdr
10975
10976 case "$i_grp" in
10977 $define)
10978         xxx=`./findhdr grp.h`
10979         $cppstdin $cppflags $cppminus < $xxx >$$.h
10980
10981         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10982                 val="$define"
10983         else
10984                 val="$undef"
10985         fi
10986         set d_grpasswd
10987         eval $setvar
10988
10989         $rm -f $$.h
10990         ;;
10991 *)
10992         val="$undef";
10993         set d_grpasswd; eval $setvar
10994         ;;
10995 esac
10996
10997 : see if endgrent_r exists
10998 set endgrent_r d_endgrent_r
10999 eval $inlibc
11000 case "$d_endgrent_r" in
11001 "$define")
11002         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11003         case "$d_endgrent_r_proto:$usethreads" in
11004         ":define")      d_endgrent_r_proto=define
11005                 set d_endgrent_r_proto endgrent_r $hdrs
11006                 eval $hasproto ;;
11007         *)      ;;
11008         esac
11009         case "$d_endgrent_r_proto" in
11010         define)
11011         case "$endgrent_r_proto" in
11012         ''|0) try='int endgrent_r(FILE**);'
11013         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11014         esac
11015         case "$endgrent_r_proto" in
11016         ''|0) try='void endgrent_r(FILE**);'
11017         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11018         esac
11019         case "$endgrent_r_proto" in
11020         ''|0)   d_endgrent_r=undef
11021                 endgrent_r_proto=0
11022                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11023         * )     case "$endgrent_r_proto" in
11024                 REENTRANT_PROTO*) ;;
11025                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11026                 esac
11027                 echo "Prototype: $try" ;;
11028         esac
11029         ;;
11030         *)      case "$usethreads" in
11031                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11032                 esac
11033                 d_endgrent_r=undef
11034                 endgrent_r_proto=0
11035                 ;;
11036         esac
11037         ;;
11038 *)      endgrent_r_proto=0
11039         ;;
11040 esac
11041
11042 : see if endhostent exists
11043 set endhostent d_endhent
11044 eval $inlibc
11045
11046 : see if this is a netdb.h system
11047 set netdb.h i_netdb
11048 eval $inhdr
11049
11050 : see if endhostent_r exists
11051 set endhostent_r d_endhostent_r
11052 eval $inlibc
11053 case "$d_endhostent_r" in
11054 "$define")
11055         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11056         case "$d_endhostent_r_proto:$usethreads" in
11057         ":define")      d_endhostent_r_proto=define
11058                 set d_endhostent_r_proto endhostent_r $hdrs
11059                 eval $hasproto ;;
11060         *)      ;;
11061         esac
11062         case "$d_endhostent_r_proto" in
11063         define)
11064         case "$endhostent_r_proto" in
11065         ''|0) try='int endhostent_r(struct hostent_data*);'
11066         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11067         esac
11068         case "$endhostent_r_proto" in
11069         ''|0) try='void endhostent_r(struct hostent_data*);'
11070         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11071         esac
11072         case "$endhostent_r_proto" in
11073         ''|0)   d_endhostent_r=undef
11074                 endhostent_r_proto=0
11075                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11076         * )     case "$endhostent_r_proto" in
11077                 REENTRANT_PROTO*) ;;
11078                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11079                 esac
11080                 echo "Prototype: $try" ;;
11081         esac
11082         ;;
11083         *)      case "$usethreads" in
11084                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11085                 esac
11086                 d_endhostent_r=undef
11087                 endhostent_r_proto=0
11088                 ;;
11089         esac
11090         ;;
11091 *)      endhostent_r_proto=0
11092         ;;
11093 esac
11094
11095 : see if endnetent exists
11096 set endnetent d_endnent
11097 eval $inlibc
11098
11099 : see if endnetent_r exists
11100 set endnetent_r d_endnetent_r
11101 eval $inlibc
11102 case "$d_endnetent_r" in
11103 "$define")
11104         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11105         case "$d_endnetent_r_proto:$usethreads" in
11106         ":define")      d_endnetent_r_proto=define
11107                 set d_endnetent_r_proto endnetent_r $hdrs
11108                 eval $hasproto ;;
11109         *)      ;;
11110         esac
11111         case "$d_endnetent_r_proto" in
11112         define)
11113         case "$endnetent_r_proto" in
11114         ''|0) try='int endnetent_r(struct netent_data*);'
11115         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11116         esac
11117         case "$endnetent_r_proto" in
11118         ''|0) try='void endnetent_r(struct netent_data*);'
11119         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11120         esac
11121         case "$endnetent_r_proto" in
11122         ''|0)   d_endnetent_r=undef
11123                 endnetent_r_proto=0
11124                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11125         * )     case "$endnetent_r_proto" in
11126                 REENTRANT_PROTO*) ;;
11127                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11128                 esac
11129                 echo "Prototype: $try" ;;
11130         esac
11131         ;;
11132         *)      case "$usethreads" in
11133                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11134                 esac
11135                 d_endnetent_r=undef
11136                 endnetent_r_proto=0
11137                 ;;
11138         esac
11139         ;;
11140 *)      endnetent_r_proto=0
11141         ;;
11142 esac
11143
11144 : see if endprotoent exists
11145 set endprotoent d_endpent
11146 eval $inlibc
11147
11148 : see if endprotoent_r exists
11149 set endprotoent_r d_endprotoent_r
11150 eval $inlibc
11151 case "$d_endprotoent_r" in
11152 "$define")
11153         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11154         case "$d_endprotoent_r_proto:$usethreads" in
11155         ":define")      d_endprotoent_r_proto=define
11156                 set d_endprotoent_r_proto endprotoent_r $hdrs
11157                 eval $hasproto ;;
11158         *)      ;;
11159         esac
11160         case "$d_endprotoent_r_proto" in
11161         define)
11162         case "$endprotoent_r_proto" in
11163         ''|0) try='int endprotoent_r(struct protoent_data*);'
11164         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11165         esac
11166         case "$endprotoent_r_proto" in
11167         ''|0) try='void endprotoent_r(struct protoent_data*);'
11168         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11169         esac
11170         case "$endprotoent_r_proto" in
11171         ''|0)   d_endprotoent_r=undef
11172                 endprotoent_r_proto=0
11173                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11174         * )     case "$endprotoent_r_proto" in
11175                 REENTRANT_PROTO*) ;;
11176                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11177                 esac
11178                 echo "Prototype: $try" ;;
11179         esac
11180         ;;
11181         *)      case "$usethreads" in
11182                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11183                 esac
11184                 d_endprotoent_r=undef
11185                 endprotoent_r_proto=0
11186                 ;;
11187         esac
11188         ;;
11189 *)      endprotoent_r_proto=0
11190         ;;
11191 esac
11192
11193 : see if endpwent exists
11194 set endpwent d_endpwent
11195 eval $inlibc
11196
11197 : see if this is a pwd.h system
11198 set pwd.h i_pwd
11199 eval $inhdr
11200
11201 case "$i_pwd" in
11202 $define)
11203         xxx=`./findhdr pwd.h`
11204         $cppstdin $cppflags $cppminus < $xxx >$$.h
11205
11206         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11207                 val="$define"
11208         else
11209                 val="$undef"
11210         fi
11211         set d_pwquota
11212         eval $setvar
11213
11214         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11215                 val="$define"
11216         else
11217                 val="$undef"
11218         fi
11219         set d_pwage
11220         eval $setvar
11221
11222         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11223                 val="$define"
11224         else
11225                 val="$undef"
11226         fi
11227         set d_pwchange
11228         eval $setvar
11229
11230         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11231                 val="$define"
11232         else
11233                 val="$undef"
11234         fi
11235         set d_pwclass
11236         eval $setvar
11237
11238         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11239                 val="$define"
11240         else
11241                 val="$undef"
11242         fi
11243         set d_pwexpire
11244         eval $setvar
11245
11246         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11247                 val="$define"
11248         else
11249                 val="$undef"
11250         fi
11251         set d_pwcomment
11252         eval $setvar
11253
11254         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11255                 val="$define"
11256         else
11257                 val="$undef"
11258         fi
11259         set d_pwgecos
11260         eval $setvar
11261
11262         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11263                 val="$define"
11264         else
11265                 val="$undef"
11266         fi
11267         set d_pwpasswd
11268         eval $setvar
11269
11270         $rm -f $$.h
11271         ;;
11272 *)
11273         val="$undef"; 
11274         set d_pwquota; eval $setvar
11275         set d_pwage; eval $setvar
11276         set d_pwchange; eval $setvar
11277         set d_pwclass; eval $setvar
11278         set d_pwexpire; eval $setvar
11279         set d_pwcomment; eval $setvar
11280         set d_pwgecos; eval $setvar
11281         set d_pwpasswd; eval $setvar
11282         ;;
11283 esac
11284
11285 : see if endpwent_r exists
11286 set endpwent_r d_endpwent_r
11287 eval $inlibc
11288 case "$d_endpwent_r" in
11289 "$define")
11290         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11291         case "$d_endpwent_r_proto:$usethreads" in
11292         ":define")      d_endpwent_r_proto=define
11293                 set d_endpwent_r_proto endpwent_r $hdrs
11294                 eval $hasproto ;;
11295         *)      ;;
11296         esac
11297         case "$d_endpwent_r_proto" in
11298         define)
11299         case "$endpwent_r_proto" in
11300         ''|0) try='int endpwent_r(FILE**);'
11301         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11302         esac
11303         case "$endpwent_r_proto" in
11304         ''|0) try='void endpwent_r(FILE**);'
11305         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11306         esac
11307         case "$endpwent_r_proto" in
11308         ''|0)   d_endpwent_r=undef
11309                 endpwent_r_proto=0
11310                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11311         * )     case "$endpwent_r_proto" in
11312                 REENTRANT_PROTO*) ;;
11313                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11314                 esac
11315                 echo "Prototype: $try" ;;
11316         esac
11317         ;;
11318         *)      case "$usethreads" in
11319                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11320                 esac
11321                 d_endpwent_r=undef
11322                 endpwent_r_proto=0
11323                 ;;
11324         esac
11325         ;;
11326 *)      endpwent_r_proto=0
11327         ;;
11328 esac
11329
11330 : see if endservent exists
11331 set endservent d_endsent
11332 eval $inlibc
11333
11334 : see if endservent_r exists
11335 set endservent_r d_endservent_r
11336 eval $inlibc
11337 case "$d_endservent_r" in
11338 "$define")
11339         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11340         case "$d_endservent_r_proto:$usethreads" in
11341         ":define")      d_endservent_r_proto=define
11342                 set d_endservent_r_proto endservent_r $hdrs
11343                 eval $hasproto ;;
11344         *)      ;;
11345         esac
11346         case "$d_endservent_r_proto" in
11347         define)
11348         case "$endservent_r_proto" in
11349         ''|0) try='int endservent_r(struct servent_data*);'
11350         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11351         esac
11352         case "$endservent_r_proto" in
11353         ''|0) try='void endservent_r(struct servent_data*);'
11354         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11355         esac
11356         case "$endservent_r_proto" in
11357         ''|0)   d_endservent_r=undef
11358                 endservent_r_proto=0
11359                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11360         * )     case "$endservent_r_proto" in
11361                 REENTRANT_PROTO*) ;;
11362                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11363                 esac
11364                 echo "Prototype: $try" ;;
11365         esac
11366         ;;
11367         *)      case "$usethreads" in
11368                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11369                 esac
11370                 d_endservent_r=undef
11371                 endservent_r_proto=0
11372                 ;;
11373         esac
11374         ;;
11375 *)      endservent_r_proto=0
11376         ;;
11377 esac
11378
11379 : Locate the flags for 'open()'
11380 echo " "
11381 $cat >try.c <<EOCP
11382 #include <sys/types.h>
11383 #ifdef I_FCNTL
11384 #include <fcntl.h>
11385 #endif
11386 #ifdef I_SYS_FILE
11387 #include <sys/file.h>
11388 #endif
11389 #$i_stdlib I_STDLIB
11390 #ifdef I_STDLIB
11391 #include <stdlib.h>
11392 #endif
11393 int main() {
11394         if(O_RDONLY);
11395 #ifdef O_TRUNC
11396         exit(0);
11397 #else
11398         exit(1);
11399 #endif
11400 }
11401 EOCP
11402 : check sys/file.h first to get FREAD on Sun
11403 if $test `./findhdr sys/file.h` && \
11404                 set try -DI_SYS_FILE && eval $compile; then
11405         h_sysfile=true;
11406         echo "<sys/file.h> defines the O_* constants..." >&4
11407         if $run ./try; then
11408                 echo "and you have the 3 argument form of open()." >&4
11409                 val="$define"
11410         else
11411                 echo "but not the 3 argument form of open().  Oh, well." >&4
11412                 val="$undef"
11413         fi
11414 elif $test `./findhdr fcntl.h` && \
11415                 set try -DI_FCNTL && eval $compile; then
11416         h_fcntl=true;
11417         echo "<fcntl.h> defines the O_* constants..." >&4
11418         if $run ./try; then
11419                 echo "and you have the 3 argument form of open()." >&4
11420                 val="$define"
11421         else
11422                 echo "but not the 3 argument form of open().  Oh, well." >&4
11423                 val="$undef"
11424         fi
11425 else
11426         val="$undef"
11427         echo "I can't find the O_* constant definitions!  You got problems." >&4
11428 fi
11429 set d_open3
11430 eval $setvar
11431 $rm -f try try.*
11432
11433 : see which of string.h or strings.h is needed
11434 echo " "
11435 strings=`./findhdr string.h`
11436 if $test "$strings" && $test -r "$strings"; then
11437         echo "Using <string.h> instead of <strings.h>." >&4
11438         val="$define"
11439 else
11440         val="$undef"
11441         strings=`./findhdr strings.h`
11442         if $test "$strings" && $test -r "$strings"; then
11443                 echo "Using <strings.h> instead of <string.h>." >&4
11444         else
11445                 echo "No string header found -- You'll surely have problems." >&4
11446         fi
11447 fi
11448 set i_string
11449 eval $setvar
11450 case "$i_string" in
11451 "$undef") strings=`./findhdr strings.h`;;
11452 *)        strings=`./findhdr string.h`;;
11453 esac
11454
11455 : see if this is a sys/file.h system
11456 val=''
11457 set sys/file.h val
11458 eval $inhdr
11459
11460 : do we need to include sys/file.h ?
11461 case "$val" in
11462 "$define")
11463         echo " "
11464         if $h_sysfile; then
11465                 val="$define"
11466                 echo "We'll be including <sys/file.h>." >&4
11467         else
11468                 val="$undef"
11469                 echo "We won't be including <sys/file.h>." >&4
11470         fi
11471         ;;
11472 *)
11473         h_sysfile=false
11474         ;;
11475 esac
11476 set i_sysfile
11477 eval $setvar
11478
11479 : see if fcntl.h is there
11480 val=''
11481 set fcntl.h val
11482 eval $inhdr
11483
11484 : see if we can include fcntl.h
11485 case "$val" in
11486 "$define")
11487         echo " "
11488         if $h_fcntl; then
11489                 val="$define"
11490                 echo "We'll be including <fcntl.h>." >&4
11491         else
11492                 val="$undef"
11493                 if $h_sysfile; then
11494         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11495                 else
11496                         echo "We won't be including <fcntl.h>." >&4
11497                 fi
11498         fi
11499         ;;
11500 *)
11501         h_fcntl=false
11502         val="$undef"
11503         ;;
11504 esac
11505 set i_fcntl
11506 eval $setvar
11507
11508 : check for non-blocking I/O stuff
11509 case "$h_sysfile" in
11510 true) echo "#include <sys/file.h>" > head.c;;
11511 *)
11512        case "$h_fcntl" in
11513        true) echo "#include <fcntl.h>" > head.c;;
11514        *) echo "#include <sys/fcntl.h>" > head.c;;
11515        esac
11516        ;;
11517 esac
11518 echo " "
11519 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11520 case "$o_nonblock" in
11521 '')
11522         $cat head.c > try.c
11523         $cat >>try.c <<EOCP
11524 #include <stdio.h>
11525 #$i_stdlib I_STDLIB
11526 #ifdef I_STDLIB
11527 #include <stdlib.h>
11528 #endif
11529 #$i_fcntl I_FCNTL
11530 #ifdef I_FCNTL
11531 #include <fcntl.h>
11532 #endif
11533 int main() {
11534 #ifdef O_NONBLOCK
11535         printf("O_NONBLOCK\n");
11536         exit(0);
11537 #endif
11538 #ifdef O_NDELAY
11539         printf("O_NDELAY\n");
11540         exit(0);
11541 #endif
11542 #ifdef FNDELAY
11543         printf("FNDELAY\n");
11544         exit(0);
11545 #endif
11546         exit(0);
11547 }
11548 EOCP
11549         set try
11550         if eval $compile_ok; then
11551                 o_nonblock=`$run ./try`
11552                 case "$o_nonblock" in
11553                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11554                 *) echo "Seems like we can use $o_nonblock.";;
11555                 esac
11556         else
11557                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11558         fi
11559         ;;
11560 *) echo "Using $hint value $o_nonblock.";;
11561 esac
11562 $rm -f try try.* .out core
11563
11564 echo " "
11565 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11566 case "$eagain" in
11567 '')
11568         $cat head.c > try.c
11569         $cat >>try.c <<EOCP
11570 #include <errno.h>
11571 #include <sys/types.h>
11572 #include <signal.h>
11573 #include <stdio.h> 
11574 #$i_stdlib I_STDLIB
11575 #ifdef I_STDLIB
11576 #include <stdlib.h>
11577 #endif
11578 #$i_fcntl I_FCNTL
11579 #ifdef I_FCNTL
11580 #include <fcntl.h>
11581 #endif
11582 #define MY_O_NONBLOCK $o_nonblock
11583 #ifndef errno  /* XXX need better Configure test */
11584 extern int errno;
11585 #endif
11586 #$i_unistd I_UNISTD
11587 #ifdef I_UNISTD
11588 #include <unistd.h>
11589 #endif
11590 #$i_string I_STRING
11591 #ifdef I_STRING
11592 #include <string.h>
11593 #else
11594 #include <strings.h>
11595 #endif
11596 $signal_t blech(x) int x; { exit(3); }
11597 EOCP
11598         $cat >> try.c <<'EOCP'
11599 int main()
11600 {
11601         int pd[2];
11602         int pu[2];
11603         char buf[1];
11604         char string[100];
11605
11606         pipe(pd);       /* Down: child -> parent */
11607         pipe(pu);       /* Up: parent -> child */
11608         if (0 != fork()) {
11609                 int ret;
11610                 close(pd[1]);   /* Parent reads from pd[0] */
11611                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11612 #ifdef F_SETFL
11613                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11614                         exit(1);
11615 #else
11616                 exit(4);
11617 #endif
11618                 signal(SIGALRM, blech);
11619                 alarm(5);
11620                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11621                         exit(2);
11622                 sprintf(string, "%d\n", ret);
11623                 write(2, string, strlen(string));
11624                 alarm(0);
11625 #ifdef EAGAIN
11626                 if (errno == EAGAIN) {
11627                         printf("EAGAIN\n");
11628                         goto ok;
11629                 }
11630 #endif
11631 #ifdef EWOULDBLOCK
11632                 if (errno == EWOULDBLOCK)
11633                         printf("EWOULDBLOCK\n");
11634 #endif
11635         ok:
11636                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11637                 sleep(2);                               /* Give it time to close our pipe */
11638                 alarm(5);
11639                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11640                 alarm(0);
11641                 sprintf(string, "%d\n", ret);
11642                 write(4, string, strlen(string));
11643                 exit(0);
11644         }
11645
11646         close(pd[0]);                   /* We write to pd[1] */
11647         close(pu[1]);                   /* We read from pu[0] */
11648         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11649         close(pd[1]);                   /* Pipe pd is now fully closed! */
11650         exit(0);                                /* Bye bye, thank you for playing! */
11651 }
11652 EOCP
11653         set try
11654         if eval $compile_ok; then
11655                 echo "$startsh" >mtry
11656                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11657                 chmod +x mtry
11658                 ./mtry >/dev/null 2>&1
11659                 case $? in
11660                 0) eagain=`$cat try.out`;;
11661                 1) echo "Could not perform non-blocking setting!";;
11662                 2) echo "I did a successful read() for something that was not there!";;
11663                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11664                 4) echo "Could not find F_SETFL!";;
11665                 *) echo "Something terribly wrong happened during testing.";;
11666                 esac
11667                 rd_nodata=`$cat try.ret`
11668                 echo "A read() system call with no data present returns $rd_nodata."
11669                 case "$rd_nodata" in
11670                 0|-1) ;;
11671                 *)
11672                         echo "(That's peculiar, fixing that to be -1.)"
11673                         rd_nodata=-1
11674                         ;;
11675                 esac
11676                 case "$eagain" in
11677                 '')
11678                         echo "Forcing errno EAGAIN on read() with no data available."
11679                         eagain=EAGAIN
11680                         ;;
11681                 *)
11682                         echo "Your read() sets errno to $eagain when no data is available."
11683                         ;;
11684                 esac
11685                 status=`$cat try.err`
11686                 case "$status" in
11687                 0) echo "And it correctly returns 0 to signal EOF.";;
11688                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11689                 *) echo "However, your read() returns '$status' on EOF??";;
11690                 esac
11691                 val="$define"
11692                 if test "$status" = "$rd_nodata"; then
11693                         echo "WARNING: you can't distinguish between EOF and no data!"
11694                         val="$undef"
11695                 fi
11696         else
11697                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11698                 eagain=EAGAIN
11699         fi
11700         set d_eofnblk
11701         eval $setvar
11702         ;;
11703 *)
11704         echo "Using $hint value $eagain."
11705         echo "Your read() returns $rd_nodata when no data is present."
11706         case "$d_eofnblk" in
11707         "$define") echo "And you can see EOF because read() returns 0.";;
11708         "$undef") echo "But you can't see EOF status from read() returned value.";;
11709         *)
11710                 echo "(Assuming you can't see EOF status from read anyway.)"
11711                 d_eofnblk=$undef
11712                 ;;
11713         esac
11714         ;;
11715 esac
11716 $rm -f try try.* .out core head.c mtry
11717
11718 : see if _ptr and _cnt from stdio act std
11719 echo " "
11720
11721 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11722         echo "(Looks like you have stdio.h from BSD.)"
11723         case "$stdio_ptr" in
11724         '') stdio_ptr='((fp)->_p)'
11725                 ptr_lval=$define
11726                 ;;
11727         *)      ptr_lval=$d_stdio_ptr_lval;;
11728         esac
11729         case "$stdio_cnt" in
11730         '') stdio_cnt='((fp)->_r)'
11731                 cnt_lval=$define
11732                 ;;
11733         *)      cnt_lval=$d_stdio_cnt_lval;;
11734         esac
11735         case "$stdio_base" in
11736         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11737         esac
11738         case "$stdio_bufsiz" in
11739         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11740         esac
11741 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11742         echo "(Looks like you have stdio.h from Linux.)"
11743         case "$stdio_ptr" in
11744         '') stdio_ptr='((fp)->_IO_read_ptr)'
11745                 ptr_lval=$define
11746                 ;;
11747         *)      ptr_lval=$d_stdio_ptr_lval;;
11748         esac
11749         case "$stdio_cnt" in
11750         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11751                 cnt_lval=$undef
11752                 ;;
11753         *)      cnt_lval=$d_stdio_cnt_lval;;
11754         esac
11755         case "$stdio_base" in
11756         '') stdio_base='((fp)->_IO_read_base)';;
11757         esac
11758         case "$stdio_bufsiz" in
11759         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11760         esac
11761 else
11762         case "$stdio_ptr" in
11763         '') stdio_ptr='((fp)->_ptr)'
11764                 ptr_lval=$define
11765                 ;;
11766         *)      ptr_lval=$d_stdio_ptr_lval;;
11767         esac
11768         case "$stdio_cnt" in
11769         '') stdio_cnt='((fp)->_cnt)'
11770                 cnt_lval=$define
11771                 ;;
11772         *)      cnt_lval=$d_stdio_cnt_lval;;
11773         esac
11774         case "$stdio_base" in
11775         '') stdio_base='((fp)->_base)';;
11776         esac
11777         case "$stdio_bufsiz" in
11778         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11779         esac
11780 fi
11781
11782 : test whether _ptr and _cnt really work
11783 echo "Checking how std your stdio is..." >&4
11784 $cat >try.c <<EOP
11785 #include <stdio.h>
11786 #$i_stdlib I_STDLIB
11787 #ifdef I_STDLIB
11788 #include <stdlib.h>
11789 #endif
11790 #define FILE_ptr(fp)    $stdio_ptr
11791 #define FILE_cnt(fp)    $stdio_cnt
11792 int main() {
11793         FILE *fp = fopen("try.c", "r");
11794         char c = getc(fp);
11795         if (
11796                 18 <= FILE_cnt(fp) &&
11797                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11798         )
11799                 exit(0);
11800         exit(1);
11801 }
11802 EOP
11803 val="$undef"
11804 set try
11805 if eval $compile && $to try.c; then
11806         if $run ./try; then
11807                 echo "Your stdio acts pretty std."
11808                 val="$define"
11809         else
11810                 echo "Your stdio isn't very std."
11811         fi
11812 else
11813         echo "Your stdio doesn't appear very std."
11814 fi
11815 $rm -f try.c try
11816
11817 # glibc 2.2.90 and above apparently change stdio streams so Perl's
11818 # direct buffer manipulation no longer works.  The Configure tests
11819 # should be changed to correctly detect this, but until then,
11820 # the following check should at least let perl compile and run.
11821 # (This quick fix should be updated before 5.8.1.)
11822 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
11823 # A. Dougherty, June 3, 2002.
11824 case "$d_gnulibc" in
11825 $define)
11826         case "$gnulibc_version" in
11827         2.[01]*)  ;;
11828         2.2) ;;
11829         2.2.[0-9]) ;;
11830         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11831                 val="$undef"
11832                 ;;
11833         esac
11834         ;;
11835 esac
11836 set d_stdstdio
11837 eval $setvar
11838
11839 : Can _ptr be used as an lvalue?
11840 case "$d_stdstdio$ptr_lval" in
11841 $define$define) val=$define ;;
11842 *) val=$undef ;;
11843 esac
11844 set d_stdio_ptr_lval
11845 eval $setvar
11846
11847 : Can _cnt be used as an lvalue?
11848 case "$d_stdstdio$cnt_lval" in
11849 $define$define) val=$define ;;
11850 *) val=$undef ;;
11851 esac
11852 set d_stdio_cnt_lval
11853 eval $setvar
11854
11855
11856 : test whether setting _ptr sets _cnt as a side effect
11857 d_stdio_ptr_lval_sets_cnt="$undef"
11858 d_stdio_ptr_lval_nochange_cnt="$undef"
11859 case "$d_stdio_ptr_lval$d_stdstdio" in
11860 $define$define)
11861         echo "Checking to see what happens if we set the stdio ptr..." >&4
11862 $cat >try.c <<EOP
11863 #include <stdio.h>
11864 /* Can we scream? */
11865 /* Eat dust sed :-) */
11866 /* In the buffer space, no one can hear you scream. */
11867 #$i_stdlib I_STDLIB
11868 #ifdef I_STDLIB
11869 #include <stdlib.h>
11870 #endif
11871 #define FILE_ptr(fp)    $stdio_ptr
11872 #define FILE_cnt(fp)    $stdio_cnt
11873 #include <sys/types.h>
11874 int main() {
11875         FILE *fp = fopen("try.c", "r");
11876         int c;
11877         char *ptr;
11878         size_t cnt;
11879         if (!fp) {
11880             puts("Fail even to read");
11881             exit(1);
11882         }
11883         c = getc(fp); /* Read away the first # */
11884         if (c == EOF) {
11885             puts("Fail even to read");
11886             exit(1);
11887         }
11888         if (!(
11889                 18 <= FILE_cnt(fp) &&
11890                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11891         )) {
11892                 puts("Fail even to read");
11893                 exit (1);
11894         }
11895         ptr = (char*) FILE_ptr(fp);
11896         cnt = (size_t)FILE_cnt(fp);
11897
11898         FILE_ptr(fp) += 42;
11899
11900         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11901                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11902                 exit (1);
11903         }
11904         if (FILE_cnt(fp) <= 20) {
11905                 printf ("Fail (<20 chars to test)");
11906                 exit (1);
11907         }
11908         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11909                 puts("Fail compare");
11910                 exit (1);
11911         }
11912         if (cnt == FILE_cnt(fp)) {
11913                 puts("Pass_unchanged");
11914                 exit (0);
11915         }       
11916         if (FILE_cnt(fp) == (cnt - 42)) {
11917                 puts("Pass_changed");
11918                 exit (0);
11919         }
11920         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11921         return 1;
11922
11923 }
11924 EOP
11925         set try
11926         if eval $compile && $to try.c; then
11927                 case `$run ./try` in
11928                 Pass_changed)
11929                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11930                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11931                 Pass_unchanged)
11932                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11933                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11934                 Fail*)
11935                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11936                 *)
11937                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11938         esac
11939         else
11940                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11941         fi
11942         $rm -f try.c try
11943         ;;
11944 esac
11945
11946 : see if _base is also standard
11947 val="$undef"
11948 case "$d_stdstdio" in
11949 $define)
11950         $cat >try.c <<EOP
11951 #include <stdio.h>
11952 #$i_stdlib I_STDLIB
11953 #ifdef I_STDLIB
11954 #include <stdlib.h>
11955 #endif
11956 #define FILE_base(fp)   $stdio_base
11957 #define FILE_bufsiz(fp) $stdio_bufsiz
11958 int main() {
11959         FILE *fp = fopen("try.c", "r");
11960         char c = getc(fp);
11961         if (
11962                 19 <= FILE_bufsiz(fp) &&
11963                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11964         )
11965                 exit(0);
11966         exit(1);
11967 }
11968 EOP
11969         set try
11970         if eval $compile && $to try.c; then
11971                 if $run ./try; then
11972                         echo "And its _base field acts std."
11973                         val="$define"
11974                 else
11975                         echo "But its _base field isn't std."
11976                 fi
11977         else
11978                 echo "However, it seems to be lacking the _base field."
11979         fi
11980         $rm -f try.c try
11981         ;;
11982 esac
11983 set d_stdiobase
11984 eval $setvar
11985
11986 : see if fast_stdio exists
11987 val="$undef"
11988 case "$d_stdstdio:$d_stdio_ptr_lval" in
11989 "$define:$define")
11990         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
11991         *$define*)
11992                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
11993                 val="$define"
11994                 ;;
11995         esac
11996         ;;
11997 esac
11998 set d_faststdio
11999 eval $setvar
12000
12001
12002
12003 : see if fchdir exists
12004 set fchdir d_fchdir
12005 eval $inlibc
12006
12007 : see if fchmod exists
12008 set fchmod d_fchmod
12009 eval $inlibc
12010
12011 : see if fchown exists
12012 set fchown d_fchown
12013 eval $inlibc
12014
12015 : see if this is an fcntl system
12016 set fcntl d_fcntl
12017 eval $inlibc
12018
12019 echo " "
12020 : See if fcntl-based locking works.
12021 $cat >try.c <<EOCP
12022 #$i_stdlib I_STDLIB
12023 #ifdef I_STDLIB
12024 #include <stdlib.h>
12025 #endif
12026 #include <unistd.h>
12027 #include <fcntl.h>
12028 #include <signal.h>
12029 $signal_t blech(x) int x; { exit(3); }
12030 int main() {
12031 #if defined(F_SETLK) && defined(F_SETLKW)
12032      struct flock flock;
12033      int retval, fd;
12034      fd = open("try.c", O_RDONLY);
12035      flock.l_type = F_RDLCK;
12036      flock.l_whence = SEEK_SET;
12037      flock.l_start = flock.l_len = 0;
12038      signal(SIGALRM, blech);
12039      alarm(10);
12040      retval = fcntl(fd, F_SETLK, &flock);
12041      close(fd);
12042      (retval < 0 ? exit(2) : exit(0));
12043 #else
12044      exit(2);
12045 #endif
12046 }
12047 EOCP
12048 echo "Checking if fcntl-based file locking works... "
12049 case "$d_fcntl" in
12050 "$define")
12051         set try
12052         if eval $compile_ok; then
12053                 if $run ./try; then
12054                         echo "Yes, it seems to work."
12055                         val="$define"
12056                 else
12057                         echo "Nope, it didn't work."
12058                         val="$undef"
12059                         case "$?" in
12060                         3) $cat >&4 <<EOM
12061 ***
12062 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12063 *** This is (almost) impossible.
12064 *** If your NFS lock daemons are not feeling well, something like
12065 *** this may happen, please investigate.  Cannot continue, aborting.
12066 ***
12067 EOM
12068                                 exit 1
12069                                 ;;
12070                         esac
12071                 fi
12072         else
12073                 echo "I'm unable to compile the test program, so I'll assume not."
12074                 val="$undef"
12075         fi
12076         ;;
12077 *) val="$undef";
12078         echo "Nope, since you don't even have fcntl()."
12079         ;;
12080 esac
12081 set d_fcntl_can_lock
12082 eval $setvar
12083 $rm -f try*
12084
12085
12086 : check for fd_set items
12087 $cat <<EOM
12088
12089 Checking to see how well your C compiler handles fd_set and friends ...
12090 EOM
12091 $cat >try.c <<EOCP
12092 #$i_stdlib I_STDLIB
12093 #ifdef I_STDLIB
12094 #include <stdlib.h>
12095 #endif
12096 #$i_systime I_SYS_TIME
12097 #$i_sysselct I_SYS_SELECT
12098 #$d_socket HAS_SOCKET
12099 #include <sys/types.h>
12100 #ifdef HAS_SOCKET
12101 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12102 #endif
12103 #ifdef I_SYS_TIME
12104 #include <sys/time.h>
12105 #endif
12106 #ifdef I_SYS_SELECT
12107 #include <sys/select.h>
12108 #endif
12109 int main() {
12110         fd_set fds;
12111
12112 #ifdef TRYBITS
12113         if(fds.fds_bits);
12114 #endif
12115
12116 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12117         exit(0);
12118 #else
12119         exit(1);
12120 #endif
12121 }
12122 EOCP
12123 set try -DTRYBITS
12124 if eval $compile; then
12125         d_fds_bits="$define"
12126         d_fd_set="$define"
12127         echo "Well, your system knows about the normal fd_set typedef..." >&4
12128         if $run ./try; then
12129                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12130                 d_fd_macros="$define"
12131         else
12132                 $cat >&4 <<'EOM'
12133 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12134 EOM
12135                 d_fd_macros="$undef"
12136         fi
12137 else
12138         $cat <<'EOM'
12139 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12140 EOM
12141         set try
12142         if eval $compile; then
12143                 d_fds_bits="$undef"
12144                 d_fd_set="$define"
12145                 echo "Well, your system has some sort of fd_set available..." >&4
12146                 if $run ./try; then
12147                         echo "and you have the normal fd_set macros." >&4
12148                         d_fd_macros="$define"
12149                 else
12150                         $cat <<'EOM'
12151 but not the normal fd_set macros!  Gross!  More work for me...
12152 EOM
12153                         d_fd_macros="$undef"
12154                 fi
12155         else
12156         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12157                 d_fd_set="$undef"
12158                 d_fds_bits="$undef"
12159                 d_fd_macros="$undef"
12160         fi
12161 fi
12162 $rm -f try try.*
12163
12164 : see if fgetpos exists
12165 set fgetpos d_fgetpos
12166 eval $inlibc
12167
12168 : see if finite exists
12169 set finite d_finite
12170 eval $inlibc
12171
12172 : see if finitel exists
12173 set finitel d_finitel
12174 eval $inlibc
12175
12176 : see if flock exists
12177 set flock d_flock
12178 eval $inlibc
12179
12180 : see if prototype for flock is available
12181 echo " "
12182 set d_flockproto flock $i_sysfile sys/file.h
12183 eval $hasproto
12184
12185 : see if fork exists
12186 set fork d_fork
12187 eval $inlibc
12188
12189 : see if fp_class exists
12190 set fp_class d_fp_class
12191 eval $inlibc
12192
12193 : see if pathconf exists
12194 set pathconf d_pathconf
12195 eval $inlibc
12196
12197 : see if fpathconf exists
12198 set fpathconf d_fpathconf
12199 eval $inlibc
12200
12201 : see if fpclass exists
12202 set fpclass d_fpclass
12203 eval $inlibc
12204
12205 : see if fpclassify exists
12206 set fpclassify d_fpclassify
12207 eval $inlibc
12208
12209 : see if fpclassl exists
12210 set fpclassl d_fpclassl
12211 eval $inlibc
12212
12213
12214 : check for fpos64_t
12215 echo " "
12216 echo "Checking to see if you have fpos64_t..." >&4
12217 $cat >try.c <<EOCP
12218 #include <stdio.h>
12219 int main() { fpos64_t x = 7; }
12220 EOCP
12221 set try
12222 if eval $compile; then
12223         val="$define"
12224         echo "You have fpos64_t."
12225 else
12226         val="$undef"
12227         echo "You do not have fpos64_t."
12228         case "$fpossize" in
12229         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12230         esac
12231 fi
12232 $rm -f try.* try
12233 set d_fpos64_t
12234 eval $setvar
12235
12236 : see if frexpl exists
12237 set frexpl d_frexpl
12238 eval $inlibc
12239
12240 : see if this is a sys/param system
12241 set sys/param.h i_sysparam
12242 eval $inhdr
12243
12244 : see if this is a sys/mount.h system
12245 set sys/mount.h i_sysmount
12246 eval $inhdr
12247
12248
12249 echo " "
12250 echo "Checking to see if your system supports struct fs_data..." >&4
12251 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12252 eval $hasstruct
12253 case "$d_fs_data_s" in
12254 "$define")      echo "Yes, it does."   ;;
12255 *)              echo "No, it doesn't." ;;
12256 esac
12257
12258 : see if fseeko exists
12259 set fseeko d_fseeko
12260 eval $inlibc
12261 case "$longsize" in
12262 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12263 esac
12264
12265 : see if fsetpos exists
12266 set fsetpos d_fsetpos
12267 eval $inlibc
12268
12269
12270 : see if fstatfs exists
12271 set fstatfs d_fstatfs
12272 eval $inlibc
12273
12274
12275 : see if statvfs exists
12276 set statvfs d_statvfs
12277 eval $inlibc
12278
12279 : see if fstatvfs exists
12280 set fstatvfs d_fstatvfs
12281 eval $inlibc
12282
12283
12284 : see if fsync exists
12285 set fsync d_fsync
12286 eval $inlibc
12287
12288 : see if ftello exists
12289 set ftello d_ftello
12290 eval $inlibc
12291 case "$longsize" in
12292 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12293 esac
12294
12295 : see if getcwd exists
12296 set getcwd d_getcwd
12297 eval $inlibc
12298
12299 : see if getespwnam exists
12300 set getespwnam d_getespwnam
12301 eval $inlibc
12302
12303
12304 : see if getfsstat exists
12305 set getfsstat d_getfsstat
12306 eval $inlibc
12307
12308 : see if getgrent exists
12309 set getgrent d_getgrent
12310 eval $inlibc
12311
12312 : see if getgrent_r exists
12313 set getgrent_r d_getgrent_r
12314 eval $inlibc
12315 case "$d_getgrent_r" in
12316 "$define")
12317         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12318         case "$d_getgrent_r_proto:$usethreads" in
12319         ":define")      d_getgrent_r_proto=define
12320                 set d_getgrent_r_proto getgrent_r $hdrs
12321                 eval $hasproto ;;
12322         *)      ;;
12323         esac
12324         case "$d_getgrent_r_proto" in
12325         define)
12326         case "$getgrent_r_proto" in
12327         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12328         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12329         esac
12330         case "$getgrent_r_proto" in
12331         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12332         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12333         esac
12334         case "$getgrent_r_proto" in
12335         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12336         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12337         esac
12338         case "$getgrent_r_proto" in
12339         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12340         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12341         esac
12342         case "$getgrent_r_proto" in
12343         ''|0) try='int getgrent_r(struct group*, char*, int);'
12344         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12345         esac
12346         case "$getgrent_r_proto" in
12347         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12348         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12349         esac
12350         case "$getgrent_r_proto" in
12351         ''|0)   d_getgrent_r=undef
12352                 getgrent_r_proto=0
12353                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12354         * )     case "$getgrent_r_proto" in
12355                 REENTRANT_PROTO*) ;;
12356                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12357                 esac
12358                 echo "Prototype: $try" ;;
12359         esac
12360         ;;
12361         *)      case "$usethreads" in
12362                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12363                 esac
12364                 d_getgrent_r=undef
12365                 getgrent_r_proto=0
12366                 ;;
12367         esac
12368         ;;
12369 *)      getgrent_r_proto=0
12370         ;;
12371 esac
12372
12373 : see if getgrgid_r exists
12374 set getgrgid_r d_getgrgid_r
12375 eval $inlibc
12376 case "$d_getgrgid_r" in
12377 "$define")
12378         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12379         case "$d_getgrgid_r_proto:$usethreads" in
12380         ":define")      d_getgrgid_r_proto=define
12381                 set d_getgrgid_r_proto getgrgid_r $hdrs
12382                 eval $hasproto ;;
12383         *)      ;;
12384         esac
12385         case "$d_getgrgid_r_proto" in
12386         define)
12387         case "$getgrgid_r_proto" in
12388         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12389         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12390         esac
12391         case "$getgrgid_r_proto" in
12392         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12393         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12394         esac
12395         case "$getgrgid_r_proto" in
12396         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12397         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12398         esac
12399         case "$getgrgid_r_proto" in
12400         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12401         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12402         esac
12403         case "$getgrgid_r_proto" in
12404         ''|0)   d_getgrgid_r=undef
12405                 getgrgid_r_proto=0
12406                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12407         * )     case "$getgrgid_r_proto" in
12408                 REENTRANT_PROTO*) ;;
12409                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12410                 esac
12411                 echo "Prototype: $try" ;;
12412         esac
12413         ;;
12414         *)      case "$usethreads" in
12415                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12416                 esac
12417                 d_getgrgid_r=undef
12418                 getgrgid_r_proto=0
12419                 ;;
12420         esac
12421         ;;
12422 *)      getgrgid_r_proto=0
12423         ;;
12424 esac
12425
12426 : see if getgrnam_r exists
12427 set getgrnam_r d_getgrnam_r
12428 eval $inlibc
12429 case "$d_getgrnam_r" in
12430 "$define")
12431         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12432         case "$d_getgrnam_r_proto:$usethreads" in
12433         ":define")      d_getgrnam_r_proto=define
12434                 set d_getgrnam_r_proto getgrnam_r $hdrs
12435                 eval $hasproto ;;
12436         *)      ;;
12437         esac
12438         case "$d_getgrnam_r_proto" in
12439         define)
12440         case "$getgrnam_r_proto" in
12441         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12442         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12443         esac
12444         case "$getgrnam_r_proto" in
12445         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12446         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12447         esac
12448         case "$getgrnam_r_proto" in
12449         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12450         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12451         esac
12452         case "$getgrnam_r_proto" in
12453         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12454         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12455         esac
12456         case "$getgrnam_r_proto" in
12457         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12458         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12459         esac
12460         case "$getgrnam_r_proto" in
12461         ''|0)   d_getgrnam_r=undef
12462                 getgrnam_r_proto=0
12463                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12464         * )     case "$getgrnam_r_proto" in
12465                 REENTRANT_PROTO*) ;;
12466                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12467                 esac
12468                 echo "Prototype: $try" ;;
12469         esac
12470         ;;
12471         *)      case "$usethreads" in
12472                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12473                 esac
12474                 d_getgrnam_r=undef
12475                 getgrnam_r_proto=0
12476                 ;;
12477         esac
12478         ;;
12479 *)      getgrnam_r_proto=0
12480         ;;
12481 esac
12482
12483 : see if gethostbyaddr exists
12484 set gethostbyaddr d_gethbyaddr
12485 eval $inlibc
12486
12487 : see if gethostbyname exists
12488 set gethostbyname d_gethbyname
12489 eval $inlibc
12490
12491 : see if gethostent exists
12492 set gethostent d_gethent
12493 eval $inlibc
12494
12495 : see how we will look up host name
12496 echo " "
12497 call=''
12498 if set gethostname val -f d_gethname; eval $csym; $val; then
12499         echo 'gethostname() found.' >&4
12500         d_gethname="$define"
12501         call=gethostname
12502 fi
12503 if set uname val -f d_uname; eval $csym; $val; then
12504         if ./xenix; then
12505                 $cat <<'EOM'
12506 uname() was found, but you're running xenix, and older versions of xenix
12507 have a broken uname(). If you don't really know whether your xenix is old
12508 enough to have a broken system call, use the default answer.
12509
12510 EOM
12511                 dflt=y
12512                 case "$d_uname" in
12513                 "$define") dflt=n;;
12514                 esac
12515                 rp='Is your uname() broken?'
12516                 . ./myread
12517                 case "$ans" in
12518                 n*) d_uname="$define"; call=uname;;
12519                 esac
12520         else
12521                 echo 'uname() found.' >&4
12522                 d_uname="$define"
12523                 case "$call" in
12524                 '') call=uname ;;
12525                 esac
12526         fi
12527 fi
12528 case "$d_gethname" in
12529 '') d_gethname="$undef";;
12530 esac
12531 case "$d_uname" in
12532 '') d_uname="$undef";;
12533 esac
12534 case "$d_uname$d_gethname" in
12535 *define*)
12536         dflt=n
12537         cat <<EOM
12538  
12539 Every now and then someone has a $call() that lies about the hostname
12540 but can't be fixed for political or economic reasons.  If you wish, I can
12541 pretend $call() isn't there and maybe compute hostname at run-time
12542 thanks to the '$phostname' command.
12543
12544 EOM
12545         rp="Shall I ignore $call() from now on?"
12546         . ./myread
12547         case "$ans" in
12548         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12549         esac;;
12550 esac
12551 case "$phostname" in
12552 '') aphostname='';;
12553 *) case "$aphostname" in
12554         /*) ;;
12555         *) set X $phostname
12556                 shift
12557                 file=$1
12558                 shift
12559                 file=`./loc $file $file $pth`
12560                 aphostname=`echo $file $*`
12561                 ;;
12562         esac
12563         ;;
12564 esac
12565 case "$d_uname$d_gethname" in
12566 *define*) ;;
12567 *)
12568         case "$phostname" in
12569         '')
12570                 echo "There will be no way for $package to get your hostname." >&4;;
12571         *)
12572         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12573                 ;;
12574         esac;;
12575 esac
12576 case "$d_phostname" in
12577 '') d_phostname="$undef";;
12578 esac
12579
12580 : see if gethostbyaddr_r exists
12581 set gethostbyaddr_r d_gethostbyaddr_r
12582 eval $inlibc
12583 case "$d_gethostbyaddr_r" in
12584 "$define")
12585         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12586         case "$d_gethostbyaddr_r_proto:$usethreads" in
12587         ":define")      d_gethostbyaddr_r_proto=define
12588                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12589                 eval $hasproto ;;
12590         *)      ;;
12591         esac
12592         case "$d_gethostbyaddr_r_proto" in
12593         define)
12594         case "$gethostbyaddr_r_proto" in
12595         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12596         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12597         esac
12598         case "$gethostbyaddr_r_proto" in
12599         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12600         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12601         esac
12602         case "$gethostbyaddr_r_proto" in
12603         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12604         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12605         esac
12606         case "$gethostbyaddr_r_proto" in
12607         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12608         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12609         esac
12610         case "$gethostbyaddr_r_proto" in
12611         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12612         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12613         esac
12614         case "$gethostbyaddr_r_proto" in
12615         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12616         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12617         esac
12618         case "$gethostbyaddr_r_proto" in
12619         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12620         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12621         esac
12622         case "$gethostbyaddr_r_proto" in
12623         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12624         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12625         esac
12626         case "$gethostbyaddr_r_proto" in
12627         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12628         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12629         esac
12630         case "$gethostbyaddr_r_proto" in
12631         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12632         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12633         esac
12634         case "$gethostbyaddr_r_proto" in
12635         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12636         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12637         esac
12638         case "$gethostbyaddr_r_proto" in
12639         ''|0)   d_gethostbyaddr_r=undef
12640                 gethostbyaddr_r_proto=0
12641                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12642         * )     case "$gethostbyaddr_r_proto" in
12643                 REENTRANT_PROTO*) ;;
12644                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12645                 esac
12646                 echo "Prototype: $try" ;;
12647         esac
12648         ;;
12649         *)      case "$usethreads" in
12650                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12651                 esac
12652                 d_gethostbyaddr_r=undef
12653                 gethostbyaddr_r_proto=0
12654                 ;;
12655         esac
12656         ;;
12657 *)      gethostbyaddr_r_proto=0
12658         ;;
12659 esac
12660
12661 : see if gethostbyname_r exists
12662 set gethostbyname_r d_gethostbyname_r
12663 eval $inlibc
12664 case "$d_gethostbyname_r" in
12665 "$define")
12666         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12667         case "$d_gethostbyname_r_proto:$usethreads" in
12668         ":define")      d_gethostbyname_r_proto=define
12669                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12670                 eval $hasproto ;;
12671         *)      ;;
12672         esac
12673         case "$d_gethostbyname_r_proto" in
12674         define)
12675         case "$gethostbyname_r_proto" in
12676         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12677         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12678         esac
12679         case "$gethostbyname_r_proto" in
12680         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12681         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12682         esac
12683         case "$gethostbyname_r_proto" in
12684         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12685         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12686         esac
12687         case "$gethostbyname_r_proto" in
12688         ''|0)   d_gethostbyname_r=undef
12689                 gethostbyname_r_proto=0
12690                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12691         * )     case "$gethostbyname_r_proto" in
12692                 REENTRANT_PROTO*) ;;
12693                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12694                 esac
12695                 echo "Prototype: $try" ;;
12696         esac
12697         ;;
12698         *)      case "$usethreads" in
12699                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12700                 esac
12701                 d_gethostbyname_r=undef
12702                 gethostbyname_r_proto=0
12703                 ;;
12704         esac
12705         ;;
12706 *)      gethostbyname_r_proto=0
12707         ;;
12708 esac
12709
12710 : see if gethostent_r exists
12711 set gethostent_r d_gethostent_r
12712 eval $inlibc
12713 case "$d_gethostent_r" in
12714 "$define")
12715         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12716         case "$d_gethostent_r_proto:$usethreads" in
12717         ":define")      d_gethostent_r_proto=define
12718                 set d_gethostent_r_proto gethostent_r $hdrs
12719                 eval $hasproto ;;
12720         *)      ;;
12721         esac
12722         case "$d_gethostent_r_proto" in
12723         define)
12724         case "$gethostent_r_proto" in
12725         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12726         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12727         esac
12728         case "$gethostent_r_proto" in
12729         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12730         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12731         esac
12732         case "$gethostent_r_proto" in
12733         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12734         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12735         esac
12736         case "$gethostent_r_proto" in
12737         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12738         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12739         esac
12740         case "$gethostent_r_proto" in
12741         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12742         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12743         esac
12744         case "$gethostent_r_proto" in
12745         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12746         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12747         esac
12748         case "$gethostent_r_proto" in
12749         ''|0)   d_gethostent_r=undef
12750                 gethostent_r_proto=0
12751                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12752         * )     case "$gethostent_r_proto" in
12753                 REENTRANT_PROTO*) ;;
12754                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12755                 esac
12756                 echo "Prototype: $try" ;;
12757         esac
12758         ;;
12759         *)      case "$usethreads" in
12760                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12761                 esac
12762                 d_gethostent_r=undef
12763                 gethostent_r_proto=0
12764                 ;;
12765         esac
12766         ;;
12767 *)      gethostent_r_proto=0
12768         ;;
12769 esac
12770
12771 : see if prototypes for various gethostxxx netdb.h functions are available
12772 echo " "
12773 set d_gethostprotos gethostent $i_netdb netdb.h
12774 eval $hasproto
12775
12776 : see if getitimer exists
12777 set getitimer d_getitimer
12778 eval $inlibc
12779
12780 : see if getlogin exists
12781 set getlogin d_getlogin
12782 eval $inlibc
12783
12784 : see if getlogin_r exists
12785 set getlogin_r d_getlogin_r
12786 eval $inlibc
12787 case "$d_getlogin_r" in
12788 "$define")
12789         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12790         case "$d_getlogin_r_proto:$usethreads" in
12791         ":define")      d_getlogin_r_proto=define
12792                 set d_getlogin_r_proto getlogin_r $hdrs
12793                 eval $hasproto ;;
12794         *)      ;;
12795         esac
12796         case "$d_getlogin_r_proto" in
12797         define)
12798         case "$getlogin_r_proto" in
12799         ''|0) try='int getlogin_r(char*, size_t);'
12800         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12801         esac
12802         case "$getlogin_r_proto" in
12803         ''|0) try='int getlogin_r(char*, int);'
12804         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12805         esac
12806         case "$getlogin_r_proto" in
12807         ''|0) try='char* getlogin_r(char*, size_t);'
12808         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12809         esac
12810         case "$getlogin_r_proto" in
12811         ''|0) try='char* getlogin_r(char*, int);'
12812         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12813         esac
12814         case "$getlogin_r_proto" in
12815         ''|0)   d_getlogin_r=undef
12816                 getlogin_r_proto=0
12817                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12818         * )     case "$getlogin_r_proto" in
12819                 REENTRANT_PROTO*) ;;
12820                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12821                 esac
12822                 echo "Prototype: $try" ;;
12823         esac
12824         ;;
12825         *)      case "$usethreads" in
12826                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12827                 esac
12828                 d_getlogin_r=undef
12829                 getlogin_r_proto=0
12830                 ;;
12831         esac
12832         ;;
12833 *)      getlogin_r_proto=0
12834         ;;
12835 esac
12836
12837 : see if getmnt exists
12838 set getmnt d_getmnt
12839 eval $inlibc
12840
12841 : see if getmntent exists
12842 set getmntent d_getmntent
12843 eval $inlibc
12844
12845 : see if getnetbyaddr exists
12846 set getnetbyaddr d_getnbyaddr
12847 eval $inlibc
12848
12849 : see if getnetbyname exists
12850 set getnetbyname d_getnbyname
12851 eval $inlibc
12852
12853 : see if getnetent exists
12854 set getnetent d_getnent
12855 eval $inlibc
12856
12857 : see if getnetbyaddr_r exists
12858 set getnetbyaddr_r d_getnetbyaddr_r
12859 eval $inlibc
12860 case "$d_getnetbyaddr_r" in
12861 "$define")
12862         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12863         case "$d_getnetbyaddr_r_proto:$usethreads" in
12864         ":define")      d_getnetbyaddr_r_proto=define
12865                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12866                 eval $hasproto ;;
12867         *)      ;;
12868         esac
12869         case "$d_getnetbyaddr_r_proto" in
12870         define)
12871         case "$getnetbyaddr_r_proto" in
12872         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12873         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12874         esac
12875         case "$getnetbyaddr_r_proto" in
12876         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12877         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12878         esac
12879         case "$getnetbyaddr_r_proto" in
12880         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12881         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12882         esac
12883         case "$getnetbyaddr_r_proto" in
12884         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12885         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12886         esac
12887         case "$getnetbyaddr_r_proto" in
12888         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12889         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12890         esac
12891         case "$getnetbyaddr_r_proto" in
12892         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12893         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12894         esac
12895         case "$getnetbyaddr_r_proto" in
12896         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12897         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12898         esac
12899         case "$getnetbyaddr_r_proto" in
12900         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12901         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12902         esac
12903         case "$getnetbyaddr_r_proto" in
12904         ''|0)   d_getnetbyaddr_r=undef
12905                 getnetbyaddr_r_proto=0
12906                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12907         * )     case "$getnetbyaddr_r_proto" in
12908                 REENTRANT_PROTO*) ;;
12909                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12910                 esac
12911                 echo "Prototype: $try" ;;
12912         esac
12913         ;;
12914         *)      case "$usethreads" in
12915                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12916                 esac
12917                 d_getnetbyaddr_r=undef
12918                 getnetbyaddr_r_proto=0
12919                 ;;
12920         esac
12921         ;;
12922 *)      getnetbyaddr_r_proto=0
12923         ;;
12924 esac
12925
12926 : see if getnetbyname_r exists
12927 set getnetbyname_r d_getnetbyname_r
12928 eval $inlibc
12929 case "$d_getnetbyname_r" in
12930 "$define")
12931         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12932         case "$d_getnetbyname_r_proto:$usethreads" in
12933         ":define")      d_getnetbyname_r_proto=define
12934                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12935                 eval $hasproto ;;
12936         *)      ;;
12937         esac
12938         case "$d_getnetbyname_r_proto" in
12939         define)
12940         case "$getnetbyname_r_proto" in
12941         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12942         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12943         esac
12944         case "$getnetbyname_r_proto" in
12945         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12946         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12947         esac
12948         case "$getnetbyname_r_proto" in
12949         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12950         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12951         esac
12952         case "$getnetbyname_r_proto" in
12953         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12954         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12955         esac
12956         case "$getnetbyname_r_proto" in
12957         ''|0)   d_getnetbyname_r=undef
12958                 getnetbyname_r_proto=0
12959                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12960         * )     case "$getnetbyname_r_proto" in
12961                 REENTRANT_PROTO*) ;;
12962                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12963                 esac
12964                 echo "Prototype: $try" ;;
12965         esac
12966         ;;
12967         *)      case "$usethreads" in
12968                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12969                 esac
12970                 d_getnetbyname_r=undef
12971                 getnetbyname_r_proto=0
12972                 ;;
12973         esac
12974         ;;
12975 *)      getnetbyname_r_proto=0
12976         ;;
12977 esac
12978
12979 : see if getnetent_r exists
12980 set getnetent_r d_getnetent_r
12981 eval $inlibc
12982 case "$d_getnetent_r" in
12983 "$define")
12984         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12985         case "$d_getnetent_r_proto:$usethreads" in
12986         ":define")      d_getnetent_r_proto=define
12987                 set d_getnetent_r_proto getnetent_r $hdrs
12988                 eval $hasproto ;;
12989         *)      ;;
12990         esac
12991         case "$d_getnetent_r_proto" in
12992         define)
12993         case "$getnetent_r_proto" in
12994         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
12995         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
12996         esac
12997         case "$getnetent_r_proto" in
12998         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
12999         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13000         esac
13001         case "$getnetent_r_proto" in
13002         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13003         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13004         esac
13005         case "$getnetent_r_proto" in
13006         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13007         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13008         esac
13009         case "$getnetent_r_proto" in
13010         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13011         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13012         esac
13013         case "$getnetent_r_proto" in
13014         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13015         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13016         esac
13017         case "$getnetent_r_proto" in
13018         ''|0)   d_getnetent_r=undef
13019                 getnetent_r_proto=0
13020                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13021         * )     case "$getnetent_r_proto" in
13022                 REENTRANT_PROTO*) ;;
13023                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13024                 esac
13025                 echo "Prototype: $try" ;;
13026         esac
13027         ;;
13028         *)      case "$usethreads" in
13029                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13030                 esac
13031                 d_getnetent_r=undef
13032                 getnetent_r_proto=0
13033                 ;;
13034         esac
13035         ;;
13036 *)      getnetent_r_proto=0
13037         ;;
13038 esac
13039
13040 : see if prototypes for various getnetxxx netdb.h functions are available
13041 echo " "
13042 set d_getnetprotos getnetent $i_netdb netdb.h
13043 eval $hasproto
13044
13045 : see if getpagesize exists
13046 set getpagesize d_getpagsz
13047 eval $inlibc
13048
13049
13050 : see if getprotobyname exists
13051 set getprotobyname d_getpbyname
13052 eval $inlibc
13053
13054 : see if getprotobynumber exists
13055 set getprotobynumber d_getpbynumber
13056 eval $inlibc
13057
13058 : see if getprotoent exists
13059 set getprotoent d_getpent
13060 eval $inlibc
13061
13062 : see if getpgid exists
13063 set getpgid d_getpgid
13064 eval $inlibc
13065
13066 : see if getpgrp2 exists
13067 set getpgrp2 d_getpgrp2
13068 eval $inlibc
13069
13070 : see if getppid exists
13071 set getppid d_getppid
13072 eval $inlibc
13073
13074 : see if getpriority exists
13075 set getpriority d_getprior
13076 eval $inlibc
13077
13078 : see if getprotobyname_r exists
13079 set getprotobyname_r d_getprotobyname_r
13080 eval $inlibc
13081 case "$d_getprotobyname_r" in
13082 "$define")
13083         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13084         case "$d_getprotobyname_r_proto:$usethreads" in
13085         ":define")      d_getprotobyname_r_proto=define
13086                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13087                 eval $hasproto ;;
13088         *)      ;;
13089         esac
13090         case "$d_getprotobyname_r_proto" in
13091         define)
13092         case "$getprotobyname_r_proto" in
13093         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13094         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13095         esac
13096         case "$getprotobyname_r_proto" in
13097         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13098         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13099         esac
13100         case "$getprotobyname_r_proto" in
13101         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13102         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13103         esac
13104         case "$getprotobyname_r_proto" in
13105         ''|0)   d_getprotobyname_r=undef
13106                 getprotobyname_r_proto=0
13107                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13108         * )     case "$getprotobyname_r_proto" in
13109                 REENTRANT_PROTO*) ;;
13110                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13111                 esac
13112                 echo "Prototype: $try" ;;
13113         esac
13114         ;;
13115         *)      case "$usethreads" in
13116                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13117                 esac
13118                 d_getprotobyname_r=undef
13119                 getprotobyname_r_proto=0
13120                 ;;
13121         esac
13122         ;;
13123 *)      getprotobyname_r_proto=0
13124         ;;
13125 esac
13126
13127 : see if getprotobynumber_r exists
13128 set getprotobynumber_r d_getprotobynumber_r
13129 eval $inlibc
13130 case "$d_getprotobynumber_r" in
13131 "$define")
13132         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13133         case "$d_getprotobynumber_r_proto:$usethreads" in
13134         ":define")      d_getprotobynumber_r_proto=define
13135                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13136                 eval $hasproto ;;
13137         *)      ;;
13138         esac
13139         case "$d_getprotobynumber_r_proto" in
13140         define)
13141         case "$getprotobynumber_r_proto" in
13142         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13143         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13144         esac
13145         case "$getprotobynumber_r_proto" in
13146         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13147         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13148         esac
13149         case "$getprotobynumber_r_proto" in
13150         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13151         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13152         esac
13153         case "$getprotobynumber_r_proto" in
13154         ''|0)   d_getprotobynumber_r=undef
13155                 getprotobynumber_r_proto=0
13156                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13157         * )     case "$getprotobynumber_r_proto" in
13158                 REENTRANT_PROTO*) ;;
13159                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13160                 esac
13161                 echo "Prototype: $try" ;;
13162         esac
13163         ;;
13164         *)      case "$usethreads" in
13165                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13166                 esac
13167                 d_getprotobynumber_r=undef
13168                 getprotobynumber_r_proto=0
13169                 ;;
13170         esac
13171         ;;
13172 *)      getprotobynumber_r_proto=0
13173         ;;
13174 esac
13175
13176 : see if getprotoent_r exists
13177 set getprotoent_r d_getprotoent_r
13178 eval $inlibc
13179 case "$d_getprotoent_r" in
13180 "$define")
13181         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13182         case "$d_getprotoent_r_proto:$usethreads" in
13183         ":define")      d_getprotoent_r_proto=define
13184                 set d_getprotoent_r_proto getprotoent_r $hdrs
13185                 eval $hasproto ;;
13186         *)      ;;
13187         esac
13188         case "$d_getprotoent_r_proto" in
13189         define)
13190         case "$getprotoent_r_proto" in
13191         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13192         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13193         esac
13194         case "$getprotoent_r_proto" in
13195         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13196         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13197         esac
13198         case "$getprotoent_r_proto" in
13199         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13200         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13201         esac
13202         case "$getprotoent_r_proto" in
13203         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13204         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13205         esac
13206         case "$getprotoent_r_proto" in
13207         ''|0)   d_getprotoent_r=undef
13208                 getprotoent_r_proto=0
13209                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13210         * )     case "$getprotoent_r_proto" in
13211                 REENTRANT_PROTO*) ;;
13212                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13213                 esac
13214                 echo "Prototype: $try" ;;
13215         esac
13216         ;;
13217         *)      case "$usethreads" in
13218                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13219                 esac
13220                 d_getprotoent_r=undef
13221                 getprotoent_r_proto=0
13222                 ;;
13223         esac
13224         ;;
13225 *)      getprotoent_r_proto=0
13226         ;;
13227 esac
13228
13229 : see if prototypes for various getprotoxxx netdb.h functions are available
13230 echo " "
13231 set d_getprotoprotos getprotoent $i_netdb netdb.h
13232 eval $hasproto
13233
13234 : see if getprpwnam exists
13235 set getprpwnam d_getprpwnam
13236 eval $inlibc
13237
13238 : see if getpwent exists
13239 set getpwent d_getpwent
13240 eval $inlibc
13241
13242 : see if getpwent_r exists
13243 set getpwent_r d_getpwent_r
13244 eval $inlibc
13245 case "$d_getpwent_r" in
13246 "$define")
13247         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13248         case "$d_getpwent_r_proto:$usethreads" in
13249         ":define")      d_getpwent_r_proto=define
13250                 set d_getpwent_r_proto getpwent_r $hdrs
13251                 eval $hasproto ;;
13252         *)      ;;
13253         esac
13254         case "$d_getpwent_r_proto" in
13255         define)
13256         case "$getpwent_r_proto" in
13257         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13258         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13259         esac
13260         case "$getpwent_r_proto" in
13261         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13262         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13263         esac
13264         case "$getpwent_r_proto" in
13265         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13266         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13267         esac
13268         case "$getpwent_r_proto" in
13269         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13270         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13271         esac
13272         case "$getpwent_r_proto" in
13273         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13274         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13275         esac
13276         case "$getpwent_r_proto" in
13277         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13278         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13279         esac
13280         case "$getpwent_r_proto" in
13281         ''|0)   d_getpwent_r=undef
13282                 getpwent_r_proto=0
13283                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13284         * )     case "$getpwent_r_proto" in
13285                 REENTRANT_PROTO*) ;;
13286                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13287                 esac
13288                 echo "Prototype: $try" ;;
13289         esac
13290         ;;
13291         *)      case "$usethreads" in
13292                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13293                 esac
13294                 d_getpwent_r=undef
13295                 getpwent_r_proto=0
13296                 ;;
13297         esac
13298         ;;
13299 *)      getpwent_r_proto=0
13300         ;;
13301 esac
13302
13303 : see if getpwnam_r exists
13304 set getpwnam_r d_getpwnam_r
13305 eval $inlibc
13306 case "$d_getpwnam_r" in
13307 "$define")
13308         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13309         case "$d_getpwnam_r_proto:$usethreads" in
13310         ":define")      d_getpwnam_r_proto=define
13311                 set d_getpwnam_r_proto getpwnam_r $hdrs
13312                 eval $hasproto ;;
13313         *)      ;;
13314         esac
13315         case "$d_getpwnam_r_proto" in
13316         define)
13317         case "$getpwnam_r_proto" in
13318         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13319         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13320         esac
13321         case "$getpwnam_r_proto" in
13322         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13323         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13324         esac
13325         case "$getpwnam_r_proto" in
13326         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13327         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13328         esac
13329         case "$getpwnam_r_proto" in
13330         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13331         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13332         esac
13333         case "$getpwnam_r_proto" in
13334         ''|0)   d_getpwnam_r=undef
13335                 getpwnam_r_proto=0
13336                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13337         * )     case "$getpwnam_r_proto" in
13338                 REENTRANT_PROTO*) ;;
13339                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13340                 esac
13341                 echo "Prototype: $try" ;;
13342         esac
13343         ;;
13344         *)      case "$usethreads" in
13345                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13346                 esac
13347                 d_getpwnam_r=undef
13348                 getpwnam_r_proto=0
13349                 ;;
13350         esac
13351         ;;
13352 *)      getpwnam_r_proto=0
13353         ;;
13354 esac
13355
13356 : see if getpwuid_r exists
13357 set getpwuid_r d_getpwuid_r
13358 eval $inlibc
13359 case "$d_getpwuid_r" in
13360 "$define")
13361         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13362         case "$d_getpwuid_r_proto:$usethreads" in
13363         ":define")      d_getpwuid_r_proto=define
13364                 set d_getpwuid_r_proto getpwuid_r $hdrs
13365                 eval $hasproto ;;
13366         *)      ;;
13367         esac
13368         case "$d_getpwuid_r_proto" in
13369         define)
13370         case "$getpwuid_r_proto" in
13371         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13372         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13373         esac
13374         case "$getpwuid_r_proto" in
13375         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13376         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13377         esac
13378         case "$getpwuid_r_proto" in
13379         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13380         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13381         esac
13382         case "$getpwuid_r_proto" in
13383         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13384         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13385         esac
13386         case "$getpwuid_r_proto" in
13387         ''|0)   d_getpwuid_r=undef
13388                 getpwuid_r_proto=0
13389                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13390         * )     case "$getpwuid_r_proto" in
13391                 REENTRANT_PROTO*) ;;
13392                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13393                 esac
13394                 echo "Prototype: $try" ;;
13395         esac
13396         ;;
13397         *)      case "$usethreads" in
13398                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13399                 esac
13400                 d_getpwuid_r=undef
13401                 getpwuid_r_proto=0
13402                 ;;
13403         esac
13404         ;;
13405 *)      getpwuid_r_proto=0
13406         ;;
13407 esac
13408
13409
13410 : see if getservbyname exists
13411 set getservbyname d_getsbyname
13412 eval $inlibc
13413
13414 : see if getservbyport exists
13415 set getservbyport d_getsbyport
13416 eval $inlibc
13417
13418 : see if getservent exists
13419 set getservent d_getsent
13420 eval $inlibc
13421
13422 : see if getservbyname_r exists
13423 set getservbyname_r d_getservbyname_r
13424 eval $inlibc
13425 case "$d_getservbyname_r" in
13426 "$define")
13427         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13428         case "$d_getservbyname_r_proto:$usethreads" in
13429         ":define")      d_getservbyname_r_proto=define
13430                 set d_getservbyname_r_proto getservbyname_r $hdrs
13431                 eval $hasproto ;;
13432         *)      ;;
13433         esac
13434         case "$d_getservbyname_r_proto" in
13435         define)
13436         case "$getservbyname_r_proto" in
13437         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13438         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13439         esac
13440         case "$getservbyname_r_proto" in
13441         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13442         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13443         esac
13444         case "$getservbyname_r_proto" in
13445         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13446         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13447         esac
13448         case "$getservbyname_r_proto" in
13449         ''|0)   d_getservbyname_r=undef
13450                 getservbyname_r_proto=0
13451                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13452         * )     case "$getservbyname_r_proto" in
13453                 REENTRANT_PROTO*) ;;
13454                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13455                 esac
13456                 echo "Prototype: $try" ;;
13457         esac
13458         ;;
13459         *)      case "$usethreads" in
13460                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13461                 esac
13462                 d_getservbyname_r=undef
13463                 getservbyname_r_proto=0
13464                 ;;
13465         esac
13466         ;;
13467 *)      getservbyname_r_proto=0
13468         ;;
13469 esac
13470
13471 : see if getservbyport_r exists
13472 set getservbyport_r d_getservbyport_r
13473 eval $inlibc
13474 case "$d_getservbyport_r" in
13475 "$define")
13476         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13477         case "$d_getservbyport_r_proto:$usethreads" in
13478         ":define")      d_getservbyport_r_proto=define
13479                 set d_getservbyport_r_proto getservbyport_r $hdrs
13480                 eval $hasproto ;;
13481         *)      ;;
13482         esac
13483         case "$d_getservbyport_r_proto" in
13484         define)
13485         case "$getservbyport_r_proto" in
13486         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13487         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13488         esac
13489         case "$getservbyport_r_proto" in
13490         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13491         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13492         esac
13493         case "$getservbyport_r_proto" in
13494         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13495         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13496         esac
13497         case "$getservbyport_r_proto" in
13498         ''|0)   d_getservbyport_r=undef
13499                 getservbyport_r_proto=0
13500                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13501         * )     case "$getservbyport_r_proto" in
13502                 REENTRANT_PROTO*) ;;
13503                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13504                 esac
13505                 echo "Prototype: $try" ;;
13506         esac
13507         ;;
13508         *)      case "$usethreads" in
13509                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13510                 esac
13511                 d_getservbyport_r=undef
13512                 getservbyport_r_proto=0
13513                 ;;
13514         esac
13515         ;;
13516 *)      getservbyport_r_proto=0
13517         ;;
13518 esac
13519
13520 : see if getservent_r exists
13521 set getservent_r d_getservent_r
13522 eval $inlibc
13523 case "$d_getservent_r" in
13524 "$define")
13525         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13526         case "$d_getservent_r_proto:$usethreads" in
13527         ":define")      d_getservent_r_proto=define
13528                 set d_getservent_r_proto getservent_r $hdrs
13529                 eval $hasproto ;;
13530         *)      ;;
13531         esac
13532         case "$d_getservent_r_proto" in
13533         define)
13534         case "$getservent_r_proto" in
13535         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13536         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13537         esac
13538         case "$getservent_r_proto" in
13539         ''|0) try='int getservent_r(struct servent*, char*, int);'
13540         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13541         esac
13542         case "$getservent_r_proto" in
13543         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13544         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13545         esac
13546         case "$getservent_r_proto" in
13547         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13548         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13549         esac
13550         case "$getservent_r_proto" in
13551         ''|0)   d_getservent_r=undef
13552                 getservent_r_proto=0
13553                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13554         * )     case "$getservent_r_proto" in
13555                 REENTRANT_PROTO*) ;;
13556                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13557                 esac
13558                 echo "Prototype: $try" ;;
13559         esac
13560         ;;
13561         *)      case "$usethreads" in
13562                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13563                 esac
13564                 d_getservent_r=undef
13565                 getservent_r_proto=0
13566                 ;;
13567         esac
13568         ;;
13569 *)      getservent_r_proto=0
13570         ;;
13571 esac
13572
13573 : see if prototypes for various getservxxx netdb.h functions are available
13574 echo " "
13575 set d_getservprotos getservent $i_netdb netdb.h
13576 eval $hasproto
13577
13578 : see if getspnam exists
13579 set getspnam d_getspnam
13580 eval $inlibc
13581
13582 : see if this is a shadow.h system
13583 set shadow.h i_shadow
13584 eval $inhdr
13585
13586 : see if getspnam_r exists
13587 set getspnam_r d_getspnam_r
13588 eval $inlibc
13589 case "$d_getspnam_r" in
13590 "$define")
13591         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13592         case "$d_getspnam_r_proto:$usethreads" in
13593         ":define")      d_getspnam_r_proto=define
13594                 set d_getspnam_r_proto getspnam_r $hdrs
13595                 eval $hasproto ;;
13596         *)      ;;
13597         esac
13598         case "$d_getspnam_r_proto" in
13599         define)
13600         case "$getspnam_r_proto" in
13601         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13602         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13603         esac
13604         case "$getspnam_r_proto" in
13605         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13606         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13607         esac
13608         case "$getspnam_r_proto" in
13609         ''|0)   d_getspnam_r=undef
13610                 getspnam_r_proto=0
13611                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13612         * )     case "$getspnam_r_proto" in
13613                 REENTRANT_PROTO*) ;;
13614                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13615                 esac
13616                 echo "Prototype: $try" ;;
13617         esac
13618         ;;
13619         *)      case "$usethreads" in
13620                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13621                 esac
13622                 d_getspnam_r=undef
13623                 getspnam_r_proto=0
13624                 ;;
13625         esac
13626         ;;
13627 *)      getspnam_r_proto=0
13628         ;;
13629 esac
13630
13631 : see if gettimeofday or ftime exists
13632 set gettimeofday d_gettimeod
13633 eval $inlibc
13634 case "$d_gettimeod" in
13635 "$undef")
13636         set ftime d_ftime 
13637         eval $inlibc
13638         ;;
13639 *)
13640         val="$undef"; set d_ftime; eval $setvar
13641         ;;
13642 esac
13643 case "$d_gettimeod$d_ftime" in
13644 "$undef$undef")
13645         echo " "
13646         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13647         ;;
13648 esac
13649
13650 : see if gmtime_r exists
13651 set gmtime_r d_gmtime_r
13652 eval $inlibc
13653 case "$d_gmtime_r" in
13654 "$define")
13655         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13656         case "$d_gmtime_r_proto:$usethreads" in
13657         ":define")      d_gmtime_r_proto=define
13658                 set d_gmtime_r_proto gmtime_r $hdrs
13659                 eval $hasproto ;;
13660         *)      ;;
13661         esac
13662         case "$d_gmtime_r_proto" in
13663         define)
13664         case "$gmtime_r_proto" in
13665         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13666         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13667         esac
13668         case "$gmtime_r_proto" in
13669         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13670         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13671         esac
13672         case "$gmtime_r_proto" in
13673         ''|0)   d_gmtime_r=undef
13674                 gmtime_r_proto=0
13675                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13676         * )     case "$gmtime_r_proto" in
13677                 REENTRANT_PROTO*) ;;
13678                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13679                 esac
13680                 echo "Prototype: $try" ;;
13681         esac
13682         ;;
13683         *)      case "$usethreads" in
13684                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13685                 esac
13686                 d_gmtime_r=undef
13687                 gmtime_r_proto=0
13688                 ;;
13689         esac
13690         ;;
13691 *)      gmtime_r_proto=0
13692         ;;
13693 esac
13694
13695 : see if hasmntopt exists
13696 set hasmntopt d_hasmntopt
13697 eval $inlibc
13698
13699 : see if this is a netinet/in.h or sys/in.h system
13700 set netinet/in.h i_niin sys/in.h i_sysin
13701 eval $inhdr
13702
13703 : see if arpa/inet.h has to be included
13704 set arpa/inet.h i_arpainet
13705 eval $inhdr
13706
13707 : see if htonl --and friends-- exists
13708 val=''
13709 set htonl val
13710 eval $inlibc
13711
13712 : Maybe they are macros.
13713 case "$val" in
13714 $undef)
13715         $cat >htonl.c <<EOM
13716 #include <stdio.h>
13717 #include <sys/types.h>
13718 #$i_niin I_NETINET_IN
13719 #$i_sysin I_SYS_IN
13720 #$i_arpainet I_ARPA_INET
13721 #ifdef I_NETINET_IN
13722 #include <netinet/in.h>
13723 #endif
13724 #ifdef I_SYS_IN
13725 #include <sys/in.h>
13726 #endif
13727 #ifdef I_ARPA_INET
13728 #include <arpa/inet.h>
13729 #endif
13730 #ifdef htonl
13731 printf("Defined as a macro.");
13732 #endif
13733 EOM
13734         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13735         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13736                 val="$define"
13737                 echo "But it seems to be defined as a macro." >&4
13738         fi
13739         $rm -f htonl.?
13740         ;;
13741 esac
13742 set d_htonl
13743 eval $setvar
13744
13745 : see if ilogbl exists
13746 set ilogbl d_ilogbl
13747 eval $inlibc
13748
13749 : index or strchr
13750 echo " "
13751 if set index val -f; eval $csym; $val; then
13752         if set strchr val -f d_strchr; eval $csym; $val; then
13753                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13754                         val="$define"
13755                         vali="$undef"
13756                         echo "strchr() found." >&4
13757                 else
13758                         val="$undef"
13759                         vali="$define"
13760                         echo "index() found." >&4
13761                 fi
13762         else
13763                 val="$undef"
13764                 vali="$define"
13765                 echo "index() found." >&4
13766         fi
13767 else
13768         if set strchr val -f d_strchr; eval $csym; $val; then
13769                 val="$define"
13770                 vali="$undef"
13771                 echo "strchr() found." >&4
13772         else
13773                 echo "No index() or strchr() found!" >&4
13774                 val="$undef"
13775                 vali="$undef"
13776         fi
13777 fi
13778 set d_strchr; eval $setvar
13779 val="$vali"
13780 set d_index; eval $setvar
13781
13782 : check whether inet_aton exists
13783 set inet_aton d_inetaton
13784 eval $inlibc
13785
13786 : Look for isascii
13787 echo " "
13788 $cat >isascii.c <<EOCP
13789 #include <stdio.h>
13790 #include <ctype.h>
13791 #$i_stdlib I_STDLIB
13792 #ifdef I_STDLIB
13793 #include <stdlib.h>
13794 #endif
13795 int main() {
13796         int c = 'A';
13797         if (isascii(c))
13798                 exit(0);
13799         else
13800                 exit(1);
13801 }
13802 EOCP
13803 set isascii
13804 if eval $compile; then
13805         echo "isascii() found." >&4
13806         val="$define"
13807 else
13808         echo "isascii() NOT found." >&4
13809         val="$undef"
13810 fi
13811 set d_isascii
13812 eval $setvar
13813 $rm -f isascii*
13814
13815 : see if isfinite exists
13816 set isfinite d_isfinite
13817 eval $inlibc
13818
13819 : see if isinf exists
13820 set isinf d_isinf
13821 eval $inlibc
13822
13823 : see if isnan exists
13824 set isnan d_isnan
13825 eval $inlibc
13826
13827 : see if isnanl exists
13828 set isnanl d_isnanl
13829 eval $inlibc
13830
13831 : see if killpg exists
13832 set killpg d_killpg
13833 eval $inlibc
13834
13835 : see if lchown exists
13836 echo " "
13837 $cat > try.c <<'EOCP'
13838 /* System header to define __stub macros and hopefully few prototypes,
13839     which can conflict with char lchown(); below.  */
13840 #include <assert.h>
13841 /* Override any gcc2 internal prototype to avoid an error.  */
13842 /* We use char because int might match the return type of a gcc2
13843    builtin and then its argument prototype would still apply.  */
13844 char lchown();
13845 int main() {
13846     /*  The GNU C library defines this for functions which it implements
13847         to always fail with ENOSYS.  Some functions are actually named
13848         something starting with __ and the normal name is an alias.  */
13849 #if defined (__stub_lchown) || defined (__stub___lchown)
13850 choke me
13851 #else
13852 lchown();
13853 #endif
13854 ; return 0; }
13855 EOCP
13856 set try
13857 if eval $compile; then
13858     $echo "lchown() found." >&4
13859     val="$define"
13860 else
13861     $echo "lchown() NOT found." >&4
13862     val="$undef"
13863 fi
13864 set d_lchown
13865 eval $setvar
13866
13867 : See if number of significant digits in a double precision number is known
13868 echo " "
13869 $cat >ldbl_dig.c <<EOM
13870 #$i_limits I_LIMITS
13871 #$i_float I_FLOAT
13872 #ifdef I_LIMITS
13873 #include <limits.h>
13874 #endif
13875 #ifdef I_FLOAT
13876 #include <float.h>
13877 #endif
13878 #ifdef LDBL_DIG
13879 printf("Contains LDBL_DIG");
13880 #endif
13881 EOM
13882 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13883 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13884         echo "LDBL_DIG found." >&4
13885         val="$define"
13886 else
13887         echo "LDBL_DIG NOT found." >&4
13888         val="$undef"
13889 fi
13890 $rm -f ldbl_dig.?
13891 set d_ldbl_dig
13892 eval $setvar
13893
13894 : see if link exists
13895 set link d_link
13896 eval $inlibc
13897
13898 : see if localtime_r exists
13899 set localtime_r d_localtime_r
13900 eval $inlibc
13901 case "$d_localtime_r" in
13902 "$define")
13903         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13904         case "$d_localtime_r_proto:$usethreads" in
13905         ":define")      d_localtime_r_proto=define
13906                 set d_localtime_r_proto localtime_r $hdrs
13907                 eval $hasproto ;;
13908         *)      ;;
13909         esac
13910         case "$d_localtime_r_proto" in
13911         define)
13912         case "$localtime_r_proto" in
13913         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13914         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13915         esac
13916         case "$localtime_r_proto" in
13917         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13918         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13919         esac
13920         case "$localtime_r_proto" in
13921         ''|0)   d_localtime_r=undef
13922                 localtime_r_proto=0
13923                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13924         * )     case "$localtime_r_proto" in
13925                 REENTRANT_PROTO*) ;;
13926                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13927                 esac
13928                 echo "Prototype: $try" ;;
13929         esac
13930         ;;
13931         *)      case "$usethreads" in
13932                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13933                 esac
13934                 d_localtime_r=undef
13935                 localtime_r_proto=0
13936                 ;;
13937         esac
13938         ;;
13939 *)      localtime_r_proto=0
13940         ;;
13941 esac
13942
13943 : see if localeconv exists
13944 set localeconv d_locconv
13945 eval $inlibc
13946
13947 : see if lockf exists
13948 set lockf d_lockf
13949 eval $inlibc
13950
13951 : see if prototype for lseek is available
13952 echo " "
13953 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13954 eval $hasproto
13955
13956 : see if lstat exists
13957 set lstat d_lstat
13958 eval $inlibc
13959
13960 : see if madvise exists
13961 set madvise d_madvise
13962 eval $inlibc
13963
13964 : see if mblen exists
13965 set mblen d_mblen
13966 eval $inlibc
13967
13968 : see if mbstowcs exists
13969 set mbstowcs d_mbstowcs
13970 eval $inlibc
13971
13972 : see if mbtowc exists
13973 set mbtowc d_mbtowc
13974 eval $inlibc
13975
13976 : see if memchr exists
13977 set memchr d_memchr
13978 eval $inlibc
13979
13980 : see if memcmp exists
13981 set memcmp d_memcmp
13982 eval $inlibc
13983
13984 : see if memcpy exists
13985 set memcpy d_memcpy
13986 eval $inlibc
13987
13988 : see if memmove exists
13989 set memmove d_memmove
13990 eval $inlibc
13991
13992 : see if memset exists
13993 set memset d_memset
13994 eval $inlibc
13995
13996 : see if mkdir exists
13997 set mkdir d_mkdir
13998 eval $inlibc
13999
14000 : see if mkdtemp exists
14001 set mkdtemp d_mkdtemp
14002 eval $inlibc
14003
14004 : see if mkfifo exists
14005 set mkfifo d_mkfifo
14006 eval $inlibc
14007
14008 : see if mkstemp exists
14009 set mkstemp d_mkstemp
14010 eval $inlibc
14011
14012 : see if mkstemps exists
14013 set mkstemps d_mkstemps
14014 eval $inlibc
14015
14016 : see if mktime exists
14017 set mktime d_mktime
14018 eval $inlibc
14019
14020 : see if this is a sys/mman.h system
14021 set sys/mman.h i_sysmman
14022 eval $inhdr
14023
14024 : see if mmap exists
14025 set mmap d_mmap
14026 eval $inlibc
14027 : see what shmat returns
14028 : default to something harmless
14029 mmaptype='void *'
14030 case "$i_sysmman$d_mmap" in
14031 "$define$define")
14032         $cat >mmap.c <<'END'
14033 #include <sys/mman.h>
14034 void *mmap();
14035 END
14036         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14037                 mmaptype='void *'
14038         else
14039                 mmaptype='caddr_t'
14040         fi
14041         echo "and it returns ($mmaptype)." >&4
14042         ;;
14043 esac
14044
14045
14046
14047 : see if sqrtl exists
14048 set sqrtl d_sqrtl
14049 eval $inlibc
14050
14051 : see if scalbnl exists
14052 set scalbnl d_scalbnl
14053 eval $inlibc
14054
14055 : see if modfl exists
14056 set modfl d_modfl
14057 eval $inlibc
14058
14059 : see if prototype for modfl is available
14060 echo " "
14061 set d_modflproto modfl math.h
14062 eval $hasproto
14063
14064 d_modfl_pow32_bug="$undef"
14065
14066 case "$d_longdbl$d_modfl" in
14067 $define$define)
14068         $cat <<EOM
14069 Checking to see whether your modfl() is okay for large values...
14070 EOM
14071 $cat >try.c <<EOCP
14072 #include <math.h> 
14073 #include <stdio.h>
14074 EOCP
14075 if $test "X$d_modflproto" != "X$define"; then
14076         $cat >>try.c <<EOCP
14077 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
14078 long double modfl (long double, long double *);
14079 EOCP
14080 fi
14081 $cat >>try.c <<EOCP
14082 int main() {
14083     long double nv = 4294967303.15;
14084     long double v, w;
14085     v = modfl(nv, &w);         
14086 #ifdef __GLIBC__
14087     printf("glibc");
14088 #endif
14089     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14090     return 0;
14091 }
14092 EOCP
14093         case "$osname:$gccversion" in
14094         aix:)   saveccflags="$ccflags"
14095                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14096         esac
14097         set try
14098         if eval $compile; then
14099                 foo=`$run ./try`
14100                 case "$foo" in
14101                 *" 4294967303.150000 1.150000 4294967302.000000")
14102                         echo >&4 "Your modfl() is broken for large values."
14103                         d_modfl_pow32_bug="$define"
14104                         case "$foo" in
14105                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14106                         ;;
14107                         esac
14108                         ;;
14109                 *" 4294967303.150000 0.150000 4294967303.000000")
14110                         echo >&4 "Your modfl() seems okay for large values."
14111                         ;;
14112                 *)      echo >&4 "I don't understand your modfl() at all."
14113                         d_modfl="$undef"
14114                         ;;
14115                 esac
14116                 $rm -f try.* try core core.try.*
14117         else
14118                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14119                 d_modfl="$undef"
14120         fi
14121         case "$osname:$gccversion" in
14122         aix:)   ccflags="$saveccflags" ;; # restore
14123         esac
14124         ;;
14125 esac
14126
14127 if $test "$uselongdouble" = "$define"; then
14128     message=""
14129     if $test "$d_sqrtl" != "$define"; then
14130         message="$message sqrtl"
14131     fi
14132     if $test "$d_modfl" != "$define"; then
14133         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14134             echo "You have both aintl and copysignl, so I can emulate modfl."
14135         else
14136             message="$message modfl"
14137         fi
14138     fi
14139     if $test "$d_frexpl" != "$define"; then
14140         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14141             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14142         else
14143             message="$message frexpl"
14144         fi
14145     fi
14146
14147     if $test "$message" != ""; then
14148         $cat <<EOM >&4
14149
14150 *** You requested the use of long doubles but you do not seem to have
14151 *** the following mathematical functions needed for long double support:
14152 ***    $message
14153 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14154 *** Cannot continue, aborting.
14155
14156 EOM
14157
14158         exit 1
14159     fi
14160 fi
14161
14162 : see if mprotect exists
14163 set mprotect d_mprotect
14164 eval $inlibc
14165
14166 : see if msgctl exists
14167 set msgctl d_msgctl
14168 eval $inlibc
14169
14170 : see if msgget exists
14171 set msgget d_msgget
14172 eval $inlibc
14173
14174 : see if msgsnd exists
14175 set msgsnd d_msgsnd
14176 eval $inlibc
14177
14178 : see if msgrcv exists
14179 set msgrcv d_msgrcv
14180 eval $inlibc
14181
14182 : see how much of the 'msg*(2)' library is present.
14183 h_msg=true
14184 echo " "
14185 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14186 *"$undef"*) h_msg=false;;
14187 esac
14188 case "$osname" in
14189 freebsd)
14190     case "`ipcs 2>&1`" in
14191     "SVID messages"*"not configured"*)
14192         echo "Your $osname does not have the msg*(2) configured." >&4
14193         h_msg=false
14194         val="$undef"
14195         set msgctl d_msgctl
14196         eval $setvar
14197         set msgget d_msgget
14198         eval $setvar
14199         set msgsnd d_msgsnd
14200         eval $setvar
14201         set msgrcv d_msgrcv
14202         eval $setvar
14203         ;;
14204     esac
14205     ;;
14206 esac
14207 : we could also check for sys/ipc.h ...
14208 if $h_msg && $test `./findhdr sys/msg.h`; then
14209         echo "You have the full msg*(2) library." >&4
14210         val="$define"
14211 else
14212         echo "You don't have the full msg*(2) library." >&4
14213         val="$undef"
14214 fi
14215 set d_msg
14216 eval $setvar
14217
14218
14219 echo " "
14220 echo "Checking to see if your system supports struct msghdr..." >&4
14221 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14222 eval $hasstruct
14223 case "$d_msghdr_s" in
14224 "$define")      echo "Yes, it does."   ;;
14225 *)              echo "No, it doesn't." ;;
14226 esac
14227
14228
14229 : see if msync exists
14230 set msync d_msync
14231 eval $inlibc
14232
14233 : see if munmap exists
14234 set munmap d_munmap
14235 eval $inlibc
14236
14237 : see if nice exists
14238 set nice d_nice
14239 eval $inlibc
14240
14241 : see if this is a langinfo.h system
14242 set langinfo.h i_langinfo
14243 eval $inhdr
14244
14245 : see if nl_langinfo exists
14246 set nl_langinfo d_nl_langinfo
14247 eval $inlibc
14248
14249 : check for length of character
14250 echo " "
14251 case "$charsize" in
14252 '')
14253         echo "Checking to see how big your characters are (hey, you never know)..." >&4
14254         $cat >try.c <<EOCP
14255 #include <stdio.h>
14256 #$i_stdlib I_STDLIB
14257 #ifdef I_STDLIB
14258 #include <stdlib.h>
14259 #endif
14260 int main()
14261 {
14262     printf("%d\n", (int)sizeof(char));
14263     exit(0);
14264 }
14265 EOCP
14266         set try
14267         if eval $compile_ok; then
14268                 dflt=`$run ./try`
14269         else
14270                 dflt='1'
14271                 echo "(I can't seem to compile the test program.  Guessing...)"
14272         fi
14273         ;;
14274 *)
14275         dflt="$charsize"
14276         ;;
14277 esac
14278 rp="What is the size of a character (in bytes)?"
14279 . ./myread
14280 charsize="$ans"
14281 $rm -f try.c try
14282
14283 : check for volatile keyword
14284 echo " "
14285 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14286 $cat >try.c <<'EOCP'
14287 int main()
14288 {
14289         typedef struct _goo_struct goo_struct;
14290         goo_struct * volatile goo = ((goo_struct *)0);
14291         struct _goo_struct {
14292                 long long_int;
14293                 int reg_int;
14294                 char char_var;
14295         };
14296         typedef unsigned short foo_t;
14297         char *volatile foo;
14298         volatile int bar;
14299         volatile foo_t blech;
14300         foo = foo;
14301 }
14302 EOCP
14303 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14304         val="$define"
14305         echo "Yup, it does."
14306 else
14307         val="$undef"
14308         echo "Nope, it doesn't."
14309 fi
14310 set d_volatile
14311 eval $setvar
14312 $rm -f try.*
14313
14314
14315 echo " "
14316 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14317
14318 case "$use64bitint:$d_quad:$quadtype" in
14319 define:define:?*)
14320         ivtype="$quadtype"
14321         uvtype="$uquadtype"
14322         ivsize=8
14323         uvsize=8
14324         ;;
14325 *)      ivtype="long"
14326         uvtype="unsigned long"
14327         ivsize=$longsize
14328         uvsize=$longsize
14329         ;;
14330 esac
14331
14332 case "$uselongdouble:$d_longdbl" in
14333 define:define)
14334         nvtype="long double"
14335         nvsize=$longdblsize
14336         ;;
14337 *)      nvtype=double
14338         nvsize=$doublesize
14339         ;;
14340 esac
14341
14342 $echo "(IV will be "$ivtype", $ivsize bytes)"
14343 $echo "(UV will be "$uvtype", $uvsize bytes)"
14344 $echo "(NV will be "$nvtype", $nvsize bytes)"
14345
14346 $cat >try.c <<EOCP
14347 #$i_inttypes I_INTTYPES
14348 #ifdef I_INTTYPES
14349 #include <inttypes.h>
14350 #endif
14351 #include <stdio.h>
14352 int main() {
14353 #ifdef INT8
14354    int8_t i =  INT8_MAX;
14355   uint8_t u = UINT8_MAX;
14356   printf("int8_t\n");
14357 #endif
14358 #ifdef INT16
14359    int16_t i =  INT16_MAX;
14360   uint16_t i = UINT16_MAX;
14361   printf("int16_t\n");
14362 #endif
14363 #ifdef INT32
14364    int32_t i =  INT32_MAX;
14365   uint32_t u = UINT32_MAX;
14366   printf("int32_t\n");
14367 #endif
14368 }
14369 EOCP
14370
14371 case "$i8type" in
14372 '')     case "$charsize" in
14373         1)      i8type=char
14374                 u8type="unsigned char"
14375                 i8size=$charsize
14376                 u8size=$charsize
14377                 ;;
14378         esac
14379         ;;
14380 esac
14381 case "$i8type" in
14382 '')     set try -DINT8
14383         if eval $compile; then
14384                 case "`$run ./try`" in
14385                 int8_t) i8type=int8_t
14386                         u8type=uint8_t
14387                         i8size=1
14388                         u8size=1
14389                         ;;
14390                 esac
14391         fi
14392         ;;
14393 esac
14394 case "$i8type" in
14395 '')     if $test $charsize -ge 1; then
14396                 i8type=char
14397                 u8type="unsigned char"
14398                 i8size=$charsize
14399                 u8size=$charsize
14400         fi
14401         ;;
14402 esac
14403
14404 case "$i16type" in
14405 '')     case "$shortsize" in
14406         2)      i16type=short
14407                 u16type="unsigned short"
14408                 i16size=$shortsize
14409                 u16size=$shortsize
14410                 ;;
14411         esac
14412         ;;
14413 esac
14414 case "$i16type" in
14415 '')     set try -DINT16
14416         if eval $compile; then
14417                 case "`$run ./try`" in
14418                 int16_t)
14419                         i16type=int16_t
14420                         u16type=uint16_t
14421                         i16size=2
14422                         u16size=2
14423                         ;;
14424                 esac
14425         fi
14426         ;;
14427 esac
14428 case "$i16type" in
14429 '')     if $test $shortsize -ge 2; then
14430                 i16type=short
14431                 u16type="unsigned short"
14432                 i16size=$shortsize
14433                 u16size=$shortsize
14434         fi
14435         ;;
14436 esac
14437
14438 case "$i32type" in
14439 '')     case "$longsize" in
14440         4)      i32type=long
14441                 u32type="unsigned long"
14442                 i32size=$longsize
14443                 u32size=$longsize
14444                 ;;
14445         *)      case "$intsize" in
14446                 4)      i32type=int
14447                         u32type="unsigned int"
14448                         i32size=$intsize
14449                         u32size=$intsize
14450                         ;;
14451                 esac
14452                 ;;
14453         esac
14454         ;;
14455 esac
14456 case "$i32type" in
14457 '')     set try -DINT32
14458         if eval $compile; then
14459                 case "`$run ./try`" in
14460                 int32_t)
14461                         i32type=int32_t
14462                         u32type=uint32_t
14463                         i32size=4
14464                         u32size=4
14465                         ;;
14466                 esac
14467         fi
14468         ;;
14469 esac
14470 case "$i32type" in
14471 '')     if $test $intsize -ge 4; then
14472                 i32type=int
14473                 u32type="unsigned int"
14474                 i32size=$intsize
14475                 u32size=$intsize
14476         fi
14477         ;;
14478 esac
14479
14480 case "$i64type" in
14481 '')     case "$d_quad:$quadtype" in
14482         define:?*)
14483                 i64type="$quadtype"
14484                 u64type="$uquadtype"
14485                 i64size=8
14486                 u64size=8
14487                 ;;
14488         esac
14489         ;;
14490 esac
14491
14492 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14493 : volatile so that the compiler has to store it out to memory.
14494 if test X"$d_volatile" = X"$define"; then
14495         volatile=volatile
14496 fi
14497 $cat <<EOP >try.c
14498 #include <stdio.h>
14499 #$i_stdlib I_STDLIB
14500 #ifdef I_STDLIB
14501 #include <stdlib.h>
14502 #endif
14503 #include <sys/types.h>
14504 #include <signal.h>
14505 #ifdef SIGFPE
14506 $volatile int bletched = 0;
14507 $signal_t blech(s) int s; { bletched = 1; }
14508 #endif
14509 int main() {
14510     $uvtype u = 0;
14511     $nvtype d;
14512     int     n = 8 * $uvsize;
14513     int     i;
14514 #ifdef SIGFPE
14515     signal(SIGFPE, blech);
14516 #endif
14517
14518     for (i = 0; i < n; i++) {
14519       u = u << 1 | ($uvtype)1;
14520       d = ($nvtype)u;
14521       if (($uvtype)d != u)
14522         break;
14523       if (d <= 0)
14524         break;
14525       d = ($nvtype)(u - 1);
14526       if (($uvtype)d != (u - 1))
14527         break;
14528 #ifdef SIGFPE
14529       if (bletched) {
14530         break;
14531 #endif
14532       } 
14533     }
14534     printf("%d\n", ((i == n) ? -n : i));
14535     exit(0);
14536 }
14537 EOP
14538 set try
14539
14540 d_nv_preserves_uv="$undef"
14541 if eval $compile; then
14542         nv_preserves_uv_bits="`$run ./try`"
14543 fi
14544 case "$nv_preserves_uv_bits" in
14545 \-[1-9]*)       
14546         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14547         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14548         d_nv_preserves_uv="$define"
14549         ;;
14550 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14551         d_nv_preserves_uv="$undef" ;;
14552 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14553         nv_preserves_uv_bits="$undef" ;;
14554 esac
14555
14556 $rm -f try.* try
14557
14558
14559 : check for off64_t
14560 echo " "
14561 echo "Checking to see if you have off64_t..." >&4
14562 $cat >try.c <<EOCP
14563 #include <sys/types.h>
14564 #include <unistd.h>
14565 int main() { off64_t x = 7; }
14566 EOCP
14567 set try
14568 if eval $compile; then
14569         val="$define"
14570         echo "You have off64_t."
14571 else
14572         val="$undef"
14573         echo "You do not have off64_t."
14574         case "$lseeksize" in
14575         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14576         esac
14577 fi
14578 $rm -f try.* try
14579 set d_off64_t
14580 eval $setvar
14581
14582 : how to create joinable pthreads
14583 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14584         echo " "
14585         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14586         $cat >try.c <<'EOCP'
14587 #include <pthread.h>
14588 int main() {
14589     int detachstate = JOINABLE;
14590 }
14591 EOCP
14592         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14593         if eval $compile; then
14594                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14595                 val="$undef" # Yes, undef.
14596                 set d_old_pthread_create_joinable
14597                 eval $setvar
14598                 val=""
14599                 set old_pthread_create_joinable
14600                 eval $setvar
14601         else
14602                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14603                 if eval $compile; then
14604                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14605                         val="$define"
14606                         set d_old_pthread_create_joinable
14607                         eval $setvar
14608                         val=PTHREAD_CREATE_UNDETACHED
14609                         set old_pthread_create_joinable
14610                         eval $setvar
14611                 else            
14612                         set try -DJOINABLE=__UNDETACHED
14613                         if eval $compile; then
14614                                 echo "You seem to use __UNDETACHED." >&4
14615                                 val="$define"
14616                                 set d_old_pthread_create_joinable
14617                                 eval $setvar
14618                                 val=__UNDETACHED
14619                                 set old_pthread_create_joinable
14620                                 eval $setvar
14621                         else
14622                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14623                                 val="$define"
14624                                 set d_old_pthread_create_joinable
14625                                 eval $setvar
14626                                 val=0
14627                                 set old_pthread_create_joinable
14628                                 eval $setvar
14629                         fi
14630                 fi
14631         fi
14632         $rm -f try try.*
14633 else
14634     d_old_pthread_create_joinable="$undef"
14635     old_pthread_create_joinable=""
14636 fi
14637
14638 : see if pause exists
14639 set pause d_pause
14640 eval $inlibc
14641
14642 : see if pipe exists
14643 set pipe d_pipe
14644 eval $inlibc
14645
14646 : see if poll exists
14647 set poll d_poll
14648 eval $inlibc
14649
14650 : see if readlink exists
14651 set readlink d_readlink
14652 eval $inlibc
14653
14654 echo " "
14655 procselfexe=''
14656 val="$undef"
14657 case "$d_readlink" in
14658 "$define")
14659         if $issymlink /proc/self/exe ; then
14660                 $ls -l /proc/self/exe > reflect
14661                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14662                         echo "You have Linux-like /proc/self/exe."
14663                         procselfexe='"/proc/self/exe"'
14664                         val="$define"
14665                 fi
14666         fi
14667         if $issymlink /proc/curproc/file ; then
14668                 $ls -l /proc/curproc/file > reflect
14669                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14670                         echo "You have BSD-like /proc/curproc/file."
14671                         procselfexe='"/proc/curproc/file"'
14672                         val="$define"
14673                 fi
14674         fi
14675         ;;
14676 esac
14677 $rm -f reflect
14678 set d_procselfexe
14679 eval $setvar
14680
14681 : see whether the pthread_atfork exists
14682 $cat >try.c <<EOP
14683 #include <pthread.h>
14684 #include <stdio.h>
14685 int main() {
14686 #ifdef  PTHREAD_ATFORK
14687         pthread_atfork(NULL,NULL,NULL);
14688 #endif
14689 }
14690 EOP
14691
14692 : see if pthread_atfork exists
14693 set try -DPTHREAD_ATFORK
14694 if eval $compile; then
14695     val="$define"
14696 else
14697     val="$undef"
14698 fi
14699 case "$usethreads" in
14700 $define)
14701         case "$val" in
14702         $define) echo 'pthread_atfork found.' >&4        ;;
14703         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14704         esac
14705 esac
14706 set d_pthread_atfork
14707 eval $setvar
14708
14709 : see if pthread_attr_setscope exists
14710 set pthread_attr_setscope d_pthread_attr_setscope
14711 eval $inlibc
14712
14713
14714 : see whether the various POSIXish _yields exist
14715 $cat >try.c <<EOP
14716 #include <pthread.h>
14717 #include <stdio.h>
14718 int main() {
14719 #ifdef SCHED_YIELD
14720         sched_yield();
14721 #else
14722 #ifdef PTHREAD_YIELD
14723         pthread_yield();
14724 #else
14725 #ifdef PTHREAD_YIELD_NULL
14726         pthread_yield(NULL);
14727 #endif
14728 #endif
14729 #endif
14730 }
14731 EOP
14732 : see if sched_yield exists
14733 set try -DSCHED_YIELD
14734 if eval $compile; then
14735     val="$define"
14736     sched_yield='sched_yield()'
14737 else
14738     val="$undef"
14739 fi
14740 case "$usethreads" in
14741 $define)
14742         case "$val" in
14743         $define) echo 'sched_yield() found.' >&4        ;;
14744         *)       echo 'sched_yield() NOT found.' >&4    ;;
14745         esac
14746 esac
14747 set d_sched_yield
14748 eval $setvar
14749
14750 : see if pthread_yield exists
14751 set try -DPTHREAD_YIELD
14752 if eval $compile; then
14753     val="$define"
14754     case "$sched_yield" in
14755     '') sched_yield='pthread_yield()' ;;
14756     esac
14757 else
14758     set try -DPTHREAD_YIELD_NULL
14759     if eval $compile; then
14760         val="$define"
14761         case "$sched_yield" in
14762         '') sched_yield='pthread_yield(NULL)' ;;
14763         esac
14764     else
14765         val="$undef"
14766     fi
14767 fi
14768 case "$usethreads" in
14769 $define)
14770         case "$val" in
14771         $define) echo 'pthread_yield() found.' >&4      ;;
14772         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14773         esac
14774         ;;
14775 esac
14776 set d_pthread_yield
14777 eval $setvar
14778
14779 case "$sched_yield" in
14780 '') sched_yield=undef ;;
14781 esac
14782
14783 $rm -f try try.*
14784
14785 : see if random_r exists
14786 set random_r d_random_r
14787 eval $inlibc
14788 case "$d_random_r" in
14789 "$define")
14790         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14791         case "$d_random_r_proto:$usethreads" in
14792         ":define")      d_random_r_proto=define
14793                 set d_random_r_proto random_r $hdrs
14794                 eval $hasproto ;;
14795         *)      ;;
14796         esac
14797         case "$d_random_r_proto" in
14798         define)
14799         case "$random_r_proto" in
14800         ''|0) try='int random_r(int*, struct random_data*);'
14801         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14802         esac
14803         case "$random_r_proto" in
14804         ''|0) try='int random_r(long*, struct random_data*);'
14805         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14806         esac
14807         case "$random_r_proto" in
14808         ''|0) try='int random_r(struct random_data*, int32_t*);'
14809         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14810         esac
14811         case "$random_r_proto" in
14812         ''|0)   d_random_r=undef
14813                 random_r_proto=0
14814                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14815         * )     case "$random_r_proto" in
14816                 REENTRANT_PROTO*) ;;
14817                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14818                 esac
14819                 echo "Prototype: $try" ;;
14820         esac
14821         ;;
14822         *)      case "$usethreads" in
14823                 define) echo "random_r has no prototype, not using it." >&4 ;;
14824                 esac
14825                 d_random_r=undef
14826                 random_r_proto=0
14827                 ;;
14828         esac
14829         ;;
14830 *)      random_r_proto=0
14831         ;;
14832 esac
14833
14834 : see if readdir and friends exist
14835 set readdir d_readdir
14836 eval $inlibc
14837 set seekdir d_seekdir
14838 eval $inlibc
14839 set telldir d_telldir
14840 eval $inlibc
14841 set rewinddir d_rewinddir
14842 eval $inlibc
14843
14844 : see if readdir64_r exists
14845 set readdir64_r d_readdir64_r
14846 eval $inlibc
14847 case "$d_readdir64_r" in
14848 "$define")
14849         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14850         case "$d_readdir64_r_proto:$usethreads" in
14851         ":define")      d_readdir64_r_proto=define
14852                 set d_readdir64_r_proto readdir64_r $hdrs
14853                 eval $hasproto ;;
14854         *)      ;;
14855         esac
14856         case "$d_readdir64_r_proto" in
14857         define)
14858         case "$readdir64_r_proto" in
14859         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14860         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14861         esac
14862         case "$readdir64_r_proto" in
14863         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14864         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14865         esac
14866         case "$readdir64_r_proto" in
14867         ''|0)   d_readdir64_r=undef
14868                 readdir64_r_proto=0
14869                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14870         * )     case "$readdir64_r_proto" in
14871                 REENTRANT_PROTO*) ;;
14872                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14873                 esac
14874                 echo "Prototype: $try" ;;
14875         esac
14876         ;;
14877         *)      case "$usethreads" in
14878                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14879                 esac
14880                 d_readdir64_r=undef
14881                 readdir64_r_proto=0
14882                 ;;
14883         esac
14884         ;;
14885 *)      readdir64_r_proto=0
14886         ;;
14887 esac
14888
14889 : see if readdir_r exists
14890 set readdir_r d_readdir_r
14891 eval $inlibc
14892 case "$d_readdir_r" in
14893 "$define")
14894         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14895         case "$d_readdir_r_proto:$usethreads" in
14896         ":define")      d_readdir_r_proto=define
14897                 set d_readdir_r_proto readdir_r $hdrs
14898                 eval $hasproto ;;
14899         *)      ;;
14900         esac
14901         case "$d_readdir_r_proto" in
14902         define)
14903         case "$readdir_r_proto" in
14904         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14905         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14906         esac
14907         case "$readdir_r_proto" in
14908         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14909         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14910         esac
14911         case "$readdir_r_proto" in
14912         ''|0)   d_readdir_r=undef
14913                 readdir_r_proto=0
14914                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14915         * )     case "$readdir_r_proto" in
14916                 REENTRANT_PROTO*) ;;
14917                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14918                 esac
14919                 echo "Prototype: $try" ;;
14920         esac
14921         ;;
14922         *)      case "$usethreads" in
14923                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14924                 esac
14925                 d_readdir_r=undef
14926                 readdir_r_proto=0
14927                 ;;
14928         esac
14929         ;;
14930 *)      readdir_r_proto=0
14931         ;;
14932 esac
14933
14934 : see if readv exists
14935 set readv d_readv
14936 eval $inlibc
14937
14938 : see if recvmsg exists
14939 set recvmsg d_recvmsg
14940 eval $inlibc
14941
14942 : see if rename exists
14943 set rename d_rename
14944 eval $inlibc
14945
14946 : see if rmdir exists
14947 set rmdir d_rmdir
14948 eval $inlibc
14949
14950 : see if memory.h is available.
14951 val=''
14952 set memory.h val
14953 eval $inhdr
14954
14955 : See if it conflicts with string.h
14956 case "$val" in
14957 $define)
14958         case "$strings" in
14959         '') ;;
14960         *)
14961                 $cppstdin $cppflags $cppminus < $strings > mem.h
14962                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14963                         echo " "
14964                         echo "We won't be including <memory.h>."
14965                         val="$undef"
14966                 fi
14967                 $rm -f mem.h
14968                 ;;
14969         esac
14970 esac
14971 set i_memory
14972 eval $setvar
14973
14974 : can bcopy handle overlapping blocks?
14975 echo " "
14976 val="$undef"
14977 case "$d_memmove" in
14978 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14979 *)      case "$d_bcopy" in
14980         "$define")
14981                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
14982                 $cat >try.c <<EOCP
14983 #$i_memory I_MEMORY
14984 #$i_stdlib I_STDLIB
14985 #$i_string I_STRING
14986 #$i_unistd I_UNISTD
14987 EOCP
14988         $cat >>try.c <<'EOCP'
14989 #include <stdio.h>
14990 #ifdef I_MEMORY
14991 #  include <memory.h>
14992 #endif
14993 #ifdef I_STDLIB
14994 #  include <stdlib.h>
14995 #endif
14996 #ifdef I_STRING
14997 #  include <string.h>
14998 #else
14999 #  include <strings.h>
15000 #endif
15001 #ifdef I_UNISTD
15002 #  include <unistd.h>  /* Needed for NetBSD */
15003 #endif
15004 int main()
15005 {
15006 char buf[128], abc[128];
15007 char *b;
15008 int len;
15009 int off;
15010 int align;
15011
15012 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15013    try to store the string in read-only memory. */
15014 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15015
15016 for (align = 7; align >= 0; align--) {
15017         for (len = 36; len; len--) {
15018                 b = buf+align;
15019                 bcopy(abc, b, len);
15020                 for (off = 1; off <= len; off++) {
15021                         bcopy(b, b+off, len);
15022                         bcopy(b+off, b, len);
15023                         if (bcmp(b, abc, len))
15024                                 exit(1);
15025                 }
15026         }
15027 }
15028 exit(0);
15029 }
15030 EOCP
15031                 set try
15032                 if eval $compile_ok; then
15033                         if ./try 2>/dev/null; then
15034                                 echo "Yes, it can."
15035                                 val="$define"
15036                         else
15037                                 echo "It can't, sorry."
15038                         fi
15039                 else
15040                         echo "(I can't compile the test program, so we'll assume not...)"
15041                 fi
15042                 ;;
15043         esac
15044         $rm -f try.* try core
15045         ;;
15046 esac
15047 set d_safebcpy
15048 eval $setvar
15049
15050 : can memcpy handle overlapping blocks?
15051 echo " "
15052 val="$undef"
15053 case "$d_memmove" in
15054 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15055 *)      case "$d_memcpy" in
15056         "$define")
15057                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15058                 $cat >try.c <<EOCP
15059 #$i_memory I_MEMORY
15060 #$i_stdlib I_STDLIB
15061 #$i_string I_STRING
15062 #$i_unistd I_UNISTD
15063 EOCP
15064         $cat >>try.c <<'EOCP'
15065 #include <stdio.h>
15066 #ifdef I_MEMORY
15067 #  include <memory.h>
15068 #endif
15069 #ifdef I_STDLIB
15070 #  include <stdlib.h>
15071 #endif
15072 #ifdef I_STRING
15073 #  include <string.h>
15074 #else
15075 #  include <strings.h>
15076 #endif
15077 #ifdef I_UNISTD
15078 #  include <unistd.h>  /* Needed for NetBSD */
15079 #endif
15080 int main()
15081 {
15082 char buf[128], abc[128];
15083 char *b;
15084 int len;
15085 int off;
15086 int align;
15087
15088 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15089    try to store the string in read-only memory. */
15090 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15091
15092 for (align = 7; align >= 0; align--) {
15093         for (len = 36; len; len--) {
15094                 b = buf+align;
15095                 memcpy(b, abc, len);
15096                 for (off = 1; off <= len; off++) {
15097                         memcpy(b+off, b, len);
15098                         memcpy(b, b+off, len);
15099                         if (memcmp(b, abc, len))
15100                                 exit(1);
15101                 }
15102         }
15103 }
15104 exit(0);
15105 }
15106 EOCP
15107                 set try
15108                 if eval $compile_ok; then
15109                         if ./try 2>/dev/null; then
15110                                 echo "Yes, it can."
15111                                 val="$define"
15112                         else
15113                                 echo "It can't, sorry."
15114                         fi
15115                 else
15116                         echo "(I can't compile the test program, so we'll assume not...)"
15117                 fi
15118                 ;;
15119         esac
15120         $rm -f try.* try core
15121         ;;
15122 esac
15123 set d_safemcpy
15124 eval $setvar
15125
15126 : can memcmp be trusted to compare relative magnitude?
15127 val="$undef"
15128 case "$d_memcmp" in
15129 "$define")
15130         echo " "
15131         echo "Checking if your memcmp() can compare relative magnitude..." >&4
15132         $cat >try.c <<EOCP
15133 #$i_memory I_MEMORY
15134 #$i_stdlib I_STDLIB
15135 #$i_string I_STRING
15136 #$i_unistd I_UNISTD
15137 EOCP
15138         $cat >>try.c <<'EOCP'
15139 #include <stdio.h>
15140 #ifdef I_MEMORY
15141 #  include <memory.h>
15142 #endif
15143 #ifdef I_STDLIB
15144 #  include <stdlib.h>
15145 #endif
15146 #ifdef I_STRING
15147 #  include <string.h>
15148 #else
15149 #  include <strings.h>
15150 #endif
15151 #ifdef I_UNISTD
15152 #  include <unistd.h>  /* Needed for NetBSD */
15153 #endif
15154 int main()
15155 {
15156 char a = -1;
15157 char b = 0;
15158 if ((a < b) && memcmp(&a, &b, 1) < 0)
15159         exit(1);
15160 exit(0);
15161 }
15162 EOCP
15163         set try
15164         if eval $compile_ok; then
15165                 if $run ./try 2>/dev/null; then
15166                         echo "Yes, it can."
15167                         val="$define"
15168                 else
15169                         echo "No, it can't (it uses signed chars)."
15170                 fi
15171         else
15172                 echo "(I can't compile the test program, so we'll assume not...)"
15173         fi
15174         ;;
15175 esac
15176 $rm -f try.* try core
15177 set d_sanemcmp
15178 eval $setvar
15179
15180 : see if prototype for sbrk is available
15181 echo " "
15182 set d_sbrkproto sbrk $i_unistd unistd.h
15183 eval $hasproto
15184
15185 : see if select exists
15186 set select d_select
15187 eval $inlibc
15188
15189 : see if semctl exists
15190 set semctl d_semctl
15191 eval $inlibc
15192
15193 : see if semget exists
15194 set semget d_semget
15195 eval $inlibc
15196
15197 : see if semop exists
15198 set semop d_semop
15199 eval $inlibc
15200
15201 : see how much of the 'sem*(2)' library is present.
15202 h_sem=true
15203 echo " "
15204 case "$d_semctl$d_semget$d_semop" in
15205 *"$undef"*) h_sem=false;;
15206 esac
15207 case "$osname" in
15208 freebsd)
15209     case "`ipcs 2>&1`" in
15210     "SVID messages"*"not configured"*)
15211         echo "Your $osname does not have the sem*(2) configured." >&4
15212         h_sem=false
15213         val="$undef"
15214         set semctl d_semctl
15215         eval $setvar
15216         set semget d_semget
15217         eval $setvar
15218         set semop d_semop
15219         eval $setvar
15220         ;;
15221     esac
15222     ;;
15223 esac
15224 : we could also check for sys/ipc.h ...
15225 if $h_sem && $test `./findhdr sys/sem.h`; then
15226         echo "You have the full sem*(2) library." >&4
15227         val="$define"
15228 else
15229         echo "You don't have the full sem*(2) library." >&4
15230         val="$undef"
15231 fi
15232 set d_sem
15233 eval $setvar
15234
15235 : see whether sys/sem.h defines union semun
15236 echo " "
15237 $cat > try.c <<'END'
15238 #include <sys/types.h>
15239 #include <sys/ipc.h>
15240 #include <sys/sem.h>
15241 int main () { union semun semun; semun.buf = 0; }
15242 END
15243 set try
15244 if eval $compile; then
15245     echo "You have union semun in <sys/sem.h>." >&4
15246     val="$define"
15247 else
15248     echo "You do not have union semun in <sys/sem.h>." >&4
15249     val="$undef"
15250 fi
15251 $rm -f try try.c
15252 set d_union_semun
15253 eval $setvar
15254
15255 : see how to do semctl IPC_STAT
15256 case "$d_sem" in
15257 $define)
15258     echo " "
15259     $cat > try.h <<END
15260 #ifndef S_IRUSR
15261 #   ifdef S_IREAD
15262 #       define S_IRUSR S_IREAD
15263 #       define S_IWUSR S_IWRITE
15264 #       define S_IXUSR S_IEXEC
15265 #   else
15266 #       define S_IRUSR 0400
15267 #       define S_IWUSR 0200
15268 #       define S_IXUSR 0100
15269 #   endif
15270 #   define S_IRGRP (S_IRUSR>>3)
15271 #   define S_IWGRP (S_IWUSR>>3)
15272 #   define S_IXGRP (S_IXUSR>>3)
15273 #   define S_IROTH (S_IRUSR>>6)
15274 #   define S_IWOTH (S_IWUSR>>6)
15275 #   define S_IXOTH (S_IXUSR>>6)
15276 #endif
15277 #ifndef S_IRWXU
15278 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15279 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15280 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15281 #endif
15282 END
15283     : see whether semctl IPC_STAT can use union semun
15284     val="$undef"
15285     case "$d_semctl_semun" in
15286     '')
15287       $cat > try.c <<END
15288 #include <sys/types.h>
15289 #include <sys/ipc.h>
15290 #include <sys/sem.h>
15291 #include <sys/stat.h>
15292 #include <stdio.h>
15293 #include <errno.h>
15294 #include "try.h"
15295 #ifndef errno
15296 extern int errno;
15297 #endif
15298 #$d_union_semun HAS_UNION_SEMUN
15299 int main() {
15300     union semun
15301 #ifndef HAS_UNION_SEMUN
15302     {
15303         int val;
15304         struct semid_ds *buf;
15305         unsigned short *array;
15306     }
15307 #endif
15308     arg;
15309     int sem, st;
15310
15311 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15312     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15313     if (sem > -1) {
15314         struct semid_ds argbuf;
15315         arg.buf = &argbuf;
15316 #       ifdef IPC_STAT
15317         st = semctl(sem, 0, IPC_STAT, arg);
15318         if (st == 0)
15319             printf("semun\n");
15320         else
15321 #       endif /* IPC_STAT */
15322             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15323 #       ifdef IPC_RMID
15324         if (semctl(sem, 0, IPC_RMID, arg) != 0)
15325 #       endif /* IPC_RMID */
15326             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15327     } else
15328 #endif /* IPC_PRIVATE && ... */
15329         printf("semget failed: errno = %d\n", errno);
15330   return 0;
15331 }
15332 END
15333       set try
15334       if eval $compile; then
15335           xxx=`$run ./try`
15336           case "$xxx" in
15337           semun) val="$define" ;;
15338           esac
15339       fi
15340       $rm -f try try.c
15341       ;;
15342     esac
15343     set d_semctl_semun
15344     eval $setvar
15345     case "$d_semctl_semun" in
15346     $define)
15347         echo "You can use union semun for semctl IPC_STAT." >&4
15348         also='also'
15349         ;;
15350     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15351         also=''
15352         ;;
15353     esac
15354
15355     : see whether semctl IPC_STAT can use struct semid_ds pointer
15356     val="$undef"
15357     case "$d_semctl_semid_ds" in
15358     '')
15359       $cat > try.c <<'END'
15360 #include <sys/types.h>
15361 #include <sys/ipc.h>
15362 #include <sys/sem.h>
15363 #include <sys/stat.h>
15364 #include "try.h"
15365 #include <stdio.h>
15366 #include <errno.h>
15367 #ifndef errno
15368 extern int errno;
15369 #endif
15370 int main() {
15371     struct semid_ds arg;
15372     int sem, st;
15373
15374 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15375     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15376     if (sem > -1) {
15377 #       ifdef IPC_STAT
15378         st = semctl(sem, 0, IPC_STAT, &arg);
15379         if (st == 0)
15380             printf("semid_ds\n");
15381         else
15382 #       endif /* IPC_STAT */
15383             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15384 #       ifdef IPC_RMID
15385         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15386 #       endif /* IPC_RMID */
15387             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15388     } else
15389 #endif /* IPC_PRIVATE && ... */
15390         printf("semget failed: errno = %d\n", errno);
15391
15392     return 0;
15393 }
15394 END
15395       set try
15396       if eval $compile; then
15397           xxx=`$run ./try`
15398           case "$xxx" in
15399           semid_ds) val="$define" ;;
15400           esac
15401       fi
15402       $rm -f try try.c
15403       ;;
15404     esac
15405     set d_semctl_semid_ds
15406     eval $setvar
15407     case "$d_semctl_semid_ds" in
15408     $define)
15409         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15410         ;;
15411     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15412         ;;
15413     esac
15414     $rm -f try.h
15415     ;;
15416 *)  val="$undef"
15417
15418     # We do not have the full sem*(2) library, so assume we can not
15419     # use either.
15420
15421     set d_semctl_semun
15422     eval $setvar
15423
15424     set d_semctl_semid_ds
15425     eval $setvar
15426     ;;
15427 esac
15428
15429 : see if sendmsg exists
15430 set sendmsg d_sendmsg
15431 eval $inlibc
15432
15433 : see if setegid exists
15434 set setegid d_setegid
15435 eval $inlibc
15436
15437 : see if seteuid exists
15438 set seteuid d_seteuid
15439 eval $inlibc
15440
15441 : see if setgrent exists
15442 set setgrent d_setgrent
15443 eval $inlibc
15444
15445 : see if setgrent_r exists
15446 set setgrent_r d_setgrent_r
15447 eval $inlibc
15448 case "$d_setgrent_r" in
15449 "$define")
15450         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15451         case "$d_setgrent_r_proto:$usethreads" in
15452         ":define")      d_setgrent_r_proto=define
15453                 set d_setgrent_r_proto setgrent_r $hdrs
15454                 eval $hasproto ;;
15455         *)      ;;
15456         esac
15457         case "$d_setgrent_r_proto" in
15458         define)
15459         case "$setgrent_r_proto" in
15460         ''|0) try='int setgrent_r(FILE**);'
15461         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15462         esac
15463         case "$setgrent_r_proto" in
15464         ''|0) try='void setgrent_r(FILE**);'
15465         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15466         esac
15467         case "$setgrent_r_proto" in
15468         ''|0)   d_setgrent_r=undef
15469                 setgrent_r_proto=0
15470                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15471         * )     case "$setgrent_r_proto" in
15472                 REENTRANT_PROTO*) ;;
15473                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15474                 esac
15475                 echo "Prototype: $try" ;;
15476         esac
15477         ;;
15478         *)      case "$usethreads" in
15479                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15480                 esac
15481                 d_setgrent_r=undef
15482                 setgrent_r_proto=0
15483                 ;;
15484         esac
15485         ;;
15486 *)      setgrent_r_proto=0
15487         ;;
15488 esac
15489
15490 : see if sethostent exists
15491 set sethostent d_sethent
15492 eval $inlibc
15493
15494 : see if sethostent_r exists
15495 set sethostent_r d_sethostent_r
15496 eval $inlibc
15497 case "$d_sethostent_r" in
15498 "$define")
15499         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15500         case "$d_sethostent_r_proto:$usethreads" in
15501         ":define")      d_sethostent_r_proto=define
15502                 set d_sethostent_r_proto sethostent_r $hdrs
15503                 eval $hasproto ;;
15504         *)      ;;
15505         esac
15506         case "$d_sethostent_r_proto" in
15507         define)
15508         case "$sethostent_r_proto" in
15509         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15510         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15511         esac
15512         case "$sethostent_r_proto" in
15513         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15514         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15515         esac
15516         case "$sethostent_r_proto" in
15517         ''|0)   d_sethostent_r=undef
15518                 sethostent_r_proto=0
15519                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15520         * )     case "$sethostent_r_proto" in
15521                 REENTRANT_PROTO*) ;;
15522                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15523                 esac
15524                 echo "Prototype: $try" ;;
15525         esac
15526         ;;
15527         *)      case "$usethreads" in
15528                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15529                 esac
15530                 d_sethostent_r=undef
15531                 sethostent_r_proto=0
15532                 ;;
15533         esac
15534         ;;
15535 *)      sethostent_r_proto=0
15536         ;;
15537 esac
15538
15539 : see if setitimer exists
15540 set setitimer d_setitimer
15541 eval $inlibc
15542
15543 : see if setlinebuf exists
15544 set setlinebuf d_setlinebuf
15545 eval $inlibc
15546
15547 : see if setlocale exists
15548 set setlocale d_setlocale
15549 eval $inlibc
15550
15551 : see if locale.h is available
15552 set locale.h i_locale
15553 eval $inhdr
15554
15555 : see if setlocale_r exists
15556 set setlocale_r d_setlocale_r
15557 eval $inlibc
15558 case "$d_setlocale_r" in
15559 "$define")
15560         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15561         case "$d_setlocale_r_proto:$usethreads" in
15562         ":define")      d_setlocale_r_proto=define
15563                 set d_setlocale_r_proto setlocale_r $hdrs
15564                 eval $hasproto ;;
15565         *)      ;;
15566         esac
15567         case "$d_setlocale_r_proto" in
15568         define)
15569         case "$setlocale_r_proto" in
15570         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15571         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15572         esac
15573         case "$setlocale_r_proto" in
15574         ''|0)   d_setlocale_r=undef
15575                 setlocale_r_proto=0
15576                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15577         * )     case "$setlocale_r_proto" in
15578                 REENTRANT_PROTO*) ;;
15579                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15580                 esac
15581                 echo "Prototype: $try" ;;
15582         esac
15583         ;;
15584         *)      case "$usethreads" in
15585                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15586                 esac
15587                 d_setlocale_r=undef
15588                 setlocale_r_proto=0
15589                 ;;
15590         esac
15591         ;;
15592 *)      setlocale_r_proto=0
15593         ;;
15594 esac
15595
15596 : see if setnetent exists
15597 set setnetent d_setnent
15598 eval $inlibc
15599
15600 : see if setnetent_r exists
15601 set setnetent_r d_setnetent_r
15602 eval $inlibc
15603 case "$d_setnetent_r" in
15604 "$define")
15605         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15606         case "$d_setnetent_r_proto:$usethreads" in
15607         ":define")      d_setnetent_r_proto=define
15608                 set d_setnetent_r_proto setnetent_r $hdrs
15609                 eval $hasproto ;;
15610         *)      ;;
15611         esac
15612         case "$d_setnetent_r_proto" in
15613         define)
15614         case "$setnetent_r_proto" in
15615         ''|0) try='int setnetent_r(int, struct netent_data*);'
15616         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15617         esac
15618         case "$setnetent_r_proto" in
15619         ''|0) try='void setnetent_r(int, struct netent_data*);'
15620         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15621         esac
15622         case "$setnetent_r_proto" in
15623         ''|0)   d_setnetent_r=undef
15624                 setnetent_r_proto=0
15625                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15626         * )     case "$setnetent_r_proto" in
15627                 REENTRANT_PROTO*) ;;
15628                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15629                 esac
15630                 echo "Prototype: $try" ;;
15631         esac
15632         ;;
15633         *)      case "$usethreads" in
15634                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15635                 esac
15636                 d_setnetent_r=undef
15637                 setnetent_r_proto=0
15638                 ;;
15639         esac
15640         ;;
15641 *)      setnetent_r_proto=0
15642         ;;
15643 esac
15644
15645 : see if setprotoent exists
15646 set setprotoent d_setpent
15647 eval $inlibc
15648
15649 : see if setpgid exists
15650 set setpgid d_setpgid
15651 eval $inlibc
15652
15653 : see if setpgrp2 exists
15654 set setpgrp2 d_setpgrp2
15655 eval $inlibc
15656
15657 : see if setpriority exists
15658 set setpriority d_setprior
15659 eval $inlibc
15660
15661 : see if setproctitle exists
15662 set setproctitle d_setproctitle
15663 eval $inlibc
15664
15665 : see if setprotoent_r exists
15666 set setprotoent_r d_setprotoent_r
15667 eval $inlibc
15668 case "$d_setprotoent_r" in
15669 "$define")
15670         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15671         case "$d_setprotoent_r_proto:$usethreads" in
15672         ":define")      d_setprotoent_r_proto=define
15673                 set d_setprotoent_r_proto setprotoent_r $hdrs
15674                 eval $hasproto ;;
15675         *)      ;;
15676         esac
15677         case "$d_setprotoent_r_proto" in
15678         define)
15679         case "$setprotoent_r_proto" in
15680         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15681         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15682         esac
15683         case "$setprotoent_r_proto" in
15684         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15685         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15686         esac
15687         case "$setprotoent_r_proto" in
15688         ''|0)   d_setprotoent_r=undef
15689                 setprotoent_r_proto=0
15690                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15691         * )     case "$setprotoent_r_proto" in
15692                 REENTRANT_PROTO*) ;;
15693                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15694                 esac
15695                 echo "Prototype: $try" ;;
15696         esac
15697         ;;
15698         *)      case "$usethreads" in
15699                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15700                 esac
15701                 d_setprotoent_r=undef
15702                 setprotoent_r_proto=0
15703                 ;;
15704         esac
15705         ;;
15706 *)      setprotoent_r_proto=0
15707         ;;
15708 esac
15709
15710 : see if setpwent exists
15711 set setpwent d_setpwent
15712 eval $inlibc
15713
15714 : see if setpwent_r exists
15715 set setpwent_r d_setpwent_r
15716 eval $inlibc
15717 case "$d_setpwent_r" in
15718 "$define")
15719         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15720         case "$d_setpwent_r_proto:$usethreads" in
15721         ":define")      d_setpwent_r_proto=define
15722                 set d_setpwent_r_proto setpwent_r $hdrs
15723                 eval $hasproto ;;
15724         *)      ;;
15725         esac
15726         case "$d_setpwent_r_proto" in
15727         define)
15728         case "$setpwent_r_proto" in
15729         ''|0) try='int setpwent_r(FILE**);'
15730         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15731         esac
15732         case "$setpwent_r_proto" in
15733         ''|0) try='void setpwent_r(FILE**);'
15734         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15735         esac
15736         case "$setpwent_r_proto" in
15737         ''|0)   d_setpwent_r=undef
15738                 setpwent_r_proto=0
15739                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15740         * )     case "$setpwent_r_proto" in
15741                 REENTRANT_PROTO*) ;;
15742                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15743                 esac
15744                 echo "Prototype: $try" ;;
15745         esac
15746         ;;
15747         *)      case "$usethreads" in
15748                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15749                 esac
15750                 d_setpwent_r=undef
15751                 setpwent_r_proto=0
15752                 ;;
15753         esac
15754         ;;
15755 *)      setpwent_r_proto=0
15756         ;;
15757 esac
15758
15759 : see if setregid exists
15760 set setregid d_setregid
15761 eval $inlibc
15762 set setresgid d_setresgid
15763 eval $inlibc
15764
15765 : see if setreuid exists
15766 set setreuid d_setreuid
15767 eval $inlibc
15768 set setresuid d_setresuid
15769 eval $inlibc
15770
15771 : see if setrgid exists
15772 set setrgid d_setrgid
15773 eval $inlibc
15774
15775 : see if setruid exists
15776 set setruid d_setruid
15777 eval $inlibc
15778
15779 : see if setservent exists
15780 set setservent d_setsent
15781 eval $inlibc
15782
15783 : see if setservent_r exists
15784 set setservent_r d_setservent_r
15785 eval $inlibc
15786 case "$d_setservent_r" in
15787 "$define")
15788         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15789         case "$d_setservent_r_proto:$usethreads" in
15790         ":define")      d_setservent_r_proto=define
15791                 set d_setservent_r_proto setservent_r $hdrs
15792                 eval $hasproto ;;
15793         *)      ;;
15794         esac
15795         case "$d_setservent_r_proto" in
15796         define)
15797         case "$setservent_r_proto" in
15798         ''|0) try='int setservent_r(int, struct servent_data*);'
15799         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15800         esac
15801         case "$setservent_r_proto" in
15802         ''|0) try='void setservent_r(int, struct servent_data*);'
15803         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15804         esac
15805         case "$setservent_r_proto" in
15806         ''|0)   d_setservent_r=undef
15807                 setservent_r_proto=0
15808                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15809         * )     case "$setservent_r_proto" in
15810                 REENTRANT_PROTO*) ;;
15811                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15812                 esac
15813                 echo "Prototype: $try" ;;
15814         esac
15815         ;;
15816         *)      case "$usethreads" in
15817                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15818                 esac
15819                 d_setservent_r=undef
15820                 setservent_r_proto=0
15821                 ;;
15822         esac
15823         ;;
15824 *)      setservent_r_proto=0
15825         ;;
15826 esac
15827
15828 : see if setsid exists
15829 set setsid d_setsid
15830 eval $inlibc
15831
15832 : see if setvbuf exists
15833 set setvbuf d_setvbuf
15834 eval $inlibc
15835
15836 : see if sfio.h is available
15837 set sfio.h i_sfio
15838 eval $inhdr
15839
15840
15841 : see if sfio library is available
15842 case "$i_sfio" in
15843 $define)
15844         val=''
15845         set sfreserve val
15846         eval $inlibc
15847         ;;
15848 *)
15849         val="$undef"
15850         ;;
15851 esac
15852 : Ok, but do we want to use it.
15853 case "$val" in
15854 $define)
15855         case "$usesfio" in
15856         true|$define|[yY]*) dflt='y';;
15857         *) dflt='n';;
15858         esac
15859         echo "$package can use the sfio library, but it is experimental."
15860         case "$useperlio" in
15861         "$undef")
15862             echo "For sfio also the PerlIO abstraction layer is needed."
15863             echo "Earlier you said you wouldn't want that."
15864             ;;
15865         esac
15866         rp="You seem to have sfio available, do you want to try using it?"
15867         . ./myread
15868         case "$ans" in
15869         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15870                 useperlio="$define"
15871                 val="$define"
15872                 ;;
15873         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15874                 val="$undef"
15875                 ;;
15876         esac
15877         ;;
15878 *)      case "$usesfio" in
15879         true|$define|[yY]*)
15880                 echo "Sorry, cannot find sfio on this machine." >&4
15881                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15882                 val="$undef"
15883                 ;;
15884         esac
15885         ;;
15886 esac
15887 set d_sfio
15888 eval $setvar
15889 case "$d_sfio" in
15890 $define) usesfio='true';;
15891 *) usesfio='false';;
15892 esac
15893 case "$d_sfio" in
15894 $define) ;;
15895 *)      : Remove sfio from list of libraries to use
15896         case "$libs" in
15897         *-lsfio*)
15898                 echo "Removing unneeded -lsfio from library list" >&4
15899                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15900                 shift
15901                 libs="$*"
15902                 echo "libs = $libs" >&4
15903                 ;;
15904         esac
15905 ;;
15906 esac
15907
15908
15909 : see if shmctl exists
15910 set shmctl d_shmctl
15911 eval $inlibc
15912
15913 : see if shmget exists
15914 set shmget d_shmget
15915 eval $inlibc
15916
15917 : see if shmat exists
15918 set shmat d_shmat
15919 eval $inlibc
15920 : see what shmat returns
15921 case "$d_shmat" in
15922 "$define")
15923         $cat >shmat.c <<'END'
15924 #include <sys/shm.h>
15925 void *shmat();
15926 END
15927         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15928                 shmattype='void *'
15929         else
15930                 shmattype='char *'
15931         fi
15932         echo "and it returns ($shmattype)." >&4
15933         : see if a prototype for shmat is available
15934         xxx=`./findhdr sys/shm.h`
15935         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15936         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15937                 val="$define"
15938         else
15939                 val="$undef"
15940         fi
15941         $rm -f shmat.[co]
15942         ;;
15943 *)
15944         val="$undef"
15945         ;;
15946 esac
15947 set d_shmatprototype
15948 eval $setvar
15949
15950 : see if shmdt exists
15951 set shmdt d_shmdt
15952 eval $inlibc
15953
15954 : see how much of the 'shm*(2)' library is present.
15955 h_shm=true
15956 echo " "
15957 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15958 *"$undef"*) h_shm=false;;
15959 esac
15960 case "$osname" in
15961 freebsd)
15962     case "`ipcs 2>&1`" in
15963     "SVID shared memory"*"not configured"*)
15964         echo "Your $osname does not have the shm*(2) configured." >&4
15965         h_shm=false
15966         val="$undef"
15967         set shmctl d_shmctl
15968         evat $setvar
15969         set shmget d_shmget
15970         evat $setvar
15971         set shmat d_shmat
15972         evat $setvar
15973         set shmdt d_shmdt
15974         evat $setvar
15975         ;;
15976     esac
15977     ;;
15978 esac
15979 : we could also check for sys/ipc.h ...
15980 if $h_shm && $test `./findhdr sys/shm.h`; then
15981         echo "You have the full shm*(2) library." >&4
15982         val="$define"
15983 else
15984         echo "You don't have the full shm*(2) library." >&4
15985         val="$undef"
15986 fi
15987 set d_shm
15988 eval $setvar
15989
15990 echo " "
15991 : see if we have sigaction
15992 if set sigaction val -f d_sigaction; eval $csym; $val; then
15993         echo 'sigaction() found.' >&4
15994         $cat > try.c <<EOP
15995 #include <stdio.h>
15996 #include <sys/types.h>
15997 #include <signal.h>
15998 #$i_stdlib I_STDLIB
15999 #ifdef I_STDLIB
16000 #include <stdlib.h>
16001 #endif
16002 int main()
16003 {
16004     struct sigaction act, oact;
16005     act.sa_flags = 0;
16006     oact.sa_handler = 0;
16007     /* so that act and oact are used */
16008     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16009 }
16010 EOP
16011         set try
16012         if eval $compile_ok; then
16013                 val="$define"
16014         else
16015                 echo "But you don't seem to have a useable struct sigaction." >&4
16016                 val="$undef"
16017         fi
16018 else
16019         echo 'sigaction NOT found.' >&4
16020         val="$undef"
16021 fi
16022 set d_sigaction; eval $setvar
16023 $rm -f try try$_o try.c
16024
16025 : see if sigprocmask exists
16026 set sigprocmask d_sigprocmask
16027 eval $inlibc
16028
16029 : see if sigsetjmp exists
16030 echo " "
16031 case "$d_sigsetjmp" in
16032 '')
16033         $cat >try.c <<EOP
16034 #include <setjmp.h>
16035 #$i_stdlib I_STDLIB
16036 #ifdef I_STDLIB
16037 #include <stdlib.h>
16038 #endif
16039 sigjmp_buf env;
16040 int set = 1;
16041 int main()
16042 {
16043         if (sigsetjmp(env,1))
16044                 exit(set);
16045         set = 0;
16046         siglongjmp(env, 1);
16047         exit(1);
16048 }
16049 EOP
16050         set try
16051         if eval $compile; then
16052                 if $run ./try >/dev/null 2>&1; then
16053                         echo "POSIX sigsetjmp found." >&4
16054                         val="$define"
16055                 else
16056                         $cat >&4 <<EOM
16057 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16058 I'll ignore them.
16059 EOM
16060                         val="$undef"
16061                 fi
16062         else
16063                 echo "sigsetjmp not found." >&4
16064                 val="$undef"
16065         fi
16066         ;;
16067 *) val="$d_sigsetjmp"
16068         case "$d_sigsetjmp" in
16069         $define) echo "POSIX sigsetjmp found." >&4;;
16070         $undef) echo "sigsetjmp not found." >&4;;
16071         esac
16072         ;;
16073 esac
16074 set d_sigsetjmp
16075 eval $setvar
16076 $rm -f try.c try
16077
16078 : see if sockatmark exists
16079 set sockatmark d_sockatmark
16080 eval $inlibc
16081
16082 : see if prototype for sockatmark is available
16083 echo " "
16084 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16085 eval $hasproto
16086
16087 : see if socks5_init exists
16088 set socks5_init d_socks5_init
16089 eval $inlibc
16090
16091 : see if srand48_r exists
16092 set srand48_r d_srand48_r
16093 eval $inlibc
16094 case "$d_srand48_r" in
16095 "$define")
16096         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16097         case "$d_srand48_r_proto:$usethreads" in
16098         ":define")      d_srand48_r_proto=define
16099                 set d_srand48_r_proto srand48_r $hdrs
16100                 eval $hasproto ;;
16101         *)      ;;
16102         esac
16103         case "$d_srand48_r_proto" in
16104         define)
16105         case "$srand48_r_proto" in
16106         ''|0) try='int srand48_r(long, struct drand48_data*);'
16107         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16108         esac
16109         case "$srand48_r_proto" in
16110         ''|0)   d_srand48_r=undef
16111                 srand48_r_proto=0
16112                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16113         * )     case "$srand48_r_proto" in
16114                 REENTRANT_PROTO*) ;;
16115                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16116                 esac
16117                 echo "Prototype: $try" ;;
16118         esac
16119         ;;
16120         *)      case "$usethreads" in
16121                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16122                 esac
16123                 d_srand48_r=undef
16124                 srand48_r_proto=0
16125                 ;;
16126         esac
16127         ;;
16128 *)      srand48_r_proto=0
16129         ;;
16130 esac
16131
16132 : see if srandom_r exists
16133 set srandom_r d_srandom_r
16134 eval $inlibc
16135 case "$d_srandom_r" in
16136 "$define")
16137         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16138         case "$d_srandom_r_proto:$usethreads" in
16139         ":define")      d_srandom_r_proto=define
16140                 set d_srandom_r_proto srandom_r $hdrs
16141                 eval $hasproto ;;
16142         *)      ;;
16143         esac
16144         case "$d_srandom_r_proto" in
16145         define)
16146         case "$srandom_r_proto" in
16147         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16148         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16149         esac
16150         case "$srandom_r_proto" in
16151         ''|0)   d_srandom_r=undef
16152                 srandom_r_proto=0
16153                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16154         * )     case "$srandom_r_proto" in
16155                 REENTRANT_PROTO*) ;;
16156                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16157                 esac
16158                 echo "Prototype: $try" ;;
16159         esac
16160         ;;
16161         *)      case "$usethreads" in
16162                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16163                 esac
16164                 d_srandom_r=undef
16165                 srandom_r_proto=0
16166                 ;;
16167         esac
16168         ;;
16169 *)      srandom_r_proto=0
16170         ;;
16171 esac
16172
16173 : see if prototype for setresgid is available
16174 echo " "
16175 set d_sresgproto setresgid $i_unistd unistd.h
16176 eval $hasproto
16177
16178 : see if prototype for setresuid is available
16179 echo " "
16180 set d_sresuproto setresuid $i_unistd unistd.h
16181 eval $hasproto
16182
16183 : see if sys/stat.h is available
16184 set sys/stat.h i_sysstat
16185 eval $inhdr
16186
16187
16188 : see if stat knows about block sizes
16189 echo " "
16190 echo "Checking to see if your struct stat has st_blocks field..." >&4
16191 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16192 eval $hasfield
16193
16194
16195 : see if this is a sys/vfs.h system
16196 set sys/vfs.h i_sysvfs
16197 eval $inhdr
16198
16199
16200 : see if this is a sys/statfs.h system
16201 set sys/statfs.h i_sysstatfs
16202 eval $inhdr
16203
16204
16205 echo " "
16206 echo "Checking to see if your system supports struct statfs..." >&4
16207 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
16208 eval $hasstruct
16209 case "$d_statfs_s" in
16210 "$define")      echo "Yes, it does."   ;;
16211 *)              echo "No, it doesn't." ;;
16212 esac
16213
16214
16215
16216 : see if struct statfs knows about f_flags
16217 case "$d_statfs_s" in
16218 define) 
16219         echo " "
16220         echo "Checking to see if your struct statfs has f_flags field..." >&4
16221         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
16222         eval $hasfield
16223         ;;
16224 *)      val="$undef"
16225         set d_statfs_f_flags
16226         eval $setvar
16227         ;;
16228 esac
16229 case "$d_statfs_f_flags" in
16230 "$define")      echo "Yes, it does."   ;;
16231 *)              echo "No, it doesn't." ;;
16232 esac
16233
16234 $cat >&4 <<EOM
16235 Checking how to access stdio streams by file descriptor number...
16236 EOM
16237 case "$stdio_stream_array" in
16238 '')     $cat >try.c <<EOCP
16239 #include <stdio.h>
16240 int main() {
16241   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16242     printf("yes\n");
16243 }
16244 EOCP
16245         for s in _iob __iob __sF
16246         do
16247                 set try -DSTDIO_STREAM_ARRAY=$s
16248                 if eval $compile; then
16249                         case "`$run ./try`" in
16250                         yes)    stdio_stream_array=$s; break ;;
16251                         esac
16252                 fi
16253         done
16254         $rm -f try.* try$exe_ext
16255 esac
16256 case "$stdio_stream_array" in
16257 '')     $cat >&4 <<EOM
16258 I can't figure out how to access stdio streams by file descriptor number.
16259 EOM
16260         d_stdio_stream_array="$undef"
16261         ;;
16262 *)      $cat >&4 <<EOM
16263 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16264 EOM
16265         d_stdio_stream_array="$define"
16266         ;;
16267 esac
16268
16269 : see if strcoll exists
16270 set strcoll d_strcoll
16271 eval $inlibc
16272
16273 : check for structure copying
16274 echo " "
16275 echo "Checking to see if your C compiler can copy structs..." >&4
16276 $cat >try.c <<'EOCP'
16277 int main()
16278 {
16279         struct blurfl {
16280                 int dyick;
16281         } foo, bar;
16282
16283         foo = bar;
16284 }
16285 EOCP
16286 if $cc -c try.c >/dev/null 2>&1 ; then
16287         val="$define"
16288         echo "Yup, it can."
16289 else
16290         val="$undef"
16291         echo "Nope, it can't."
16292 fi
16293 set d_strctcpy
16294 eval $setvar
16295 $rm -f try.*
16296
16297 : see if strerror and/or sys_errlist[] exist
16298 echo " "
16299 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16300     if set strerror val -f d_strerror; eval $csym; $val; then
16301                 echo 'strerror() found.' >&4
16302                 d_strerror="$define"
16303                 d_strerrm='strerror(e)'
16304                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16305                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16306                         d_syserrlst="$define"
16307                 else
16308                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16309                         d_syserrlst="$undef"
16310                 fi
16311     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16312                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16313                 echo 'strerror() found in string header.' >&4
16314                 d_strerror="$define"
16315                 d_strerrm='strerror(e)'
16316                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16317                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16318                                 d_syserrlst="$define"
16319                 else
16320                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16321                         d_syserrlst="$undef"
16322                 fi
16323     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16324                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16325                 d_strerror="$undef"
16326                 d_syserrlst="$define"
16327                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16328     else
16329                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16330                 d_strerror="$undef"
16331                 d_syserrlst="$undef"
16332                 d_strerrm='"unknown"'
16333     fi
16334 fi
16335
16336 : see if strerror_r exists
16337 set strerror_r d_strerror_r
16338 eval $inlibc
16339 case "$d_strerror_r" in
16340 "$define")
16341         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16342         case "$d_strerror_r_proto:$usethreads" in
16343         ":define")      d_strerror_r_proto=define
16344                 set d_strerror_r_proto strerror_r $hdrs
16345                 eval $hasproto ;;
16346         *)      ;;
16347         esac
16348         case "$d_strerror_r_proto" in
16349         define)
16350         case "$strerror_r_proto" in
16351         ''|0) try='int strerror_r(int, char*, size_t);'
16352         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16353         esac
16354         case "$strerror_r_proto" in
16355         ''|0) try='int strerror_r(int, char*, int);'
16356         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16357         esac
16358         case "$strerror_r_proto" in
16359         ''|0) try='char* strerror_r(int, char*, size_t);'
16360         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16361         esac
16362         case "$strerror_r_proto" in
16363         ''|0)   d_strerror_r=undef
16364                 strerror_r_proto=0
16365                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16366         * )     case "$strerror_r_proto" in
16367                 REENTRANT_PROTO*) ;;
16368                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16369                 esac
16370                 echo "Prototype: $try" ;;
16371         esac
16372         ;;
16373         *)      case "$usethreads" in
16374                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16375                 esac
16376                 d_strerror_r=undef
16377                 strerror_r_proto=0
16378                 ;;
16379         esac
16380         ;;
16381 *)      strerror_r_proto=0
16382         ;;
16383 esac
16384
16385 : see if strftime exists
16386 set strftime d_strftime
16387 eval $inlibc
16388
16389 : see if strtod exists
16390 set strtod d_strtod
16391 eval $inlibc
16392
16393 : see if strtol exists
16394 set strtol d_strtol
16395 eval $inlibc
16396
16397 : see if strtold exists
16398 set strtold d_strtold
16399 eval $inlibc
16400
16401 : see if strtoll exists
16402 set strtoll d_strtoll
16403 eval $inlibc
16404
16405 case "$d_longlong-$d_strtoll" in
16406 "$define-$define")
16407         $cat <<EOM
16408 Checking whether your strtoll() works okay...
16409 EOM
16410         $cat >try.c <<'EOCP'
16411 #include <errno.h>
16412 #ifdef __hpux
16413 #define strtoll __strtoll
16414 #endif
16415 #ifdef __EMX__
16416 #define strtoll _strtoll
16417 #endif
16418 #include <stdio.h>
16419 extern long long int strtoll(char *s, char **, int); 
16420 static int bad = 0;
16421 int check(char *s, long long ell, int een) {
16422         long long gll;
16423         errno = 0;
16424         gll = strtoll(s, 0, 10);
16425         if (!((gll == ell) && (errno == een)))
16426                 bad++;
16427 }
16428 int main() {
16429         check(" 1",                                      1LL, 0);
16430         check(" 0",                                      0LL, 0);
16431         check("-1",                                     -1LL, 0);
16432         check("-9223372036854775808", -9223372036854775808LL, 0);
16433         check("-9223372036854775808", -9223372036854775808LL, 0);
16434         check(" 9223372036854775807",  9223372036854775807LL, 0);
16435         check("-9223372036854775808", -9223372036854775808LL, 0);
16436         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16437         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16438         if (!bad)
16439                 printf("ok\n");
16440 }
16441 EOCP
16442         set try
16443         if eval $compile; then
16444                 yyy=`$run ./try`
16445                 case "$yyy" in
16446                 ok) echo "Your strtoll() seems to be working okay." ;;
16447                 *) cat <<EOM >&4
16448 Your strtoll() doesn't seem to be working okay.
16449 EOM
16450                    d_strtoll="$undef"
16451                    ;;
16452                 esac
16453         else
16454                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16455                 d_strtoll="$undef"
16456         fi
16457         ;;
16458 esac
16459
16460 : see if strtoq exists
16461 set strtoq d_strtoq
16462 eval $inlibc
16463
16464 : see if strtoul exists
16465 set strtoul d_strtoul
16466 eval $inlibc
16467
16468 case "$d_strtoul" in
16469 "$define")
16470         $cat <<EOM
16471 Checking whether your strtoul() works okay...
16472 EOM
16473         $cat >try.c <<'EOCP'
16474 #include <errno.h>
16475 #include <stdio.h>
16476 extern unsigned long int strtoul(char *s, char **, int); 
16477 static int bad = 0;
16478 void check(char *s, unsigned long eul, int een) {
16479         unsigned long gul;
16480         errno = 0;
16481         gul = strtoul(s, 0, 10);
16482         if (!((gul == eul) && (errno == een)))
16483                 bad++;
16484 }
16485 int main() {
16486         check(" 1", 1L, 0);
16487         check(" 0", 0L, 0);
16488 EOCP
16489         case "$longsize" in
16490         8)
16491             $cat >>try.c <<'EOCP'
16492         check("18446744073709551615", 18446744073709551615UL, 0);
16493         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16494 #if 0 /* strtoul() for /^-/ strings is undefined. */
16495         check("-1", 18446744073709551615UL, 0);
16496         check("-18446744073709551614", 2, 0);
16497         check("-18446744073709551615", 1, 0);
16498         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16499         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16500 #endif
16501 EOCP
16502                 ;;
16503         4)
16504                     $cat >>try.c <<'EOCP'
16505         check("4294967295", 4294967295UL, 0);
16506         check("4294967296", 4294967295UL, ERANGE);
16507 #if 0 /* strtoul() for /^-/ strings is undefined. */
16508         check("-1", 4294967295UL, 0);
16509         check("-4294967294", 2, 0);
16510         check("-4294967295", 1, 0);
16511         check("-4294967296", 4294967295UL, ERANGE);
16512         check("-4294967297", 4294967295UL, ERANGE);
16513 #endif
16514 EOCP
16515                 ;;
16516         *)
16517 : Should we write these tests to be more portable by sprintf-ing
16518 : ~0 and then manipulating that char string as input for strtol?
16519                 ;;
16520         esac
16521         $cat >>try.c <<'EOCP'
16522         if (!bad)
16523                 printf("ok\n");
16524         return 0;
16525 }
16526 EOCP
16527         set try
16528         if eval $compile; then
16529                 case "`$run ./try`" in
16530                 ok) echo "Your strtoul() seems to be working okay." ;;
16531                 *) cat <<EOM >&4
16532 Your strtoul() doesn't seem to be working okay.
16533 EOM
16534                    d_strtoul="$undef"
16535                    ;;
16536                 esac
16537         fi
16538         ;;
16539 esac
16540
16541 : see if strtoull exists
16542 set strtoull d_strtoull
16543 eval $inlibc
16544
16545 case "$d_longlong-$d_strtoull" in
16546 "$define-$define")
16547         $cat <<EOM
16548 Checking whether your strtoull() works okay...
16549 EOM
16550         $cat >try.c <<'EOCP'
16551 #include <errno.h>
16552 #ifdef __hpux
16553 #define strtoull __strtoull
16554 #endif
16555 #include <stdio.h>
16556 extern unsigned long long int strtoull(char *s, char **, int); 
16557 static int bad = 0;
16558 int check(char *s, long long eull, int een) {
16559         long long gull;
16560         errno = 0;
16561         gull = strtoull(s, 0, 10);
16562         if (!((gull == eull) && (errno == een)))
16563                 bad++;
16564 }
16565 int main() {
16566         check(" 1",                                        1LL, 0);
16567         check(" 0",                                        0LL, 0);
16568         check("18446744073709551615",  18446744073709551615ULL, 0);
16569         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16570 #if 0 /* strtoull() for /^-/ strings is undefined. */
16571         check("-1",                    18446744073709551615ULL, 0);
16572         check("-18446744073709551614",                     2LL, 0);
16573         check("-18446744073709551615",                     1LL, 0);
16574         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16575         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16576 #endif
16577         if (!bad)
16578                 printf("ok\n");
16579 }
16580 EOCP
16581         set try
16582         if eval $compile; then
16583                 case "`$run ./try`" in
16584                 ok) echo "Your strtoull() seems to be working okay." ;;
16585                 *) cat <<EOM >&4
16586 Your strtoull() doesn't seem to be working okay.
16587 EOM
16588                    d_strtoull="$undef"
16589                    ;;
16590                 esac
16591         fi
16592         ;;
16593 esac
16594
16595 : see if strtouq exists
16596 set strtouq d_strtouq
16597 eval $inlibc
16598
16599 case "$d_strtouq" in
16600 "$define")
16601         $cat <<EOM
16602 Checking whether your strtouq() works okay...
16603 EOM
16604         $cat >try.c <<'EOCP'
16605 #include <errno.h>
16606 #include <stdio.h>
16607 extern unsigned long long int strtouq(char *s, char **, int); 
16608 static int bad = 0;
16609 void check(char *s, unsigned long long eull, int een) {
16610         unsigned long long gull;
16611         errno = 0;
16612         gull = strtouq(s, 0, 10);
16613         if (!((gull == eull) && (errno == een)))
16614                 bad++;
16615 }
16616 int main() {
16617         check(" 1",                                        1LL, 0);
16618         check(" 0",                                        0LL, 0);
16619         check("18446744073709551615",  18446744073709551615ULL, 0);
16620         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16621 #if 0 /* strtouq() for /^-/ strings is undefined. */
16622         check("-1",                    18446744073709551615ULL, 0);
16623         check("-18446744073709551614",                     2LL, 0);
16624         check("-18446744073709551615",                     1LL, 0);
16625         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16626         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16627 #endif
16628         if (!bad)
16629                 printf("ok\n");
16630         return 0;
16631 }
16632 EOCP
16633         set try
16634         if eval $compile; then
16635                 case "`$run ./try`" in
16636                 ok) echo "Your strtouq() seems to be working okay." ;;
16637                 *) cat <<EOM >&4
16638 Your strtouq() doesn't seem to be working okay.
16639 EOM
16640                    d_strtouq="$undef"
16641                    ;;
16642                 esac
16643         fi
16644         ;;
16645 esac
16646
16647 : see if strxfrm exists
16648 set strxfrm d_strxfrm
16649 eval $inlibc
16650
16651 : see if symlink exists
16652 set symlink d_symlink
16653 eval $inlibc
16654
16655 : see if syscall exists
16656 set syscall d_syscall
16657 eval $inlibc
16658
16659 : see if prototype for syscall is available
16660 echo " "
16661 set d_syscallproto syscall $i_unistd unistd.h
16662 eval $hasproto
16663
16664 : see if sysconf exists
16665 set sysconf d_sysconf
16666 eval $inlibc
16667
16668 : see if system exists
16669 set system d_system
16670 eval $inlibc
16671
16672 : see if tcgetpgrp exists
16673 set tcgetpgrp d_tcgetpgrp
16674 eval $inlibc
16675
16676 : see if tcsetpgrp exists
16677 set tcsetpgrp d_tcsetpgrp
16678 eval $inlibc
16679
16680 : see if prototype for telldir is available
16681 echo " "
16682 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16683 eval $hasproto
16684
16685 : see if time exists
16686 echo " "
16687 if test "X$d_time" = X -o X"$timetype" = X; then
16688     if set time val -f d_time; eval $csym; $val; then
16689                 echo 'time() found.' >&4
16690                 val="$define"
16691                 rp="What is the type returned by time() on this system?"
16692                 set time_t timetype long stdio.h sys/types.h
16693                 eval $typedef_ask
16694     else
16695                 echo 'time() not found, hope that will do.' >&4
16696                 val="$undef"
16697                 timetype='int';
16698     fi
16699     set d_time
16700     eval $setvar
16701 fi
16702
16703 : see if this is a sys/times.h system
16704 set sys/times.h i_systimes
16705 eval $inhdr
16706
16707 : see if times exists
16708 echo " "
16709 if set times val -f d_times; eval $csym; $val; then
16710         echo 'times() found.' >&4
16711         d_times="$define"
16712         inc=''
16713         case "$i_systimes" in
16714         "$define") inc='sys/times.h';;
16715         esac
16716         rp="What is the type returned by times() on this system?"
16717         set clock_t clocktype long stdio.h sys/types.h $inc
16718         eval $typedef_ask
16719 else
16720         echo 'times() NOT found, hope that will do.' >&4
16721         d_times="$undef"
16722         clocktype='int'
16723 fi
16724
16725 : see if tmpnam_r exists
16726 set tmpnam_r d_tmpnam_r
16727 eval $inlibc
16728 case "$d_tmpnam_r" in
16729 "$define")
16730         hdrs="$i_systypes sys/types.h define stdio.h "
16731         case "$d_tmpnam_r_proto:$usethreads" in
16732         ":define")      d_tmpnam_r_proto=define
16733                 set d_tmpnam_r_proto tmpnam_r $hdrs
16734                 eval $hasproto ;;
16735         *)      ;;
16736         esac
16737         case "$d_tmpnam_r_proto" in
16738         define)
16739         case "$tmpnam_r_proto" in
16740         ''|0) try='char* tmpnam_r(char*);'
16741         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16742         esac
16743         case "$tmpnam_r_proto" in
16744         ''|0)   d_tmpnam_r=undef
16745                 tmpnam_r_proto=0
16746                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16747         * )     case "$tmpnam_r_proto" in
16748                 REENTRANT_PROTO*) ;;
16749                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16750                 esac
16751                 echo "Prototype: $try" ;;
16752         esac
16753         ;;
16754         *)      case "$usethreads" in
16755                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16756                 esac
16757                 d_tmpnam_r=undef
16758                 tmpnam_r_proto=0
16759                 ;;
16760         esac
16761         ;;
16762 *)      tmpnam_r_proto=0
16763         ;;
16764 esac
16765
16766 : see if truncate exists
16767 set truncate d_truncate
16768 eval $inlibc
16769
16770 : see if ttyname_r exists
16771 set ttyname_r d_ttyname_r
16772 eval $inlibc
16773 case "$d_ttyname_r" in
16774 "$define")
16775         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16776         case "$d_ttyname_r_proto:$usethreads" in
16777         ":define")      d_ttyname_r_proto=define
16778                 set d_ttyname_r_proto ttyname_r $hdrs
16779                 eval $hasproto ;;
16780         *)      ;;
16781         esac
16782         case "$d_ttyname_r_proto" in
16783         define)
16784         case "$ttyname_r_proto" in
16785         ''|0) try='int ttyname_r(int, char*, size_t);'
16786         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16787         esac
16788         case "$ttyname_r_proto" in
16789         ''|0) try='int ttyname_r(int, char*, int);'
16790         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16791         esac
16792         case "$ttyname_r_proto" in
16793         ''|0) try='char* ttyname_r(int, char*, int);'
16794         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16795         esac
16796         case "$ttyname_r_proto" in
16797         ''|0)   d_ttyname_r=undef
16798                 ttyname_r_proto=0
16799                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16800         * )     case "$ttyname_r_proto" in
16801                 REENTRANT_PROTO*) ;;
16802                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16803                 esac
16804                 echo "Prototype: $try" ;;
16805         esac
16806         ;;
16807         *)      case "$usethreads" in
16808                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16809                 esac
16810                 d_ttyname_r=undef
16811                 ttyname_r_proto=0
16812                 ;;
16813         esac
16814         ;;
16815 *)      ttyname_r_proto=0
16816         ;;
16817 esac
16818
16819 : see if tzname[] exists
16820 echo " "
16821 if set tzname val -a d_tzname; eval $csym; $val; then
16822         val="$define"
16823         echo 'tzname[] found.' >&4
16824 else
16825         val="$undef"
16826         echo 'tzname[] NOT found.' >&4
16827 fi
16828 set d_tzname
16829 eval $setvar
16830
16831 case "$osname" in
16832 next|rhapsody|darwin) multiarch="$define" ;;
16833 esac
16834 case "$multiarch" in
16835 ''|[nN]*) multiarch="$undef" ;;
16836 esac
16837
16838 : check for ordering of bytes in a UV
16839 echo " "
16840 case "$usecrosscompile$multiarch" in
16841 *$define*)
16842         $cat <<EOM
16843 You seem to be either cross-compiling or doing a multiarchitecture build,
16844 skipping the byteorder check.
16845
16846 EOM
16847         byteorder='ffff'
16848         ;;
16849 *)
16850         case "$byteorder" in
16851         '')
16852                 $cat <<'EOM'
16853 In the following, larger digits indicate more significance.  A big-endian
16854 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16855 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16856 machines may have weird orders like 3412.  A Cray will report 87654321,
16857 an Alpha will report 12345678. If the test program works the default is
16858 probably right.
16859 I'm now running the test program...
16860 EOM
16861                 $cat >try.c <<EOCP
16862 #include <stdio.h>
16863 #$i_stdlib I_STDLIB
16864 #ifdef I_STDLIB
16865 #include <stdlib.h>
16866 #endif
16867 #include <sys/types.h>
16868 typedef $uvtype UV;
16869 int main()
16870 {
16871         int i;
16872         union {
16873                 UV l;
16874                 char c[$uvsize];
16875         } u;
16876
16877         if ($uvsize > 4)
16878                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16879         else
16880                 u.l = (UV)0x04030201;
16881         for (i = 0; i < $uvsize; i++)
16882                 printf("%c", u.c[i]+'0');
16883         printf("\n");
16884         exit(0);
16885 }
16886 EOCP
16887                 xxx_prompt=y
16888                 set try
16889                 if eval $compile && ./try > /dev/null; then
16890                         dflt=`$run ./try`
16891                         case "$dflt" in
16892                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16893                                 echo "(The test program ran ok.)"
16894                                 echo "byteorder=$dflt"
16895                                 xxx_prompt=n
16896                         ;;
16897                         ????|????????) echo "(The test program ran ok.)" ;;
16898                         *) echo "(The test program didn't run right for some reason.)" ;;
16899                         esac
16900                 else
16901                         dflt='4321'
16902                         cat <<'EOM'
16903 (I can't seem to compile the test program.  Guessing big-endian...)
16904 EOM
16905                 fi
16906                 case "$xxx_prompt" in
16907                 y)
16908                         rp="What is the order of bytes in $uvtype?"
16909                         . ./myread
16910                         byteorder="$ans"
16911                         ;;
16912                 *)      byteorder=$dflt
16913                         ;;
16914                 esac
16915                 ;;
16916         esac
16917         $rm -f try.c try
16918         ;;
16919 esac
16920
16921
16922 $cat <<EOM
16923
16924 Checking to see whether you can access character data unalignedly...
16925 EOM
16926 case "$d_u32align" in
16927 '')   $cat >try.c <<EOCP
16928 #include <stdio.h>
16929 #$i_stdlib I_STDLIB
16930 #ifdef I_STDLIB
16931 #include <stdlib.h>
16932 #endif
16933 #define U32 $u32type
16934 #define BYTEORDER 0x$byteorder
16935 #define U8 $u8type
16936 #include <signal.h>
16937 #ifdef SIGBUS
16938 $signal_t bletch(s) int s; { exit(4); }
16939 #endif
16940 int main() {
16941 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16942     U8 buf[8];
16943     U32 *up;
16944     int i;
16945
16946     if (sizeof(U32) != 4) {
16947         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16948         exit(1);
16949     }
16950
16951     fflush(stdout);
16952
16953 #ifdef SIGBUS
16954     signal(SIGBUS, bletch);
16955 #endif
16956
16957     buf[0] = 0;
16958     buf[1] = 0;
16959     buf[2] = 0;
16960     buf[3] = 1;
16961     buf[4] = 0;
16962     buf[5] = 0;
16963     buf[6] = 0;
16964     buf[7] = 1;
16965
16966     for (i = 0; i < 4; i++) {
16967         up = (U32*)(buf + i);
16968         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
16969                (*up == 1 << (8*(3-i)))  /* little-endian */
16970               )
16971            )
16972         {
16973             printf("read failed (%x)\n", *up);
16974             exit(2);
16975         }
16976     }
16977
16978     /* write test */
16979     for (i = 0; i < 4; i++) {
16980         up = (U32*)(buf + i);
16981         *up = 0xBeef;
16982         if (*up != 0xBeef) {
16983             printf("write failed (%x)\n", *up);
16984             exit(3);
16985         }
16986     }
16987
16988     exit(0);
16989 #else
16990     printf("1\n");
16991     exit(1);
16992 #endif
16993     return 0;
16994 }
16995 EOCP
16996 set try
16997 if eval $compile_ok; then
16998         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
16999         $run ./try 2>&1 >/dev/null
17000         case "$?" in
17001         0)      cat >&4 <<EOM
17002 You can access character data pretty unalignedly.
17003 EOM
17004                 d_u32align="$undef"
17005                 ;;
17006         *)      cat >&4 <<EOM
17007 It seems that you must access character data in an aligned manner.
17008 EOM
17009                 d_u32align="$define"
17010                 ;;
17011         esac
17012 else
17013         rp='Can you access character data at unaligned addresses?'
17014         dflt='n'
17015         . ./myread
17016         case "$ans" in
17017         [yY]*)  d_u32align="$undef"  ;;
17018         *)      d_u32align="$define" ;;
17019         esac
17020 fi
17021 $rm -f core core.try.* try.core
17022 ;;
17023 esac
17024
17025 : see if ualarm exists
17026 set ualarm d_ualarm
17027 eval $inlibc
17028
17029 : see if umask exists
17030 set umask d_umask
17031 eval $inlibc
17032
17033 : see if unordered exists
17034 set unordered d_unordered
17035 eval $inlibc
17036
17037 : see if usleep exists
17038 set usleep d_usleep
17039 eval $inlibc
17040
17041 : see if prototype for usleep is available
17042 echo " "
17043 set d_usleepproto usleep $i_unistd unistd.h
17044 eval $hasproto
17045
17046 : see if ustat exists
17047 set ustat d_ustat
17048 eval $inlibc
17049
17050 : backward compatibility for d_hvfork
17051 if test X$d_hvfork != X; then
17052         d_vfork="$d_hvfork"
17053         d_hvfork=''
17054 fi
17055 : see if there is a vfork
17056 val=''
17057 set vfork val
17058 eval $inlibc
17059
17060 : Ok, but do we want to use it. vfork is reportedly unreliable in 
17061 : perl on Solaris 2.x, and probably elsewhere.
17062 case "$val" in
17063 $define)
17064         echo " "
17065         case "$usevfork" in
17066         false) dflt='n';;
17067         *) dflt='y';;
17068         esac
17069         cat <<'EOM'
17070  
17071 Perl can only use a vfork() that doesn't suffer from strict
17072 restrictions on calling functions or modifying global data in
17073 the child.  For example, glibc-2.1 contains such a vfork()
17074 that is unsuitable.  If your system provides a proper fork()
17075 call, chances are that you do NOT want perl to use vfork().
17076
17077 EOM
17078         rp="Do you still want to use vfork()?"
17079         . ./myread
17080         case "$ans" in
17081         y|Y) ;;
17082         *)
17083                 echo "Ok, we won't use vfork()."
17084                 val="$undef"
17085                 ;;
17086         esac
17087         ;;
17088 esac
17089 set d_vfork
17090 eval $setvar
17091 case "$d_vfork" in
17092 $define) usevfork='true';;
17093 *) usevfork='false';;
17094 esac
17095
17096 : see if closedir exists
17097 set closedir d_closedir
17098 eval $inlibc
17099
17100 case "$d_closedir" in
17101 "$define")
17102         echo " "
17103         echo "Checking whether closedir() returns a status..." >&4
17104         cat > try.c <<EOM
17105 #$i_dirent I_DIRENT             /**/
17106 #$i_sysdir I_SYS_DIR            /**/
17107 #$i_sysndir I_SYS_NDIR          /**/
17108 #$i_systypes I_SYS_TYPES        /**/
17109
17110 #if defined(I_SYS_TYPES)
17111 #include <sys/types.h>
17112 #endif
17113 #if defined(I_DIRENT)
17114 #include <dirent.h>
17115 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17116 #include <sys/dir.h>
17117 #endif
17118 #else
17119 #ifdef I_SYS_NDIR
17120 #include <sys/ndir.h>
17121 #else
17122 #ifdef I_SYS_DIR
17123 #ifdef hp9000s500
17124 #include <ndir.h>       /* may be wrong in the future */
17125 #else
17126 #include <sys/dir.h>
17127 #endif
17128 #endif
17129 #endif
17130 #endif 
17131 int main() { return closedir(opendir(".")); }
17132 EOM
17133         set try
17134         if eval $compile_ok; then
17135                 if $run ./try > /dev/null 2>&1 ; then
17136                         echo "Yes, it does."
17137                         val="$undef"
17138                 else
17139                         echo "No, it doesn't."
17140                         val="$define"
17141                 fi
17142         else
17143                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17144                 val="$define"
17145         fi
17146         ;;
17147 *)
17148         val="$undef";
17149         ;;
17150 esac
17151 set d_void_closedir
17152 eval $setvar
17153 $rm -f try try.*
17154 : see if there is a wait4
17155 set wait4 d_wait4
17156 eval $inlibc
17157
17158 : see if waitpid exists
17159 set waitpid d_waitpid
17160 eval $inlibc
17161
17162 : see if wcstombs exists
17163 set wcstombs d_wcstombs
17164 eval $inlibc
17165
17166 : see if wctomb exists
17167 set wctomb d_wctomb
17168 eval $inlibc
17169
17170 : see if writev exists
17171 set writev d_writev
17172 eval $inlibc
17173
17174 : preserve RCS keywords in files with variable substitution, grrr
17175 Date='$Date'
17176 Id='$Id'
17177 Log='$Log'
17178 RCSfile='$RCSfile'
17179 Revision='$Revision'
17180
17181 : check for alignment requirements
17182 echo " "
17183 case "$usecrosscompile$multiarch" in
17184 *$define*)
17185         $cat <<EOM
17186 You seem to be either cross-compiling or doing a multiarchitecture build,
17187 skipping the memory alignment check.
17188
17189 EOM
17190         case "$alignbytes" in
17191         '') alignbytes=8 ;;
17192         esac
17193         ;;
17194 *)
17195         case "$alignbytes" in
17196         '') echo "Checking alignment constraints..." >&4
17197                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17198                         $cat >try.c <<'EOCP'
17199 typedef long double NV;
17200 EOCP
17201                 else
17202                         $cat >try.c <<'EOCP'
17203 typedef double NV;
17204 EOCP
17205                 fi
17206                 $cat >>try.c <<'EOCP'
17207 #include <stdio.h>
17208 struct foobar {
17209         char foo;
17210         NV bar;
17211 } try_algn;
17212 int main()
17213 {
17214     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17215     return(0);
17216 }
17217 EOCP
17218                 set try
17219                 if eval $compile_ok; then
17220                         dflt=`$run ./try`
17221                 else
17222                         dflt='8'
17223                         echo "(I can't seem to compile the test program...)"
17224                 fi
17225                 ;;
17226         *) dflt="$alignbytes"
17227                 ;;
17228         esac
17229         rp="Doubles must be aligned on a how-many-byte boundary?"
17230         . ./myread
17231         alignbytes="$ans"
17232         $rm -f try.c try
17233         ;;
17234 esac
17235
17236
17237 : set the base revision
17238 baserev=5.0
17239
17240 : how do we concatenate cpp tokens here?
17241 echo " "
17242 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
17243 $cat >cpp_stuff.c <<'EOCP'
17244 #define RCAT(a,b)a/**/b
17245 #define ACAT(a,b)a ## b
17246 RCAT(Rei,ser)
17247 ACAT(Cir,cus)
17248 EOCP
17249 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17250 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17251         echo "Oh!  Smells like ANSI's been here." >&4
17252         echo "We can catify or stringify, separately or together!"
17253         cpp_stuff=42
17254 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17255         echo "Ah, yes!  The good old days!" >&4
17256         echo "However, in the good old days we don't know how to stringify and"
17257         echo "catify at the same time."
17258         cpp_stuff=1
17259 else
17260         $cat >&4 <<EOM
17261 Hmm, I don't seem to be able to concatenate tokens with your cpp.
17262 You're going to have to edit the values of CAT[2-5] in config.h...
17263 EOM
17264         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17265 fi
17266 $rm -f cpp_stuff.*
17267
17268 : see if this is a db.h system
17269 set db.h i_db
17270 eval $inhdr
17271
17272 case "$i_db" in
17273 $define)
17274         : Check db version.
17275         echo " "
17276         echo "Checking Berkeley DB version ..." >&4
17277         $cat >try.c <<EOCP
17278 #$d_const HASCONST
17279 #ifndef HASCONST
17280 #define const
17281 #endif
17282 #include <sys/types.h>
17283 #include <stdio.h>
17284 #$i_stdlib I_STDLIB
17285 #ifdef I_STDLIB
17286 #include <stdlib.h>
17287 #endif
17288 #include <db.h>
17289 int main(int argc, char *argv[])
17290 {
17291 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17292     int Major, Minor, Patch ;
17293     unsigned long Version ;
17294     (void)db_version(&Major, &Minor, &Patch) ;
17295     if (argc == 2) {
17296         printf("%d %d %d %d %d %d\n",
17297                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17298                Major, Minor, Patch);
17299         exit(0);
17300     }
17301     printf("You have Berkeley DB Version 2 or greater.\n");
17302
17303     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17304                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17305     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17306                 Major, Minor, Patch) ;
17307
17308     /* check that db.h & libdb are compatible */
17309     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17310         printf("db.h and libdb are incompatible.\n") ;
17311         exit(3);        
17312     }
17313
17314     printf("db.h and libdb are compatible.\n") ;
17315
17316     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17317                 + DB_VERSION_PATCH ;
17318
17319     /* needs to be >= 2.3.4 */
17320     if (Version < 2003004) {
17321     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17322         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17323         exit(2);        
17324     }
17325
17326     exit(0);
17327 #else
17328 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17329     if (argc == 2) {
17330         printf("1 0 0\n");
17331         exit(0);
17332     }
17333     printf("You have Berkeley DB Version 1.\n");
17334     exit(0);    /* DB version < 2: the coast is clear. */
17335 #else
17336     exit(1);    /* <db.h> not Berkeley DB? */
17337 #endif
17338 #endif
17339 }
17340 EOCP
17341         set try
17342         if eval $compile_ok && $run ./try; then
17343                 echo 'Looks OK.' >&4
17344                 set `$run ./try 1`
17345                 db_version_major=$1
17346                 db_version_minor=$2
17347                 db_version_patch=$3
17348         else
17349                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17350                 i_db=$undef
17351                 case " $libs " in
17352                 *"-ldb "*)
17353                         : Remove db from list of libraries to use
17354                         echo "Removing unusable -ldb from library list" >&4
17355                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17356                         shift
17357                         libs="$*"
17358                         echo "libs = $libs" >&4
17359                         ;;
17360                 esac
17361         fi
17362         $rm -f try.*
17363         ;;
17364 esac
17365
17366 case "$i_db" in
17367 define)
17368         : Check the return type needed for hash 
17369         echo " "
17370         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17371         $cat >try.c <<EOCP
17372 #$d_const HASCONST
17373 #ifndef HASCONST
17374 #define const
17375 #endif
17376 #include <sys/types.h>
17377 #include <db.h>
17378
17379 #ifndef DB_VERSION_MAJOR
17380 u_int32_t hash_cb (ptr, size)
17381 const void *ptr;
17382 size_t size;
17383 {
17384 }
17385 HASHINFO info;
17386 int main()
17387 {
17388         info.hash = hash_cb;
17389 }
17390 #endif
17391 EOCP
17392         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17393                 if $contains warning try.out >>/dev/null 2>&1 ; then
17394                         db_hashtype='int'
17395                 else
17396                         db_hashtype='u_int32_t'
17397                 fi
17398         else
17399                 : XXX Maybe we should just give up here.
17400                 db_hashtype=u_int32_t
17401                 $cat try.out >&4
17402                 echo "Help:  I can't seem to compile the db test program." >&4
17403                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17404         fi
17405         $rm -f try.*
17406         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17407         ;;
17408 *)      db_hashtype=u_int32_t
17409         ;;
17410 esac
17411 case "$i_db" in
17412 define)
17413         : Check the return type needed for prefix 
17414         echo " "
17415         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17416         cat >try.c <<EOCP
17417 #$d_const HASCONST
17418 #ifndef HASCONST
17419 #define const
17420 #endif
17421 #include <sys/types.h>
17422 #include <db.h>
17423
17424 #ifndef DB_VERSION_MAJOR
17425 size_t prefix_cb (key1, key2)
17426 const DBT *key1;
17427 const DBT *key2;
17428 {
17429 }
17430 BTREEINFO info;
17431 int main()
17432 {
17433         info.prefix = prefix_cb;
17434 }
17435 #endif
17436 EOCP
17437         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17438                 if $contains warning try.out >>/dev/null 2>&1 ; then
17439                         db_prefixtype='int'
17440                 else
17441                         db_prefixtype='size_t'
17442                 fi
17443         else
17444                 db_prefixtype='size_t'
17445                 : XXX Maybe we should just give up here.
17446                 $cat try.out >&4
17447                 echo "Help:  I can't seem to compile the db test program." >&4
17448                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17449         fi
17450         $rm -f try.*
17451         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17452         ;;
17453 *)      db_prefixtype='size_t'
17454         ;;
17455 esac
17456
17457
17458 : How can we generate normalized random numbers ?
17459 echo " "
17460 echo "Looking for a random number function..." >&4
17461 case "$randfunc" in
17462 '')
17463         if set drand48 val -f; eval $csym; $val; then
17464                 dflt="drand48"
17465                 echo "Good, found drand48()." >&4
17466         elif set random val -f; eval $csym; $val; then
17467                 dflt="random"
17468                 echo "OK, found random()." >&4
17469         else
17470                 dflt="rand"
17471                 echo "Yick, looks like I have to use rand()." >&4
17472         fi
17473         echo " "
17474         ;;
17475 *)
17476         dflt="$randfunc"
17477         ;;
17478 esac
17479 cont=true
17480
17481 case "$ccflags" in
17482 *-Dmy_rand=*|*-Dmy_srand=*)
17483         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17484         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17485         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17486         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17487         ;;
17488 esac
17489
17490 while $test "$cont"; do
17491         rp="Use which function to generate random numbers?"
17492         . ./myread
17493         if $test "$ans" = "$dflt"; then
17494                 : null
17495         else
17496                 randbits=''
17497         fi
17498         randfunc="$ans"
17499         if set $ans val -f; eval $csym; $val; then
17500                 cont=''
17501         else
17502                 dflt=y
17503                 rp="I cannot find function $ans. Use that name anyway?"
17504                 . ./myread
17505                 dflt=rand
17506                 case "$ans" in
17507                         [yY]*) cont='';;
17508                 esac
17509         fi
17510         case "$cont" in
17511         '')
17512                 case "$randfunc" in
17513                 drand48)
17514                         drand01="drand48()"
17515                         seedfunc="srand48"
17516                         randbits=48
17517                         randseedtype=long
17518                         ;;
17519                 rand|random)
17520                         case "$randbits" in
17521                         '')
17522 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17523                                 $cat >try.c <<EOCP
17524 #$i_unistd I_UNISTD
17525 #$i_stdlib I_STDLIB
17526 #include <stdio.h>
17527 #ifdef I_UNISTD
17528 #  include <unistd.h>
17529 #endif
17530 #ifdef I_STDLIB
17531 #  include <stdlib.h>
17532 #endif
17533 int main()
17534 {
17535         register int i;
17536         register unsigned long tmp;
17537         register unsigned long max = 0L;
17538
17539         for (i = 1000; i; i--) {
17540                 tmp = (unsigned long) $randfunc();
17541                 if (tmp > max) max = tmp;
17542         }
17543         for (i = 0; max; i++)
17544                 max /= 2;
17545         printf("%d\n",i);
17546 }
17547 EOCP
17548                                 set try
17549                                 if eval $compile_ok; then
17550                                         dflt=`try`
17551                                 else
17552                                         dflt='?'
17553                                         echo "(I can't seem to compile the test program...)"
17554                                 fi
17555                                 ;;
17556                         *)
17557                                 dflt="$randbits"
17558                                 ;;
17559                         esac
17560                         rp="How many bits does your $randfunc() function produce?"
17561                         . ./myread
17562                         randbits="$ans"
17563                         $rm -f try.c try
17564                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17565                         seedfunc="s$randfunc"
17566                         randseedtype=unsigned
17567                         ;;
17568                 *)
17569                         dflt="31"
17570                         rp="How many bits does your $randfunc() function produce?"
17571                         . ./myread
17572                         randbits="$ans"
17573                         seedfunc="s$randfunc"
17574                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17575                         if set $seedfunc val -f; eval $csym; $val; then
17576                                 echo "(Using $seedfunc() to seed random generator)"
17577                         else
17578                                 echo "(Warning: no $seedfunc() to seed random generator)"
17579                                 seedfunc=rand
17580                         fi
17581                         randseedtype=unsigned
17582                         ;;
17583                 esac
17584                 ;;
17585         esac
17586 done
17587
17588 echo " "
17589 echo "Determining whether or not we are on an EBCDIC system..." >&4
17590 $cat >try.c <<'EOM'
17591 int main()
17592 {
17593   if ('M'==0xd4) return 0;
17594   return 1;
17595 }
17596 EOM
17597
17598 val=$undef
17599 set try
17600 if eval $compile_ok; then
17601         if $run ./try; then
17602                 echo "You seem to speak EBCDIC." >&4
17603                 val="$define"
17604         else
17605                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17606         fi
17607 else
17608         echo "I'm unable to compile the test program." >&4
17609         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17610 fi
17611 $rm -f try try.*
17612 set ebcdic
17613 eval $setvar
17614
17615 echo " "
17616 $cat >&4 <<EOM
17617 Checking how to flush all pending stdio output...
17618 EOM
17619 # I only know how to find the first 32 possibly open files on SunOS.
17620 # See also hints/sunos_4_1.sh and util.c  --AD
17621 case "$osname" in
17622 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17623 esac
17624 $cat >>try.c <<EOCP
17625 #include <stdio.h>
17626 #$i_stdlib I_STDLIB
17627 #ifdef I_STDLIB
17628 #include <stdlib.h>
17629 #endif
17630 #$i_unistd I_UNISTD
17631 #ifdef I_UNISTD
17632 # include <unistd.h>
17633 #endif
17634 #$d_sysconf HAS_SYSCONF
17635 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17636 #ifdef HAS_STDIO_STREAM_ARRAY
17637 # define STDIO_STREAM_ARRAY $stdio_stream_array
17638 #endif
17639 int main() {
17640   FILE* p;
17641   unlink("try.out");
17642   p = fopen("try.out", "w");
17643 #ifdef TRY_FPUTC
17644   fputc('x', p);
17645 #else
17646 # ifdef TRY_FPRINTF
17647   fprintf(p, "x");
17648 # endif
17649 #endif
17650 #ifdef TRY_FFLUSH_NULL
17651   fflush(NULL);
17652 #endif
17653 #ifdef TRY_FFLUSH_ALL
17654   {
17655     long open_max = -1;
17656 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17657     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17658 # else
17659 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17660     open_max = sysconf(_SC_OPEN_MAX);
17661 #  else
17662 #   ifdef FOPEN_MAX
17663     open_max = FOPEN_MAX;
17664 #   else
17665 #    ifdef OPEN_MAX
17666     open_max = OPEN_MAX;
17667 #    else
17668 #     ifdef _NFILE
17669     open_max = _NFILE;
17670 #     endif
17671 #    endif
17672 #   endif
17673 #  endif
17674 # endif 
17675 # ifdef HAS_STDIO_STREAM_ARRAY
17676     if (open_max > 0) {
17677       long i;
17678       for (i = 0; i < open_max; i++)
17679             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17680                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17681                 STDIO_STREAM_ARRAY[i]._flag)
17682                 fflush(&STDIO_STREAM_ARRAY[i]);
17683     }   
17684   }
17685 # endif
17686 #endif
17687   _exit(42);
17688 }
17689 EOCP
17690 : first we have to find out how _not_ to flush
17691 $to try.c
17692 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17693     output=''
17694     set try -DTRY_FPUTC
17695     if eval $compile; then
17696             $run ./try 2>/dev/null
17697             code="$?"
17698             $from try.out
17699             if $test ! -s try.out -a "X$code" = X42; then
17700                 output=-DTRY_FPUTC
17701             fi
17702     fi
17703     case "$output" in
17704     '')
17705             set try -DTRY_FPRINTF
17706             if eval $compile; then
17707                     $run ./try 2>/dev/null
17708                     code="$?"
17709                     $from try.out
17710                     if $test ! -s try.out -a "X$code" = X42; then
17711                         output=-DTRY_FPRINTF
17712                     fi
17713             fi
17714         ;;
17715     esac
17716 fi
17717 : check for fflush NULL behaviour
17718 case "$fflushNULL" in
17719 '')     set try -DTRY_FFLUSH_NULL $output
17720         if eval $compile; then
17721                 $run ./try 2>/dev/null
17722                 code="$?"
17723                 $from try.out
17724                 if $test -s try.out -a "X$code" = X42; then
17725                         fflushNULL="`$cat try.out`"
17726                 else
17727                         if $test "X$code" != X42; then
17728                                 $cat >&4 <<EOM
17729 (If this test failed, don't worry, we'll try another method shortly.)
17730 EOM
17731                         fi
17732                 fi
17733         fi
17734         $rm -f core try.core core.try.*
17735         case "$fflushNULL" in
17736         x)      $cat >&4 <<EOM
17737 Your fflush(NULL) works okay for output streams.
17738 Let's see if it clobbers input pipes...
17739 EOM
17740 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17741 # bug that improperly flushes the input end of pipes.  So we avoid the
17742 # autoflush on fork/system/exec support for now. :-(
17743 $cat >tryp.c <<EOCP
17744 #include <stdio.h>
17745 int
17746 main(int argc, char **argv)
17747 {
17748     char buf[1024];
17749     int i;
17750     char *bp = buf;
17751     while (1) {
17752         while ((i = getc(stdin)) != -1
17753                && (*bp++ = i) != '\n'
17754                && bp < &buf[1024])
17755         /* DO NOTHING */ ;
17756         *bp = '\0';
17757         fprintf(stdout, "%s", buf);
17758         fflush(NULL);
17759         if (i == -1)
17760             return 0;
17761         bp = buf;
17762     }
17763 }
17764 EOCP
17765                 fflushNULL="$define"
17766                 set tryp
17767                 if eval $compile; then
17768                     $rm -f tryp.out
17769                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17770                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17771                        $cat >&4 <<EOM
17772 fflush(NULL) seems to behave okay with input streams.
17773 EOM
17774                         fflushNULL="$define"
17775                     else
17776                         $cat >&4 <<EOM
17777 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17778 EOM
17779                         fflushNULL="$undef"
17780                     fi
17781                 fi
17782                 $rm -f core tryp.c tryp.core core.tryp.*
17783                 ;;
17784         '')     $cat >&4 <<EOM
17785 Your fflush(NULL) isn't working (contrary to ANSI C).
17786 EOM
17787                 fflushNULL="$undef"
17788                 ;;
17789         *)      $cat >&4 <<EOM
17790 Cannot figure out whether your fflush(NULL) works or not.
17791 I'm assuming it doesn't (contrary to ANSI C).
17792 EOM
17793                 fflushNULL="$undef"
17794                 ;;
17795         esac
17796         ;;
17797 $define|true|[yY]*)
17798         fflushNULL="$define"
17799         ;;
17800 *)
17801         fflushNULL="$undef"
17802         ;;
17803 esac
17804 : check explicit looping only if NULL did not work, and if the pipe
17805 : bug does not show up on an explicit flush too
17806 case "$fflushNULL" in
17807 "$undef")
17808         $cat >tryp.c <<EOCP
17809 #include <stdio.h>
17810 int
17811 main(int argc, char **argv)
17812 {
17813     char buf[1024];
17814     int i;
17815     char *bp = buf;
17816     while (1) {
17817         while ((i = getc(stdin)) != -1
17818                && (*bp++ = i) != '\n'
17819                && bp < &buf[1024])
17820         /* DO NOTHING */ ;
17821         *bp = '\0';
17822         fprintf(stdout, "%s", buf);
17823         fflush(stdin);
17824         if (i == -1)
17825             return 0;
17826         bp = buf;
17827     }
17828 }
17829 EOCP
17830         set tryp
17831         if eval $compile; then
17832             $rm -f tryp.out
17833             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17834             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17835                $cat >&4 <<EOM
17836 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17837 EOM
17838                 : now check for fflushall behaviour
17839                 case "$fflushall" in
17840                 '')     set try -DTRY_FFLUSH_ALL $output
17841                         if eval $compile; then
17842                                 $cat >&4 <<EOM
17843 (Now testing the other method--but note that this also may fail.)
17844 EOM
17845                                 $run ./try 2>/dev/null
17846                                 code=$?
17847                                 $from try.out
17848                                 if $test -s try.out -a "X$code" = X42; then
17849                                         fflushall="`$cat try.out`"
17850                                 fi
17851                         fi
17852                         $rm -f core try.core core.try.*
17853                         case "$fflushall" in
17854                         x)      $cat >&4 <<EOM
17855 Whew. Flushing explicitly all the stdio streams works.
17856 EOM
17857                                 fflushall="$define"
17858                                 ;;
17859                         '')     $cat >&4 <<EOM
17860 Sigh. Flushing explicitly all the stdio streams doesn't work.
17861 EOM
17862                                 fflushall="$undef"
17863                                 ;;
17864                         *)      $cat >&4 <<EOM
17865 Cannot figure out whether flushing stdio streams explicitly works or not.
17866 I'm assuming it doesn't.
17867 EOM
17868                                 fflushall="$undef"
17869                                 ;;
17870                         esac
17871                         ;;
17872                 "$define"|true|[yY]*)
17873                         fflushall="$define"
17874                         ;;
17875                 *)
17876                         fflushall="$undef"
17877                         ;;
17878                 esac
17879             else
17880                 $cat >&4 <<EOM
17881 All is futile.  Even fflush(stdin) clobbers input pipes!
17882 EOM
17883                 fflushall="$undef"
17884             fi
17885         else
17886             fflushall="$undef"
17887         fi
17888         $rm -f core tryp.c tryp.core core.tryp.*
17889         ;;
17890 *)      fflushall="$undef"
17891         ;;
17892 esac
17893
17894 case "$fflushNULL$fflushall" in
17895 undefundef)
17896         $cat <<EOM
17897 OK, I give up.  I cannot figure out how to flush pending stdio output.
17898 We won't be flushing handles at all before fork/exec/popen.
17899 EOM
17900         ;;
17901 esac
17902 $rm -f try.* try$exe_ext
17903
17904 : Store the full pathname to the ar program for use in the C program
17905 : Respect a hint or command line value for full_ar.
17906 case "$full_ar" in
17907 '') full_ar=$ar ;;
17908 esac
17909
17910 : Store the full pathname to the sed program for use in the C program
17911 full_sed=$sed
17912
17913 : see what type gids are declared as in the kernel
17914 echo " "
17915 echo "Looking for the type for group ids returned by getgid()."
17916 set gid_t gidtype xxx stdio.h sys/types.h
17917 eval $typedef
17918 case "$gidtype" in
17919 xxx)
17920         xxx=`./findhdr sys/user.h`
17921         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17922         case $1 in
17923         unsigned) dflt="$1 $2" ;;
17924         *) dflt="$1" ;;
17925         esac
17926         ;;
17927 *) dflt="$gidtype";;
17928 esac
17929 case "$gidtype" in
17930 gid_t) echo "gid_t found." ;;
17931 *)      rp="What is the type for group ids returned by getgid()?"
17932         . ./myread
17933         gidtype="$ans"
17934         ;;
17935 esac
17936
17937 echo " "
17938 case "$gidtype" in
17939 *_t) zzz="$gidtype"     ;;
17940 *)   zzz="gid"          ;;
17941 esac
17942 echo "Checking the size of $zzz..." >&4 
17943 cat > try.c <<EOCP
17944 #include <sys/types.h>
17945 #include <stdio.h>
17946 #$i_stdlib I_STDLIB
17947 #ifdef I_STDLIB
17948 #include <stdlib.h>
17949 #endif
17950 int main() {
17951     printf("%d\n", (int)sizeof($gidtype));
17952     exit(0);
17953 }
17954 EOCP
17955 set try
17956 if eval $compile_ok; then
17957         yyy=`$run ./try`
17958         case "$yyy" in
17959         '')     gidsize=4
17960                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17961                 ;;
17962         *)      gidsize=$yyy
17963                 echo "Your $zzz is $gidsize bytes long."
17964                 ;;
17965         esac
17966 else
17967         gidsize=4
17968         echo "(I can't compile the test program--guessing $gidsize.)" >&4
17969 fi
17970
17971
17972 echo " "
17973 case "$gidtype" in
17974 *_t) zzz="$gidtype"     ;;
17975 *)   zzz="gid"          ;;
17976 esac
17977 echo "Checking the sign of $zzz..." >&4 
17978 cat > try.c <<EOCP
17979 #include <sys/types.h>
17980 #include <stdio.h>
17981 int main() {
17982         $gidtype foo = -1;
17983         if (foo < 0)
17984                 printf("-1\n");
17985         else
17986                 printf("1\n");
17987 }
17988 EOCP
17989 set try
17990 if eval $compile; then
17991         yyy=`$run ./try`
17992         case "$yyy" in
17993         '')     gidsign=1
17994                 echo "(I can't execute the test program--guessing unsigned.)" >&4
17995                 ;;
17996         *)      gidsign=$yyy
17997                 case "$gidsign" in
17998                  1) echo "Your $zzz is unsigned." ;;
17999                 -1) echo "Your $zzz is signed."   ;;
18000                 esac
18001                 ;;
18002         esac
18003 else
18004         gidsign=1
18005         echo "(I can't compile the test program--guessing unsigned.)" >&4
18006 fi
18007
18008
18009 echo " "
18010
18011 if $test X"$quadtype" != X; then
18012
18013 echo "Checking how to print 64-bit integers..." >&4
18014
18015 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18016         $cat >try.c <<'EOCP'
18017 #include <sys/types.h>
18018 #include <stdio.h>
18019 int main() {
18020   int q = 12345678901;
18021   printf("%ld\n", q);
18022 }
18023 EOCP
18024         set try
18025         if eval $compile; then
18026                 yyy=`$run ./try`
18027                 case "$yyy" in
18028                 12345678901)
18029                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18030                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18031                         echo "We will use %d."
18032                         ;;
18033                 esac
18034         fi
18035 fi
18036
18037 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18038         $cat >try.c <<'EOCP'
18039 #include <sys/types.h>
18040 #include <stdio.h>
18041 int main() {
18042   long q = 12345678901;
18043   printf("%ld\n", q);
18044 }
18045 EOCP
18046         set try
18047         if eval $compile; then
18048                 yyy=`$run ./try`
18049                 case "$yyy" in
18050                 12345678901)
18051                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18052                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18053                         echo "We will use %ld."
18054                         ;;
18055                 esac
18056         fi
18057 fi
18058
18059 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18060         $cat >try.c <<'EOCP'
18061 #include <sys/types.h>
18062 #include <inttypes.h>
18063 #include <stdio.h>
18064 int main() {
18065   int64_t q = 12345678901;
18066   printf("%" PRId64 "\n", q);
18067 }
18068 EOCP
18069         set try
18070         if eval $compile; then
18071                 yyy=`$run ./try`
18072                 case "$yyy" in
18073                 12345678901)
18074                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18075                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18076                         echo "We will use the C9X style."
18077                         ;;
18078                 esac
18079         fi
18080 fi
18081
18082 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18083         $cat >try.c <<EOCP
18084 #include <sys/types.h>
18085 #include <stdio.h>
18086 int main() {
18087   $quadtype q = 12345678901;
18088   printf("%Ld\n", q);
18089 }
18090 EOCP
18091         set try
18092         if eval $compile; then
18093                 yyy=`$run ./try`
18094                 case "$yyy" in
18095                 12345678901)
18096                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18097                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18098                         echo "We will use %Ld."
18099                         ;;
18100                 esac
18101         fi
18102 fi
18103
18104 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18105         $cat >try.c <<'EOCP'
18106 #include <sys/types.h>
18107 #include <stdio.h>
18108 int main() {
18109   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18110   printf("%lld\n", q);
18111 }
18112 EOCP
18113         set try
18114         if eval $compile; then
18115                 yyy=`$run ./try`
18116                 case "$yyy" in
18117                 12345678901)
18118                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18119                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18120                         echo "We will use the %lld style."
18121                         ;;
18122                 esac
18123         fi
18124 fi
18125
18126 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18127         $cat >try.c <<EOCP
18128 #include <sys/types.h>
18129 #include <stdio.h>
18130 int main() {
18131   $quadtype q = 12345678901;
18132   printf("%qd\n", q);
18133 }
18134 EOCP
18135         set try
18136         if eval $compile; then
18137                 yyy=`$run ./try`
18138                 case "$yyy" in
18139                 12345678901)
18140                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18141                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18142                         echo "We will use %qd."
18143                         ;;
18144                 esac
18145         fi
18146 fi
18147
18148 if $test X"$sPRId64" = X; then
18149         echo "Cannot figure out how to print 64-bit integers." >&4
18150 fi
18151
18152 $rm -f try try.*
18153
18154 fi
18155
18156 case "$sPRId64" in
18157 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18158         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18159         ;;
18160 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18161         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18162         ;;
18163 esac
18164
18165
18166 echo " "
18167 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18168
18169 if $test X"$ivsize" = X8; then
18170         ivdformat="$sPRId64"
18171         uvuformat="$sPRIu64"
18172         uvoformat="$sPRIo64"
18173         uvxformat="$sPRIx64"
18174         uvXUformat="$sPRIXU64"
18175 else
18176         if $test X"$ivsize" = X"$longsize"; then
18177                 ivdformat='"ld"'
18178                 uvuformat='"lu"'
18179                 uvoformat='"lo"'
18180                 uvxformat='"lx"'
18181                 uvXUformat='"lX"'
18182         else
18183                 if $test X"$ivsize" = X"$intsize"; then
18184                         ivdformat='"d"'
18185                         uvuformat='"u"'
18186                         uvoformat='"o"'
18187                         uvxformat='"x"'
18188                         uvXUformat='"X"'
18189                 else
18190                         : far out
18191                         if $test X"$ivsize" = X"$shortsize"; then
18192                                 ivdformat='"hd"'
18193                                 uvuformat='"hu"'
18194                                 uvoformat='"ho"'
18195                                 uvxformat='"hx"'
18196                                 uvXUformat='"hX"'
18197                         fi
18198                 fi
18199         fi
18200 fi
18201
18202 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18203         nveformat="$sPRIeldbl"
18204         nvfformat="$sPRIfldbl"
18205         nvgformat="$sPRIgldbl"
18206         nvEUformat="$sPRIEUldbl"
18207         nvFUformat="$sPRIFUldbl"
18208         nvGUformat="$sPRIGUldbl"
18209 else
18210         nveformat='"e"'
18211         nvfformat='"f"'
18212         nvgformat='"g"'
18213         nvEUformat='"E"'
18214         nvFUformat='"F"'
18215         nvGUformat='"G"'
18216 fi
18217
18218 case "$ivdformat" in
18219 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18220     exit 1
18221     ;;
18222 esac
18223
18224
18225 echo " "
18226 $echo "Checking the format string to be used for gids..." >&4
18227
18228 case "$gidsign" in
18229 -1)     if $test X"$gidsize" = X"$ivsize"; then
18230                 gidformat="$ivdformat"
18231         else
18232                 if $test X"$gidsize" = X"$longsize"; then
18233                         gidformat='"ld"'
18234                 else
18235                         if $test X"$gidsize" = X"$intsize"; then
18236                                 gidformat='"d"'
18237                         else
18238                                 if $test X"$gidsize" = X"$shortsize"; then
18239                                         gidformat='"hd"'
18240                                 fi
18241                         fi
18242                 fi
18243         fi
18244         ;;
18245 *)      if $test X"$gidsize" = X"$uvsize"; then
18246                 gidformat="$uvuformat"
18247         else
18248                 if $test X"$gidsize" = X"$longsize"; then
18249                         gidformat='"lu"'
18250                 else
18251                         if $test X"$gidsize" = X"$intsize"; then
18252                                 gidformat='"u"'
18253                         else
18254                                 if $test X"$gidsize" = X"$shortsize"; then
18255                                         gidformat='"hu"'
18256                                 fi
18257                         fi
18258                 fi
18259         fi
18260         ;;
18261 esac
18262
18263 : see if getgroups exists
18264 set getgroups d_getgrps
18265 eval $inlibc
18266
18267 : see if setgroups exists
18268 set setgroups d_setgrps
18269 eval $inlibc
18270
18271
18272 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18273 echo " "
18274 case "$d_getgrps$d_setgrps" in
18275 *define*)
18276         case "$groupstype" in
18277         '') dflt="$gidtype" ;;
18278         *)  dflt="$groupstype" ;;
18279         esac
18280         $cat <<EOM
18281 What type of pointer is the second argument to getgroups() and setgroups()?
18282 Usually this is the same as group ids, $gidtype, but not always.
18283
18284 EOM
18285         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18286         . ./myread
18287         groupstype="$ans"
18288         ;;
18289 *)  groupstype="$gidtype";;
18290 esac
18291
18292 echo " "
18293 echo "Checking if your $make program sets \$(MAKE)..." >&4
18294 case "$make_set_make" in
18295 '')
18296         $sed 's/^X //' > testmake.mak << 'EOF'
18297 Xall:
18298 X       @echo 'maketemp="$(MAKE)"'
18299 EOF
18300         case "`$make -f testmake.mak 2>/dev/null`" in
18301         *maketemp=*) make_set_make='#' ;;
18302         *)      make_set_make="MAKE=$make" ;;
18303         esac
18304         $rm -f testmake.mak
18305         ;;
18306 esac
18307 case "$make_set_make" in
18308 '#') echo "Yup, it does.";;
18309 *) echo "Nope, it doesn't.";;
18310 esac
18311
18312 : see what type is used for mode_t
18313 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18314 set mode_t modetype int stdio.h sys/types.h
18315 eval $typedef_ask
18316
18317 : see if stdarg is available
18318 echo " "
18319 if $test `./findhdr stdarg.h`; then
18320         echo "<stdarg.h> found." >&4
18321         valstd="$define"
18322 else
18323         echo "<stdarg.h> NOT found." >&4
18324         valstd="$undef"
18325 fi
18326
18327 : see if varags is available
18328 echo " "
18329 if $test `./findhdr varargs.h`; then
18330         echo "<varargs.h> found." >&4
18331 else
18332         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18333 fi
18334
18335 : set up the varargs testing programs
18336 $cat > varargs.c <<EOP
18337 #ifdef I_STDARG
18338 #include <stdarg.h>
18339 #endif
18340 #ifdef I_VARARGS
18341 #include <varargs.h>
18342 #endif
18343
18344 #ifdef I_STDARG
18345 int f(char *p, ...)
18346 #else
18347 int f(va_alist)
18348 va_dcl
18349 #endif
18350 {
18351         va_list ap;
18352 #ifndef I_STDARG
18353         char *p;
18354 #endif
18355 #ifdef I_STDARG
18356         va_start(ap,p);
18357 #else
18358         va_start(ap);
18359         p = va_arg(ap, char *);
18360 #endif
18361         va_end(ap);
18362 }
18363 EOP
18364 $cat > varargs <<EOP
18365 $startsh
18366 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18367         echo "true"
18368 else
18369         echo "false"
18370 fi
18371 $rm -f varargs$_o
18372 EOP
18373 chmod +x varargs
18374
18375 : now check which varargs header should be included
18376 echo " "
18377 i_varhdr=''
18378 case "$valstd" in
18379 "$define")
18380         if `./varargs I_STDARG`; then
18381                 val='stdarg.h'
18382         elif `./varargs I_VARARGS`; then
18383                 val='varargs.h'
18384         fi
18385         ;;
18386 *)
18387         if `./varargs I_VARARGS`; then
18388                 val='varargs.h'
18389         fi
18390         ;;
18391 esac
18392 case "$val" in
18393 '')
18394 echo "I could not find the definition for va_dcl... You have problems..." >&4
18395         val="$undef"; set i_stdarg; eval $setvar
18396         val="$undef"; set i_varargs; eval $setvar
18397         ;;
18398 *) 
18399         set i_varhdr
18400         eval $setvar
18401         case "$i_varhdr" in
18402         stdarg.h)
18403                 val="$define"; set i_stdarg; eval $setvar
18404                 val="$undef"; set i_varargs; eval $setvar
18405                 ;;
18406         varargs.h)
18407                 val="$undef"; set i_stdarg; eval $setvar
18408                 val="$define"; set i_varargs; eval $setvar
18409                 ;;
18410         esac
18411         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18412 esac
18413 $rm -f varargs*
18414
18415 : see if we need va_copy
18416 echo " "
18417 case "$i_stdarg" in
18418 "$define")
18419         $cat >try.c <<EOCP
18420 #include <stdarg.h>
18421 #include <stdio.h>
18422 #$i_stdlib I_STDLIB
18423 #ifdef I_STDLIB
18424 #include <stdlib.h>
18425 #endif
18426 #include <signal.h>
18427
18428 int
18429 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18430 {
18431   return vfprintf(f, fmt, *valp);
18432 }
18433  
18434 int    
18435 myvfprintf(FILE *f, const  char *fmt, va_list val)
18436 {
18437   return ivfprintf(f, fmt, &val);
18438 }
18439       
18440 int
18441 myprintf(char *fmt, ...) 
18442 {
18443   va_list val;
18444   va_start(val, fmt);
18445   return myvfprintf(stdout, fmt, val); 
18446 }         
18447
18448 int
18449 main(int ac, char **av)
18450 {
18451   signal(SIGSEGV, exit);
18452
18453   myprintf("%s%cs all right, then\n", "that", '\'');                            
18454   exit(0);      
18455 }
18456 EOCP
18457         set try
18458         if eval $compile && $run ./try 2>&1 >/dev/null; then
18459                 case "`$run ./try`" in
18460                 "that's all right, then")
18461                         okay=yes
18462                         ;;
18463                 esac
18464         fi
18465         case "$okay" in
18466         yes)    echo "It seems that you don't need va_copy()." >&4
18467                 need_va_copy="$undef"
18468                 ;;
18469         *)      echo "It seems that va_copy() or similar will be needed." >&4
18470                 need_va_copy="$define"
18471                 ;;
18472         esac
18473         $rm -f try.* core core.* *.core *.core.*
18474         ;;
18475 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18476         ;;
18477 esac
18478
18479 : see what type is used for size_t
18480 rp="What is the type used for the length parameter for string functions?"
18481 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18482 eval $typedef_ask
18483
18484 : check for type of arguments to gethostbyaddr. 
18485 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18486         case "$d_gethbyaddr" in
18487         $define)
18488                 $cat <<EOM
18489
18490 Checking to see what type of arguments are accepted by gethostbyaddr().
18491 EOM
18492                 hdrs="$define sys/types.h
18493                         $d_socket sys/socket.h 
18494                         $i_niin netinet/in.h 
18495                         $i_netdb netdb.h
18496                         $i_unistd unistd.h"
18497                 : The first arg can 'char *' or 'void *'
18498                 : The second arg is some of integral type
18499                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18500                         for yyy in size_t long int; do
18501                                 case "$netdb_host_type" in
18502                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18503                                         if ./protochk "$try" $hdrs; then
18504                                                 echo "Your system accepts $xxx for the first arg."
18505                                                 echo "...and $yyy for the second arg."
18506                                                 netdb_host_type="$xxx"
18507                                                 netdb_hlen_type="$yyy"
18508                                         fi
18509                                         ;;
18510                                 esac
18511                         done
18512                 done
18513                 : In case none of those worked, prompt the user.
18514                 case "$netdb_host_type" in
18515                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18516                         dflt='char *'
18517                         . ./myread
18518                         netdb_host_type=$ans
18519                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18520                         dflt="$sizetype"
18521                         . ./myread
18522                         netdb_hlen_type=$ans
18523                         ;;
18524                 esac
18525                 ;;
18526         *)      : no gethostbyaddr, so pick harmless defaults
18527                 netdb_host_type='char *'
18528                 netdb_hlen_type="$sizetype"
18529                 ;;
18530         esac
18531         # Remove the "const" if needed. -- but then we'll have a 
18532         # prototype clash!
18533         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18534 fi
18535
18536 : check for type of argument to gethostbyname. 
18537 if test "X$netdb_name_type" = X ; then
18538         case "$d_gethbyname" in
18539         $define)
18540                 $cat <<EOM
18541
18542 Checking to see what type of argument is accepted by gethostbyname().
18543 EOM
18544                 hdrs="$define sys/types.h
18545                         $d_socket sys/socket.h 
18546                         $i_niin netinet/in.h 
18547                         $i_netdb netdb.h
18548                         $i_unistd unistd.h"
18549                 for xxx in "const char *" "char *"; do
18550                         case "$netdb_name_type" in
18551                         '')     try="extern struct hostent *gethostbyname($xxx);"
18552                                 if ./protochk "$try" $hdrs; then
18553                                         echo "Your system accepts $xxx."
18554                                         netdb_name_type="$xxx"
18555                                 fi
18556                                 ;;
18557                         esac
18558                 done
18559                 : In case none of those worked, prompt the user.
18560                 case "$netdb_name_type" in
18561                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18562                         dflt='char *'
18563                         . ./myread
18564                         netdb_name_type=$ans
18565                         ;;
18566                 esac
18567                 ;;
18568         *)      : no gethostbyname, so pick harmless default
18569                 netdb_name_type='char *'
18570                 ;;
18571         esac
18572 fi
18573
18574 : check for type of 1st argument to getnetbyaddr. 
18575 if test "X$netdb_net_type" = X ; then
18576         case "$d_getnbyaddr" in
18577         $define)
18578                 $cat <<EOM
18579
18580 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18581 EOM
18582                 hdrs="$define sys/types.h
18583                         $d_socket sys/socket.h 
18584                         $i_niin netinet/in.h 
18585                         $i_netdb netdb.h
18586                         $i_unistd unistd.h"
18587                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18588                         case "$netdb_net_type" in
18589                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18590                                 if ./protochk "$try" $hdrs; then
18591                                         echo "Your system accepts $xxx."
18592                                         netdb_net_type="$xxx"
18593                                 fi
18594                                 ;;
18595                         esac
18596                 done
18597                 : In case none of those worked, prompt the user.
18598                 case "$netdb_net_type" in
18599                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18600                         dflt='long'
18601                         . ./myread
18602                         netdb_net_type=$ans
18603                         ;;
18604                 esac
18605                 ;;
18606         *)      : no getnetbyaddr, so pick harmless default
18607                 netdb_net_type='long'
18608                 ;;
18609         esac
18610 fi
18611 : locate the preferred pager for this system
18612 fn=f/
18613 case "$pager" in
18614 '')
18615         dflt=''
18616         case "$pg" in
18617         /*) dflt=$pg;;
18618         [a-zA-Z]:/*) dflt=$pg;;
18619         esac
18620         case "$more" in
18621         /*) dflt=$more;;
18622         [a-zA-Z]:/*) dflt=$more;;
18623         esac
18624         case "$less" in
18625         /*) dflt=$less;;
18626         [a-zA-Z]:/*) dflt=$less;;
18627         esac
18628         case "$dflt" in
18629         '') dflt=/usr/ucb/more;;
18630         esac
18631         ;;
18632 *)      dflt="$pager"
18633         : Instruct ./getfile to trust the hinted or previous pager value,
18634         : even if it does not begin with a slash.  For example, on os2,
18635         : pager might be cmd /c more.  See comments in UU/getfile.
18636         fn="f/($pager)"
18637         ;;
18638 esac
18639 echo " "
18640 rp='What pager is used on your system?'
18641 . ./getfile
18642 pager="$ans"
18643
18644 : see what type pids are declared as in the kernel
18645 rp="What is the type of process ids on this system?"
18646 set pid_t pidtype int stdio.h sys/types.h
18647 eval $typedef_ask
18648
18649 : Find earliest binary compatible site_perl subdirectory perl can use.
18650 xs_apiversion=$version # The current site_perl version.
18651 : Find earliest pure perl site_perl subdirectory perl can use.
18652 : The versioned directories started at 5.005.
18653 pm_apiversion='5.005'
18654
18655 : see if ar generates random libraries by itself
18656 echo " "
18657 echo "Checking how to generate random libraries on your machine..." >&4
18658 echo 'int bar1() { return bar2(); }' > bar1.c
18659 echo 'int bar2() { return 2; }' > bar2.c
18660 $cat > foo.c <<EOP
18661 #$i_stdlib I_STDLIB
18662 #ifdef I_STDLIB
18663 #include <stdlib.h>
18664 #endif
18665 int main() { printf("%d\n", bar1()); exit(0); }
18666 EOP
18667 $cc $ccflags -c bar1.c >/dev/null 2>&1
18668 $cc $ccflags -c bar2.c >/dev/null 2>&1
18669 $cc $ccflags -c foo.c >/dev/null 2>&1
18670 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18671 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18672         $run ./foobar >/dev/null 2>&1; then
18673         echo "$ar appears to generate random libraries itself."
18674         orderlib=false
18675         ranlib=":"
18676 elif $ar ts bar$_a >/dev/null 2>&1 &&
18677         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18678         $run ./foobar >/dev/null 2>&1; then
18679                 echo "a table of contents needs to be added with '$ar ts'."
18680                 orderlib=false
18681                 ranlib="$ar ts"
18682 else
18683         case "$ranlib" in
18684         :) ranlib='';;
18685         '')
18686                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18687                 $test -f $ranlib || ranlib=''
18688                 ;;
18689         esac
18690         if $test -n "$ranlib"; then
18691                 echo "your system has '$ranlib'; we'll use that."
18692                 orderlib=false
18693         else
18694                 echo "your system doesn't seem to support random libraries"
18695                 echo "so we'll use lorder and tsort to order the libraries."
18696                 orderlib=true
18697                 ranlib=":"
18698         fi
18699 fi
18700 $rm -f foo* bar* 
18701
18702 : check for type of arguments to select. 
18703 case "$selecttype" in
18704 '') case "$d_select" in
18705         $define)
18706                 echo " "
18707                 $cat <<EOM
18708 Checking to see what type of arguments are accepted by select().
18709 EOM
18710                 hdrs="$define sys/types.h
18711                         $i_systime sys/time.h 
18712                         $i_sysselct sys/select.h
18713                         $d_socket sys/socket.h"
18714                 : The first arg can be int, unsigned, or size_t
18715                 : The last arg may or may not be 'const'
18716                 val=''
18717                 : void pointer has been seen but using that
18718                 : breaks the selectminbits test
18719                 for xxx in 'fd_set *' 'int *'; do
18720                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18721                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18722                                         case "$val" in
18723                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18724                                                 if ./protochk "$try" $hdrs; then
18725                                                         echo "Your system accepts $xxx."
18726                                                         val="$xxx"
18727                                                 fi
18728                                                 ;;
18729                                         esac
18730                                 done
18731                         done
18732                 done
18733                 case "$val" in
18734                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18735                         case "$d_fd_set" in
18736                                 $define) dflt="fd_set *" ;;
18737                                 *)              dflt="int *" ;;
18738                         esac
18739                         . ./myread
18740                         val=$ans
18741                         ;;
18742                 esac
18743                 selecttype="$val"
18744                 ;;
18745         *)      : no select, so pick a harmless default
18746                 selecttype='int *'
18747                 ;;
18748         esac
18749         ;;
18750 esac
18751
18752 : check for the select 'width'
18753 case "$selectminbits" in
18754 '') safebits=`expr $ptrsize \* 8`
18755     case "$d_select" in
18756         $define)
18757                 $cat <<EOM
18758
18759 Checking to see on how many bits at a time your select() operates...
18760 EOM
18761                 $cat >try.c <<EOCP
18762 #include <sys/types.h>
18763 #$i_time I_TIME
18764 #$i_systime I_SYS_TIME
18765 #$i_systimek I_SYS_TIME_KERNEL
18766 #ifdef I_TIME
18767 #   include <time.h>
18768 #endif
18769 #ifdef I_SYS_TIME
18770 #   ifdef I_SYS_TIME_KERNEL
18771 #       define KERNEL
18772 #   endif
18773 #   include <sys/time.h>
18774 #   ifdef I_SYS_TIME_KERNEL
18775 #       undef KERNEL
18776 #   endif
18777 #endif
18778 #$i_sysselct I_SYS_SELECT
18779 #ifdef I_SYS_SELECT
18780 #include <sys/select.h>
18781 #endif
18782 #$d_socket HAS_SOCKET
18783 #ifdef HAS_SOCKET
18784 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18785 #endif
18786 #include <stdio.h>
18787 #$i_stdlib I_STDLIB
18788 #ifdef I_STDLIB
18789 #include <stdlib.h>
18790 #endif
18791 $selecttype b;
18792 #define S sizeof(*(b))
18793 #define MINBITS 64
18794 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18795 #define NBITS  (NBYTES * 8)
18796 int main() {
18797     char *s = malloc(NBYTES);
18798     struct timeval t;
18799     int i;
18800     FILE* fp;
18801     int fd;
18802
18803     if (!s)
18804         exit(1);
18805     fclose(stdin);
18806     fp = fopen("try.c", "r");
18807     if (fp == 0)
18808       exit(2);
18809     fd = fileno(fp);
18810     if (fd < 0)
18811       exit(3);
18812     b = ($selecttype)s;
18813     for (i = 0; i < NBITS; i++)
18814         FD_SET(i, b);
18815     t.tv_sec  = 0;
18816     t.tv_usec = 0;
18817     select(fd + 1, b, 0, 0, &t);
18818     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18819     free(s);
18820     printf("%d\n", i + 1);
18821     return 0;
18822 }
18823 EOCP
18824                 set try
18825                 if eval $compile_ok; then
18826                         selectminbits=`$run ./try`
18827                         case "$selectminbits" in
18828                         '')     cat >&4 <<EOM
18829 Cannot figure out on how many bits at a time your select() operates.
18830 I'll play safe and guess it is $safebits bits.
18831 EOM
18832                                 selectminbits=$safebits
18833                                 bits="$safebits bits"
18834                                 ;;
18835                         1)      bits="1 bit" ;;
18836                         *)      bits="$selectminbits bits" ;;
18837                         esac
18838                         echo "Your select() operates on $bits at a time." >&4
18839                 else
18840                         rp='What is the minimum number of bits your select() operates on?'
18841                         case "$byteorder" in
18842                         12345678)       dflt=64 ;;
18843                         1234)           dflt=32 ;;
18844                         *)              dflt=1  ;;
18845                         esac
18846                         . ./myread
18847                         val=$ans
18848                         selectminbits="$val"
18849                 fi
18850                 $rm -f try.* try
18851                 ;;
18852         *)      : no select, so pick a harmless default
18853                 selectminbits=$safebits
18854                 ;;
18855         esac
18856         ;;
18857 esac
18858
18859 : Trace out the files included by signal.h, then look for SIGxxx names.
18860 : Remove SIGARRAYSIZE used by HPUX.
18861 : Remove SIGSTKSIZE used by Linux.
18862 : Remove SIGSTKSZ used by Posix.
18863 : Remove SIGTYP void lines used by OS2.
18864 : Some cpps, like os390, dont give the file name anywhere
18865 if [ "X$fieldn" = X ]; then
18866         : Just make some guesses.  We check them later.
18867         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18868 else
18869         xxx=`echo '#include <signal.h>' |
18870         $cppstdin $cppminus $cppflags 2>/dev/null |
18871         $grep '^[       ]*#.*include' | 
18872         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18873 fi
18874 : Check this list of files to be sure we have parsed the cpp output ok.
18875 : This will also avoid potentially non-existent files, such 
18876 : as ../foo/bar.h
18877 xxxfiles=''
18878 for xx in $xxx /dev/null ; do
18879         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18880 done
18881 : If we have found no files, at least try signal.h
18882 case "$xxxfiles" in
18883 '')     xxxfiles=`./findhdr signal.h` ;;
18884 esac
18885 xxx=`awk '
18886 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18887         print substr($2, 4, 20)
18888 }
18889 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18890         print substr($3, 4, 20)
18891 }' $xxxfiles`
18892 : Append some common names just in case the awk scan failed.
18893 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18894 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18895 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18896 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18897 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18898
18899 : generate a few handy files for later
18900 $cat > signal.c <<EOCP
18901 #include <sys/types.h>
18902 #include <signal.h>
18903 #$i_stdlib I_STDLIB
18904 #ifdef I_STDLIB
18905 #include <stdlib.h>
18906 #endif
18907 #include <stdio.h>
18908 int main() {
18909
18910 /* Strange style to avoid deeply-nested #if/#else/#endif */
18911 #ifndef NSIG
18912 #  ifdef _NSIG
18913 #    define NSIG (_NSIG)
18914 #  endif
18915 #endif
18916
18917 #ifndef NSIG
18918 #  ifdef SIGMAX
18919 #    define NSIG (SIGMAX+1)
18920 #  endif
18921 #endif
18922
18923 #ifndef NSIG
18924 #  ifdef SIG_MAX
18925 #    define NSIG (SIG_MAX+1)
18926 #  endif
18927 #endif
18928
18929 #ifndef NSIG
18930 #  ifdef MAXSIG
18931 #    define NSIG (MAXSIG+1)
18932 #  endif
18933 #endif
18934
18935 #ifndef NSIG
18936 #  ifdef MAX_SIG
18937 #    define NSIG (MAX_SIG+1)
18938 #  endif
18939 #endif
18940
18941 #ifndef NSIG
18942 #  ifdef SIGARRAYSIZE
18943 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18944 #  endif
18945 #endif
18946
18947 #ifndef NSIG
18948 #  ifdef _sys_nsig
18949 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18950 #  endif
18951 #endif
18952
18953 /* Default to some arbitrary number that's big enough to get most
18954    of the common signals.
18955 */
18956 #ifndef NSIG
18957 #    define NSIG 50
18958 #endif
18959
18960 printf("NSIG %d\n", NSIG);
18961
18962 #ifndef JUST_NSIG
18963
18964 EOCP
18965
18966 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18967 {
18968         printf "#ifdef SIG"; printf $1; printf "\n"
18969         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18970         printf $1; printf ");\n"
18971         printf "#endif\n"
18972 }
18973 END {
18974         printf "#endif /* JUST_NSIG */\n";
18975         printf "exit(0);\n}\n";
18976 }
18977 ' >>signal.c
18978 $cat >signal.awk <<'EOP'
18979 BEGIN { ndups = 0 }
18980 $1 ~ /^NSIG$/ { nsig = $2 }
18981 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
18982     if ($2 > maxsig) { maxsig = $2 }
18983     if (sig_name[$2]) {
18984         dup_name[ndups] = $1
18985         dup_num[ndups] = $2
18986         ndups++ 
18987     }
18988     else {
18989         sig_name[$2] = $1
18990         sig_num[$2] = $2
18991     }
18992 }
18993 END { 
18994     if (nsig == 0) {
18995         nsig = maxsig + 1
18996     }
18997     printf("NSIG %d\n", nsig);
18998     for (n = 1; n < nsig; n++) {
18999         if (sig_name[n]) {
19000             printf("%s %d\n", sig_name[n], sig_num[n])
19001         }
19002         else {
19003             printf("NUM%d %d\n", n, n) 
19004         }
19005     }
19006     for (n = 0; n < ndups; n++) {
19007         printf("%s %d\n", dup_name[n], dup_num[n])
19008     }
19009 }
19010 EOP
19011 $cat >signal_cmd <<EOS
19012 $startsh
19013 if $test -s signal.lst; then
19014     echo "Using your existing signal.lst file"
19015         exit 0
19016 fi
19017 xxx="$xxx"
19018 EOS
19019 $cat >>signal_cmd <<'EOS'
19020
19021 set signal
19022 if eval $compile_ok; then
19023         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19024 else
19025         echo "(I can't seem be able to compile the whole test program)" >&4
19026         echo "(I'll try it in little pieces.)" >&4
19027         set signal -DJUST_NSIG
19028         if eval $compile_ok; then
19029                 $run ./signal$_exe > signal.nsg
19030                 $cat signal.nsg
19031         else
19032                 echo "I can't seem to figure out how many signals you have." >&4
19033                 echo "Guessing 50." >&4
19034                 echo 'NSIG 50' > signal.nsg
19035         fi
19036         : Now look at all the signal names, one at a time.
19037         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19038                 $cat > signal.c <<EOCP
19039 #include <sys/types.h>
19040 #include <signal.h>
19041 #include <stdio.h>
19042 int main() {
19043 printf("$xx %d\n", SIG${xx});
19044 return 0;
19045 }
19046 EOCP
19047                 set signal
19048                 if eval $compile; then
19049                         echo "SIG${xx} found."
19050                         $run ./signal$_exe  >> signal.ls1
19051                 else
19052                         echo "SIG${xx} NOT found."
19053                 fi
19054         done
19055         if $test -s signal.ls1; then
19056                 $cat signal.nsg signal.ls1 |
19057                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
19058         fi
19059
19060 fi
19061 if $test -s signal.lst; then
19062         :
19063 else
19064         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19065         echo 'kill -l' >signal
19066         set X `csh -f <signal`
19067         $rm -f signal
19068         shift
19069         case $# in
19070         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19071         esac
19072         echo $@ | $tr ' ' $trnl | \
19073             $awk '{ printf "%s %d\n", $1, ++s; }
19074                   END { printf "NSIG %d\n", ++s }' >signal.lst
19075 fi
19076 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19077 EOS
19078 chmod a+x signal_cmd
19079 $eunicefix signal_cmd
19080
19081 : generate list of signal names
19082 echo " "
19083 case "$sig_name_init" in
19084 '') doinit=yes ;;
19085 *)  case "$sig_num_init" in
19086     ''|*,*) doinit=yes ;;
19087     esac ;;
19088 esac
19089 case "$doinit" in
19090 yes)
19091         echo "Generating a list of signal names and numbers..." >&4
19092         . ./signal_cmd
19093         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19094         sig_name=`$awk 'BEGIN { printf "ZERO " }
19095                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19096         sig_num=`$awk  'BEGIN { printf "0 " }
19097                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19098         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19099                              !/^NSIG/   { printf "\"%s\", ", $1 }
19100                              END        { printf "0\n" }' signal.lst`
19101         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19102                              !/^NSIG/   { printf "%d, ", $2}
19103                              END        { printf "0\n"}' signal.lst`
19104         ;;
19105 esac
19106 echo "The following $sig_count signals are available:"
19107 echo " "
19108 echo $sig_name | $awk \
19109 'BEGIN { linelen = 0 }
19110 {
19111         for (i = 1; i <= NF; i++) {
19112                 name = "SIG" $i " "
19113                 linelen = linelen + length(name)
19114                 if (linelen > 70) {
19115                         printf "\n"
19116                         linelen = length(name)
19117                 }
19118                 printf "%s", name
19119         }
19120         printf "\n"
19121 }'
19122 sig_size=`echo $sig_name | awk '{print NF}'`
19123 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19124
19125 echo " "
19126 case "$sizetype" in
19127 *_t) zzz="$sizetype"    ;;
19128 *)   zzz="filesize"     ;;
19129 esac
19130 echo "Checking the size of $zzz..." >&4 
19131 cat > try.c <<EOCP
19132 #include <sys/types.h>
19133 #include <stdio.h>
19134 #$i_stdlib I_STDLIB
19135 #ifdef I_STDLIB
19136 #include <stdlib.h>
19137 #endif
19138 int main() {
19139     printf("%d\n", (int)sizeof($sizetype));
19140     exit(0);
19141 }
19142 EOCP
19143 set try
19144 if eval $compile_ok; then
19145         yyy=`$run ./try`
19146         case "$yyy" in
19147         '')     sizesize=4
19148                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19149                 ;;
19150         *)      sizesize=$yyy
19151                 echo "Your $zzz size is $sizesize bytes."
19152                 ;;
19153         esac
19154 else
19155         sizesize=4
19156         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19157 fi
19158
19159
19160 : check for socklen_t
19161 echo " "
19162 echo "Checking to see if you have socklen_t..." >&4
19163 $cat >try.c <<EOCP
19164 #include <sys/types.h>
19165 #$d_socket HAS_SOCKET
19166 #ifdef HAS_SOCKET
19167 #include <sys/socket.h>
19168 #endif
19169 int main() { socklen_t x = 16; }
19170 EOCP
19171 set try
19172 if eval $compile; then
19173         val="$define"
19174         echo "You have socklen_t."
19175 else
19176         val="$undef"
19177         echo "You do not have socklen_t."
19178         case "$sizetype" in
19179         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19180         esac
19181 fi
19182 $rm -f try try.*
19183 set d_socklen_t
19184 eval $setvar
19185
19186 : see if this is a socks.h system
19187 set socks.h i_socks
19188 eval $inhdr
19189
19190 : check for type of the size argument to socket calls
19191 case "$d_socket" in
19192 "$define")
19193         $cat <<EOM
19194
19195 Checking to see what type is the last argument of accept().
19196 EOM
19197         yyy=''
19198         case "$d_socklen_t" in
19199         "$define") yyy="$yyy socklen_t"
19200         esac
19201         yyy="$yyy $sizetype int long unsigned"
19202         for xxx in $yyy; do
19203                 case "$socksizetype" in
19204                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19205                         case "$usesocks" in
19206                         "$define")
19207                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19208                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19209                                         socksizetype="$xxx"
19210                                 fi
19211                                 ;;
19212                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19213                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19214                                         socksizetype="$xxx"
19215                                 fi
19216                                 ;;
19217                         esac
19218                         ;;
19219                 esac
19220         done
19221 : In case none of those worked, prompt the user.
19222         case "$socksizetype" in
19223         '')     rp='What is the type for socket address structure sizes?'
19224                 dflt='int'
19225                 . ./myread
19226                 socksizetype=$ans
19227                 ;;
19228         esac
19229         ;;
19230 *)      : no sockets, so pick relatively harmless default
19231         socksizetype='int'
19232         ;;
19233 esac
19234
19235 : see what type is used for signed size_t
19236 set ssize_t ssizetype int stdio.h sys/types.h
19237 eval $typedef
19238 dflt="$ssizetype"
19239 $cat > try.c <<EOM
19240 #include <stdio.h>
19241 #$i_stdlib I_STDLIB
19242 #ifdef I_STDLIB
19243 #include <stdlib.h>
19244 #endif
19245 #include <sys/types.h>
19246 #define Size_t $sizetype
19247 #define SSize_t $dflt
19248 int main()
19249 {
19250         if (sizeof(Size_t) == sizeof(SSize_t))
19251                 printf("$dflt\n");
19252         else if (sizeof(Size_t) == sizeof(int))
19253                 printf("int\n");
19254         else 
19255                 printf("long\n");
19256         exit(0);
19257 }
19258 EOM
19259 echo " "
19260 set try
19261 if eval $compile_ok && $run ./try > /dev/null; then
19262         ssizetype=`$run ./try`
19263         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19264 else
19265         $cat >&4 <<EOM
19266 Help! I can't compile and run the ssize_t test program: please enlighten me!
19267 (This is probably a misconfiguration in your system or libraries, and
19268 you really ought to fix it.  Still, I'll try anyway.)
19269
19270 I need a type that is the same size as $sizetype, but is guaranteed to
19271 be signed.  Common values are ssize_t, int and long.
19272
19273 EOM
19274         rp="What signed type is the same size as $sizetype?"
19275         . ./myread
19276         ssizetype="$ans"
19277 fi
19278 $rm -f try try.*
19279
19280 : see what type of char stdio uses.
19281 echo " "
19282 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19283 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19284         echo "Your stdio uses unsigned chars." >&4
19285         stdchar="unsigned char"
19286 else
19287         echo "Your stdio uses signed chars." >&4
19288         stdchar="char"
19289 fi
19290 $rm -f stdioh
19291
19292
19293
19294 : see what type uids are declared as in the kernel
19295 echo " "
19296 echo "Looking for the type for user ids returned by getuid()."
19297 set uid_t uidtype xxx stdio.h sys/types.h
19298 eval $typedef
19299 case "$uidtype" in
19300 xxx)
19301         xxx=`./findhdr sys/user.h`
19302         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19303         case $1 in
19304         unsigned) dflt="$1 $2" ;;
19305         *) dflt="$1" ;;
19306         esac
19307         ;;
19308 *) dflt="$uidtype";;
19309 esac
19310 case "$uidtype" in
19311 uid_t)  echo "uid_t found." ;;
19312 *)      rp="What is the type for user ids returned by getuid()?"
19313         . ./myread
19314         uidtype="$ans"
19315         ;;
19316 esac
19317
19318 echo " "
19319 case "$uidtype" in
19320 *_t) zzz="$uidtype"     ;;
19321 *)   zzz="uid"          ;;
19322 esac
19323 echo "Checking the size of $zzz..." >&4 
19324 cat > try.c <<EOCP
19325 #include <sys/types.h>
19326 #include <stdio.h>
19327 #$i_stdlib I_STDLIB
19328 #ifdef I_STDLIB
19329 #include <stdlib.h>
19330 #endif
19331 int main() {
19332     printf("%d\n", (int)sizeof($uidtype));
19333     exit(0);
19334 }
19335 EOCP
19336 set try
19337 if eval $compile_ok; then
19338         yyy=`$run ./try`
19339         case "$yyy" in
19340         '')     uidsize=4
19341                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19342                 ;;
19343         *)      uidsize=$yyy
19344                 echo "Your $zzz is $uidsize bytes long."
19345                 ;;
19346         esac
19347 else
19348         uidsize=4
19349         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19350 fi
19351
19352 echo " "
19353 case "$uidtype" in
19354 *_t) zzz="$uidtype"     ;;
19355 *)   zzz="uid"          ;;
19356 esac
19357 echo "Checking the sign of $zzz..." >&4
19358 cat > try.c <<EOCP
19359 #include <sys/types.h>
19360 #include <stdio.h>
19361 int main() {
19362         $uidtype foo = -1;
19363         if (foo < 0)
19364                 printf("-1\n");
19365         else
19366                 printf("1\n");
19367 }
19368 EOCP
19369 set try
19370 if eval $compile; then
19371         yyy=`$run ./try`
19372         case "$yyy" in
19373         '')     uidsign=1
19374                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19375                 ;;
19376         *)      uidsign=$yyy
19377                 case "$uidsign" in
19378                  1) echo "Your $zzz is unsigned." ;;
19379                 -1) echo "Your $zzz is signed."   ;;
19380                 esac
19381                 ;;
19382         esac
19383 else
19384         uidsign=1
19385         echo "(I can't compile the test program--guessing unsigned.)" >&4
19386 fi
19387
19388
19389
19390 echo " "
19391 $echo "Checking the format string to be used for uids..." >&4
19392
19393 case "$uidsign" in
19394 -1)     if $test X"$uidsize" = X"$ivsize"; then
19395                 uidformat="$ivdformat"
19396         else
19397                 if $test X"$uidsize" = X"$longsize"; then
19398                         uidformat='"ld"'
19399                 else
19400                         if $test X"$uidsize" = X"$intsize"; then
19401                                 uidformat='"d"'
19402                         else
19403                                 if $test X"$uidsize" = X"$shortsize"; then
19404                                         uidformat='"hd"'
19405                                 fi
19406                         fi
19407                 fi
19408         fi
19409         ;;
19410 *)      if $test X"$uidsize" = X"$uvsize"; then
19411                 uidformat="$uvuformat"
19412         else
19413                 if $test X"$uidsize" = X"$longsize"; then
19414                         uidformat='"lu"'
19415                 else
19416                         if $test X"$uidsize" = X"$intsize"; then
19417                                 uidformat='"u"'
19418                         else
19419                                 if $test X"$uidsize" = X"$shortsize"; then
19420                                         uidformat='"hu"'
19421                                 fi
19422                         fi
19423                 fi
19424         fi
19425         ;;
19426 esac
19427
19428 : determine compiler compiler
19429 case "$yacc" in
19430 '')
19431         dflt=yacc;;
19432 *)
19433         dflt="$yacc";;
19434 esac
19435 echo " "
19436 comp='yacc'
19437 if $test -f "$byacc$_exe"; then
19438         dflt="$byacc"
19439         comp="byacc or $comp"
19440 fi
19441 if $test -f "$bison$_exe"; then
19442         comp="$comp or bison -y"
19443 fi
19444 rp="Which compiler compiler ($comp) shall I use?"
19445 . ./myread
19446 yacc="$ans"
19447 case "$yacc" in
19448 *bis*)
19449         case "$yacc" in
19450         *-y*) ;;
19451         *)
19452                 yacc="$yacc -y"
19453                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19454                 ;;
19455         esac
19456         ;;
19457 esac
19458
19459 : see if this is a fp.h system
19460 set fp.h i_fp
19461 eval $inhdr
19462
19463 : see if this is a fp_class.h system
19464 set fp_class.h i_fp_class
19465 eval $inhdr
19466
19467 : see if this is a ieeefp.h system
19468 case "$i_ieeefp" in
19469 '' ) set ieeefp.h i_ieeefp
19470      eval $inhdr
19471      ;;
19472 esac
19473
19474 : see if this is a libutil.h system
19475 set libutil.h i_libutil
19476 eval $inhdr
19477
19478 : see if mach cthreads are available
19479 if test "X$usethreads" = "X$define"; then
19480         set mach/cthreads.h i_machcthr
19481         eval $inhdr
19482 else
19483         i_machcthr="$undef"
19484 fi
19485
19486
19487
19488 : see if this is a math.h system
19489 set math.h i_math
19490 eval $inhdr
19491
19492 : see if this is a mntent.h system
19493 set mntent.h i_mntent
19494 eval $inhdr
19495
19496 : see if ndbm.h is available
19497 set ndbm.h t_ndbm
19498 eval $inhdr
19499
19500 case "$t_ndbm" in
19501 $undef)
19502     # Some Linux distributions such as RedHat 7.1 put the
19503     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19504     if $test -f /usr/include/gdbm/ndbm.h; then
19505         echo '<gdbm/ndbm.h> found.'
19506         ccflags="$ccflags -I/usr/include/gdbm"
19507         cppflags="$cppflags -I/usr/include/gdbm"
19508         t_ndbm=$define
19509     fi
19510     ;;
19511 esac
19512
19513 case "$t_ndbm" in
19514 $define)
19515         : see if dbm_open exists
19516         set dbm_open d_dbm_open
19517         eval $inlibc
19518         case "$d_dbm_open" in
19519         $undef)
19520                 t_ndbm="$undef"
19521                 echo "We won't be including <ndbm.h>"
19522                 ;;
19523         esac
19524         ;;
19525 esac
19526 val="$t_ndbm"
19527 set i_ndbm
19528 eval $setvar
19529
19530 : see if net/errno.h is available
19531 val=''
19532 set net/errno.h val
19533 eval $inhdr
19534
19535 : Unfortunately, it causes problems on some systems.  Arrgh.
19536 case "$val" in
19537 $define)
19538         cat > try.c <<'EOM'
19539 #include <stdio.h>
19540 #include <errno.h>
19541 #include <net/errno.h>
19542 int func()
19543 {
19544         return ENOTSOCK;
19545 }
19546 EOM
19547         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19548                 echo "We'll be including <net/errno.h>." >&4
19549         else
19550                 echo "We won't be including <net/errno.h>." >&4
19551                 val="$undef"
19552         fi
19553         $rm -f try.* try
19554         ;;
19555 esac
19556 set i_neterrno
19557 eval $setvar
19558
19559 : see if netinet/tcp.h is available
19560 set netinet/tcp.h i_netinettcp
19561 eval $inhdr
19562
19563 : see if this is a poll.h system
19564 set poll.h i_poll
19565 eval $inhdr
19566
19567 : see if this is a prot.h system
19568 set prot.h i_prot
19569 eval $inhdr
19570
19571 echo " "
19572 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19573 $cat <<'EOSH' > Cppsym.know
19574 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19575 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19576 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19577 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19578 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19579 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19580 bull c cadmus clipper CMU COFF COMPILER_VERSION
19581 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19582 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19583 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19584 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19585 GLIBC GLIBC_MINOR
19586 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19587 H3050R H3050RX hbullx20 hcx host_mips
19588 hp200 hp300 hp700 HP700 hp800 hp9000
19589 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19590 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19591 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19592 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19593 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19594 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19595 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19596 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19597 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19598 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19599 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19600 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19601 MATH_HAS_NO_SIDE_EFFECTS
19602 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19603 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19604 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19605 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19606 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19607 NetBSD news1500 news1700 news1800 news1900 news3700
19608 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19609 ns32016 ns32332 ns32k nsc32000
19610 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19611 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19612 pc532 pdp11 PGC PIC plexus PORTAR posix
19613 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19614 POSIX_C_SOURCE POSIX_SOURCE POWER
19615 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19616 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19617 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19618 sony sony_news sonyrisc sparc sparclite spectrum
19619 stardent stdc STDC_EXT stratos sun sun3 sun386
19620 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19621 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19622 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19623 sysV68 sysV88 Tek4132 Tek4300 titan
19624 TM3200 TM5400 TM5600
19625 tower tower32 tower32_200 tower32_600 tower32_700
19626 tower32_800 tower32_850 tss
19627 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19628 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19629 unix UNIX95 UNIX99 unixpc unos
19630 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19631 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19632 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19633 USGr4 USGr4_2
19634 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19635 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19636 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19637 z8000
19638 EOSH
19639 # Maybe put other stuff here too.
19640 cat <<EOSH >>Cppsym.know
19641 $osname
19642 EOSH
19643 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19644 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19645 $cat Cppsym.know > Cppsym.c
19646 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19647 $rm -f Cppsym.a Cppsym.b Cppsym.c
19648 cat <<EOSH > Cppsym
19649 $startsh
19650 if $test \$# -gt 0; then
19651     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19652     if $test -s Cppsym.got; then
19653         $rm -f Cppsym.got
19654         exit 0
19655     fi
19656     $rm -f Cppsym.got
19657     exit 1
19658 else
19659     $tr " " "$trnl" | ./Cppsym.try
19660     exit 0
19661 fi
19662 EOSH
19663 chmod +x Cppsym
19664 $eunicefix Cppsym
19665 cat <<EOSH > Cppsym.try
19666 $startsh
19667 cat <<'EOCP' > try.c
19668 #include <stdio.h>
19669 int main() {
19670 EOCP
19671 $awk \\
19672 EOSH
19673 cat <<'EOSH' >> Cppsym.try
19674 'length($1) > 0 {
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     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
19677     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
19678     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
19679 }'       >> try.c
19680 echo 'return 0;}' >> try.c
19681 EOSH
19682 cat <<EOSH >> Cppsym.try
19683 ccflags="$ccflags"
19684 case "$osname-$gccversion" in
19685 irix-) ccflags="\$ccflags -woff 1178" ;;
19686 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19687 esac
19688 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19689 EOSH
19690 chmod +x Cppsym.try
19691 $eunicefix Cppsym.try
19692 ./Cppsym < Cppsym.know > Cppsym.true
19693 : now check the C compiler for additional symbols
19694 postprocess_cc_v=''
19695 case "$osname" in
19696 aix) postprocess_cc_v="|$tr , ' '" ;;
19697 esac
19698 $cat >ccsym <<EOS
19699 $startsh
19700 $cat >tmp.c <<EOF
19701 extern int foo;
19702 EOF
19703 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19704 do
19705         case "\$i" in
19706         -D*) echo "\$i" | $sed 's/^-D//';;
19707         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19708         esac
19709 done
19710 $rm -f try.c
19711 EOS
19712 postprocess_cc_v=''
19713 chmod +x ccsym
19714 $eunicefix ccsym
19715 ./ccsym > ccsym1.raw
19716 if $test -s ccsym1.raw; then
19717        $sort ccsym1.raw | $uniq >ccsym.raw
19718 else
19719        mv ccsym1.raw ccsym.raw
19720 fi
19721
19722 $awk '/\=/ { print $0; next }
19723         { print $0"=1" }' ccsym.raw >ccsym.list
19724 $awk '/\=/ { print $0; next }
19725         { print $0"=1" }' Cppsym.true >ccsym.true
19726 $comm -13 ccsym.true ccsym.list >ccsym.own
19727 $comm -12 ccsym.true ccsym.list >ccsym.com
19728 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19729 also=''
19730 if $test -z ccsym.raw; then
19731         echo "Your C compiler doesn't seem to define any symbols!" >&4
19732         echo " "
19733         echo "However, your C preprocessor defines the following symbols:"
19734         $cat Cppsym.true
19735         ccsymbols=''
19736         cppsymbols=`$cat Cppsym.true`
19737         cppsymbols=`echo $cppsymbols`
19738         cppccsymbols="$cppsymbols"
19739 else
19740         if $test -s ccsym.com; then
19741                 echo "Your C compiler and pre-processor define these symbols:"
19742                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19743                 also='also '
19744                 symbols='ones'
19745                 cppccsymbols=`$cat ccsym.com`
19746                 cppccsymbols=`echo $cppccsymbols`
19747                 $test "$silent" || sleep 1
19748         fi
19749         if $test -s ccsym.cpp; then
19750                 $test "$also" && echo " "
19751                 echo "Your C pre-processor ${also}defines the following symbols:"
19752                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19753                 also='further '
19754                 cppsymbols=`$cat ccsym.cpp`
19755                 cppsymbols=`echo $cppsymbols`
19756                 $test "$silent" || sleep 1
19757         fi
19758         if $test -s ccsym.own; then
19759                 $test "$also" && echo " "
19760                 echo "Your C compiler ${also}defines the following cpp symbols:"
19761                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19762                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19763                 ccsymbols=`$cat ccsym.own`
19764                 ccsymbols=`echo $ccsymbols`
19765                 $test "$silent" || sleep 1
19766         fi
19767 fi
19768
19769 : see if this is a termio system
19770 val="$undef"
19771 val2="$undef"
19772 val3="$undef"
19773 if $test `./findhdr termios.h`; then
19774         set tcsetattr i_termios
19775         eval $inlibc
19776         val3="$i_termios"
19777 fi
19778 echo " "
19779 case "$val3" in
19780 "$define") echo "You have POSIX termios.h... good!" >&4;;
19781 *) if ./Cppsym pyr; then
19782                 case "`/bin/universe`" in
19783                 ucb) if $test `./findhdr sgtty.h`; then
19784                                 val2="$define"
19785                                 echo "<sgtty.h> found." >&4
19786                         else
19787                                 echo "System is pyramid with BSD universe."
19788                                 echo "<sgtty.h> not found--you could have problems." >&4
19789                         fi;;
19790                 *) if $test `./findhdr termio.h`; then
19791                                 val="$define"
19792                                 echo "<termio.h> found." >&4
19793                         else
19794                                 echo "System is pyramid with USG universe."
19795                                 echo "<termio.h> not found--you could have problems." >&4
19796                         fi;;
19797                 esac
19798         elif ./usg; then
19799                 if $test `./findhdr termio.h`; then
19800                         echo "<termio.h> found." >&4
19801                         val="$define"
19802                 elif $test `./findhdr sgtty.h`; then
19803                         echo "<sgtty.h> found." >&4
19804                         val2="$define"
19805                 else
19806 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19807                 fi
19808         else
19809                 if $test `./findhdr sgtty.h`; then
19810                         echo "<sgtty.h> found." >&4
19811                         val2="$define"
19812                 elif $test `./findhdr termio.h`; then
19813                         echo "<termio.h> found." >&4
19814                         val="$define"
19815                 else
19816 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19817                 fi
19818         fi;;
19819 esac
19820 set i_termio; eval $setvar
19821 val=$val2; set i_sgtty; eval $setvar
19822 val=$val3; set i_termios; eval $setvar
19823
19824 : see if stddef is available
19825 set stddef.h i_stddef
19826 eval $inhdr
19827
19828 : see if this is a sunmath.h system
19829 set sunmath.h i_sunmath
19830 eval $inhdr
19831
19832 : see if sys/access.h is available
19833 set sys/access.h i_sysaccess
19834 eval $inhdr
19835
19836 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19837 set sys/filio.h i_sysfilio
19838 eval $inhdr
19839 echo " "
19840 if $test `./findhdr sys/ioctl.h`; then
19841         val="$define"
19842         echo '<sys/ioctl.h> found.' >&4
19843 else
19844         val="$undef"
19845         if $test $i_sysfilio = "$define"; then
19846             echo '<sys/ioctl.h> NOT found.' >&4
19847         else
19848                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19849                 $test $i_termio = "$define" && xxx="termio.h"
19850                 $test $i_termios = "$define" && xxx="termios.h"
19851 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19852         fi
19853 fi
19854 set i_sysioctl
19855 eval $setvar
19856
19857 : see if socket ioctl defs are in sys/sockio.h
19858 echo " "
19859 xxx=`./findhdr sys/sockio.h`
19860 if $test "$xxx"; then
19861         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19862                 val="$define"
19863                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19864         else
19865                 val="$undef"
19866                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19867         fi
19868 else
19869         val="$undef"
19870         $cat <<EOM
19871 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19872 EOM
19873 fi
19874 set i_syssockio
19875 eval $setvar
19876
19877
19878 : see if this is a syslog.h system
19879 set syslog.h i_syslog
19880 eval $inhdr
19881
19882
19883 : see if this is a sys/mode.h system
19884 set sys/mode.h i_sysmode
19885 eval $inhdr
19886
19887 : see if sys/resource.h has to be included
19888 set sys/resource.h i_sysresrc
19889 eval $inhdr
19890
19891 : see if sys/security.h is available
19892 set sys/security.h i_syssecrt
19893 eval $inhdr
19894
19895 : see if this is a sys/statvfs.h system
19896 set sys/statvfs.h i_sysstatvfs
19897 eval $inhdr
19898
19899 : see if this is a sys/un.h system
19900 set sys/un.h i_sysun
19901 eval $inhdr
19902
19903
19904 : see if this is a sys/utsname.h system
19905 set sys/utsname.h i_sysutsname
19906 eval $inhdr
19907
19908 : see if this is a syswait system
19909 set sys/wait.h i_syswait
19910 eval $inhdr
19911
19912 : see if this is a ustat.h system
19913 set ustat.h i_ustat
19914 eval $inhdr
19915
19916 : see if this is an utime system
19917 set utime.h i_utime
19918 eval $inhdr
19919
19920 : see if this is a values.h system
19921 set values.h i_values
19922 eval $inhdr
19923
19924 : see if this is a vfork system
19925 case "$d_vfork" in
19926 "$define")
19927         set vfork.h i_vfork
19928         eval $inhdr
19929         ;;
19930 *)
19931         i_vfork="$undef"
19932         ;;
19933 esac
19934
19935 : see if gdbm.h is available
19936 set gdbm.h t_gdbm
19937 eval $inhdr
19938 case "$t_gdbm" in
19939 $define)
19940         : see if gdbm_open exists
19941         set gdbm_open d_gdbm_open
19942         eval $inlibc
19943         case "$d_gdbm_open" in
19944         $undef)
19945                 t_gdbm="$undef"
19946                 echo "We won't be including <gdbm.h>"
19947                 ;;
19948         esac
19949         ;;
19950 esac
19951 val="$t_gdbm"
19952 set i_gdbm
19953 eval $setvar
19954
19955 echo " "
19956 echo "Looking for extensions..." >&4
19957 : If we are using the old config.sh, known_extensions may contain
19958 : old or inaccurate or duplicate values.
19959 known_extensions=''
19960 nonxs_extensions=''
19961 : We do not use find because it might not be available.
19962 : We do not just use MANIFEST because the user may have dropped
19963 : some additional extensions into the source tree and expect them
19964 : to be built.
19965
19966 : Function to recursively find available extensions, ignoring DynaLoader
19967 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19968 find_extensions='
19969     for xxx in *; do
19970        case "$xxx" in
19971            DynaLoader|dynaload) ;;
19972            *)
19973            if $test -f $xxx/$xxx.xs; then
19974                known_extensions="$known_extensions $1$xxx";
19975            elif $test -f $xxx/Makefile.PL; then
19976                nonxs_extensions="$nonxs_extensions $1$xxx";
19977            else
19978                if $test -d $xxx -a $# -lt 10; then
19979                    set $1$xxx/ $*;
19980                    cd "$xxx";
19981                    eval $find_extensions;
19982                    cd ..;
19983                    shift;
19984                fi;
19985            fi
19986            ;;
19987        esac;
19988     done'
19989 tdir=`pwd`
19990 cd "$rsrc/ext"
19991 set X
19992 shift
19993 eval $find_extensions
19994 # Special case:  Add in threads/shared since it is not picked up by the
19995 # recursive find above (and adding in general recursive finding breaks
19996 # SDBM_File/sdbm).  A.D.  10/25/2001.
19997 known_extensions="$known_extensions threads/shared"
19998 set X $nonxs_extensions
19999 shift
20000 nonxs_extensions="$*"
20001 set X $known_extensions
20002 shift
20003 known_extensions="$*"
20004 cd "$tdir"
20005
20006 : Now see which are supported on this system.
20007 avail_ext=''
20008 for xxx in $known_extensions ; do
20009         case "$xxx" in
20010         DB_File|db_file)
20011                 case "$i_db" in
20012                 $define) avail_ext="$avail_ext $xxx" ;;
20013                 esac
20014                 ;;
20015         GDBM_File|gdbm_fil)
20016                 case "$i_gdbm" in 
20017                 $define) avail_ext="$avail_ext $xxx" ;;
20018                 esac
20019                 ;;
20020         I18N/Langinfo|i18n_lan)
20021                 case "$i_langinfo$d_nl_langinfo" in 
20022                 $define$define) avail_ext="$avail_ext $xxx" ;;
20023                 esac
20024                 ;;
20025         NDBM_File|ndbm_fil)
20026                 case "$i_ndbm" in
20027                 $define)
20028                     case "$osname-$use64bitint" in
20029                     hpux-define)
20030                         case "$libs" in
20031                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20032                         esac
20033                         ;;
20034                     *) avail_ext="$avail_ext $xxx" ;;
20035                     esac
20036                     ;;
20037                 esac
20038                 ;;
20039         ODBM_File|odbm_fil) 
20040                 case "${i_dbm}${i_rpcsvcdbm}" in
20041                 *"${define}"*)
20042                     case "$osname-$use64bitint" in
20043                     hpux-define)
20044                         case "$libs" in
20045                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20046                         esac
20047                         ;;
20048                     *) avail_ext="$avail_ext $xxx" ;;
20049                     esac
20050                     ;;
20051                 esac
20052                 ;;
20053         POSIX|posix)
20054                 case "$useposix" in
20055                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20056                 esac
20057                 ;;
20058         Opcode|opcode)
20059                 case "$useopcode" in
20060                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20061                 esac
20062                 ;;
20063         Socket|socket)
20064                 case "$d_socket" in 
20065                 true|$define|y)
20066                     case "$osname" in
20067                     beos) ;; # not unless BONE
20068                     *) avail_ext="$avail_ext $xxx" ;;
20069                     esac
20070                     ;;
20071                 esac
20072                 ;;
20073         Sys/Syslog|sys/syslog)
20074                 : XXX syslog requires socket
20075                 case "$d_socket" in 
20076                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20077                 esac
20078                 ;;
20079         Thread|thread)
20080                 case "$usethreads" in
20081                 true|$define|y)
20082                         case "$useithreads" in
20083                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20084                         esac
20085                 esac
20086                 ;;
20087         XS/APItest|xs/apitest)
20088                 # This is just for testing.  Skip it unless we have dynamic loading.
20089
20090                 case "$usedl" in
20091                 $define) avail_ext="$avail_ext $xxx" ;;
20092                 esac
20093                 ;;
20094         XS/Typemap|xs/typemap)
20095                 # This is just for testing.  Skip it unless we have dynamic loading.
20096                 case "$usedl" in
20097                 $define) avail_ext="$avail_ext $xxx" ;;
20098                 esac
20099                 ;;
20100         threads|threads/shared)
20101                 # threads and threads::shared are special cases.
20102                 # To stop people from asking "Perl 5.8.0 was supposed
20103                 # to have this new fancy threads implementation but my
20104                 # perl doesn't have it" and from people trying to
20105                 # (re)install the threads module using CPAN.pm and
20106                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20107                 # the threads.pm and threads/shared.pm will always be
20108                 # there, croaking informatively ("you need to rebuild
20109                 # all of Perl with threads, sorry") when threads haven't
20110                 # been compiled in.
20111                 # --jhi
20112                 avail_ext="$avail_ext $xxx"
20113                 ;;
20114         IPC/SysV|ipc/sysv)
20115                 : XXX Do we need a useipcsysv variable here
20116                 case "${d_msg}${d_sem}${d_shm}" in 
20117                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20118                 esac
20119                 ;;
20120         *)      avail_ext="$avail_ext $xxx"
20121                 ;;
20122         esac
20123 done
20124
20125 set X $avail_ext
20126 shift
20127 avail_ext="$*"
20128
20129 case "$onlyextensions" in
20130 '') ;;
20131 *)  keepextensions=''
20132     echo "You have requested that only certains extensions be included..." >&4
20133     for i in $onlyextensions; do
20134         case " $avail_ext " in
20135         *" $i "*)
20136             echo "Keeping extension $i."
20137             keepextensions="$keepextensions $i"
20138             ;;
20139         *) echo "Ignoring extension $i." ;;
20140         esac
20141     done
20142     avail_ext="$keepextensions"
20143     ;;
20144 esac
20145
20146 case "$noextensions" in
20147 '') ;;
20148 *)  keepextensions=''
20149     echo "You have requested that certain extensions be ignored..." >&4
20150     for i in $avail_ext; do
20151         case " $noextensions " in
20152         *" $i "*) echo "Ignoring extension $i." ;;
20153         *) echo "Keeping extension $i.";
20154            keepextensions="$keepextensions $i"
20155            ;;
20156         esac
20157     done
20158     avail_ext="$keepextensions"
20159     ;;
20160 esac
20161
20162 : Now see which nonxs extensions are supported on this system.
20163 : For now assume all are.
20164 nonxs_ext=''
20165 for xxx in $nonxs_extensions ; do
20166         case "$xxx" in
20167         *)      nonxs_ext="$nonxs_ext $xxx"
20168                 ;;
20169         esac
20170 done
20171
20172 set X $nonxs_ext
20173 shift
20174 nonxs_ext="$*"
20175
20176 case $usedl in
20177 $define)
20178         $cat <<EOM
20179 A number of extensions are supplied with $package.  You may choose to
20180 compile these extensions for dynamic loading (the default), compile
20181 them into the $package executable (static loading), or not include
20182 them at all.  Answer "none" to include no extensions.
20183 Note that DynaLoader is always built and need not be mentioned here.
20184
20185 EOM
20186         case "$dynamic_ext" in
20187         '')
20188                 : Exclude those listed in static_ext
20189                 dflt=''
20190                 for xxx in $avail_ext; do
20191                         case " $static_ext " in
20192                         *" $xxx "*) ;;
20193                         *) dflt="$dflt $xxx" ;;
20194                         esac
20195                 done
20196                 set X $dflt
20197                 shift
20198                 dflt="$*"
20199                 ;;
20200         *)      dflt="$dynamic_ext"
20201                 # Perhaps we are reusing an old out-of-date config.sh.
20202                 case "$hint" in
20203                 previous)
20204                         if test X"$dynamic_ext" != X"$avail_ext"; then
20205                                 $cat <<EOM
20206 NOTICE:  Your previous config.sh list may be incorrect. 
20207 The extensions now available to you are 
20208         ${avail_ext}
20209 but the default list from your previous config.sh is
20210         ${dynamic_ext} 
20211
20212 EOM
20213                         fi
20214                         ;;
20215                 esac
20216                 ;;
20217         esac
20218         case "$dflt" in
20219         '')     dflt=none;;
20220         esac
20221         rp="What extensions do you wish to load dynamically?"
20222         . ./myread
20223         case "$ans" in
20224         none) dynamic_ext=' ' ;;
20225         *) dynamic_ext="$ans" ;;
20226         esac
20227
20228         case "$static_ext" in
20229         '')
20230                 : Exclude those already listed in dynamic linking
20231                 dflt=''
20232                 for xxx in $avail_ext; do
20233                         case " $dynamic_ext " in
20234                         *" $xxx "*) ;;
20235                         *) dflt="$dflt $xxx" ;;
20236                         esac
20237                 done
20238                 set X $dflt
20239                 shift
20240                 dflt="$*"
20241                 ;;
20242         *)  dflt="$static_ext" 
20243                 ;;
20244         esac
20245
20246         case "$dflt" in
20247         '')     dflt=none;;
20248         esac
20249         rp="What extensions do you wish to load statically?"
20250         . ./myread
20251         case "$ans" in
20252         none) static_ext=' ' ;;
20253         *) static_ext="$ans" ;;
20254         esac
20255         ;;
20256 *)
20257         $cat <<EOM
20258 A number of extensions are supplied with $package.  Answer "none" 
20259 to include no extensions. 
20260 Note that DynaLoader is always built and need not be mentioned here.
20261
20262 EOM
20263         case "$static_ext" in
20264         '') dflt="$avail_ext" ;;
20265         *)      dflt="$static_ext"
20266                 # Perhaps we are reusing an old out-of-date config.sh.
20267                 case "$hint" in
20268                 previous)
20269                         if test X"$static_ext" != X"$avail_ext"; then
20270                                 $cat <<EOM
20271 NOTICE:  Your previous config.sh list may be incorrect. 
20272 The extensions now available to you are 
20273         ${avail_ext}
20274 but the default list from your previous config.sh is
20275         ${static_ext} 
20276
20277 EOM
20278                         fi
20279                         ;;
20280                 esac
20281                 ;;
20282         esac
20283         : Exclude those that are not xs extensions
20284         case "$dflt" in
20285         '')     dflt=none;;
20286         esac
20287         rp="What extensions do you wish to include?"
20288         . ./myread
20289         case "$ans" in
20290         none) static_ext=' ' ;;
20291         *) static_ext="$ans" ;;
20292         esac
20293         ;;
20294 esac
20295 #        
20296 # Encode is a special case.  If we are building Encode as a static
20297 # extension, we need to explicitly list its subextensions as well.
20298 # For other nested extensions, this is handled automatically by
20299 # the appropriate Makefile.PL.
20300 case " $static_ext " in
20301         *" Encode "*) # Add the subextensions of Encode
20302         cd "$rsrc/ext"
20303         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20304                 static_ext="$static_ext Encode/$xxx"
20305         done
20306         cd "$tdir"
20307         ;;
20308 esac
20309
20310 set X $dynamic_ext $static_ext $nonxs_ext
20311 shift
20312 extensions="$*"
20313
20314 # Sanity check:  We require an extension suitable for use with
20315 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
20316 # should show up as failures in the test suite, but it's helpful to
20317 # catch them now.) The 'extensions' list is normally sorted
20318 # alphabetically, so we need to accept either
20319 #    DB_File ... Fcntl ... IO  ....
20320 # or something like
20321 #    Fcntl ... NDBM_File ... IO  ....
20322 case " $extensions"  in
20323 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
20324 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20325 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
20326 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20327    echo "WARNING: The Perl you are building will be quite crippled." >& 4
20328    ;;
20329 esac
20330
20331 : Remove libraries needed only for extensions
20332 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20333 : The exception is SunOS 4.x, which needs them.
20334 case "${osname}X${osvers}" in
20335 sunos*X4*)
20336     perllibs="$libs"
20337     ;;
20338 *) case "$usedl" in
20339     $define|true|[yY]*)
20340             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20341             shift
20342             perllibs="$*"
20343             ;;
20344     *)  perllibs="$libs"
20345             ;;
20346     esac
20347     ;;
20348 esac
20349
20350 : Remove build directory name from cppstdin so it can be used from
20351 : either the present location or the final installed location.
20352 echo " "
20353 : Get out of the UU directory to get correct path name.
20354 cd ..
20355 case "$cppstdin" in
20356 `pwd`/cppstdin)
20357         echo "Stripping down cppstdin path name"
20358         cppstdin=cppstdin
20359         ;;
20360 esac
20361 cd UU
20362
20363 : end of configuration questions
20364 echo " "
20365 echo "End of configuration questions."
20366 echo " "
20367
20368 : back to where it started
20369 if test -d ../UU; then
20370         cd ..
20371 fi
20372
20373 : configuration may be patched via a 'config.arch' file
20374 if $test -f config.arch; then
20375         echo "I see a config.arch file, loading it."
20376         . ./config.arch
20377 fi
20378
20379 : configuration may be patched via a 'config.over' file
20380 if $test -f config.over; then
20381         echo " "
20382         dflt=y
20383         rp='I see a config.over file.  Do you wish to load it?'
20384         . UU/myread
20385         case "$ans" in
20386         n*) echo "OK, I'll ignore it.";;
20387         *)      . ./config.over
20388                 echo "Configuration override changes have been loaded."
20389                 ;;
20390         esac
20391 fi
20392
20393 : in case they want portability, strip down executable paths
20394 case "$d_portable" in
20395 "$define")
20396         echo " "
20397         echo "Stripping down executable paths..." >&4
20398         for file in $loclist $trylist; do
20399                 eval temp=\$$file
20400                 eval $file=`basename $temp`
20401         done
20402         ;;
20403 esac
20404
20405 : create config.sh file
20406 echo " "
20407 echo "Creating config.sh..." >&4
20408 $spitshell <<EOT >config.sh
20409 $startsh
20410 #
20411 # This file was produced by running the Configure script. It holds all the
20412 # definitions figured out by Configure. Should you modify one of these values,
20413 # do not forget to propagate your changes by running "Configure -der". You may
20414 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20415 #
20416
20417 # Package name      : $package
20418 # Source directory  : $src
20419 # Configuration time: $cf_time
20420 # Configured by     : $cf_by
20421 # Target system     : $myuname
20422
20423 Author='$Author'
20424 Date='$Date'
20425 Header='$Header'
20426 Id='$Id'
20427 Locker='$Locker'
20428 Log='$Log'
20429 Mcc='$Mcc'
20430 RCSfile='$RCSfile'
20431 Revision='$Revision'
20432 Source='$Source'
20433 State='$State'
20434 _a='$_a'
20435 _exe='$_exe'
20436 _o='$_o'
20437 afs='$afs'
20438 afsroot='$afsroot'
20439 alignbytes='$alignbytes'
20440 ansi2knr='$ansi2knr'
20441 aphostname='$aphostname'
20442 api_revision='$api_revision'
20443 api_subversion='$api_subversion'
20444 api_version='$api_version'
20445 api_versionstring='$api_versionstring'
20446 ar='$ar'
20447 archlib='$archlib'
20448 archlibexp='$archlibexp'
20449 archname64='$archname64'
20450 archname='$archname'
20451 archobjs='$archobjs'
20452 asctime_r_proto='$asctime_r_proto'
20453 awk='$awk'
20454 baserev='$baserev'
20455 bash='$bash'
20456 bin='$bin'
20457 binexp='$binexp'
20458 bison='$bison'
20459 byacc='$byacc'
20460 byteorder='$byteorder'
20461 c='$c'
20462 castflags='$castflags'
20463 cat='$cat'
20464 cc='$cc'
20465 cccdlflags='$cccdlflags'
20466 ccdlflags='$ccdlflags'
20467 ccflags='$ccflags'
20468 ccflags_uselargefiles='$ccflags_uselargefiles'
20469 ccname='$ccname'
20470 ccsymbols='$ccsymbols'
20471 ccversion='$ccversion'
20472 cf_by='$cf_by'
20473 cf_email='$cf_email'
20474 cf_time='$cf_time'
20475 charsize='$charsize'
20476 chgrp='$chgrp'
20477 chmod='$chmod'
20478 chown='$chown'
20479 clocktype='$clocktype'
20480 comm='$comm'
20481 compress='$compress'
20482 contains='$contains'
20483 cp='$cp'
20484 cpio='$cpio'
20485 cpp='$cpp'
20486 cpp_stuff='$cpp_stuff'
20487 cppccsymbols='$cppccsymbols'
20488 cppflags='$cppflags'
20489 cpplast='$cpplast'
20490 cppminus='$cppminus'
20491 cpprun='$cpprun'
20492 cppstdin='$cppstdin'
20493 cppsymbols='$cppsymbols'
20494 crypt_r_proto='$crypt_r_proto'
20495 cryptlib='$cryptlib'
20496 csh='$csh'
20497 ctermid_r_proto='$ctermid_r_proto'
20498 ctime_r_proto='$ctime_r_proto'
20499 d_Gconvert='$d_Gconvert'
20500 d_PRIEUldbl='$d_PRIEUldbl'
20501 d_PRIFUldbl='$d_PRIFUldbl'
20502 d_PRIGUldbl='$d_PRIGUldbl'
20503 d_PRIXU64='$d_PRIXU64'
20504 d_PRId64='$d_PRId64'
20505 d_PRIeldbl='$d_PRIeldbl'
20506 d_PRIfldbl='$d_PRIfldbl'
20507 d_PRIgldbl='$d_PRIgldbl'
20508 d_PRIi64='$d_PRIi64'
20509 d_PRIo64='$d_PRIo64'
20510 d_PRIu64='$d_PRIu64'
20511 d_PRIx64='$d_PRIx64'
20512 d_SCNfldbl='$d_SCNfldbl'
20513 d__fwalk='$d__fwalk'
20514 d_access='$d_access'
20515 d_accessx='$d_accessx'
20516 d_aintl='$d_aintl'
20517 d_alarm='$d_alarm'
20518 d_archlib='$d_archlib'
20519 d_asctime_r='$d_asctime_r'
20520 d_atolf='$d_atolf'
20521 d_atoll='$d_atoll'
20522 d_attribut='$d_attribut'
20523 d_bcmp='$d_bcmp'
20524 d_bcopy='$d_bcopy'
20525 d_bsd='$d_bsd'
20526 d_bsdgetpgrp='$d_bsdgetpgrp'
20527 d_bsdsetpgrp='$d_bsdsetpgrp'
20528 d_bzero='$d_bzero'
20529 d_casti32='$d_casti32'
20530 d_castneg='$d_castneg'
20531 d_charvspr='$d_charvspr'
20532 d_chown='$d_chown'
20533 d_chroot='$d_chroot'
20534 d_chsize='$d_chsize'
20535 d_class='$d_class'
20536 d_closedir='$d_closedir'
20537 d_cmsghdr_s='$d_cmsghdr_s'
20538 d_const='$d_const'
20539 d_copysignl='$d_copysignl'
20540 d_crypt='$d_crypt'
20541 d_crypt_r='$d_crypt_r'
20542 d_csh='$d_csh'
20543 d_ctermid_r='$d_ctermid_r'
20544 d_ctime_r='$d_ctime_r'
20545 d_cuserid='$d_cuserid'
20546 d_dbl_dig='$d_dbl_dig'
20547 d_dbminitproto='$d_dbminitproto'
20548 d_difftime='$d_difftime'
20549 d_dirfd='$d_dirfd'
20550 d_dirnamlen='$d_dirnamlen'
20551 d_dlerror='$d_dlerror'
20552 d_dlopen='$d_dlopen'
20553 d_dlsymun='$d_dlsymun'
20554 d_dosuid='$d_dosuid'
20555 d_drand48_r='$d_drand48_r'
20556 d_drand48proto='$d_drand48proto'
20557 d_dup2='$d_dup2'
20558 d_eaccess='$d_eaccess'
20559 d_endgrent='$d_endgrent'
20560 d_endgrent_r='$d_endgrent_r'
20561 d_endhent='$d_endhent'
20562 d_endhostent_r='$d_endhostent_r'
20563 d_endnent='$d_endnent'
20564 d_endnetent_r='$d_endnetent_r'
20565 d_endpent='$d_endpent'
20566 d_endprotoent_r='$d_endprotoent_r'
20567 d_endpwent='$d_endpwent'
20568 d_endpwent_r='$d_endpwent_r'
20569 d_endsent='$d_endsent'
20570 d_endservent_r='$d_endservent_r'
20571 d_eofnblk='$d_eofnblk'
20572 d_eunice='$d_eunice'
20573 d_faststdio='$d_faststdio'
20574 d_fchdir='$d_fchdir'
20575 d_fchmod='$d_fchmod'
20576 d_fchown='$d_fchown'
20577 d_fcntl='$d_fcntl'
20578 d_fcntl_can_lock='$d_fcntl_can_lock'
20579 d_fd_macros='$d_fd_macros'
20580 d_fd_set='$d_fd_set'
20581 d_fds_bits='$d_fds_bits'
20582 d_fgetpos='$d_fgetpos'
20583 d_finite='$d_finite'
20584 d_finitel='$d_finitel'
20585 d_flexfnam='$d_flexfnam'
20586 d_flock='$d_flock'
20587 d_flockproto='$d_flockproto'
20588 d_fork='$d_fork'
20589 d_fp_class='$d_fp_class'
20590 d_fpathconf='$d_fpathconf'
20591 d_fpclass='$d_fpclass'
20592 d_fpclassify='$d_fpclassify'
20593 d_fpclassl='$d_fpclassl'
20594 d_fpos64_t='$d_fpos64_t'
20595 d_frexpl='$d_frexpl'
20596 d_fs_data_s='$d_fs_data_s'
20597 d_fseeko='$d_fseeko'
20598 d_fsetpos='$d_fsetpos'
20599 d_fstatfs='$d_fstatfs'
20600 d_fstatvfs='$d_fstatvfs'
20601 d_fsync='$d_fsync'
20602 d_ftello='$d_ftello'
20603 d_ftime='$d_ftime'
20604 d_getcwd='$d_getcwd'
20605 d_getespwnam='$d_getespwnam'
20606 d_getfsstat='$d_getfsstat'
20607 d_getgrent='$d_getgrent'
20608 d_getgrent_r='$d_getgrent_r'
20609 d_getgrgid_r='$d_getgrgid_r'
20610 d_getgrnam_r='$d_getgrnam_r'
20611 d_getgrps='$d_getgrps'
20612 d_gethbyaddr='$d_gethbyaddr'
20613 d_gethbyname='$d_gethbyname'
20614 d_gethent='$d_gethent'
20615 d_gethname='$d_gethname'
20616 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20617 d_gethostbyname_r='$d_gethostbyname_r'
20618 d_gethostent_r='$d_gethostent_r'
20619 d_gethostprotos='$d_gethostprotos'
20620 d_getitimer='$d_getitimer'
20621 d_getlogin='$d_getlogin'
20622 d_getlogin_r='$d_getlogin_r'
20623 d_getmnt='$d_getmnt'
20624 d_getmntent='$d_getmntent'
20625 d_getnbyaddr='$d_getnbyaddr'
20626 d_getnbyname='$d_getnbyname'
20627 d_getnent='$d_getnent'
20628 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20629 d_getnetbyname_r='$d_getnetbyname_r'
20630 d_getnetent_r='$d_getnetent_r'
20631 d_getnetprotos='$d_getnetprotos'
20632 d_getpagsz='$d_getpagsz'
20633 d_getpbyname='$d_getpbyname'
20634 d_getpbynumber='$d_getpbynumber'
20635 d_getpent='$d_getpent'
20636 d_getpgid='$d_getpgid'
20637 d_getpgrp2='$d_getpgrp2'
20638 d_getpgrp='$d_getpgrp'
20639 d_getppid='$d_getppid'
20640 d_getprior='$d_getprior'
20641 d_getprotobyname_r='$d_getprotobyname_r'
20642 d_getprotobynumber_r='$d_getprotobynumber_r'
20643 d_getprotoent_r='$d_getprotoent_r'
20644 d_getprotoprotos='$d_getprotoprotos'
20645 d_getprpwnam='$d_getprpwnam'
20646 d_getpwent='$d_getpwent'
20647 d_getpwent_r='$d_getpwent_r'
20648 d_getpwnam_r='$d_getpwnam_r'
20649 d_getpwuid_r='$d_getpwuid_r'
20650 d_getsbyname='$d_getsbyname'
20651 d_getsbyport='$d_getsbyport'
20652 d_getsent='$d_getsent'
20653 d_getservbyname_r='$d_getservbyname_r'
20654 d_getservbyport_r='$d_getservbyport_r'
20655 d_getservent_r='$d_getservent_r'
20656 d_getservprotos='$d_getservprotos'
20657 d_getspnam='$d_getspnam'
20658 d_getspnam_r='$d_getspnam_r'
20659 d_gettimeod='$d_gettimeod'
20660 d_gmtime_r='$d_gmtime_r'
20661 d_gnulibc='$d_gnulibc'
20662 d_grpasswd='$d_grpasswd'
20663 d_hasmntopt='$d_hasmntopt'
20664 d_htonl='$d_htonl'
20665 d_ilogbl='$d_ilogbl'
20666 d_index='$d_index'
20667 d_inetaton='$d_inetaton'
20668 d_int64_t='$d_int64_t'
20669 d_isascii='$d_isascii'
20670 d_isfinite='$d_isfinite'
20671 d_isinf='$d_isinf'
20672 d_isnan='$d_isnan'
20673 d_isnanl='$d_isnanl'
20674 d_killpg='$d_killpg'
20675 d_lchown='$d_lchown'
20676 d_ldbl_dig='$d_ldbl_dig'
20677 d_link='$d_link'
20678 d_localtime_r='$d_localtime_r'
20679 d_locconv='$d_locconv'
20680 d_lockf='$d_lockf'
20681 d_longdbl='$d_longdbl'
20682 d_longlong='$d_longlong'
20683 d_lseekproto='$d_lseekproto'
20684 d_lstat='$d_lstat'
20685 d_madvise='$d_madvise'
20686 d_mblen='$d_mblen'
20687 d_mbstowcs='$d_mbstowcs'
20688 d_mbtowc='$d_mbtowc'
20689 d_memchr='$d_memchr'
20690 d_memcmp='$d_memcmp'
20691 d_memcpy='$d_memcpy'
20692 d_memmove='$d_memmove'
20693 d_memset='$d_memset'
20694 d_mkdir='$d_mkdir'
20695 d_mkdtemp='$d_mkdtemp'
20696 d_mkfifo='$d_mkfifo'
20697 d_mkstemp='$d_mkstemp'
20698 d_mkstemps='$d_mkstemps'
20699 d_mktime='$d_mktime'
20700 d_mmap='$d_mmap'
20701 d_modfl='$d_modfl'
20702 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20703 d_modflproto='$d_modflproto'
20704 d_mprotect='$d_mprotect'
20705 d_msg='$d_msg'
20706 d_msg_ctrunc='$d_msg_ctrunc'
20707 d_msg_dontroute='$d_msg_dontroute'
20708 d_msg_oob='$d_msg_oob'
20709 d_msg_peek='$d_msg_peek'
20710 d_msg_proxy='$d_msg_proxy'
20711 d_msgctl='$d_msgctl'
20712 d_msgget='$d_msgget'
20713 d_msghdr_s='$d_msghdr_s'
20714 d_msgrcv='$d_msgrcv'
20715 d_msgsnd='$d_msgsnd'
20716 d_msync='$d_msync'
20717 d_munmap='$d_munmap'
20718 d_mymalloc='$d_mymalloc'
20719 d_nice='$d_nice'
20720 d_nl_langinfo='$d_nl_langinfo'
20721 d_nv_preserves_uv='$d_nv_preserves_uv'
20722 d_off64_t='$d_off64_t'
20723 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20724 d_oldpthreads='$d_oldpthreads'
20725 d_oldsock='$d_oldsock'
20726 d_open3='$d_open3'
20727 d_pathconf='$d_pathconf'
20728 d_pause='$d_pause'
20729 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20730 d_phostname='$d_phostname'
20731 d_pipe='$d_pipe'
20732 d_poll='$d_poll'
20733 d_portable='$d_portable'
20734 d_procselfexe='$d_procselfexe'
20735 d_pthread_atfork='$d_pthread_atfork'
20736 d_pthread_attr_setscope='$d_pthread_attr_setscope'
20737 d_pthread_yield='$d_pthread_yield'
20738 d_pwage='$d_pwage'
20739 d_pwchange='$d_pwchange'
20740 d_pwclass='$d_pwclass'
20741 d_pwcomment='$d_pwcomment'
20742 d_pwexpire='$d_pwexpire'
20743 d_pwgecos='$d_pwgecos'
20744 d_pwpasswd='$d_pwpasswd'
20745 d_pwquota='$d_pwquota'
20746 d_qgcvt='$d_qgcvt'
20747 d_quad='$d_quad'
20748 d_random_r='$d_random_r'
20749 d_readdir64_r='$d_readdir64_r'
20750 d_readdir='$d_readdir'
20751 d_readdir_r='$d_readdir_r'
20752 d_readlink='$d_readlink'
20753 d_readv='$d_readv'
20754 d_recvmsg='$d_recvmsg'
20755 d_rename='$d_rename'
20756 d_rewinddir='$d_rewinddir'
20757 d_rmdir='$d_rmdir'
20758 d_safebcpy='$d_safebcpy'
20759 d_safemcpy='$d_safemcpy'
20760 d_sanemcmp='$d_sanemcmp'
20761 d_sbrkproto='$d_sbrkproto'
20762 d_scalbnl='$d_scalbnl'
20763 d_sched_yield='$d_sched_yield'
20764 d_scm_rights='$d_scm_rights'
20765 d_seekdir='$d_seekdir'
20766 d_select='$d_select'
20767 d_sem='$d_sem'
20768 d_semctl='$d_semctl'
20769 d_semctl_semid_ds='$d_semctl_semid_ds'
20770 d_semctl_semun='$d_semctl_semun'
20771 d_semget='$d_semget'
20772 d_semop='$d_semop'
20773 d_sendmsg='$d_sendmsg'
20774 d_setegid='$d_setegid'
20775 d_seteuid='$d_seteuid'
20776 d_setgrent='$d_setgrent'
20777 d_setgrent_r='$d_setgrent_r'
20778 d_setgrps='$d_setgrps'
20779 d_sethent='$d_sethent'
20780 d_sethostent_r='$d_sethostent_r'
20781 d_setitimer='$d_setitimer'
20782 d_setlinebuf='$d_setlinebuf'
20783 d_setlocale='$d_setlocale'
20784 d_setlocale_r='$d_setlocale_r'
20785 d_setnent='$d_setnent'
20786 d_setnetent_r='$d_setnetent_r'
20787 d_setpent='$d_setpent'
20788 d_setpgid='$d_setpgid'
20789 d_setpgrp2='$d_setpgrp2'
20790 d_setpgrp='$d_setpgrp'
20791 d_setprior='$d_setprior'
20792 d_setproctitle='$d_setproctitle'
20793 d_setprotoent_r='$d_setprotoent_r'
20794 d_setpwent='$d_setpwent'
20795 d_setpwent_r='$d_setpwent_r'
20796 d_setregid='$d_setregid'
20797 d_setresgid='$d_setresgid'
20798 d_setresuid='$d_setresuid'
20799 d_setreuid='$d_setreuid'
20800 d_setrgid='$d_setrgid'
20801 d_setruid='$d_setruid'
20802 d_setsent='$d_setsent'
20803 d_setservent_r='$d_setservent_r'
20804 d_setsid='$d_setsid'
20805 d_setvbuf='$d_setvbuf'
20806 d_sfio='$d_sfio'
20807 d_shm='$d_shm'
20808 d_shmat='$d_shmat'
20809 d_shmatprototype='$d_shmatprototype'
20810 d_shmctl='$d_shmctl'
20811 d_shmdt='$d_shmdt'
20812 d_shmget='$d_shmget'
20813 d_sigaction='$d_sigaction'
20814 d_sigprocmask='$d_sigprocmask'
20815 d_sigsetjmp='$d_sigsetjmp'
20816 d_sockatmark='$d_sockatmark'
20817 d_sockatmarkproto='$d_sockatmarkproto'
20818 d_socket='$d_socket'
20819 d_socklen_t='$d_socklen_t'
20820 d_sockpair='$d_sockpair'
20821 d_socks5_init='$d_socks5_init'
20822 d_sqrtl='$d_sqrtl'
20823 d_srand48_r='$d_srand48_r'
20824 d_srandom_r='$d_srandom_r'
20825 d_sresgproto='$d_sresgproto'
20826 d_sresuproto='$d_sresuproto'
20827 d_statblks='$d_statblks'
20828 d_statfs_f_flags='$d_statfs_f_flags'
20829 d_statfs_s='$d_statfs_s'
20830 d_statvfs='$d_statvfs'
20831 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20832 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20833 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20834 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20835 d_stdio_stream_array='$d_stdio_stream_array'
20836 d_stdiobase='$d_stdiobase'
20837 d_stdstdio='$d_stdstdio'
20838 d_strchr='$d_strchr'
20839 d_strcoll='$d_strcoll'
20840 d_strctcpy='$d_strctcpy'
20841 d_strerrm='$d_strerrm'
20842 d_strerror='$d_strerror'
20843 d_strerror_r='$d_strerror_r'
20844 d_strftime='$d_strftime'
20845 d_strtod='$d_strtod'
20846 d_strtol='$d_strtol'
20847 d_strtold='$d_strtold'
20848 d_strtoll='$d_strtoll'
20849 d_strtoq='$d_strtoq'
20850 d_strtoul='$d_strtoul'
20851 d_strtoull='$d_strtoull'
20852 d_strtouq='$d_strtouq'
20853 d_strxfrm='$d_strxfrm'
20854 d_suidsafe='$d_suidsafe'
20855 d_symlink='$d_symlink'
20856 d_syscall='$d_syscall'
20857 d_syscallproto='$d_syscallproto'
20858 d_sysconf='$d_sysconf'
20859 d_sysernlst='$d_sysernlst'
20860 d_syserrlst='$d_syserrlst'
20861 d_system='$d_system'
20862 d_tcgetpgrp='$d_tcgetpgrp'
20863 d_tcsetpgrp='$d_tcsetpgrp'
20864 d_telldir='$d_telldir'
20865 d_telldirproto='$d_telldirproto'
20866 d_time='$d_time'
20867 d_times='$d_times'
20868 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20869 d_tm_tm_zone='$d_tm_tm_zone'
20870 d_tmpnam_r='$d_tmpnam_r'
20871 d_truncate='$d_truncate'
20872 d_ttyname_r='$d_ttyname_r'
20873 d_tzname='$d_tzname'
20874 d_u32align='$d_u32align'
20875 d_ualarm='$d_ualarm'
20876 d_umask='$d_umask'
20877 d_uname='$d_uname'
20878 d_union_semun='$d_union_semun'
20879 d_unordered='$d_unordered'
20880 d_usleep='$d_usleep'
20881 d_usleepproto='$d_usleepproto'
20882 d_ustat='$d_ustat'
20883 d_vendorarch='$d_vendorarch'
20884 d_vendorbin='$d_vendorbin'
20885 d_vendorlib='$d_vendorlib'
20886 d_vendorscript='$d_vendorscript'
20887 d_vfork='$d_vfork'
20888 d_void_closedir='$d_void_closedir'
20889 d_voidsig='$d_voidsig'
20890 d_voidtty='$d_voidtty'
20891 d_volatile='$d_volatile'
20892 d_vprintf='$d_vprintf'
20893 d_wait4='$d_wait4'
20894 d_waitpid='$d_waitpid'
20895 d_wcstombs='$d_wcstombs'
20896 d_wctomb='$d_wctomb'
20897 d_writev='$d_writev'
20898 d_xenix='$d_xenix'
20899 date='$date'
20900 db_hashtype='$db_hashtype'
20901 db_prefixtype='$db_prefixtype'
20902 db_version_major='$db_version_major'
20903 db_version_minor='$db_version_minor'
20904 db_version_patch='$db_version_patch'
20905 defvoidused='$defvoidused'
20906 direntrytype='$direntrytype'
20907 dlext='$dlext'
20908 dlsrc='$dlsrc'
20909 doublesize='$doublesize'
20910 drand01='$drand01'
20911 drand48_r_proto='$drand48_r_proto'
20912 dynamic_ext='$dynamic_ext'
20913 eagain='$eagain'
20914 ebcdic='$ebcdic'
20915 echo='$echo'
20916 egrep='$egrep'
20917 emacs='$emacs'
20918 endgrent_r_proto='$endgrent_r_proto'
20919 endhostent_r_proto='$endhostent_r_proto'
20920 endnetent_r_proto='$endnetent_r_proto'
20921 endprotoent_r_proto='$endprotoent_r_proto'
20922 endpwent_r_proto='$endpwent_r_proto'
20923 endservent_r_proto='$endservent_r_proto'
20924 eunicefix='$eunicefix'
20925 exe_ext='$exe_ext'
20926 expr='$expr'
20927 extensions='$extensions'
20928 extras='$extras'
20929 fflushNULL='$fflushNULL'
20930 fflushall='$fflushall'
20931 find='$find'
20932 firstmakefile='$firstmakefile'
20933 flex='$flex'
20934 fpossize='$fpossize'
20935 fpostype='$fpostype'
20936 freetype='$freetype'
20937 from='$from'
20938 full_ar='$full_ar'
20939 full_csh='$full_csh'
20940 full_sed='$full_sed'
20941 gccansipedantic='$gccansipedantic'
20942 gccosandvers='$gccosandvers'
20943 gccversion='$gccversion'
20944 getgrent_r_proto='$getgrent_r_proto'
20945 getgrgid_r_proto='$getgrgid_r_proto'
20946 getgrnam_r_proto='$getgrnam_r_proto'
20947 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20948 gethostbyname_r_proto='$gethostbyname_r_proto'
20949 gethostent_r_proto='$gethostent_r_proto'
20950 getlogin_r_proto='$getlogin_r_proto'
20951 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20952 getnetbyname_r_proto='$getnetbyname_r_proto'
20953 getnetent_r_proto='$getnetent_r_proto'
20954 getprotobyname_r_proto='$getprotobyname_r_proto'
20955 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20956 getprotoent_r_proto='$getprotoent_r_proto'
20957 getpwent_r_proto='$getpwent_r_proto'
20958 getpwnam_r_proto='$getpwnam_r_proto'
20959 getpwuid_r_proto='$getpwuid_r_proto'
20960 getservbyname_r_proto='$getservbyname_r_proto'
20961 getservbyport_r_proto='$getservbyport_r_proto'
20962 getservent_r_proto='$getservent_r_proto'
20963 getspnam_r_proto='$getspnam_r_proto'
20964 gidformat='$gidformat'
20965 gidsign='$gidsign'
20966 gidsize='$gidsize'
20967 gidtype='$gidtype'
20968 glibpth='$glibpth'
20969 gmake='$gmake'
20970 gmtime_r_proto='$gmtime_r_proto'
20971 gnulibc_version='$gnulibc_version'
20972 grep='$grep'
20973 groupcat='$groupcat'
20974 groupstype='$groupstype'
20975 gzip='$gzip'
20976 h_fcntl='$h_fcntl'
20977 h_sysfile='$h_sysfile'
20978 hint='$hint'
20979 hostcat='$hostcat'
20980 html1dir='$html1dir'
20981 html1direxp='$html1direxp'
20982 html3dir='$html3dir'
20983 html3direxp='$html3direxp'
20984 i16size='$i16size'
20985 i16type='$i16type'
20986 i32size='$i32size'
20987 i32type='$i32type'
20988 i64size='$i64size'
20989 i64type='$i64type'
20990 i8size='$i8size'
20991 i8type='$i8type'
20992 i_arpainet='$i_arpainet'
20993 i_bsdioctl='$i_bsdioctl'
20994 i_crypt='$i_crypt'
20995 i_db='$i_db'
20996 i_dbm='$i_dbm'
20997 i_dirent='$i_dirent'
20998 i_dld='$i_dld'
20999 i_dlfcn='$i_dlfcn'
21000 i_fcntl='$i_fcntl'
21001 i_float='$i_float'
21002 i_fp='$i_fp'
21003 i_fp_class='$i_fp_class'
21004 i_gdbm='$i_gdbm'
21005 i_grp='$i_grp'
21006 i_ieeefp='$i_ieeefp'
21007 i_inttypes='$i_inttypes'
21008 i_langinfo='$i_langinfo'
21009 i_libutil='$i_libutil'
21010 i_limits='$i_limits'
21011 i_locale='$i_locale'
21012 i_machcthr='$i_machcthr'
21013 i_malloc='$i_malloc'
21014 i_math='$i_math'
21015 i_memory='$i_memory'
21016 i_mntent='$i_mntent'
21017 i_ndbm='$i_ndbm'
21018 i_netdb='$i_netdb'
21019 i_neterrno='$i_neterrno'
21020 i_netinettcp='$i_netinettcp'
21021 i_niin='$i_niin'
21022 i_poll='$i_poll'
21023 i_prot='$i_prot'
21024 i_pthread='$i_pthread'
21025 i_pwd='$i_pwd'
21026 i_rpcsvcdbm='$i_rpcsvcdbm'
21027 i_sfio='$i_sfio'
21028 i_sgtty='$i_sgtty'
21029 i_shadow='$i_shadow'
21030 i_socks='$i_socks'
21031 i_stdarg='$i_stdarg'
21032 i_stddef='$i_stddef'
21033 i_stdlib='$i_stdlib'
21034 i_string='$i_string'
21035 i_sunmath='$i_sunmath'
21036 i_sysaccess='$i_sysaccess'
21037 i_sysdir='$i_sysdir'
21038 i_sysfile='$i_sysfile'
21039 i_sysfilio='$i_sysfilio'
21040 i_sysin='$i_sysin'
21041 i_sysioctl='$i_sysioctl'
21042 i_syslog='$i_syslog'
21043 i_sysmman='$i_sysmman'
21044 i_sysmode='$i_sysmode'
21045 i_sysmount='$i_sysmount'
21046 i_sysndir='$i_sysndir'
21047 i_sysparam='$i_sysparam'
21048 i_sysresrc='$i_sysresrc'
21049 i_syssecrt='$i_syssecrt'
21050 i_sysselct='$i_sysselct'
21051 i_syssockio='$i_syssockio'
21052 i_sysstat='$i_sysstat'
21053 i_sysstatfs='$i_sysstatfs'
21054 i_sysstatvfs='$i_sysstatvfs'
21055 i_systime='$i_systime'
21056 i_systimek='$i_systimek'
21057 i_systimes='$i_systimes'
21058 i_systypes='$i_systypes'
21059 i_sysuio='$i_sysuio'
21060 i_sysun='$i_sysun'
21061 i_sysutsname='$i_sysutsname'
21062 i_sysvfs='$i_sysvfs'
21063 i_syswait='$i_syswait'
21064 i_termio='$i_termio'
21065 i_termios='$i_termios'
21066 i_time='$i_time'
21067 i_unistd='$i_unistd'
21068 i_ustat='$i_ustat'
21069 i_utime='$i_utime'
21070 i_values='$i_values'
21071 i_varargs='$i_varargs'
21072 i_varhdr='$i_varhdr'
21073 i_vfork='$i_vfork'
21074 ignore_versioned_solibs='$ignore_versioned_solibs'
21075 inc_version_list='$inc_version_list'
21076 inc_version_list_init='$inc_version_list_init'
21077 incpath='$incpath'
21078 inews='$inews'
21079 installarchlib='$installarchlib'
21080 installbin='$installbin'
21081 installhtml1dir='$installhtml1dir'
21082 installhtml3dir='$installhtml3dir'
21083 installman1dir='$installman1dir'
21084 installman3dir='$installman3dir'
21085 installprefix='$installprefix'
21086 installprefixexp='$installprefixexp'
21087 installprivlib='$installprivlib'
21088 installscript='$installscript'
21089 installsitearch='$installsitearch'
21090 installsitebin='$installsitebin'
21091 installsitehtml1dir='$installsitehtml1dir'
21092 installsitehtml3dir='$installsitehtml3dir'
21093 installsitelib='$installsitelib'
21094 installsiteman1dir='$installsiteman1dir'
21095 installsiteman3dir='$installsiteman3dir'
21096 installsitescript='$installsitescript'
21097 installstyle='$installstyle'
21098 installusrbinperl='$installusrbinperl'
21099 installvendorarch='$installvendorarch'
21100 installvendorbin='$installvendorbin'
21101 installvendorhtml1dir='$installvendorhtml1dir'
21102 installvendorhtml3dir='$installvendorhtml3dir'
21103 installvendorlib='$installvendorlib'
21104 installvendorman1dir='$installvendorman1dir'
21105 installvendorman3dir='$installvendorman3dir'
21106 installvendorscript='$installvendorscript'
21107 intsize='$intsize'
21108 issymlink='$issymlink'
21109 ivdformat='$ivdformat'
21110 ivsize='$ivsize'
21111 ivtype='$ivtype'
21112 known_extensions='$known_extensions'
21113 ksh='$ksh'
21114 ld='$ld'
21115 lddlflags='$lddlflags'
21116 ldflags='$ldflags'
21117 ldflags_uselargefiles='$ldflags_uselargefiles'
21118 ldlibpthname='$ldlibpthname'
21119 less='$less'
21120 lib_ext='$lib_ext'
21121 libc='$libc'
21122 libperl='$libperl'
21123 libpth='$libpth'
21124 libs='$libs'
21125 libsdirs='$libsdirs'
21126 libsfiles='$libsfiles'
21127 libsfound='$libsfound'
21128 libspath='$libspath'
21129 libswanted='$libswanted'
21130 libswanted_uselargefiles='$libswanted_uselargefiles'
21131 line='$line'
21132 lint='$lint'
21133 lkflags='$lkflags'
21134 ln='$ln'
21135 lns='$lns'
21136 localtime_r_proto='$localtime_r_proto'
21137 locincpth='$locincpth'
21138 loclibpth='$loclibpth'
21139 longdblsize='$longdblsize'
21140 longlongsize='$longlongsize'
21141 longsize='$longsize'
21142 lp='$lp'
21143 lpr='$lpr'
21144 ls='$ls'
21145 lseeksize='$lseeksize'
21146 lseektype='$lseektype'
21147 mail='$mail'
21148 mailx='$mailx'
21149 make='$make'
21150 make_set_make='$make_set_make'
21151 mallocobj='$mallocobj'
21152 mallocsrc='$mallocsrc'
21153 malloctype='$malloctype'
21154 man1dir='$man1dir'
21155 man1direxp='$man1direxp'
21156 man1ext='$man1ext'
21157 man3dir='$man3dir'
21158 man3direxp='$man3direxp'
21159 man3ext='$man3ext'
21160 mips_type='$mips_type'
21161 mistrustnm='$mistrustnm'
21162 mkdir='$mkdir'
21163 mmaptype='$mmaptype'
21164 modetype='$modetype'
21165 more='$more'
21166 multiarch='$multiarch'
21167 mv='$mv'
21168 myarchname='$myarchname'
21169 mydomain='$mydomain'
21170 myhostname='$myhostname'
21171 myuname='$myuname'
21172 n='$n'
21173 need_va_copy='$need_va_copy'
21174 netdb_hlen_type='$netdb_hlen_type'
21175 netdb_host_type='$netdb_host_type'
21176 netdb_name_type='$netdb_name_type'
21177 netdb_net_type='$netdb_net_type'
21178 nm='$nm'
21179 nm_opt='$nm_opt'
21180 nm_so_opt='$nm_so_opt'
21181 nonxs_ext='$nonxs_ext'
21182 nroff='$nroff'
21183 nvEUformat='$nvEUformat'
21184 nvFUformat='$nvFUformat'
21185 nvGUformat='$nvGUformat'
21186 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21187 nveformat='$nveformat'
21188 nvfformat='$nvfformat'
21189 nvgformat='$nvgformat'
21190 nvsize='$nvsize'
21191 nvtype='$nvtype'
21192 o_nonblock='$o_nonblock'
21193 obj_ext='$obj_ext'
21194 old_pthread_create_joinable='$old_pthread_create_joinable'
21195 optimize='$optimize'
21196 orderlib='$orderlib'
21197 osname='$osname'
21198 osvers='$osvers'
21199 otherlibdirs='$otherlibdirs'
21200 package='$package'
21201 pager='$pager'
21202 passcat='$passcat'
21203 patchlevel='$patchlevel'
21204 path_sep='$path_sep'
21205 perl5='$perl5'
21206 perl='$perl'
21207 perl_patchlevel='$perl_patchlevel'
21208 perladmin='$perladmin'
21209 perllibs='$perllibs'
21210 perlpath='$perlpath'
21211 pg='$pg'
21212 phostname='$phostname'
21213 pidtype='$pidtype'
21214 plibpth='$plibpth'
21215 pm_apiversion='$pm_apiversion'
21216 pmake='$pmake'
21217 pr='$pr'
21218 prefix='$prefix'
21219 prefixexp='$prefixexp'
21220 privlib='$privlib'
21221 privlibexp='$privlibexp'
21222 procselfexe='$procselfexe'
21223 prototype='$prototype'
21224 ptrsize='$ptrsize'
21225 quadkind='$quadkind'
21226 quadtype='$quadtype'
21227 randbits='$randbits'
21228 randfunc='$randfunc'
21229 random_r_proto='$random_r_proto'
21230 randseedtype='$randseedtype'
21231 ranlib='$ranlib'
21232 rd_nodata='$rd_nodata'
21233 readdir64_r_proto='$readdir64_r_proto'
21234 readdir_r_proto='$readdir_r_proto'
21235 revision='$revision'
21236 rm='$rm'
21237 rmail='$rmail'
21238 run='$run'
21239 runnm='$runnm'
21240 sPRIEUldbl='$sPRIEUldbl'
21241 sPRIFUldbl='$sPRIFUldbl'
21242 sPRIGUldbl='$sPRIGUldbl'
21243 sPRIXU64='$sPRIXU64'
21244 sPRId64='$sPRId64'
21245 sPRIeldbl='$sPRIeldbl'
21246 sPRIfldbl='$sPRIfldbl'
21247 sPRIgldbl='$sPRIgldbl'
21248 sPRIi64='$sPRIi64'
21249 sPRIo64='$sPRIo64'
21250 sPRIu64='$sPRIu64'
21251 sPRIx64='$sPRIx64'
21252 sSCNfldbl='$sSCNfldbl'
21253 sched_yield='$sched_yield'
21254 scriptdir='$scriptdir'
21255 scriptdirexp='$scriptdirexp'
21256 sed='$sed'
21257 seedfunc='$seedfunc'
21258 selectminbits='$selectminbits'
21259 selecttype='$selecttype'
21260 sendmail='$sendmail'
21261 setgrent_r_proto='$setgrent_r_proto'
21262 sethostent_r_proto='$sethostent_r_proto'
21263 setlocale_r_proto='$setlocale_r_proto'
21264 setnetent_r_proto='$setnetent_r_proto'
21265 setprotoent_r_proto='$setprotoent_r_proto'
21266 setpwent_r_proto='$setpwent_r_proto'
21267 setservent_r_proto='$setservent_r_proto'
21268 sh='$sh'
21269 shar='$shar'
21270 sharpbang='$sharpbang'
21271 shmattype='$shmattype'
21272 shortsize='$shortsize'
21273 shrpenv='$shrpenv'
21274 shsharp='$shsharp'
21275 sig_count='$sig_count'
21276 sig_name='$sig_name'
21277 sig_name_init='$sig_name_init'
21278 sig_num='$sig_num'
21279 sig_num_init='$sig_num_init'
21280 sig_size='$sig_size'
21281 signal_t='$signal_t'
21282 sitearch='$sitearch'
21283 sitearchexp='$sitearchexp'
21284 sitebin='$sitebin'
21285 sitebinexp='$sitebinexp'
21286 sitehtml1dir='$sitehtml1dir'
21287 sitehtml1direxp='$sitehtml1direxp'
21288 sitehtml3dir='$sitehtml3dir'
21289 sitehtml3direxp='$sitehtml3direxp'
21290 sitelib='$sitelib'
21291 sitelib_stem='$sitelib_stem'
21292 sitelibexp='$sitelibexp'
21293 siteman1dir='$siteman1dir'
21294 siteman1direxp='$siteman1direxp'
21295 siteman3dir='$siteman3dir'
21296 siteman3direxp='$siteman3direxp'
21297 siteprefix='$siteprefix'
21298 siteprefixexp='$siteprefixexp'
21299 sitescript='$sitescript'
21300 sitescriptexp='$sitescriptexp'
21301 sizesize='$sizesize'
21302 sizetype='$sizetype'
21303 sleep='$sleep'
21304 smail='$smail'
21305 so='$so'
21306 sockethdr='$sockethdr'
21307 socketlib='$socketlib'
21308 socksizetype='$socksizetype'
21309 sort='$sort'
21310 spackage='$spackage'
21311 spitshell='$spitshell'
21312 srand48_r_proto='$srand48_r_proto'
21313 srandom_r_proto='$srandom_r_proto'
21314 src='$src'
21315 ssizetype='$ssizetype'
21316 startperl='$startperl'
21317 startsh='$startsh'
21318 static_ext='$static_ext'
21319 stdchar='$stdchar'
21320 stdio_base='$stdio_base'
21321 stdio_bufsiz='$stdio_bufsiz'
21322 stdio_cnt='$stdio_cnt'
21323 stdio_filbuf='$stdio_filbuf'
21324 stdio_ptr='$stdio_ptr'
21325 stdio_stream_array='$stdio_stream_array'
21326 strerror_r_proto='$strerror_r_proto'
21327 strings='$strings'
21328 submit='$submit'
21329 subversion='$subversion'
21330 sysman='$sysman'
21331 tail='$tail'
21332 tar='$tar'
21333 targetarch='$targetarch'
21334 tbl='$tbl'
21335 tee='$tee'
21336 test='$test'
21337 timeincl='$timeincl'
21338 timetype='$timetype'
21339 tmpnam_r_proto='$tmpnam_r_proto'
21340 to='$to'
21341 touch='$touch'
21342 tr='$tr'
21343 trnl='$trnl'
21344 troff='$troff'
21345 ttyname_r_proto='$ttyname_r_proto'
21346 u16size='$u16size'
21347 u16type='$u16type'
21348 u32size='$u32size'
21349 u32type='$u32type'
21350 u64size='$u64size'
21351 u64type='$u64type'
21352 u8size='$u8size'
21353 u8type='$u8type'
21354 uidformat='$uidformat'
21355 uidsign='$uidsign'
21356 uidsize='$uidsize'
21357 uidtype='$uidtype'
21358 uname='$uname'
21359 uniq='$uniq'
21360 uquadtype='$uquadtype'
21361 use5005threads='$use5005threads'
21362 use64bitall='$use64bitall'
21363 use64bitint='$use64bitint'
21364 usecrosscompile='$usecrosscompile'
21365 usedl='$usedl'
21366 usefaststdio='$usefaststdio'
21367 useithreads='$useithreads'
21368 uselargefiles='$uselargefiles'
21369 uselongdouble='$uselongdouble'
21370 usemorebits='$usemorebits'
21371 usemultiplicity='$usemultiplicity'
21372 usemymalloc='$usemymalloc'
21373 usenm='$usenm'
21374 useopcode='$useopcode'
21375 useperlio='$useperlio'
21376 useposix='$useposix'
21377 usereentrant='$usereentrant'
21378 usesfio='$usesfio'
21379 useshrplib='$useshrplib'
21380 usesocks='$usesocks'
21381 usethreads='$usethreads'
21382 usevendorprefix='$usevendorprefix'
21383 usevfork='$usevfork'
21384 usrinc='$usrinc'
21385 uuname='$uuname'
21386 uvXUformat='$uvXUformat'
21387 uvoformat='$uvoformat'
21388 uvsize='$uvsize'
21389 uvtype='$uvtype'
21390 uvuformat='$uvuformat'
21391 uvxformat='$uvxformat'
21392 vendorarch='$vendorarch'
21393 vendorarchexp='$vendorarchexp'
21394 vendorbin='$vendorbin'
21395 vendorbinexp='$vendorbinexp'
21396 vendorhtml1dir='$vendorhtml1dir'
21397 vendorhtml1direxp='$vendorhtml1direxp'
21398 vendorhtml3dir='$vendorhtml3dir'
21399 vendorhtml3direxp='$vendorhtml3direxp'
21400 vendorlib='$vendorlib'
21401 vendorlib_stem='$vendorlib_stem'
21402 vendorlibexp='$vendorlibexp'
21403 vendorman1dir='$vendorman1dir'
21404 vendorman1direxp='$vendorman1direxp'
21405 vendorman3dir='$vendorman3dir'
21406 vendorman3direxp='$vendorman3direxp'
21407 vendorprefix='$vendorprefix'
21408 vendorprefixexp='$vendorprefixexp'
21409 vendorscript='$vendorscript'
21410 vendorscriptexp='$vendorscriptexp'
21411 version='$version'
21412 version_patchlevel_string='$version_patchlevel_string'
21413 versiononly='$versiononly'
21414 vi='$vi'
21415 voidflags='$voidflags'
21416 xlibpth='$xlibpth'
21417 xs_apiversion='$xs_apiversion'
21418 yacc='$yacc'
21419 yaccflags='$yaccflags'
21420 zcat='$zcat'
21421 zip='$zip'
21422 EOT
21423
21424 : Add in command line options if available
21425 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21426
21427 : add special variables
21428 $test -f $src/patchlevel.h && \
21429 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21430 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21431 echo "PERL_CONFIG_SH=true" >>config.sh
21432
21433 : propagate old symbols
21434 if $test -f UU/config.sh; then
21435         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21436         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21437         $sort | $uniq -u >UU/oldsyms
21438         set X `cat UU/oldsyms`
21439         shift
21440         case $# in
21441         0) ;;
21442         *)
21443                 cat <<EOM
21444 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21445 EOM
21446                 echo "# Variables propagated from previous config.sh file." >>config.sh
21447                 for sym in `cat UU/oldsyms`; do
21448                         echo "    Propagating $hint variable "'$'"$sym..."
21449                         eval 'tmp="$'"${sym}"'"'
21450                         echo "$tmp" | \
21451                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21452                 done
21453                 ;;
21454         esac
21455 fi
21456
21457 : Finish up by extracting the .SH files
21458 case "$alldone" in
21459 exit)
21460         $rm -rf UU
21461         echo "Extraction done."
21462         exit 0
21463         ;;
21464 cont)
21465         ;;
21466 '')
21467         dflt=''
21468         nostick=true
21469         $cat <<EOM
21470
21471 If you'd like to make any changes to the config.sh file before I begin
21472 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21473
21474 EOM
21475         rp="Press return or use a shell escape to edit config.sh:"
21476         . UU/myread
21477         nostick=''
21478         case "$ans" in
21479         '') ;;
21480         *) : in case they cannot read
21481                 sh 1>&4 -c "$ans";;
21482         esac
21483         ;;
21484 esac
21485
21486 : if this fails, just run all the .SH files by hand
21487 . ./config.sh
21488
21489 echo " "
21490 exec 1>&4
21491 pwd=`pwd`
21492 . ./UU/extract
21493 cd "$pwd"
21494
21495 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21496         dflt=y
21497         case "$silent" in
21498         true) ;;
21499         *)
21500                 $cat <<EOM
21501
21502 Now you need to generate make dependencies by running "$make depend".
21503 You might prefer to run it in background: "$make depend > makedepend.out &"
21504 It can take a while, so you might not want to run it right now.
21505
21506 EOM
21507                 ;;
21508         esac
21509         rp="Run $make depend now?"
21510         . UU/myread
21511         case "$ans" in
21512         y*)
21513                 $make depend && echo "Now you must run '$make'."
21514                 ;;
21515         *)
21516                 echo "You must run '$make depend' then '$make'."
21517                 ;;
21518         esac
21519 elif test -f [Mm]akefile; then
21520         echo " "
21521         echo "Now you must run a $make."
21522 else
21523         echo "Configure done."
21524 fi
21525
21526 if $test -f Policy.sh; then
21527     $cat <<EOM
21528
21529 If you compile $package on a different machine or from a different object
21530 directory, copy the Policy.sh file from this object directory to the
21531 new one before you run Configure -- this will help you with most of
21532 the policy defaults.
21533
21534 EOM
21535 fi
21536 if $test -f config.msg; then
21537     echo "Hmm.  I also noted the following information while running:"
21538     echo " "
21539     $cat config.msg >&4
21540     $rm -f config.msg
21541 fi
21542 $rm -f kit*isdone ark*isdone
21543 $rm -rf UU
21544
21545 : End of Configure
21546