Add dtrace support
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist package (which contains metaconfig) is available via SVN:
17 #     svn co https://svn.sourceforge.net/svnroot/dist/trunk/dist
18 #
19 #
20 # Though this script was generated by metaconfig, it is OK to send
21 # patches against it. It's up to the Configure pumpkin to backport
22 # the patch to the metaunits if it is accepted.
23 # See Porting/pumpkin.pod for more information on metaconfig.
24 #
25
26 # $Id: Head.U 6 2006-08-25 22:21:46Z rmanfredi $
27 #
28 # Generated on Wed Jan  9 22:02:14 CET 2008 [metaconfig 3.0 PL70]
29 # (with additional metaconfig patches by perlbug@perl.org)
30
31 cat >c1$$ <<EOF
32 ARGGGHHHH!!!!!
33
34 SCO csh still thinks true is false.  Write to SCO today and tell them that next
35 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
36
37 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
38 we'd have to do is go in and swap the && and || tokens, wherever they are.)
39
40 [End of diatribe. We now return you to your regularly scheduled programming...]
41 EOF
42 cat >c2$$ <<EOF
43
44 OOPS!  You naughty creature!  You didn't run Configure with sh!
45 I will attempt to remedy the situation by running sh for you...
46 EOF
47
48 true || cat c1$$ c2$$
49 true || exec sh $0 $argv:q
50
51 (exit $?0) || cat c2$$
52 (exit $?0) || exec sh $0 $argv:q
53 rm -f c1$$ c2$$
54
55 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
56         cat >&4 <<EOF
57 ***
58 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
59 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
60 *** Please read the README.plan9 for further instructions.
61 *** Cannot continue, aborting.
62 ***
63 EOF
64         exit 1
65 fi
66
67 if test ! -c /dev/null ; then
68         cat >&4 <<EOF
69 ***
70 *** I'm sorry, but /dev/null appears to be a file rather than a device.
71 *** Please consult your operating sytem's notes for making a device
72 *** in /dev.
73 *** Cannot continue, aborting.
74 ***
75 EOF
76         exit 1
77 fi
78
79 : compute my invocation name
80 me=$0
81 case "$0" in
82 */*)
83         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
84         test "$me" || me=$0
85         ;;
86 esac
87
88 : Proper separator for the PATH environment variable
89 p_=:
90 : On OS/2 this directory should exist if this is not floppy only system ":-]"
91 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
92         if test -n "$OS2_SHELL"; then
93                 p_=\;
94                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
95                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
96                 is_os2=yes
97         elif test -n "$DJGPP"; then
98                 case "X${MACHTYPE:-nonesuchmach}" in
99                 *cygwin) ;;
100                 *) p_=\; ;;
101                 esac
102         fi
103 fi
104
105 : Proper PATH setting
106 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
107 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
108 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
109 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
110 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
111 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
112 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
113 paths="$paths /sbin /usr/sbin /usr/libexec"
114 paths="$paths /system/gnu_library/bin"
115
116 for p in $paths
117 do
118         case "$p_$PATH$p_" in
119         *$p_$p$p_*) ;;
120         *) test -d $p && PATH=$PATH$p_$p ;;
121         esac
122 done
123
124 PATH=.$p_$PATH
125 export PATH
126
127 : shall we be using ksh?
128 inksh=''
129 needksh=''
130 avoidksh=''
131 newsh=/bin/ksh
132 changesh=''
133 if (PATH=.; alias -x) >/dev/null 2>&1; then
134                 inksh=true
135 fi
136 if test -f /hp-ux -a -f /bin/ksh; then
137         needksh='to avoid sh bug in "here document" expansion'
138 fi
139 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
140         if test X`/usr/bin/uname -v` = X4; then
141                 avoidksh="to avoid AIX 4's /bin/sh"
142                 newsh=/usr/bin/bsh
143         fi
144 fi
145 if test -f /osf_boot -a -f /usr/sbin/setld; then
146         if test X`/usr/bin/uname -s` = XOSF1; then
147                 avoidksh="to avoid Digital UNIX' ksh"
148                 newsh=/bin/sh
149                 unset BIN_SH
150         fi
151 fi
152 case "$inksh/$needksh" in
153 /[a-z]*)
154                 ENV=''
155                 changesh=true
156                 reason="$needksh"
157         ;;
158 esac
159 case "$inksh/$avoidksh" in
160 true/[a-z]*)
161         changesh=true
162         reason="$avoidksh"
163         ;;
164 esac
165 case "$inksh/$needksh-$avoidksh-" in
166 true/--)
167                 cat <<EOM
168 (I see you are using the Korn shell.  Some ksh's blow up on $me,
169 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
170 EOM
171         ;;
172 esac
173 case "$changesh" in
174 true)
175         export newsh
176         echo "(Feeding myself to $newsh $reason.)"
177         case "$0" in
178         Configure|*/Configure) exec $newsh $0 "$@";;
179         *) exec $newsh Configure "$@";;
180         esac
181         ;;
182 esac
183 test -x "${newsh}" || unset newsh
184
185 : if needed, set CDPATH to a harmless value that is not chatty
186 : avoid bash 2.02 problems with empty CDPATH.
187 case "$CDPATH" in
188 '')     ;;
189 *)      case "$SHELL" in
190         *bash*) CDPATH='.' ;;
191         *) CDPATH='' ;;
192         esac
193         ;;
194 esac
195
196 : Configure runs within the UU subdirectory
197 test -d UU || mkdir UU
198 cd UU && rm -f ./*
199
200 ccname=''
201 ccversion=''
202 ccsymbols=''
203 cppccsymbols=''
204 cppsymbols=''
205 from=''
206 run=''
207 targetarch=''
208 to=''
209 usecrosscompile=''
210 mistrustnm=''
211 perllibs=''
212 dynamic_ext=''
213 extensions=''
214 known_extensions=''
215 nonxs_ext=''
216 static_ext=''
217 useopcode=''
218 useposix=''
219 extras=''
220 d_bsd=''
221 d_eunice=''
222 d_xenix=''
223 eunicefix=''
224 Mcc=''
225 ar=''
226 awk=''
227 bash=''
228 bison=''
229 byacc=''
230 cat=''
231 chgrp=''
232 chmod=''
233 chown=''
234 comm=''
235 compress=''
236 cp=''
237 cpio=''
238 cpp=''
239 csh=''
240 date=''
241 dtrace=''
242 echo=''
243 egrep=''
244 emacs=''
245 expr=''
246 find=''
247 flex=''
248 gmake=''
249 grep=''
250 gzip=''
251 inews=''
252 ksh=''
253 less=''
254 line=''
255 lint=''
256 ln=''
257 lp=''
258 lpr=''
259 ls=''
260 mail=''
261 mailx=''
262 make=''
263 mkdir=''
264 more=''
265 mv=''
266 nm=''
267 nroff=''
268 perl=''
269 pg=''
270 pmake=''
271 pr=''
272 rm=''
273 rmail=''
274 sed=''
275 sendmail=''
276 shar=''
277 sleep=''
278 smail=''
279 sort=''
280 submit=''
281 tail=''
282 tar=''
283 tbl=''
284 tee=''
285 test=''
286 touch=''
287 tr=''
288 troff=''
289 uname=''
290 uniq=''
291 uuname=''
292 vi=''
293 zcat=''
294 zip=''
295 full_ar=''
296 full_sed=''
297 libswanted=''
298 hint=''
299 myuname=''
300 osname=''
301 osvers=''
302 Author=''
303 Date=''
304 Header=''
305 Id=''
306 Locker=''
307 Log=''
308 RCSfile=''
309 Revision=''
310 Source=''
311 State=''
312 _a=''
313 _exe=''
314 _o=''
315 archobjs=''
316 exe_ext=''
317 firstmakefile=''
318 lib_ext=''
319 obj_ext=''
320 path_sep=''
321 rm_try=''
322 afs=''
323 afsroot=''
324 alignbytes=''
325 ansi2knr=''
326 archlib=''
327 archlibexp=''
328 d_archlib=''
329 installarchlib=''
330 archname=''
331 myarchname=''
332 d_atolf=''
333 d_atoll=''
334 baserev=''
335 bin=''
336 binexp=''
337 initialinstalllocation=''
338 installbin=''
339 userelocatableinc=''
340 byteorder=''
341 cc=''
342 ccflags=''
343 cppflags=''
344 ldflags=''
345 lkflags=''
346 locincpth=''
347 optimize=''
348 cf_email=''
349 cf_by=''
350 cf_time=''
351 contains=''
352 cpp_stuff=''
353 cpplast=''
354 cppminus=''
355 cpprun=''
356 cppstdin=''
357 d__fwalk=''
358 d_access=''
359 d_accessx=''
360 d_aintl=''
361 d_alarm=''
362 asctime_r_proto=''
363 d_asctime_r=''
364 d_attribute_format=''
365 d_attribute_malloc=''
366 d_attribute_nonnull=''
367 d_attribute_noreturn=''
368 d_attribute_pure=''
369 d_attribute_unused=''
370 d_attribute_warn_unused_result=''
371 d_printf_format_null=''
372 d_bcmp=''
373 d_bcopy=''
374 d_builtin_choose_expr=''
375 d_builtin_expect=''
376 d_bzero=''
377 d_c99_variadic_macros=''
378 d_casti32=''
379 castflags=''
380 d_castneg=''
381 d_chown=''
382 d_chroot=''
383 d_chsize=''
384 d_class=''
385 d_clearenv=''
386 d_closedir=''
387 d_void_closedir=''
388 d_cmsghdr_s=''
389 d_const=''
390 d_copysignl=''
391 d_cplusplus=''
392 cryptlib=''
393 d_crypt=''
394 crypt_r_proto=''
395 d_crypt_r=''
396 d_csh=''
397 full_csh=''
398 d_ctermid=''
399 ctermid_r_proto=''
400 d_ctermid_r=''
401 ctime_r_proto=''
402 d_ctime_r=''
403 d_cuserid=''
404 d_dbl_dig=''
405 d_dbminitproto=''
406 d_difftime=''
407 d_dir_dd_fd=''
408 d_dirfd=''
409 d_dlerror=''
410 d_dlopen=''
411 d_dlsymun=''
412 d_dosuid=''
413 d_suidsafe=''
414 d_drand48_r=''
415 drand48_r_proto=''
416 d_drand48proto=''
417 d_dup2=''
418 d_eaccess=''
419 d_endgrent=''
420 d_endgrent_r=''
421 endgrent_r_proto=''
422 d_endhent=''
423 d_endhostent_r=''
424 endhostent_r_proto=''
425 d_endnent=''
426 d_endnetent_r=''
427 endnetent_r_proto=''
428 d_endpent=''
429 d_endprotoent_r=''
430 endprotoent_r_proto=''
431 d_endpwent=''
432 d_endpwent_r=''
433 endpwent_r_proto=''
434 d_endsent=''
435 d_endservent_r=''
436 endservent_r_proto=''
437 d_faststdio=''
438 d_fchdir=''
439 d_fchmod=''
440 d_fchown=''
441 d_fcntl=''
442 d_fcntl_can_lock=''
443 d_fd_macros=''
444 d_fd_set=''
445 d_fds_bits=''
446 d_fgetpos=''
447 d_finite=''
448 d_finitel=''
449 d_flexfnam=''
450 d_flock=''
451 d_flockproto=''
452 d_fork=''
453 d_fp_class=''
454 d_fpclass=''
455 d_fpclassify=''
456 d_fpclassl=''
457 d_fpos64_t=''
458 d_frexpl=''
459 d_fs_data_s=''
460 d_fseeko=''
461 d_fsetpos=''
462 d_fstatfs=''
463 d_fsync=''
464 d_ftello=''
465 d_ftime=''
466 d_gettimeod=''
467 d_futimes=''
468 d_Gconvert=''
469 d_getcwd=''
470 d_getespwnam=''
471 d_getfsstat=''
472 d_getgrent=''
473 d_getgrent_r=''
474 getgrent_r_proto=''
475 d_getgrgid_r=''
476 getgrgid_r_proto=''
477 d_getgrnam_r=''
478 getgrnam_r_proto=''
479 d_getgrps=''
480 d_gethbyaddr=''
481 d_gethbyname=''
482 d_gethent=''
483 aphostname=''
484 d_gethname=''
485 d_phostname=''
486 d_uname=''
487 d_gethostbyaddr_r=''
488 gethostbyaddr_r_proto=''
489 d_gethostbyname_r=''
490 gethostbyname_r_proto=''
491 d_gethostent_r=''
492 gethostent_r_proto=''
493 d_gethostprotos=''
494 d_getitimer=''
495 d_getlogin=''
496 d_getlogin_r=''
497 getlogin_r_proto=''
498 d_getmnt=''
499 d_getmntent=''
500 d_getnbyaddr=''
501 d_getnbyname=''
502 d_getnent=''
503 d_getnetbyaddr_r=''
504 getnetbyaddr_r_proto=''
505 d_getnetbyname_r=''
506 getnetbyname_r_proto=''
507 d_getnetent_r=''
508 getnetent_r_proto=''
509 d_getnetprotos=''
510 d_getpagsz=''
511 d_getpent=''
512 d_getpgid=''
513 d_getpgrp2=''
514 d_bsdgetpgrp=''
515 d_getpgrp=''
516 d_getppid=''
517 d_getprior=''
518 d_getpbyname=''
519 d_getpbynumber=''
520 d_getprotobyname_r=''
521 getprotobyname_r_proto=''
522 d_getprotobynumber_r=''
523 getprotobynumber_r_proto=''
524 d_getprotoent_r=''
525 getprotoent_r_proto=''
526 d_getprotoprotos=''
527 d_getprpwnam=''
528 d_getpwent=''
529 d_getpwent_r=''
530 getpwent_r_proto=''
531 d_getpwnam_r=''
532 getpwnam_r_proto=''
533 d_getpwuid_r=''
534 getpwuid_r_proto=''
535 d_getsent=''
536 d_getservbyname_r=''
537 getservbyname_r_proto=''
538 d_getservbyport_r=''
539 getservbyport_r_proto=''
540 d_getservent_r=''
541 getservent_r_proto=''
542 d_getservprotos=''
543 d_getspnam=''
544 d_getspnam_r=''
545 getspnam_r_proto=''
546 d_getsbyname=''
547 d_getsbyport=''
548 d_gmtime_r=''
549 gmtime_r_proto=''
550 d_gnulibc=''
551 gnulibc_version=''
552 d_hasmntopt=''
553 d_htonl=''
554 d_ilogbl=''
555 d_inetaton=''
556 d_int64_t=''
557 d_isascii=''
558 d_isfinite=''
559 d_isinf=''
560 d_isnan=''
561 d_isnanl=''
562 d_killpg=''
563 d_lchown=''
564 d_ldbl_dig=''
565 d_libm_lib_version=''
566 d_link=''
567 d_localtime_r=''
568 d_localtime_r_needs_tzset=''
569 localtime_r_proto=''
570 d_locconv=''
571 d_lockf=''
572 d_longdbl=''
573 longdblsize=''
574 d_longlong=''
575 longlongsize=''
576 d_lseekproto=''
577 d_lstat=''
578 d_madvise=''
579 d_malloc_good_size=''
580 d_malloc_size=''
581 d_mblen=''
582 d_mbstowcs=''
583 d_mbtowc=''
584 d_memchr=''
585 d_memcmp=''
586 d_memcpy=''
587 d_memmove=''
588 d_memset=''
589 d_mkdir=''
590 d_mkdtemp=''
591 d_mkfifo=''
592 d_mkstemp=''
593 d_mkstemps=''
594 d_mktime=''
595 d_mmap=''
596 mmaptype=''
597 d_modfl=''
598 d_modfl_pow32_bug=''
599 d_modflproto=''
600 d_mprotect=''
601 d_msg=''
602 d_msgctl=''
603 d_msgget=''
604 d_msghdr_s=''
605 d_msgrcv=''
606 d_msgsnd=''
607 d_msync=''
608 d_munmap=''
609 d_nice=''
610 d_nl_langinfo=''
611 d_off64_t=''
612 d_open3=''
613 d_fpathconf=''
614 d_pathconf=''
615 d_pause=''
616 d_pipe=''
617 d_poll=''
618 d_portable=''
619 d_procselfexe=''
620 procselfexe=''
621 d_old_pthread_create_joinable=''
622 old_pthread_create_joinable=''
623 d_pthread_atfork=''
624 d_pthread_attr_setscope=''
625 d_pthread_yield=''
626 d_sched_yield=''
627 sched_yield=''
628 d_qgcvt=''
629 d_random_r=''
630 random_r_proto=''
631 d_readdir64_r=''
632 readdir64_r_proto=''
633 d_readdir=''
634 d_rewinddir=''
635 d_seekdir=''
636 d_telldir=''
637 d_readdir_r=''
638 readdir_r_proto=''
639 d_readlink=''
640 d_readv=''
641 d_recvmsg=''
642 d_rename=''
643 d_rmdir=''
644 d_safebcpy=''
645 d_safemcpy=''
646 d_sanemcmp=''
647 d_sbrkproto=''
648 d_scalbnl=''
649 d_select=''
650 d_sem=''
651 d_semctl=''
652 d_semget=''
653 d_semop=''
654 d_sendmsg=''
655 d_setegid=''
656 d_seteuid=''
657 d_setgrent=''
658 d_setgrent_r=''
659 setgrent_r_proto=''
660 d_setgrps=''
661 d_sethent=''
662 d_sethostent_r=''
663 sethostent_r_proto=''
664 d_setitimer=''
665 d_setlinebuf=''
666 d_setlocale=''
667 d_setlocale_r=''
668 setlocale_r_proto=''
669 d_setnent=''
670 d_setnetent_r=''
671 setnetent_r_proto=''
672 d_setpent=''
673 d_setpgid=''
674 d_setpgrp2=''
675 d_bsdsetpgrp=''
676 d_setpgrp=''
677 d_setprior=''
678 d_setproctitle=''
679 d_setprotoent_r=''
680 setprotoent_r_proto=''
681 d_setpwent=''
682 d_setpwent_r=''
683 setpwent_r_proto=''
684 d_setregid=''
685 d_setresgid=''
686 d_setresuid=''
687 d_setreuid=''
688 d_setrgid=''
689 d_setruid=''
690 d_setsent=''
691 d_setservent_r=''
692 setservent_r_proto=''
693 d_setsid=''
694 d_setvbuf=''
695 d_sfio=''
696 usesfio=''
697 d_shm=''
698 d_shmat=''
699 d_shmatprototype=''
700 shmattype=''
701 d_shmctl=''
702 d_shmdt=''
703 d_shmget=''
704 d_sigaction=''
705 d_signbit=''
706 d_sigprocmask=''
707 d_sigsetjmp=''
708 usesitecustomize=''
709 d_snprintf=''
710 d_vsnprintf=''
711 d_sockatmark=''
712 d_sockatmarkproto=''
713 d_msg_ctrunc=''
714 d_msg_dontroute=''
715 d_msg_oob=''
716 d_msg_peek=''
717 d_msg_proxy=''
718 d_oldsock=''
719 d_scm_rights=''
720 d_socket=''
721 d_sockpair=''
722 sockethdr=''
723 socketlib=''
724 d_socklen_t=''
725 d_socks5_init=''
726 d_sprintf_returns_strlen=''
727 d_sqrtl=''
728 d_srand48_r=''
729 srand48_r_proto=''
730 d_srandom_r=''
731 srandom_r_proto=''
732 d_sresgproto=''
733 d_sresuproto=''
734 d_statblks=''
735 d_statfs_f_flags=''
736 d_statfs_s=''
737 d_fstatvfs=''
738 d_statvfs=''
739 d_stdio_cnt_lval=''
740 d_stdio_ptr_lval=''
741 d_stdio_ptr_lval_nochange_cnt=''
742 d_stdio_ptr_lval_sets_cnt=''
743 d_stdiobase=''
744 d_stdstdio=''
745 stdio_base=''
746 stdio_bufsiz=''
747 stdio_cnt=''
748 stdio_filbuf=''
749 stdio_ptr=''
750 d_index=''
751 d_strchr=''
752 d_strcoll=''
753 d_strctcpy=''
754 d_strerrm=''
755 d_strerror=''
756 d_sysernlst=''
757 d_syserrlst=''
758 d_strerror_r=''
759 strerror_r_proto=''
760 d_strftime=''
761 d_strlcat=''
762 d_strlcpy=''
763 d_strtod=''
764 d_strtol=''
765 d_strtold=''
766 d_strtoll=''
767 d_strtoq=''
768 d_strtoul=''
769 d_strtoull=''
770 d_strtouq=''
771 d_strxfrm=''
772 d_symlink=''
773 d_syscall=''
774 d_syscallproto=''
775 d_sysconf=''
776 d_system=''
777 d_tcgetpgrp=''
778 d_tcsetpgrp=''
779 d_telldirproto=''
780 d_time=''
781 timetype=''
782 clocktype=''
783 d_times=''
784 d_tmpnam_r=''
785 tmpnam_r_proto=''
786 d_truncate=''
787 d_ttyname_r=''
788 ttyname_r_proto=''
789 d_tzname=''
790 d_u32align=''
791 d_ualarm=''
792 d_umask=''
793 d_semctl_semid_ds=''
794 d_semctl_semun=''
795 d_union_semun=''
796 d_unordered=''
797 d_unsetenv=''
798 d_usleep=''
799 d_usleepproto=''
800 d_ustat=''
801 d_pseudofork=''
802 d_vfork=''
803 usevfork=''
804 d_voidsig=''
805 signal_t=''
806 d_volatile=''
807 d_charvspr=''
808 d_vprintf=''
809 d_wait4=''
810 d_waitpid=''
811 d_wcstombs=''
812 d_wctomb=''
813 d_writev=''
814 dlext=''
815 cccdlflags=''
816 ccdlflags=''
817 dlsrc=''
818 ld=''
819 lddlflags=''
820 usedl=''
821 doublesize=''
822 ebcdic=''
823 fflushNULL=''
824 fflushall=''
825 fpossize=''
826 fpostype=''
827 gccansipedantic=''
828 gccosandvers=''
829 gccversion=''
830 gidformat=''
831 gidsign=''
832 gidsize=''
833 gidtype=''
834 groupstype=''
835 h_fcntl=''
836 h_sysfile=''
837 html1dir=''
838 html1direxp=''
839 installhtml1dir=''
840 html3dir=''
841 html3direxp=''
842 installhtml3dir=''
843 i_arpainet=''
844 i_assert=''
845 i_crypt=''
846 db_hashtype=''
847 db_prefixtype=''
848 db_version_major=''
849 db_version_minor=''
850 db_version_patch=''
851 i_db=''
852 i_dbm=''
853 i_rpcsvcdbm=''
854 d_dirnamlen=''
855 direntrytype=''
856 i_dirent=''
857 i_dld=''
858 i_dlfcn=''
859 i_fcntl=''
860 i_float=''
861 i_fp=''
862 i_fp_class=''
863 i_gdbm=''
864 d_grpasswd=''
865 i_grp=''
866 i_ieeefp=''
867 i_inttypes=''
868 i_langinfo=''
869 i_libutil=''
870 i_limits=''
871 i_locale=''
872 i_machcthr=''
873 i_malloc=''
874 i_math=''
875 i_memory=''
876 i_mntent=''
877 i_ndbm=''
878 i_netdb=''
879 i_neterrno=''
880 i_netinettcp=''
881 i_niin=''
882 i_sysin=''
883 i_poll=''
884 i_prot=''
885 i_pthread=''
886 d_pwage=''
887 d_pwchange=''
888 d_pwclass=''
889 d_pwcomment=''
890 d_pwexpire=''
891 d_pwgecos=''
892 d_pwpasswd=''
893 d_pwquota=''
894 i_pwd=''
895 i_sfio=''
896 i_shadow=''
897 i_socks=''
898 i_stddef=''
899 i_stdlib=''
900 i_string=''
901 strings=''
902 i_sunmath=''
903 i_sysaccess=''
904 i_sysdir=''
905 i_sysfile=''
906 d_voidtty=''
907 i_bsdioctl=''
908 i_sysfilio=''
909 i_sysioctl=''
910 i_syssockio=''
911 i_syslog=''
912 i_sysmman=''
913 i_sysmode=''
914 i_sysmount=''
915 i_sysndir=''
916 i_sysparam=''
917 i_sysresrc=''
918 i_syssecrt=''
919 i_sysselct=''
920 i_sysstat=''
921 i_sysstatfs=''
922 i_sysstatvfs=''
923 i_systimes=''
924 i_systypes=''
925 i_sysuio=''
926 i_sysun=''
927 i_sysutsname=''
928 i_sysvfs=''
929 i_syswait=''
930 i_sgtty=''
931 i_termio=''
932 i_termios=''
933 d_tm_tm_gmtoff=''
934 d_tm_tm_zone=''
935 i_systime=''
936 i_systimek=''
937 i_time=''
938 timeincl=''
939 i_unistd=''
940 i_ustat=''
941 i_utime=''
942 i_values=''
943 i_stdarg=''
944 i_varargs=''
945 i_varhdr=''
946 i_vfork=''
947 d_inc_version_list=''
948 inc_version_list=''
949 inc_version_list_init=''
950 installprefix=''
951 installprefixexp=''
952 installstyle=''
953 installusrbinperl=''
954 intsize=''
955 longsize=''
956 shortsize=''
957 issymlink=''
958 libc=''
959 ldlibpthname=''
960 libperl=''
961 shrpenv=''
962 useshrplib=''
963 glibpth=''
964 libpth=''
965 loclibpth=''
966 plibpth=''
967 xlibpth=''
968 ignore_versioned_solibs=''
969 libs=''
970 libsdirs=''
971 libsfiles=''
972 libsfound=''
973 libspath=''
974 lns=''
975 d_PRIEUldbl=''
976 d_PRIFUldbl=''
977 d_PRIGUldbl=''
978 d_PRIeldbl=''
979 d_PRIfldbl=''
980 d_PRIgldbl=''
981 d_SCNfldbl=''
982 sPRIEUldbl=''
983 sPRIFUldbl=''
984 sPRIGUldbl=''
985 sPRIeldbl=''
986 sPRIfldbl=''
987 sPRIgldbl=''
988 sSCNfldbl=''
989 lseeksize=''
990 lseektype=''
991 mad=''
992 madlyh=''
993 madlyobj=''
994 madlysrc=''
995 make_set_make=''
996 d_mymalloc=''
997 freetype=''
998 mallocobj=''
999 mallocsrc=''
1000 malloctype=''
1001 usemallocwrap=''
1002 usemymalloc=''
1003 installman1dir=''
1004 man1dir=''
1005 man1direxp=''
1006 man1ext=''
1007 installman3dir=''
1008 man3dir=''
1009 man3direxp=''
1010 man3ext=''
1011 modetype=''
1012 multiarch=''
1013 mydomain=''
1014 myhostname=''
1015 phostname=''
1016 c=''
1017 n=''
1018 d_eofnblk=''
1019 eagain=''
1020 o_nonblock=''
1021 rd_nodata=''
1022 need_va_copy=''
1023 netdb_hlen_type=''
1024 netdb_host_type=''
1025 netdb_name_type=''
1026 netdb_net_type=''
1027 groupcat=''
1028 hostcat=''
1029 passcat=''
1030 orderlib=''
1031 ranlib=''
1032 d_perl_otherlibdirs=''
1033 otherlibdirs=''
1034 package=''
1035 spackage=''
1036 pager=''
1037 api_revision=''
1038 api_subversion=''
1039 api_version=''
1040 api_versionstring=''
1041 patchlevel=''
1042 perl_patchlevel=''
1043 revision=''
1044 subversion=''
1045 version=''
1046 version_patchlevel_string=''
1047 perl5=''
1048 perladmin=''
1049 perlpath=''
1050 d_nv_preserves_uv=''
1051 d_nv_zero_is_allbits_zero=''
1052 i16size=''
1053 i16type=''
1054 i32size=''
1055 i32type=''
1056 i64size=''
1057 i64type=''
1058 i8size=''
1059 i8type=''
1060 ivsize=''
1061 ivtype=''
1062 nv_preserves_uv_bits=''
1063 nvsize=''
1064 nvtype=''
1065 u16size=''
1066 u16type=''
1067 u32size=''
1068 u32type=''
1069 u64size=''
1070 u64type=''
1071 u8size=''
1072 u8type=''
1073 uvsize=''
1074 uvtype=''
1075 ivdformat=''
1076 nvEUformat=''
1077 nvFUformat=''
1078 nvGUformat=''
1079 nveformat=''
1080 nvfformat=''
1081 nvgformat=''
1082 uvXUformat=''
1083 uvoformat=''
1084 uvuformat=''
1085 uvxformat=''
1086 pidtype=''
1087 prefix=''
1088 prefixexp=''
1089 installprivlib=''
1090 privlib=''
1091 privlibexp=''
1092 prototype=''
1093 ptrsize=''
1094 d_PRIXU64=''
1095 d_PRId64=''
1096 d_PRIi64=''
1097 d_PRIo64=''
1098 d_PRIu64=''
1099 d_PRIx64=''
1100 sPRIXU64=''
1101 sPRId64=''
1102 sPRIi64=''
1103 sPRIo64=''
1104 sPRIu64=''
1105 sPRIx64=''
1106 d_quad=''
1107 quadkind=''
1108 quadtype=''
1109 uquadtype=''
1110 drand01=''
1111 randbits=''
1112 randfunc=''
1113 randseedtype=''
1114 seedfunc=''
1115 installscript=''
1116 scriptdir=''
1117 scriptdirexp=''
1118 selectminbits=''
1119 selecttype=''
1120 sh=''
1121 sig_count=''
1122 sig_name=''
1123 sig_name_init=''
1124 sig_num=''
1125 sig_num_init=''
1126 sig_size=''
1127 d_sitearch=''
1128 installsitearch=''
1129 sitearch=''
1130 sitearchexp=''
1131 installsitebin=''
1132 sitebin=''
1133 sitebinexp=''
1134 installsitehtml1dir=''
1135 sitehtml1dir=''
1136 sitehtml1direxp=''
1137 installsitehtml3dir=''
1138 sitehtml3dir=''
1139 sitehtml3direxp=''
1140 installsitelib=''
1141 sitelib=''
1142 sitelib_stem=''
1143 sitelibexp=''
1144 installsiteman1dir=''
1145 siteman1dir=''
1146 siteman1direxp=''
1147 installsiteman3dir=''
1148 siteman3dir=''
1149 siteman3direxp=''
1150 siteprefix=''
1151 siteprefixexp=''
1152 installsitescript=''
1153 sitescript=''
1154 sitescriptexp=''
1155 sizesize=''
1156 sizetype=''
1157 so=''
1158 socksizetype=''
1159 sharpbang=''
1160 shsharp=''
1161 spitshell=''
1162 src=''
1163 ssizetype=''
1164 startperl=''
1165 startsh=''
1166 stdchar=''
1167 d_stdio_stream_array=''
1168 stdio_stream_array=''
1169 sysman=''
1170 trnl=''
1171 uidformat=''
1172 uidsign=''
1173 uidsize=''
1174 uidtype=''
1175 archname64=''
1176 use64bitall=''
1177 use64bitint=''
1178 usefaststdio=''
1179 ccflags_uselargefiles=''
1180 ldflags_uselargefiles=''
1181 libswanted_uselargefiles=''
1182 uselargefiles=''
1183 uselongdouble=''
1184 usemorebits=''
1185 usemultiplicity=''
1186 nm_opt=''
1187 nm_so_opt=''
1188 runnm=''
1189 usenm=''
1190 useperlio=''
1191 usesocks=''
1192 d_oldpthreads=''
1193 use5005threads=''
1194 useithreads=''
1195 usereentrant=''
1196 usethreads=''
1197 usedtrace=''
1198 incpath=''
1199 mips_type=''
1200 usrinc=''
1201 d_vendorarch=''
1202 installvendorarch=''
1203 vendorarch=''
1204 vendorarchexp=''
1205 d_vendorbin=''
1206 installvendorbin=''
1207 vendorbin=''
1208 vendorbinexp=''
1209 installvendorhtml1dir=''
1210 vendorhtml1dir=''
1211 vendorhtml1direxp=''
1212 installvendorhtml3dir=''
1213 vendorhtml3dir=''
1214 vendorhtml3direxp=''
1215 d_vendorlib=''
1216 installvendorlib=''
1217 vendorlib=''
1218 vendorlib_stem=''
1219 vendorlibexp=''
1220 installvendorman1dir=''
1221 vendorman1dir=''
1222 vendorman1direxp=''
1223 installvendorman3dir=''
1224 vendorman3dir=''
1225 vendorman3direxp=''
1226 usevendorprefix=''
1227 vendorprefix=''
1228 vendorprefixexp=''
1229 d_vendorscript=''
1230 installvendorscript=''
1231 vendorscript=''
1232 vendorscriptexp=''
1233 versiononly=''
1234 defvoidused=''
1235 voidflags=''
1236 yacc=''
1237 yaccflags=''
1238 CONFIG=''
1239
1240 define='define'
1241 undef='undef'
1242 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1243 rmlist=''
1244
1245 : We must find out about Eunice early
1246 eunicefix=':'
1247 if test -f /etc/unixtovms; then
1248         eunicefix=/etc/unixtovms
1249 fi
1250 if test -f /etc/unixtovms.exe; then
1251         eunicefix=/etc/unixtovms.exe
1252 fi
1253
1254 : Set executable suffix now -- needed before hints available
1255 if test -f "/libs/version.library"; then
1256 : Amiga OS
1257     _exe=""
1258 elif test -f "/system/gnu_library/bin/ar.pm"; then
1259 : Stratus VOS
1260     _exe=".pm"
1261 elif test -n "$DJGPP"; then
1262 : DOS DJGPP
1263     _exe=".exe"
1264 elif test -d c:/. -o -n "$is_os2" ; then
1265 : OS/2 or cygwin
1266     _exe=".exe"
1267 fi
1268
1269 i_whoami=''
1270 : Trailing extension.  Override this in a hint file, if needed.
1271 : Extra object files, if any, needed on this platform.
1272 archobjs=''
1273 archname=''
1274 groupstype=''
1275 libnames=''
1276 : change the next line if compiling for Xenix/286 on Xenix/386
1277 xlibpth='/usr/lib/386 /lib/386'
1278 : Possible local library directories to search.
1279 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1280 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1281
1282 : general looking path for locating libraries
1283 glibpth="/lib /usr/lib $xlibpth"
1284 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1285 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1286 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1287 test -d /usr/lib64         && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
1288
1289 : Private path used by Configure to find libraries.  Its value
1290 : is prepended to libpth. This variable takes care of special
1291 : machines, like the mips.  Usually, it should be empty.
1292 plibpth=''
1293
1294 : default library list
1295 libswanted=''
1296 : some systems want to use only the non-versioned libso:s
1297 ignore_versioned_solibs=''
1298 siteman1dir=''
1299 siteman3dir=''
1300 sitescript=''
1301 : set usethreads on the Configure command line to enable threads.
1302 usereentrant='undef'
1303 : full support for void wanted by default
1304 defvoidused=15
1305
1306 : Possible local include directories to search.
1307 : Set locincpth to "" in a hint file to defeat local include searches.
1308 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1309 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1310 :
1311 : no include file wanted by default
1312 inclwanted=''
1313
1314 : Enable -DEBUGGING and -DDEBUGGING from the command line
1315 EBUGGING=''
1316 DEBUGGING=old
1317
1318 ccname=''
1319 ccversion=''
1320 perllibs=''
1321 : set useposix=false in your hint file to disable the POSIX extension.
1322 useposix=true
1323 : set useopcode=false in your hint file to disable the Opcode extension.
1324 useopcode=true
1325 archname64=''
1326 ccflags_uselargefiles=''
1327 ldflags_uselargefiles=''
1328 libswanted_uselargefiles=''
1329 : set usemultiplicity on the Configure command line to enable multiplicity.
1330 : set usesocks on the Configure command line to enable socks.
1331 : List of libraries we want.
1332 : If anyone needs extra -lxxx, put those in a hint file.
1333 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1334 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1335 : We probably want to search /usr/shlib before most other libraries.
1336 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1337 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1338 glibpth="/usr/shlib $glibpth"
1339 : Do not use vfork unless overridden by a hint file.
1340 usevfork=false
1341
1342 : Find the basic shell for Bourne shell scripts
1343 case "$sh" in
1344 '')
1345         case "$SYSTYPE" in
1346         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1347         *) xxx='/bin/sh';;
1348         esac
1349         if test -f "$xxx"; then
1350                 sh="$xxx"
1351         else
1352                 : Build up a list and do a single loop so we can 'break' out.
1353                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1354                 for xxx in sh bash ksh pdksh ash; do
1355                         for p in $pth; do
1356                                 try="$try ${p}/${xxx}"
1357                         done
1358                 done
1359                 for xxx in $try; do
1360                         if test -f "$xxx"; then
1361                                 sh="$xxx";
1362                                 break
1363                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1364                                 sh="$xxx";
1365                                 break
1366                         elif test -f "$xxx.exe"; then
1367                                 sh="$xxx";
1368                                 break
1369                         fi
1370                 done
1371         fi
1372         ;;
1373 esac
1374
1375 case "$sh" in
1376 '')     cat >&2 <<EOM
1377 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1378
1379 Usually it's in /bin/sh.  How did you even get this far?
1380 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1381 we'll try to straighten this all out.
1382 EOM
1383         exit 1
1384         ;;
1385 esac
1386
1387 : see if sh knows # comments
1388 if `$sh -c '#' >/dev/null 2>&1`; then
1389         shsharp=true
1390         spitshell=cat
1391         xcat=/bin/cat
1392         test -f $xcat$_exe || xcat=/usr/bin/cat
1393         if test ! -f $xcat$_exe; then
1394                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1395                         if test -f $p/cat$_exe; then
1396                                 xcat=$p/cat
1397                                 break
1398                         fi
1399                 done
1400                 if test ! -f $xcat$_exe; then
1401                         echo "Can't find cat anywhere!"
1402                         exit 1
1403                 fi
1404         fi
1405         echo "#!$xcat" >sharp
1406         $eunicefix sharp
1407         chmod +x sharp
1408         ./sharp > today
1409         if test -s today; then
1410                 sharpbang='#!'
1411         else
1412                 echo "#! $xcat" > sharp
1413                 $eunicefix sharp
1414                 chmod +x sharp
1415                 ./sharp > today
1416                 if test -s today; then
1417                         sharpbang='#! '
1418                 else
1419                         sharpbang=': use '
1420                 fi
1421         fi
1422 else
1423         echo " "
1424         echo "Your $sh doesn't grok # comments--I will strip them later on."
1425         shsharp=false
1426         cd ..
1427         echo "exec grep -v '^[  ]*#'" >spitshell
1428         chmod +x spitshell
1429         $eunicefix spitshell
1430         spitshell=`pwd`/spitshell
1431         cd UU
1432         echo "I presume that if # doesn't work, #! won't work either!"
1433         sharpbang=': use '
1434 fi
1435 rm -f sharp today
1436
1437 : figure out how to guarantee sh startup
1438 case "$startsh" in
1439 '') startsh=${sharpbang}${sh} ;;
1440 *)
1441 esac
1442 cat >sharp <<EOSS
1443 $startsh
1444 set abc
1445 test "$?abc" != 1
1446 EOSS
1447
1448 chmod +x sharp
1449 $eunicefix sharp
1450 if ./sharp; then
1451         : echo "Yup, it does."
1452 else
1453         echo "Hmm... '$startsh' does not guarantee sh startup..."
1454         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1455 fi
1456 rm -f sharp
1457
1458 : Save command line options in file UU/cmdline.opt for later use in
1459 : generating config.sh.
1460 cat > cmdline.opt <<EOSH
1461 : Configure command line arguments.
1462 config_arg0='$0'
1463 config_args='$*'
1464 config_argc=$#
1465 EOSH
1466 argn=1
1467 args_exp=''
1468 args_sep=''
1469 for arg in "$@"; do
1470         cat >>cmdline.opt <<EOSH
1471 config_arg$argn='$arg'
1472 EOSH
1473         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1474 $arg
1475 EOC
1476         arg_exp=`cat cmdl.opt`
1477         args_exp="$args_exp$args_sep'$arg_exp'"
1478         argn=`expr $argn + 1`
1479         args_sep=' '
1480 done
1481 rm -f cmdl.opt
1482
1483 : produce awk script to parse command line options
1484 cat >options.awk <<'EOF'
1485 BEGIN {
1486         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1487
1488         len = length(optstr);
1489         for (i = 1; i <= len; i++) {
1490                 c = substr(optstr, i, 1);
1491                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1492                 if (a == ":") {
1493                         arg[c] = 1;
1494                         i++;
1495                 }
1496                 opt[c] = 1;
1497         }
1498 }
1499 {
1500         expect = 0;
1501         str = $0;
1502         if (substr(str, 1, 1) != "-") {
1503                 printf("'%s'\n", str);
1504                 next;
1505         }
1506         len = length($0);
1507         for (i = 2; i <= len; i++) {
1508                 c = substr(str, i, 1);
1509                 if (!opt[c]) {
1510                         printf("-%s\n", substr(str, i));
1511                         next;
1512                 }
1513                 printf("-%s\n", c);
1514                 if (arg[c]) {
1515                         if (i < len)
1516                                 printf("'%s'\n", substr(str, i + 1));
1517                         else
1518                                 expect = 1;
1519                         next;
1520                 }
1521         }
1522 }
1523 END {
1524         if (expect)
1525                 print "?";
1526 }
1527 EOF
1528
1529 : process the command line options
1530 set X `for arg in "$@"; do echo "X$arg"; done |
1531         sed -e s/X// | awk -f options.awk`
1532 eval "set $*"
1533 shift
1534 rm -f options.awk
1535
1536 : set up default values
1537 fastread=''
1538 reuseval=false
1539 config_sh=''
1540 alldone=''
1541 error=''
1542 silent=''
1543 extractsh=''
1544 override=''
1545 knowitall=''
1546 rm -f optdef.sh posthint.sh
1547 cat >optdef.sh <<EOS
1548 $startsh
1549 EOS
1550
1551
1552 : option parsing
1553 while test $# -gt 0; do
1554         case "$1" in
1555         -d) shift; fastread=yes;;
1556         -e) shift; alldone=cont;;
1557         -f)
1558                 shift
1559                 cd ..
1560                 if test -r "$1"; then
1561                         config_sh="$1"
1562                 else
1563                         echo "$me: cannot read config file $1." >&2
1564                         error=true
1565                 fi
1566                 cd UU
1567                 shift;;
1568         --help|\
1569         -h) shift; error=true;;
1570         -r) shift; reuseval=true;;
1571         -s) shift; silent=true; realsilent=true;;
1572         -E) shift; alldone=exit;;
1573         -K) shift; knowitall=true;;
1574         -O) shift; override=true;;
1575         -S) shift; silent=true; extractsh=true;;
1576         -D)
1577                 shift
1578                 case "$1" in
1579                 *=)
1580                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1581                         echo "$me: ignoring -D $1" >&2
1582                         ;;
1583                 *=*) echo "$1" | \
1584                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1585                 *) echo "$1='define'" >> optdef.sh;;
1586                 esac
1587                 shift
1588                 ;;
1589         -U)
1590                 shift
1591                 case "$1" in
1592                 *=) echo "$1" >> optdef.sh;;
1593                 *=*)
1594                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1595                         echo "$me: ignoring -U $1" >&2
1596                         ;;
1597                 *) echo "$1='undef'" >> optdef.sh;;
1598                 esac
1599                 shift
1600                 ;;
1601         -A)
1602             shift
1603             xxx=''
1604             yyy="$1"
1605             zzz=''
1606             uuu=undef
1607             case "$yyy" in
1608             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1609                  case "$zzz" in
1610                  *:*) zzz='' ;;
1611                  *)   xxx=append
1612                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1613                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1614                  esac
1615                  ;;
1616             esac
1617             case "$xxx" in
1618             '')  case "$yyy" in
1619                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1620                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1621                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1622                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1623                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1624                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1625                  esac
1626                  ;;
1627             esac
1628             case "$xxx" in
1629             append)
1630                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1631             clear)
1632                 echo "$yyy=''"                  >> posthint.sh ;;
1633             define)
1634                 case "$zzz" in
1635                 '') zzz=define ;;
1636                 esac
1637                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1638             eval)
1639                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1640             prepend)
1641                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1642             undef)
1643                 case "$zzz" in
1644                 '') zzz="$uuu" ;;
1645                 esac
1646                 echo "$yyy=$zzz"                >> posthint.sh ;;
1647             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1648             esac
1649             shift
1650             ;;
1651         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1652             exit 0;;
1653         --) break;;
1654         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1655         *) break;;
1656         esac
1657 done
1658
1659 case "$error" in
1660 true)
1661         cat >&2 <<EOM
1662 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1663                  [-U symbol] [-U symbol=] [-A command:symbol...]
1664   -d : use defaults for all answers.
1665   -e : go on without questioning past the production of config.sh.
1666   -f : specify an alternate default configuration file.
1667   -h : print this help message and exit (with an error status).
1668   -r : reuse C symbols value if possible (skips costly nm extraction).
1669   -s : silent mode, only echoes questions and essential information.
1670   -D : define symbol to have some value:
1671          -D symbol         symbol gets the value 'define'
1672          -D symbol=value   symbol gets the value 'value'
1673        common used examples (see INSTALL for more info):
1674          -Duse64bitint            use 64bit integers
1675          -Duse64bitall            use 64bit integers and pointers
1676          -Dusethreads             use thread support
1677          -Dinc_version_list=none  do not include older perl trees in @INC
1678          -DEBUGGING=none          DEBUGGING options
1679          -Dcc=gcc                 choose your compiler
1680          -Dprefix=/opt/perl5      choose your destination
1681   -E : stop at the end of questions, after having produced config.sh.
1682   -K : do not use unless you know what you are doing.
1683   -O : let -D and -U override definitions from loaded configuration file.
1684   -S : perform variable substitutions on all .SH files (can mix with -f)
1685   -U : undefine symbol:
1686          -U symbol    symbol gets the value 'undef'
1687          -U symbol=   symbol gets completely empty
1688        e.g.:  -Uversiononly
1689   -A : manipulate symbol after the platform specific hints have been applied:
1690          -A append:symbol=value   append value to symbol
1691          -A symbol=value          like append:, but with a separating space
1692          -A define:symbol=value   define symbol to have value
1693          -A clear:symbol          define symbol to be ''
1694          -A define:symbol         define symbol to be 'define'
1695          -A eval:symbol=value     define symbol to be eval of value
1696          -A prepend:symbol=value  prepend value to symbol
1697          -A undef:symbol          define symbol to be 'undef'
1698          -A undef:symbol=         define symbol to be ''
1699        e.g.:  -A prepend:libswanted='cl pthread '
1700               -A ccflags=-DSOME_MACRO
1701   -V : print version number and exit (with a zero status).
1702 EOM
1703         exit 1
1704         ;;
1705 esac
1706
1707 : Sanity checks
1708 case "$fastread$alldone" in
1709 yescont|yesexit) ;;
1710 *)
1711         case "$extractsh" in
1712         true) ;;
1713         *)
1714                 if test ! -t 0; then
1715                         echo "Say 'sh Configure', not 'sh <Configure'"
1716                         exit 1
1717                 fi
1718                 ;;
1719         esac
1720         ;;
1721 esac
1722
1723 exec 4>&1
1724 case "$silent" in
1725 true) exec 1>/dev/null;;
1726 esac
1727
1728 : run the defines and the undefines, if any, but leave the file out there...
1729 touch optdef.sh
1730 . ./optdef.sh
1731 : create the posthint manipulation script and leave the file out there...
1732 touch posthint.sh
1733
1734 : set package name
1735 package=perl5
1736 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1737 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1738 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1739 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1740 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1741 esac
1742
1743 : Some greps do not return status, grrr.
1744 echo "grimblepritz" >grimble
1745 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1746         contains=contains
1747 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1748         contains=grep
1749 else
1750         contains=contains
1751 fi
1752 rm -f grimble
1753 : the following should work in any shell
1754 case "$contains" in
1755 contains*)
1756         echo " "
1757         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1758         cat >contains <<'EOSS'
1759 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1760 EOSS
1761 chmod +x contains
1762 esac
1763
1764 : Find the path to the source tree
1765 case "$src" in
1766 '') case "$0" in
1767     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1768          case "$src" in
1769          /*)    ;;
1770          .)     ;;
1771          *)     src=`cd ../$src && pwd` ;;
1772          esac
1773          ;;
1774     *)   src='.';;
1775     esac;;
1776 esac
1777 case "$src" in
1778 '')     src=/
1779         rsrc=/
1780         ;;
1781 /*) rsrc="$src";;
1782 *) rsrc="../$src";;
1783 esac
1784 if test -f $rsrc/Configure && \
1785         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1786 then
1787    : found it, so we are ok.
1788 else
1789         rsrc=''
1790         for src in . .. ../.. ../../.. ../../../..; do
1791                 if test -f ../$src/Configure && \
1792                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1793                 then
1794                         rsrc=../$src
1795                         break
1796                 fi
1797         done
1798 fi
1799 case "$rsrc" in
1800 '')
1801         cat <<EOM >&4
1802
1803 Sorry, I can't seem to locate the source dir for $package.  Please start
1804 Configure with an explicit path -- i.e. /some/path/Configure.
1805
1806 EOM
1807         exit 1
1808         ;;
1809 ../.)   rsrc='..';;
1810 *)
1811         echo " "
1812         echo "Sources for $package found in \"$src\"." >&4
1813         ;;
1814 esac
1815
1816 : script used to extract .SH files with variable substitutions
1817 cat >extract <<'EOS'
1818 PERL_CONFIG_SH=true
1819 echo "Doing variable substitutions on .SH files..."
1820 if test -f MANIFEST; then
1821         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1822 else
1823         echo "(Looking for .SH files under the source directory.)"
1824         set x `(cd "$src"; find . -name "*.SH" -print)`
1825 fi
1826 shift
1827 case $# in
1828 0) set x `(cd "$src"; echo *.SH)`; shift;;
1829 esac
1830 if test ! -f "$src/$1"; then
1831         shift
1832 fi
1833 mkdir_p='
1834 name=$1;
1835 create="";
1836 while test $name; do
1837         if test ! -d "$name"; then
1838                 create="$name $create";
1839                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1840                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1841         else
1842                 name="";
1843         fi;
1844 done;
1845 for file in $create; do
1846         mkdir $file;
1847 done
1848 '
1849 for file in $*; do
1850         case "$src" in
1851         ".")
1852                 case "$file" in
1853                 */*)
1854                         dir=`expr X$file : 'X\(.*\)/'`
1855                         file=`expr X$file : 'X.*/\(.*\)'`
1856                         (cd "$dir" && . ./$file)
1857                         ;;
1858                 *)
1859                         . ./$file
1860                         ;;
1861                 esac
1862                 ;;
1863         *)
1864                 case "$file" in
1865                 */*)
1866                         dir=`expr X$file : 'X\(.*\)/'`
1867                         file=`expr X$file : 'X.*/\(.*\)'`
1868                         (set x $dir; shift; eval $mkdir_p)
1869                         sh <"$src/$dir/$file"
1870                         ;;
1871                 *)
1872                         sh <"$src/$file"
1873                         ;;
1874                 esac
1875                 ;;
1876         esac
1877 done
1878 if test -f "$src/config_h.SH"; then
1879         if test ! -f config.h; then
1880         : oops, they left it out of MANIFEST, probably, so do it anyway.
1881         . "$src/config_h.SH"
1882         fi
1883 fi
1884 EOS
1885
1886 : extract files and exit if asked to do so
1887 case "$extractsh" in
1888 true)
1889         case "$realsilent" in
1890         true) ;;
1891         *) exec 1>&4;;
1892         esac
1893         case "$config_sh" in
1894         '') config_sh='config.sh';;
1895         esac
1896         echo " "
1897         echo "Fetching answers from $config_sh..."
1898         cd ..
1899         . $config_sh
1900         test "$override" && . ./optdef.sh
1901         echo " "
1902         . UU/extract
1903         rm -rf UU
1904         echo "Extraction done."
1905         exit 0
1906         ;;
1907 esac
1908
1909 : Eunice requires " " instead of "", can you believe it
1910 echo " "
1911 : Here we go...
1912 echo "Beginning of configuration questions for $package."
1913
1914 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1915
1916 : first determine how to suppress newline on echo command
1917 echo " "
1918 echo "Checking echo to see how to suppress newlines..."
1919 (echo "hi there\c" ; echo " ") >.echotmp
1920 if $contains c .echotmp >/dev/null 2>&1 ; then
1921         echo "...using -n."
1922         n='-n'
1923         c=''
1924 else
1925         cat <<'EOM'
1926 ...using \c
1927 EOM
1928         n=''
1929         c='\c'
1930 fi
1931 echo $n "The star should be here-->$c"
1932 echo '*'
1933 rm -f .echotmp
1934
1935 : Now test for existence of everything in MANIFEST
1936 echo " "
1937 if test -f "$rsrc/MANIFEST"; then
1938         echo "First let's make sure your kit is complete.  Checking..." >&4
1939         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1940         rm -f missing
1941         tmppwd=`pwd`
1942         for filelist in x??; do
1943                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1944         done
1945         if test -s missing; then
1946                 cat missing >&4
1947                 cat >&4 <<'EOM'
1948
1949 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1950
1951 You have the option of continuing the configuration process, despite the
1952 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1953 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1954 and contact the author (perlbug@perl.org).
1955
1956 EOM
1957                 echo $n "Continue? [n] $c" >&4
1958                 read ans
1959                 case "$ans" in
1960                 y*)
1961                         echo "Continuing..." >&4
1962                         rm -f missing
1963                         ;;
1964                 *)
1965                         echo "ABORTING..." >&4
1966                         kill $$
1967                         ;;
1968                 esac
1969         else
1970                 echo "Looks good..."
1971         fi
1972 else
1973         echo "There is no MANIFEST file.  I hope your kit is complete !"
1974 fi
1975 rm -f missing x??
1976
1977 : Find the appropriate value for a newline for tr
1978 echo " "
1979 if test -n "$DJGPP"; then
1980        trnl='\012'
1981 fi
1982 if test X"$trnl" = X; then
1983         case "`echo foo|tr '\n' x 2>/dev/null`" in
1984         foox) trnl='\n' ;;
1985         esac
1986 fi
1987 if test X"$trnl" = X; then
1988         case "`echo foo|tr '\012' x 2>/dev/null`" in
1989         foox) trnl='\012' ;;
1990         esac
1991 fi
1992 if test X"$trnl" = X; then
1993        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1994        fooxy) trnl='\n\r' ;;
1995        esac
1996 fi
1997 if test X"$trnl" = X; then
1998         cat <<EOM >&2
1999
2000 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
2001
2002 EOM
2003         exit 1
2004 fi
2005
2006 : compute the number of columns on the terminal for proper question formatting
2007 case "$COLUMNS" in
2008 '') COLUMNS='80';;
2009 esac
2010
2011 : set up the echo used in my read
2012 myecho="case \"\$xxxm\" in
2013 '') echo $n \"\$rp $c\" >&4;;
2014 *) case \"\$rp\" in
2015         '') echo $n \"[\$xxxm] $c\";;
2016         *)
2017                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
2018                         echo \"\$rp\" >&4
2019                         echo $n \"[\$xxxm] $c\" >&4
2020                 else
2021                         echo $n \"\$rp [\$xxxm] $c\" >&4
2022                 fi
2023                 ;;
2024         esac;;
2025 esac"
2026
2027 : now set up to do reads with possible shell escape and default assignment
2028 cat <<EOSC >myread
2029 $startsh
2030 xxxm=\$dflt
2031 $myecho
2032 ans='!'
2033 case "\$fastread" in
2034 yes) case "\$dflt" in
2035         '') ;;
2036         *) ans='';
2037                 case "\$silent-\$rp" in
2038                 true-) ;;
2039                 *) echo " " >&4;;
2040                 esac;;
2041         esac;;
2042 *) case "\$silent" in
2043         true) case "\$rp" in
2044                 '') ans='';;
2045                 esac;;
2046         esac;;
2047 esac
2048 while expr "X\$ans" : "X!" >/dev/null; do
2049         read answ
2050         set x \$xxxm
2051         shift
2052         aok=''; eval "ans=\\"\$answ\\"" && aok=y
2053         case  "\$answ" in
2054         "!")
2055                 sh 1>&4
2056                 echo " "
2057                 $myecho
2058                 ;;
2059         !*)
2060                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2061                 shift
2062                 sh 1>&4 -c "\$*"
2063                 echo " "
2064                 $myecho
2065                 ;;
2066         "\$ans")
2067                 case "\$ans" in
2068                 \\&*)
2069                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2070                         shift
2071                         case "\$1" in
2072                         -d)
2073                                 fastread=yes
2074                                 echo "(OK, I'll run with -d after this question.)" >&4
2075                                 ;;
2076                         -*)
2077                                 echo "*** Sorry, \$1 not supported yet." >&4
2078                                 ;;
2079                         esac
2080                         $myecho
2081                         ans=!
2082                         ;;
2083                 esac;;
2084         *)
2085                 case "\$aok" in
2086                 y)
2087                         echo "*** Substitution done -- please confirm."
2088                         xxxm="\$ans"
2089                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2090                         xxxm="\$ans"
2091                         ans=!
2092                         ;;
2093                 *)
2094                         echo "*** Error -- try again."
2095                         ans=!
2096                         ;;
2097                 esac
2098                 $myecho
2099                 ;;
2100         esac
2101         case "\$ans\$xxxm\$nostick" in
2102         '')
2103                 ans=!
2104                 $myecho
2105                 ;;
2106         esac
2107 done
2108 case "\$ans" in
2109 '') ans="\$xxxm";;
2110 esac
2111 EOSC
2112
2113 : create .config dir to save info across Configure sessions
2114 test -d ../.config || mkdir ../.config
2115 cat >../.config/README <<EOF
2116 This directory created by Configure to save information that should
2117 persist across sessions for $package.
2118
2119 You may safely delete it if you wish.
2120 EOF
2121
2122 : See if we are using a devel version and want that
2123 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2124 case "$usedevel" in
2125 $define|true|[yY]*) ;;
2126 *) case "$xversion" in
2127    *[13579])
2128         cat >&4 <<EOH
2129 *** WHOA THERE!!! ***
2130
2131     This is an UNSTABLE DEVELOPMENT release.
2132     The version of this $package distribution is $xversion, that is, odd,
2133     (as opposed to even) and that signifies a development release.
2134     If you want a maintenance release, you want an even-numbered version.
2135
2136     Do ***NOT*** install this into production use.
2137     Data corruption and crashes are possible.
2138
2139     It is most seriously suggested that you do not continue any further
2140     unless you want to help in developing and debugging Perl.
2141
2142     If you *still* want to build perl, you can answer 'y' now,
2143     or pass -Dusedevel to Configure.
2144
2145 EOH
2146         rp='Do you really want to continue?'
2147         dflt='n'
2148         . ./myread
2149         case "$ans" in
2150         [yY]) echo >&4 "Okay, continuing."
2151               usedevel="$define" ;;
2152         *) echo >&4 "Okay, bye."
2153            exit 1
2154            ;;
2155         esac
2156         ;;
2157     esac
2158     ;;
2159 esac
2160 case "$usedevel" in
2161 $define|true|[yY]*)
2162         case "$versiononly" in
2163         '') versiononly="$define" ;;
2164         esac
2165         case "$installusrbinperl" in
2166         '') installusrbinperl="$undef" ;;
2167         esac
2168         ;;
2169 esac
2170
2171 : general instructions
2172 needman=true
2173 firsttime=true
2174 user=`(logname) 2>/dev/null`
2175 case "$user" in
2176 '') user=`whoami 2>&1`;;
2177 esac
2178 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2179         firsttime=false
2180         echo " "
2181         rp='Would you like to see the instructions?'
2182         dflt=n
2183         . ./myread
2184         case "$ans" in
2185         [yY]*) ;;
2186         *) needman=false;;
2187         esac
2188 fi
2189 if $needman; then
2190         cat <<EOH
2191
2192 This installation shell script will examine your system and ask you questions
2193 to determine how the perl5 package should be installed. If you get
2194 stuck on a question, you may use a ! shell escape to start a subshell or
2195 execute a command.  Many of the questions will have default answers in square
2196 brackets; typing carriage return will give you the default.
2197
2198 On some of the questions which ask for file or directory names you are allowed
2199 to use the ~name construct to specify the login directory belonging to "name",
2200 even if you don't have a shell which knows about that.  Questions where this is
2201 allowed will be marked "(~name ok)".
2202
2203 EOH
2204         rp=''
2205         dflt='Type carriage return to continue'
2206         . ./myread
2207         cat <<'EOH'
2208
2209 The prompter used in this script allows you to use shell variables and
2210 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2211 in the default answer, as if the default line was a set of arguments given to a
2212 script shell.  This means you may also use $* to repeat the whole default line,
2213 so you do not have to re-type everything to add something to the default.
2214
2215 Everytime there is a substitution, you will have to confirm.  If there is an
2216 error (e.g. an unmatched backtick), the default answer will remain unchanged
2217 and you will be prompted again.
2218
2219 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2220 the questions and use the computed defaults (or the previous answers if there
2221 was already a config.sh file). Type 'Configure -h' for a list of options.
2222 You may also start interactively and then answer '& -d' at any prompt to turn
2223 on the non-interactive behaviour for the remainder of the execution.
2224
2225 EOH
2226         . ./myread
2227         cat <<EOH
2228
2229 Much effort has been expended to ensure that this shell script will run on any
2230 Unix system.  If despite that it blows up on yours, your best bet is to edit
2231 Configure and run it again.  If you can't run Configure for some reason,
2232 you'll have to generate a config.sh file by hand.  Whatever problems you
2233 have, let me (perlbug@perl.org) know how I blew it.
2234
2235 This installation script affects things in two ways:
2236
2237 1) it may do direct variable substitutions on some of the files included
2238    in this kit.
2239 2) it builds a config.h file for inclusion in C programs.  You may edit
2240    any of these files as the need arises after running this script.
2241
2242 If you make a mistake on a question, there is no easy way to back up to it
2243 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2244 files.  Configure will offer to let you do this before it runs the SH files.
2245
2246 EOH
2247         dflt='Type carriage return to continue'
2248         . ./myread
2249         case "$firsttime" in
2250         true) echo $user >>../.config/instruct;;
2251         esac
2252 fi
2253
2254 : find out where common programs are
2255 echo " "
2256 echo "Locating common programs..." >&4
2257 cat <<EOSC >loc
2258 $startsh
2259 case \$# in
2260 0) exit 1;;
2261 esac
2262 thing=\$1
2263 shift
2264 dflt=\$1
2265 shift
2266 for dir in \$*; do
2267         case "\$thing" in
2268         .)
2269         if test -d \$dir/\$thing; then
2270                 echo \$dir
2271                 exit 0
2272         fi
2273         ;;
2274         *)
2275         for thisthing in \$dir/\$thing; do
2276                 : just loop through to pick last item
2277         done
2278         if test -f \$thisthing; then
2279                 echo \$thisthing
2280                 exit 0
2281         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2282                 echo \$thisthing
2283                 exit 0
2284         elif test -f \$dir/\$thing.exe; then
2285                 if test -n "$DJGPP"; then
2286                         echo \$dir/\$thing.exe
2287                 elif test "$eunicefix" != ":"; then
2288                         : on Eunice apparently
2289                         echo \$dir/\$thing
2290                         exit 0
2291                 fi
2292                 exit 0
2293         fi
2294         ;;
2295         esac
2296 done
2297 echo \$dflt
2298 exit 1
2299 EOSC
2300 chmod +x loc
2301 $eunicefix loc
2302 loclist="
2303 awk
2304 cat
2305 chmod
2306 comm
2307 cp
2308 echo
2309 expr
2310 grep
2311 ls
2312 mkdir
2313 rm
2314 sed
2315 sort
2316 touch
2317 tr
2318 uniq
2319 "
2320 trylist="
2321 Mcc
2322 ar
2323 bison
2324 byacc
2325 cpp
2326 csh
2327 date
2328 egrep
2329 gmake
2330 gzip
2331 less
2332 ln
2333 make
2334 more
2335 nm
2336 nroff
2337 pg
2338 test
2339 uname
2340 zip
2341 "
2342 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2343 pth="$pth /lib /usr/lib"
2344 for file in $loclist; do
2345         eval xxx=\$$file
2346         case "$xxx" in
2347         /*|?:[\\/]*)
2348                 if test -f "$xxx"; then
2349                         : ok
2350                 else
2351                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2352                         xxx=`./loc $file $file $pth`
2353                 fi
2354                 ;;
2355         '') xxx=`./loc $file $file $pth`;;
2356         *) xxx=`./loc $xxx $xxx $pth`;;
2357         esac
2358         eval $file=$xxx$_exe
2359         eval _$file=$xxx
2360         case "$xxx" in
2361         /*)
2362                 echo $file is in $xxx.
2363                 ;;
2364         ?:[\\/]*)
2365                 echo $file is in $xxx.
2366                 ;;
2367         *)
2368                 echo "I don't know where '$file' is, and my life depends on it." >&4
2369                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2370                 exit 1
2371                 ;;
2372         esac
2373 done
2374 echo " "
2375 echo "Don't worry if any of the following aren't found..."
2376 say=offhand
2377 for file in $trylist; do
2378         eval xxx=\$$file
2379         case "$xxx" in
2380         /*|?:[\\/]*)
2381                 if test -f "$xxx"; then
2382                         : ok
2383                 else
2384                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2385                         xxx=`./loc $file $file $pth`
2386                 fi
2387                 ;;
2388         '') xxx=`./loc $file $file $pth`;;
2389         *) xxx=`./loc $xxx $xxx $pth`;;
2390         esac
2391         eval $file=$xxx$_exe
2392         eval _$file=$xxx
2393         case "$xxx" in
2394         /*)
2395                 echo $file is in $xxx.
2396                 ;;
2397         ?:[\\/]*)
2398                 echo $file is in $xxx.
2399                 ;;
2400         *)
2401                 echo "I don't see $file out there, $say."
2402                 say=either
2403                 ;;
2404         esac
2405 done
2406 case "$egrep" in
2407 egrep)
2408         echo "Substituting grep for egrep."
2409         egrep=$grep
2410         _egrep=$grep
2411         ;;
2412 esac
2413 case "$ln" in
2414 ln)
2415         echo "Substituting cp for ln."
2416         ln=$cp
2417         _ln=$cp
2418         ;;
2419 esac
2420 case "$make" in
2421 make)
2422         case "$gmake" in
2423         gmake)
2424         echo "I can't find make or gmake, and my life depends on it." >&4
2425         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2426         exit 1
2427         ;;
2428         esac
2429         ;;
2430 esac
2431 case "$gmake" in
2432 gmake)  ;;
2433 *)      # We can't have osname yet.
2434         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2435                 # Assume that gmake, if found, is definitely GNU make
2436                 # and prefer it over the system make.
2437                 echo "Substituting gmake for make."
2438                 make=$gmake
2439                 _make=$gmake
2440         fi
2441         ;;
2442 esac
2443 case "$test" in
2444 test)
2445         echo "Hopefully test is built into your sh."
2446         ;;
2447 *)
2448         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2449                 echo "Using the test built into your sh."
2450                 test=test
2451                 _test=test
2452         fi
2453         ;;
2454 esac
2455 case "$echo" in
2456 echo)
2457         echo "Hopefully echo is built into your sh."
2458         ;;
2459 '') ;;
2460 *)
2461         echo " "
2462 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2463         $echo $n "hi there$c" >foo1
2464         echo $n "hi there$c" >foo2
2465         if cmp foo1 foo2 >/dev/null 2>&1; then
2466                 echo "They are compatible.  In fact, they may be identical."
2467         else
2468                 case "$n" in
2469                 '-n') n='' c='\c';;
2470                 *) n='-n' c='';;
2471                 esac
2472                 cat <<FOO
2473 They are not compatible!  You are probably running ksh on a non-USG system.
2474 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2475 have echo built in and we may have to run some Bourne shell scripts.  That
2476 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2477
2478 FOO
2479                 $echo $n "The star should be here-->$c"
2480                 $echo "*"
2481         fi
2482         $rm -f foo1 foo2
2483         ;;
2484 esac
2485
2486 # This question was auctioned at YAPC::Europe-2007 in Vienna
2487 # I never promised you could answer it. I only auctioned the question.
2488 cat <<FOO
2489 The following message is sponsored by
2490
2491   Dresden.pm<--The stars should be here.
2492
2493 Dear Perl user, system administrator or package
2494 maintainer, the Perl community sends greetings to
2495 you. Do you (emblematical) greet back [Y/n]? n
2496
2497 FOO
2498
2499 : Check what type of C compiler we use
2500 cat <<EOS >trygcc
2501 $startsh
2502 EOS
2503 cat <<'EOSC' >>trygcc
2504 case "$cc" in
2505 '') ;;
2506 *)  $rm -f try try.*
2507     $cat >try.c <<EOM
2508 int main(int argc, char *argv[]) {
2509   return 0;
2510 }
2511 EOM
2512     if $cc -o try $ccflags $ldflags try.c; then
2513        :
2514     else
2515         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2516         despair=yes
2517         trygcc=yes
2518         case "$cc" in
2519         *gcc*) trygcc=no ;;
2520         esac
2521         # Skip this test because it gives a false match on output like:
2522         #    ./trygcc: line 23: cc: command not found
2523         # case "`$cc -v -c try.c 2>&1`" in
2524         # *gcc*) trygcc=no ;;
2525         # esac
2526         if $test X"$trygcc" = Xyes; then
2527             if gcc -o try -c try.c; then
2528                 echo " "
2529                 echo "You seem to have a working gcc, though." >&4
2530                 # Switching compilers may undo the work of hints files.
2531                 # The most common problem is -D_REENTRANT for threads.
2532                 # This heuristic catches that case, but gets false positives
2533                 # if -Dusethreads was not actually specified.  Better to
2534                 # bail out here with a useful message than fail 
2535                 # mysteriously later. Should we perhaps just try to
2536                 # re-invoke Configure -Dcc=gcc config_args ?
2537                 if $test -f usethreads.cbu; then
2538                         $cat >&4 <<EOM 
2539
2540 *** However, any setting of the C compiler flags (e.g. for thread support)
2541 *** will be lost.  It may be necessary for you to restart Configure and
2542 *** add -Dcc=gcc to your Configure command line.
2543
2544 EOM
2545                         rp="Would you like to go ahead and try gcc anyway?"
2546                         dflt=n
2547                 else
2548                         rp="Would you like to use it?"
2549                         dflt=y
2550                 fi
2551                 if $test -f myread; then
2552                     . ./myread
2553                 else
2554                     if $test -f UU/myread; then
2555                         . ./UU/myread
2556                     else
2557                         echo "Cannot find myread, sorry.  Aborting." >&2
2558                         exit 1
2559                     fi
2560                 fi  
2561                 case "$ans" in
2562                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2563                 esac
2564             fi
2565         fi
2566     fi
2567     $rm -f try try.*
2568     ;;
2569 esac
2570 EOSC
2571
2572 cat <<EOS >checkcc
2573 $startsh
2574 EOS
2575 cat <<'EOSC' >>checkcc
2576 case "$cc" in        
2577 '') ;;
2578 *)  $rm -f try try.*              
2579     $cat >try.c <<EOM
2580 int main(int argc, char *argv[]) {
2581   return 0;
2582 }
2583 EOM
2584     if $cc -o try $ccflags $ldflags try.c; then
2585        :
2586     else
2587         if $test X"$despair" = Xyes; then
2588            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2589         fi
2590         $cat >&4 <<EOM         
2591 You need to find a working C compiler.
2592 Either (purchase and) install the C compiler supplied by your OS vendor,
2593 or for a free C compiler try http://gcc.gnu.org/
2594 I cannot continue any further, aborting.
2595 EOM
2596         exit 1
2597     fi
2598     $rm -f try try.*
2599     ;;
2600 esac
2601 EOSC
2602
2603 : determine whether symbolic links are supported
2604 echo " "
2605 $touch blurfl
2606 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2607         echo "Symbolic links are supported." >&4
2608         lns="$ln -s"
2609 else
2610         echo "Symbolic links are NOT supported." >&4
2611         lns="$ln"
2612 fi
2613 $rm -f blurfl sym
2614
2615 : determine whether symbolic links are supported
2616 echo " "
2617 case "$lns" in
2618 *"ln"*" -s")
2619         echo "Checking how to test for symbolic links..." >&4
2620         $lns blurfl sym
2621         if $test "X$issymlink" = X; then
2622                 case "$newsh" in
2623                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2624                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2625                 esac
2626                 if test $? = 0; then
2627                         issymlink="test -h"
2628                 else
2629                         echo "Your builtin 'test -h' may be broken." >&4
2630                         case "$test" in
2631                         /*)     ;;
2632                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2633                                 for p in $pth
2634                                 do
2635                                         if test -f "$p/$test"; then
2636                                                 test="$p/$test"
2637                                                 break
2638                                         fi
2639                                 done
2640                                 ;;
2641                         esac
2642                         case "$test" in
2643                         /*)
2644                                 echo "Trying external '$test -h'." >&4
2645                                 issymlink="$test -h"
2646                                 if $test ! -h sym >/dev/null 2>&1; then
2647                                         echo "External '$test -h' is broken, too." >&4
2648                                         issymlink=''
2649                                 fi
2650                                 ;;
2651                         *)      issymlink='' ;;
2652                         esac
2653                 fi              
2654         fi
2655         if $test "X$issymlink" = X; then
2656                 if $test -L sym 2>/dev/null; then
2657                         issymlink="$test -L"
2658                         echo "The builtin '$test -L' worked." >&4
2659                 fi
2660         fi
2661         if $test "X$issymlink" != X; then
2662                 echo "You can test for symbolic links with '$issymlink'." >&4
2663         else
2664                 echo "I do not know how you can test for symbolic links." >&4
2665         fi
2666         $rm -f blurfl sym
2667         ;;
2668 *)      echo "No symbolic links, so not testing for their testing..." >&4
2669         ;;
2670 esac
2671 echo " "
2672
2673
2674 case "$mksymlinks" in
2675 $define|true|[yY]*)
2676         case "$src" in
2677         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2678                 exit 1
2679                 ;;
2680         *)      case "$lns:$issymlink" in
2681                 *"ln"*" -s:"*"test -"?)
2682                         echo "Creating the symbolic links..." >&4
2683                         echo "(First creating the subdirectories...)" >&4
2684                         cd ..
2685                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2686                                 read directory
2687                                 test -z "$directory" && break
2688                                 mkdir -p $directory
2689                         done
2690                         # Sanity check 1.
2691                         if test ! -d t/base; then
2692                                 echo "Failed to create the subdirectories.  Aborting." >&4
2693                                 exit 1
2694                         fi
2695                         echo "(Then creating the symlinks...)" >&4
2696                         awk '{print $1}' $src/MANIFEST | while true; do
2697                                 read filename
2698                                 test -z "$filename" && break
2699                                 if test -f $filename; then
2700                                         if $issymlink $filename; then
2701                                                 rm -f $filename
2702                                         fi
2703                                 fi
2704                                 if test -f $filename; then
2705                                         echo "$filename already exists, not symlinking."
2706                                 else
2707                                         ln -s $src/$filename $filename
2708                                 fi
2709                         done
2710                         # Sanity check 2.
2711                         if test ! -f t/base/lex.t; then
2712                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2713                                 exit 1
2714                         fi
2715                         cd UU
2716                         ;;
2717                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2718                         ;;
2719                 esac
2720                 ;;
2721         esac
2722         ;;
2723 esac
2724
2725 : Check for Cross-Compilation
2726 case "$usecrosscompile" in
2727 $define|true|[yY]*)
2728         $echo "Cross-compiling..."
2729         croak=''
2730         case "$cc" in
2731         *-*-gcc) # A cross-compiling gcc, probably.
2732             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2733             ar=$targetarch-ar
2734             # leave out ld, choosing it is more complex
2735             nm=$targetarch-nm
2736             ranlib=$targetarch-ranlib
2737             $echo 'extern int foo;' > try.c
2738             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2739             shift
2740             if $test $# -gt 0; then
2741                 incpth="$incpth $*"
2742                 incpth="`$echo $incpth|$sed 's/^ //'`"
2743                 echo "Guessing incpth '$incpth'." >&4
2744                 for i in $*; do
2745                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2746                     if $test -d $j; then
2747                         libpth="$libpth $j"
2748                     fi
2749                 done   
2750                 libpth="`$echo $libpth|$sed 's/^ //'`"
2751                 echo "Guessing libpth '$libpth'." >&4
2752             fi
2753             $rm -f try.c
2754             ;;
2755         esac
2756         case "$targetarch" in
2757         '') echo "Targetarch not defined." >&4; croak=y ;;
2758         *)  echo "Using targetarch $targetarch." >&4 ;;
2759         esac
2760         case "$incpth" in
2761         '') echo "Incpth not defined." >&4; croak=y ;;
2762         *)  echo "Using incpth '$incpth'." >&4 ;;
2763         esac
2764         case "$libpth" in
2765         '') echo "Libpth not defined." >&4; croak=y ;;
2766         *)  echo "Using libpth '$libpth'." >&4 ;;
2767         esac
2768         case "$usrinc" in
2769         '') for i in $incpth; do
2770                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2771                     usrinc=$i
2772                     echo "Guessing usrinc $usrinc." >&4
2773                     break
2774                 fi
2775             done
2776             case "$usrinc" in
2777             '') echo "Usrinc not defined." >&4; croak=y ;;
2778             esac
2779             ;;
2780         *)  echo "Using usrinc $usrinc." >&4 ;;
2781         esac
2782         case "$targethost" in
2783         '') echo "Targethost not defined." >&4; croak=y ;;
2784         *)  echo "Using targethost $targethost." >&4
2785         esac
2786         locincpth=' '
2787         loclibpth=' '
2788         case "$croak" in
2789         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2790         esac
2791         case "$src" in
2792         /*) run=$src/Cross/run
2793             targetmkdir=$src/Cross/mkdir
2794             to=$src/Cross/to
2795             from=$src/Cross/from
2796             ;;
2797         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2798             run=$pwd/Cross/run
2799             targetmkdir=$pwd/Cross/mkdir
2800             to=$pwd/Cross/to
2801             from=$pwd/Cross/from
2802             ;;
2803         esac
2804         case "$targetrun" in
2805         '') targetrun=ssh ;;
2806         esac
2807         case "$targetto" in
2808         '') targetto=scp ;;
2809         esac
2810         case "$targetfrom" in
2811         '') targetfrom=scp ;;
2812         esac
2813         run=$run-$targetrun
2814         to=$to-$targetto
2815         from=$from-$targetfrom
2816         case "$targetdir" in
2817         '')  targetdir=/tmp
2818              echo "Guessing targetdir $targetdir." >&4
2819              ;;
2820         esac
2821         case "$targetuser" in
2822         '')  targetuser=root
2823              echo "Guessing targetuser $targetuser." >&4
2824              ;;
2825         esac
2826         case "$targetfrom" in
2827         scp)    q=-q ;;
2828         *)      q='' ;;
2829         esac
2830         case "$targetrun" in
2831         ssh|rsh)
2832             cat >$run <<EOF
2833 #!/bin/sh
2834 case "\$1" in
2835 -cwd)
2836   shift
2837   cwd=\$1
2838   shift
2839   ;;
2840 esac
2841 case "\$cwd" in
2842 '') cwd=$targetdir ;;
2843 esac
2844 exe=\$1
2845 shift
2846 if $test ! -f \$exe.xok; then
2847   $to \$exe
2848   $touch \$exe.xok
2849 fi
2850 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2851 EOF
2852             ;;
2853         *)  echo "Unknown targetrun '$targetrun'" >&4
2854             exit 1
2855             ;;
2856         esac
2857         case "$targetmkdir" in
2858         */Cross/mkdir)
2859             cat >$targetmkdir <<EOF
2860 #!/bin/sh
2861 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2862 EOF
2863             $chmod a+rx $targetmkdir
2864             ;;
2865         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2866             exit 1
2867             ;;
2868         esac
2869         case "$targetto" in
2870         scp|rcp)
2871             cat >$to <<EOF
2872 #!/bin/sh
2873 for f in \$@
2874 do
2875   case "\$f" in
2876   /*)
2877     $targetmkdir \`dirname \$f\`
2878     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2879     ;;
2880   *)
2881     $targetmkdir $targetdir/\`dirname \$f\`
2882     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2883     ;;
2884   esac
2885 done
2886 exit 0
2887 EOF
2888             ;;
2889         cp) cat >$to <<EOF
2890 #!/bin/sh
2891 for f in \$@
2892 do
2893   case "\$f" in
2894   /*)
2895     $mkdir -p $targetdir/\`dirname \$f\`
2896     $cp \$f $targetdir/\$f || exit 1
2897     ;;
2898   *)
2899     $targetmkdir $targetdir/\`dirname \$f\`
2900     $cp \$f $targetdir/\$f || exit 1
2901     ;;
2902   esac
2903 done
2904 exit 0
2905 EOF
2906             ;;
2907         *)  echo "Unknown targetto '$targetto'" >&4
2908             exit 1
2909             ;;
2910         esac
2911         case "$targetfrom" in
2912         scp|rcp)
2913           cat >$from <<EOF
2914 #!/bin/sh
2915 for f in \$@
2916 do
2917   $rm -f \$f
2918   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2919 done
2920 exit 0
2921 EOF
2922             ;;
2923         cp) cat >$from <<EOF
2924 #!/bin/sh
2925 for f in \$@
2926 do
2927   $rm -f \$f
2928   cp $targetdir/\$f . || exit 1
2929 done
2930 exit 0
2931 EOF
2932             ;;
2933         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2934             exit 1
2935             ;;
2936         esac
2937         if $test ! -f $run; then
2938             echo "Target 'run' script '$run' not found." >&4
2939         else
2940             $chmod a+rx $run
2941         fi
2942         if $test ! -f $to; then
2943             echo "Target 'to' script '$to' not found." >&4
2944         else
2945             $chmod a+rx $to
2946         fi
2947         if $test ! -f $from; then
2948             echo "Target 'from' script '$from' not found." >&4
2949         else
2950             $chmod a+rx $from
2951         fi
2952         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2953             exit 1
2954         fi
2955         cat >&4 <<EOF
2956 Using '$run' for remote execution,
2957 and '$from' and '$to'
2958 for remote file transfer.
2959 EOF
2960         ;;
2961 *)      run=''
2962         to=:
2963         from=:
2964         usecrosscompile='undef'
2965         targetarch=''
2966         ;;
2967 esac
2968
2969 : see whether [:lower:] and [:upper:] are supported character classes
2970 echo " "
2971 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2972 ABYZ)
2973         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2974         up='[:upper:]'
2975         low='[:lower:]'
2976         ;;
2977 *)      # There is a discontinuity in EBCDIC between 'R' and 'S'
2978         # (0xd9 and 0xe2), therefore that is a nice testing point.
2979         if test "X$up" = X -o "X$low" = X; then
2980             case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2981             rs) up='[A-Z]'
2982                 low='[a-z]'
2983                 ;;
2984             esac
2985         fi
2986         if test "X$up" = X -o "X$low" = X; then
2987             case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2988             rs) up='A-Z'
2989                 low='a-z'
2990                 ;;
2991             esac
2992         fi
2993         if test "X$up" = X -o "X$low" = X; then
2994             case "`echo RS | od -x 2>/dev/null`" in
2995             *D9E2*|*d9e2*)
2996                 echo "Hey, this might be EBCDIC." >&4
2997                 if test "X$up" = X -o "X$low" = X; then
2998                     case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2999                     rs) up='[A-IJ-RS-Z]'
3000                         low='[a-ij-rs-z]'
3001                         ;;
3002                     esac
3003                 fi
3004                 if test "X$up" = X -o "X$low" = X; then
3005                     case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
3006                     rs) up='A-IJ-RS-Z'
3007                         low='a-ij-rs-z'
3008                         ;;
3009                     esac
3010                 fi
3011                 ;;
3012             esac
3013         fi
3014 esac
3015 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
3016 rs)
3017     echo "Using $up and $low to convert case." >&4
3018     ;;
3019 *)
3020     echo "I don't know how to translate letters from upper to lower case." >&4
3021     echo "Your tr is not acting any way I know of." >&4
3022     exit 1
3023     ;;
3024 esac
3025 : set up the translation script tr, must be called with ./tr of course
3026 cat >tr <<EOSC
3027 $startsh
3028 case "\$1\$2" in
3029 '[A-Z][a-z]') exec $tr '$up' '$low';;
3030 '[a-z][A-Z]') exec $tr '$low' '$up';;
3031 esac
3032 exec $tr "\$@"
3033 EOSC
3034 chmod +x tr
3035 $eunicefix tr
3036
3037 : Try to determine whether config.sh was made on this system
3038 case "$config_sh" in
3039 '')
3040 myuname=`$uname -a 2>/dev/null`
3041 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
3042 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
3043 # because the A-Z/a-z are not consecutive.
3044 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e "s,['/],,g" | \
3045         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
3046 newmyuname="$myuname"
3047 dflt=n
3048 case "$knowitall" in
3049 '')
3050         if test -f ../config.sh; then
3051                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
3052                         eval "`grep myuname= ../config.sh`"
3053                 fi
3054                 if test "X$myuname" = "X$newmyuname"; then
3055                         dflt=y
3056                 fi
3057         fi
3058         ;;
3059 *) dflt=y;;
3060 esac
3061
3062 : Get old answers from old config file if Configure was run on the
3063 : same system, otherwise use the hints.
3064 hint=default
3065 cd ..
3066 if test -f config.sh; then
3067         echo " "
3068         rp="I see a config.sh file.  Shall I use it to set the defaults?"
3069         . UU/myread
3070         case "$ans" in
3071         n*|N*) echo "OK, I'll ignore it."
3072                 mv config.sh config.sh.old
3073                 myuname="$newmyuname"
3074                 ;;
3075         *)  echo "Fetching default answers from your old config.sh file..." >&4
3076                 tmp_n="$n"
3077                 tmp_c="$c"
3078                 tmp_sh="$sh"
3079                 . ./config.sh
3080                 cp config.sh UU
3081                 n="$tmp_n"
3082                 c="$tmp_c"
3083                 : Older versions did not always set $sh.  Catch re-use of such
3084                 : an old config.sh.
3085                 case "$sh" in
3086                 '') sh="$tmp_sh" ;;
3087                 esac
3088                 hint=previous
3089                 ;;
3090         esac
3091 fi
3092 . ./UU/checkcc
3093 if test ! -f config.sh; then
3094         $cat <<EOM
3095
3096 First time through, eh?  I have some defaults handy for some systems
3097 that need some extra help getting the Configure answers right:
3098
3099 EOM
3100         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3101         dflt=''
3102         : Half the following guesses are probably wrong... If you have better
3103         : tests or hints, please send them to perlbug@perl.org
3104         : The metaconfig authors would also appreciate a copy...
3105         $test -f /irix && osname=irix
3106         $test -f /xenix && osname=sco_xenix
3107         $test -f /dynix && osname=dynix
3108         $test -f /dnix && osname=dnix
3109         $test -f /lynx.os && osname=lynxos
3110         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3111         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3112         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3113         $test -f /bin/mips && /bin/mips && osname=mips
3114         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3115                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3116         $test -d /usr/apollo/bin && osname=apollo
3117         $test -f /etc/saf/_sactab && osname=svr4
3118         $test -d /usr/include/minix && osname=minix
3119         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3120         if $test -d /MachTen -o -d /MachTen_Folder; then
3121                 osname=machten
3122                 if $test -x /sbin/version; then
3123                         osvers=`/sbin/version | $awk '{print $2}' |
3124                         $sed -e 's/[A-Za-z]$//'`
3125                 elif $test -x /usr/etc/version; then
3126                         osvers=`/usr/etc/version | $awk '{print $2}' |
3127                         $sed -e 's/[A-Za-z]$//'`
3128                 else
3129                         osvers="$2.$3"
3130                 fi
3131         fi
3132
3133         $test -f /sys/posix.dll &&
3134                 $test -f /usr/bin/what &&
3135                 set X `/usr/bin/what /sys/posix.dll` &&
3136                 $test "$3" = UWIN &&
3137                 osname=uwin &&
3138                 osvers="$5"
3139
3140         if $test -f $uname; then
3141                 set X $myuname
3142                 shift
3143
3144                 case "$5" in
3145                 fps*) osname=fps ;;
3146                 mips*)
3147                         case "$4" in
3148                         umips) osname=umips ;;
3149                         *) osname=mips ;;
3150                         esac;;
3151                 [23]100) osname=mips ;;
3152                 next*) osname=next ;;
3153                 i386*)
3154                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3155                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3156                                 osname='sco'
3157                                 osvers=$tmp
3158                         elif $test -f /etc/kconfig; then
3159                                 osname=isc
3160                                 if test "$lns" = "$ln -s"; then
3161                                         osvers=4
3162                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3163                                         osvers=3
3164                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3165                                         osvers=2
3166                                 fi
3167                         fi
3168                         tmp=''
3169                         ;;
3170                 pc*)
3171                         if test -n "$DJGPP"; then
3172                                 osname=dos
3173                                 osvers=djgpp
3174                         fi
3175                         ;;
3176                 esac
3177
3178                 case "$1" in
3179                 aix) osname=aix
3180                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3181                         case "$tmp" in
3182                         # oslevel can fail with:
3183                         # oslevel: Unable to acquire lock.
3184                         *not\ found) osvers="$4"."$3" ;;
3185                         '<3240'|'<>3240') osvers=3.2.0 ;;
3186                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3187                         '=3250'|'>3250') osvers=3.2.5 ;;
3188                         *) osvers=$tmp;;
3189                         esac
3190                         ;;
3191                 bsd386) osname=bsd386
3192                         osvers=`$uname -r`
3193                         ;;
3194                 cygwin*) osname=cygwin
3195                         osvers="$3"
3196                         ;;
3197                 *dc.osx) osname=dcosx
3198                         osvers="$3"
3199                         ;;
3200                 dnix) osname=dnix
3201                         osvers="$3"
3202                         ;;
3203                 domainos) osname=apollo
3204                         osvers="$3"
3205                         ;;
3206                 dgux)   osname=dgux
3207                         osvers="$3"
3208                         ;;
3209                 dragonfly) osname=dragonfly
3210                         osvers="$3"
3211                         ;;
3212                 dynixptx*) osname=dynixptx
3213                         osvers=`echo "$4"|sed 's/^v//'`
3214                         ;;
3215                 freebsd) osname=freebsd
3216                         osvers="$3" ;;
3217                 genix)  osname=genix ;;
3218                 gnu)    osname=gnu
3219                         osvers="$3" ;;
3220                 hp*)    osname=hpux
3221                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3222                         ;;
3223                 irix*)  osname=irix
3224                         case "$3" in
3225                         4*) osvers=4 ;;
3226                         5*) osvers=5 ;;
3227                         *)      osvers="$3" ;;
3228                         esac
3229                         ;;
3230                 linux)  osname=linux
3231                         case "$3" in
3232                         *)      osvers="$3" ;;
3233                         esac
3234                         ;;
3235                 MiNT)   osname=mint
3236                         ;;
3237                 netbsd*) osname=netbsd
3238                         osvers="$3"
3239                         ;;
3240                 news-os) osvers="$3"
3241                         case "$3" in
3242                         4*) osname=newsos4 ;;
3243                         *) osname=newsos ;;
3244                         esac
3245                         ;;
3246                 next*) osname=next ;;
3247                 nonstop-ux) osname=nonstopux ;;
3248                 openbsd) osname=openbsd
3249                         osvers="$3"
3250                         ;;
3251                 os2)    osname=os2
3252                         osvers="$4"
3253                         ;;
3254                 POSIX-BC | posix-bc ) osname=posix-bc
3255                         osvers="$3"
3256                         ;;
3257                 powerux | power_ux | powermax_os | powermaxos | \
3258                 powerunix | power_unix) osname=powerux
3259                         osvers="$3"
3260                         ;;
3261                 qnx) osname=qnx
3262                         osvers="$4"
3263                         ;;
3264                 solaris) osname=solaris
3265                         case "$3" in
3266                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3267                         *)      osvers="$3" ;;
3268                         esac
3269                         ;;
3270                 sunos) osname=sunos
3271                         case "$3" in
3272                         5*) osname=solaris
3273                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3274                         *)      osvers="$3" ;;
3275                         esac
3276                         ;;
3277                 titanos) osname=titanos
3278                         case "$3" in
3279                         1*) osvers=1 ;;
3280                         2*) osvers=2 ;;
3281                         3*) osvers=3 ;;
3282                         4*) osvers=4 ;;
3283                         *)      osvers="$3" ;;
3284                         esac
3285                         ;;
3286                 ultrix) osname=ultrix
3287                         osvers="$3"
3288                         ;;
3289                 osf1|mls+)      case "$5" in
3290                                 alpha)
3291                                         osname=dec_osf
3292                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3293                                         case "$osvers" in
3294                                         [1-9].[0-9]*) ;;
3295                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3296                                         esac
3297                                         ;;
3298                         hp*)    osname=hp_osf1  ;;
3299                         mips)   osname=mips_osf1 ;;
3300                         esac
3301                         ;;
3302                 # UnixWare 7.1.2 is known as Open UNIX 8
3303                 openunix|unixware) osname=svr5
3304                         osvers="$4"
3305                         ;;
3306                 uts)    osname=uts
3307                         osvers="$3"
3308                         ;;
3309                 vos) osvers="$3"
3310                         ;;
3311                 $2) case "$osname" in
3312                         *isc*) ;;
3313                         *freebsd*) ;;
3314                         svr*)
3315                                 : svr4.x or possibly later
3316                                 case "svr$3" in
3317                                 ${osname}*)
3318                                         osname=svr$3
3319                                         osvers=$4
3320                                         ;;
3321                                 esac
3322                                 case "$osname" in
3323                                 svr4.0)
3324                                         : Check for ESIX
3325                                         if test -f /stand/boot ; then
3326                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3327                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3328                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3329                                                         if test -n "$isesix"; then
3330                                                                 osname=esix4
3331                                                         fi
3332                                                 fi
3333                                         fi
3334                                         ;;
3335                                 esac
3336                                 ;;
3337                         *)      if test -f /etc/systemid; then
3338                                         osname=sco
3339                                         set `echo $3 | $sed 's/\./ /g'` $4
3340                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3341                                                 osvers=$1.$2.$3
3342                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3343                                                 osvers=$1.$2
3344                                         elif $test -f $src/hints/sco_$1.sh; then
3345                                                 osvers=$1
3346                                         fi
3347                                 else
3348                                         case "$osname" in
3349                                         '') : Still unknown.  Probably a generic Sys V.
3350                                                 osname="sysv"
3351                                                 osvers="$3"
3352                                                 ;;
3353                                         esac
3354                                 fi
3355                                 ;;
3356                         esac
3357                         ;;
3358                 *)      case "$osname" in
3359                         '') : Still unknown.  Probably a generic BSD.
3360                                 osname="$1"
3361                                 osvers="$3"
3362                                 ;;
3363                         esac
3364                         ;;
3365                 esac
3366         else
3367                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3368                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3369                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3370                                 osname=news_os
3371                         fi
3372                         $rm -f UU/kernel.what
3373                 elif test -d c:/. -o -n "$is_os2" ; then
3374                         set X $myuname
3375                         osname=os2
3376                         osvers="$5"
3377                 fi
3378         fi
3379
3380         case "$targetarch" in
3381         '') ;;
3382         *)  hostarch=$osname
3383             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3384             osvers=''
3385             ;;
3386         esac
3387
3388         : Now look for a hint file osname_osvers, unless one has been
3389         : specified already.
3390         case "$hintfile" in
3391         ''|' ')
3392                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3393                 : Also try without trailing minor version numbers.
3394                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3395                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3396                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3397                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3398                 case "$file" in
3399                 '') dflt=none ;;
3400                 *)  case "$osvers" in
3401                         '') dflt=$file
3402                                 ;;
3403                         *)  if $test -f $src/hints/$file.sh ; then
3404                                         dflt=$file
3405                                 elif $test -f $src/hints/$xfile.sh ; then
3406                                         dflt=$xfile
3407                                 elif $test -f $src/hints/$xxfile.sh ; then
3408                                         dflt=$xxfile
3409                                 elif $test -f $src/hints/$xxxfile.sh ; then
3410                                         dflt=$xxxfile
3411                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3412                                         dflt=$xxxxfile
3413                                 elif $test -f "$src/hints/${osname}.sh" ; then
3414                                         dflt="${osname}"
3415                                 else
3416                                         dflt=none
3417                                 fi
3418                                 ;;
3419                         esac
3420                         ;;
3421                 esac
3422                 if $test -f Policy.sh ; then
3423                         case "$dflt" in
3424                         *Policy*) ;;
3425                         none) dflt="Policy" ;;
3426                         *) dflt="Policy $dflt" ;;
3427                         esac
3428                 fi
3429                 ;;
3430         *)
3431                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3432                 ;;
3433         esac
3434
3435         if $test -f Policy.sh ; then
3436                 $cat <<EOM
3437
3438 There's also a Policy hint file available, which should make the
3439 site-specific (policy) questions easier to answer.
3440 EOM
3441
3442         fi
3443
3444         $cat <<EOM
3445
3446 You may give one or more space-separated answers, or "none" if appropriate.
3447 If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
3448 previous run of Configure, you may specify it as well as or instead of
3449 OS-specific hints.  If hints are provided for your OS, you should use them:
3450 although Perl can probably be built without hints on many platforms, using
3451 hints often improve performance and may enable features that Configure can't
3452 set up on its own. If there are no hints that match your OS, specify "none";
3453 DO NOT give a wrong version or a wrong OS.
3454
3455 EOM
3456
3457         rp="Which of these apply, if any?"
3458         . UU/myread
3459         tans=$ans
3460         for file in $tans; do
3461                 if $test X$file = XPolicy -a -f Policy.sh; then
3462                         . Policy.sh
3463                         $cat Policy.sh >> UU/config.sh
3464                 elif $test -f $src/hints/$file.sh; then
3465                         . $src/hints/$file.sh
3466                         $cat $src/hints/$file.sh >> UU/config.sh
3467                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3468                         : nothing
3469                 else
3470                         : Give one chance to correct a possible typo.
3471                         echo "$file.sh does not exist"
3472                         dflt=$file
3473                         rp="hint to use instead?"
3474                         . UU/myread
3475                         for file in $ans; do
3476                                 if $test -f "$src/hints/$file.sh"; then
3477                                         . $src/hints/$file.sh
3478                                         $cat $src/hints/$file.sh >> UU/config.sh
3479                                 elif $test X$ans = X -o X$ans = Xnone ; then
3480                                         : nothing
3481                                 else
3482                                         echo "$file.sh does not exist -- ignored."
3483                                 fi
3484                         done
3485                 fi
3486         done
3487
3488         hint=recommended
3489         : Remember our hint file for later.
3490         if $test -f "$src/hints/$file.sh" ; then
3491                 hintfile="$file"
3492         else
3493                 hintfile=''
3494         fi
3495 fi
3496 cd UU
3497 ;;
3498 *)
3499         echo " "
3500         echo "Fetching default answers from $config_sh..." >&4
3501         tmp_n="$n"
3502         tmp_c="$c"
3503         cd ..
3504         cp $config_sh config.sh 2>/dev/null
3505         chmod +w config.sh
3506         . ./config.sh
3507         cd UU
3508         cp ../config.sh .
3509         n="$tmp_n"
3510         c="$tmp_c"
3511         hint=previous
3512         ;;
3513 esac
3514 test "$override" && . ./optdef.sh
3515
3516 : Restore computed paths
3517 for file in $loclist $trylist; do
3518         eval $file="\$_$file"
3519 done
3520
3521 cat << EOM
3522
3523 Configure uses the operating system name and version to set some defaults.
3524 The default value is probably right if the name rings a bell. Otherwise,
3525 since spelling matters for me, either accept the default or answer "none"
3526 to leave it blank.
3527
3528 EOM
3529 case "$osname" in
3530         ''|' ')
3531                 case "$hintfile" in
3532                 ''|' '|none) dflt=none ;;
3533                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3534                 esac
3535                 ;;
3536         *) dflt="$osname" ;;
3537 esac
3538 rp="Operating system name?"
3539 . ./myread
3540 case "$ans" in
3541 none)  osname='' ;;
3542 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3543 esac
3544 echo " "
3545 case "$osvers" in
3546         ''|' ')
3547                 case "$hintfile" in
3548                 ''|' '|none) dflt=none ;;
3549                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3550                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3551                         case "$dflt" in
3552                         ''|' ') dflt=none ;;
3553                         esac
3554                         ;;
3555                 esac
3556                 ;;
3557         *) dflt="$osvers" ;;
3558 esac
3559 rp="Operating system version?"
3560 . ./myread
3561 case "$ans" in
3562 none)  osvers='' ;;
3563 *) osvers="$ans" ;;
3564 esac
3565
3566
3567 . ./posthint.sh
3568
3569 : who configured the system
3570 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3571 case "$cf_by" in
3572 "")
3573         cf_by=`(logname) 2>/dev/null`
3574         case "$cf_by" in
3575         "")
3576                 cf_by=`(whoami) 2>/dev/null`
3577                 case "$cf_by" in
3578                 "") cf_by=unknown ;;
3579                 esac ;;
3580         esac ;;
3581 esac
3582
3583 : decide how portable to be.  Allow command line overrides.
3584 case "$d_portable" in
3585 "$undef") ;;
3586 *)      d_portable="$define" ;;
3587 esac
3588
3589 : set up shell script to do ~ expansion
3590 cat >filexp <<EOSS
3591 $startsh
3592 : expand filename
3593 case "\$1" in
3594  ~/*|~)
3595         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3596         ;;
3597  ~*)
3598         if $test -f /bin/csh; then
3599                 /bin/csh -f -c "glob \$1"
3600                 failed=\$?
3601                 echo ""
3602                 exit \$failed
3603         else
3604                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3605                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3606                 if $test ! -d "\$dir"; then
3607                         me=\`basename \$0\`
3608                         echo "\$me: can't locate home directory for: \$name" >&2
3609                         exit 1
3610                 fi
3611                 case "\$1" in
3612                 */*)
3613                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3614                         ;;
3615                 *)
3616                         echo \$dir
3617                         ;;
3618                 esac
3619         fi
3620         ;;
3621 *)
3622         echo \$1
3623         ;;
3624 esac
3625 EOSS
3626 chmod +x filexp
3627 $eunicefix filexp
3628
3629 : now set up to get a file name
3630 cat <<EOS >getfile
3631 $startsh
3632 EOS
3633 cat <<'EOSC' >>getfile
3634 tilde=''
3635 fullpath=''
3636 already=''
3637 skip=''
3638 none_ok=''
3639 exp_file=''
3640 nopath_ok=''
3641 orig_rp="$rp"
3642 orig_dflt="$dflt"
3643 case "$gfpth" in
3644 '') gfpth='.' ;;
3645 esac
3646
3647 case "$fn" in
3648 *\(*)
3649         : getfile will accept an answer from the comma-separated list
3650         : enclosed in parentheses even if it does not meet other criteria.
3651         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3652         fn=`echo $fn | sed 's/(.*)//'`
3653         ;;
3654 esac
3655
3656 case "$fn" in
3657 *:*)
3658         loc_file=`expr $fn : '.*:\(.*\)'`
3659         fn=`expr $fn : '\(.*\):.*'`
3660         ;;
3661 esac
3662
3663 case "$fn" in
3664 *~*) tilde=true;;
3665 esac
3666 case "$fn" in
3667 */*) fullpath=true;;
3668 esac
3669 case "$fn" in
3670 *+*) skip=true;;
3671 esac
3672 case "$fn" in
3673 *n*) none_ok=true;;
3674 esac
3675 case "$fn" in
3676 *e*) exp_file=true;;
3677 esac
3678 case "$fn" in
3679 *p*) nopath_ok=true;;
3680 esac
3681
3682 case "$fn" in
3683 *f*) type='File';;
3684 *d*) type='Directory';;
3685 *l*) type='Locate';;
3686 esac
3687
3688 what="$type"
3689 case "$what" in
3690 Locate) what='File';;
3691 esac
3692
3693 case "$exp_file" in
3694 '')
3695         case "$d_portable" in
3696         "$define") ;;
3697         *) exp_file=true;;
3698         esac
3699         ;;
3700 esac
3701
3702 cd ..
3703 while test "$type"; do
3704         redo=''
3705         rp="$orig_rp"
3706         dflt="$orig_dflt"
3707         case "$tilde" in
3708         true) rp="$rp (~name ok)";;
3709         esac
3710         . UU/myread
3711         if test -f UU/getfile.ok && \
3712                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3713         then
3714                 value="$ans"
3715                 ansexp="$ans"
3716                 break
3717         fi
3718         case "$ans" in
3719         none)
3720                 value=''
3721                 ansexp=''
3722                 case "$none_ok" in
3723                 true) type='';;
3724                 esac
3725                 ;;
3726         *)
3727                 case "$tilde" in
3728                 '') value="$ans"
3729                         ansexp="$ans";;
3730                 *)
3731                         value=`UU/filexp $ans`
3732                         case $? in
3733                         0)
3734                                 if test "$ans" != "$value"; then
3735                                         echo "(That expands to $value on this system.)"
3736                                 fi
3737                                 ;;
3738                         *) value="$ans";;
3739                         esac
3740                         ansexp="$value"
3741                         case "$exp_file" in
3742                         '') value="$ans";;
3743                         esac
3744                         ;;
3745                 esac
3746                 case "$fullpath" in
3747                 true)
3748                         case "$ansexp" in
3749                         /*) value="$ansexp" ;;
3750                         [a-zA-Z]:/*) value="$ansexp" ;;
3751                         *)
3752                                 redo=true
3753                                 case "$already" in
3754                                 true)
3755                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3756                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3757                                         ;;
3758                                 *)
3759                                 echo "Please give a full path name, starting with slash." >&4
3760                                         case "$tilde" in
3761                                         true)
3762                                 echo "Note that using ~name is ok provided it expands well." >&4
3763                                                 already=true
3764                                                 ;;
3765                                         esac
3766                                 esac
3767                                 ;;
3768                         esac
3769                         ;;
3770                 esac
3771                 case "$redo" in
3772                 '')
3773                         case "$type" in
3774                         File)
3775                                 for fp in $gfpth; do
3776                                         if test "X$fp" = X.; then
3777                                             pf="$ansexp"
3778                                         else    
3779                                             pf="$fp/$ansexp"
3780                                         fi
3781                                         if test -f "$pf"; then
3782                                                 type=''
3783                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3784                                         then
3785                                                 echo "($value is not a plain file, but that's ok.)"
3786                                                 type=''
3787                                         fi
3788                                         if test X"$type" = X; then
3789                                             value="$pf"
3790                                             break
3791                                         fi
3792                                 done
3793                                 ;;
3794                         Directory)
3795                                 for fp in $gfpth; do
3796                                         if test "X$fp" = X.; then
3797                                             dir="$ans"
3798                                             direxp="$ansexp"
3799                                         else    
3800                                             dir="$fp/$ansexp"
3801                                             direxp="$fp/$ansexp"
3802                                         fi
3803                                         if test -d "$direxp"; then
3804                                                 type=''
3805                                                 value="$dir"
3806                                                 break
3807                                         fi
3808                                 done
3809                                 ;;
3810                         Locate)
3811                                 if test -d "$ansexp"; then
3812                                         echo "(Looking for $loc_file in directory $value.)"
3813                                         value="$value/$loc_file"
3814                                         ansexp="$ansexp/$loc_file"
3815                                 fi
3816                                 if test -f "$ansexp"; then
3817                                         type=''
3818                                 fi
3819                                 case "$nopath_ok" in
3820                                 true)   case "$value" in
3821                                         */*) ;;
3822                                         *)      echo "Assuming $value will be in people's path."
3823                                                 type=''
3824                                                 ;;
3825                                         esac
3826                                         ;;
3827                                 esac
3828                                 ;;
3829                         esac
3830
3831                         case "$skip" in
3832                         true) type='';
3833                         esac
3834
3835                         case "$type" in
3836                         '') ;;
3837                         *)
3838                                 if test "$fastread" = yes; then
3839                                         dflt=y
3840                                 else
3841                                         dflt=n
3842                                 fi
3843                                 rp="$what $value doesn't exist.  Use that name anyway?"
3844                                 . UU/myread
3845                                 dflt=''
3846                                 case "$ans" in
3847                                 y*) type='';;
3848                                 *) echo " ";;
3849                                 esac
3850                                 ;;
3851                         esac
3852                         ;;
3853                 esac
3854                 ;;
3855         esac
3856 done
3857 cd UU
3858 ans="$value"
3859 rp="$orig_rp"
3860 dflt="$orig_dflt"
3861 rm -f getfile.ok
3862 test "X$gfpthkeep" != Xy && gfpth=""
3863 EOSC
3864
3865 : determine root of directory hierarchy where package will be installed.
3866 case "$prefix" in
3867 '')
3868         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3869         ;;
3870 *?/)
3871         dflt=`echo "$prefix" | sed 's/.$//'`
3872         ;;
3873 *)
3874         dflt="$prefix"
3875         ;;
3876 esac
3877 $cat <<EOM
3878
3879 By default, $package will be installed in $dflt/bin, manual pages
3880 under $dflt/man, etc..., i.e. with $dflt as prefix for all
3881 installation directories. Typically this is something like /usr/local.
3882 If you wish to have binaries under /usr/bin but other parts of the
3883 installation under /usr/local, that's ok: you will be prompted
3884 separately for each of the installation directories, the prefix being
3885 only used to set the defaults.
3886
3887 EOM
3888 fn=d~
3889 rp='Installation prefix to use?'
3890 . ./getfile
3891 oldprefix=''
3892 case "$prefix" in
3893 '') ;;
3894 *)
3895         case "$ans" in
3896         "$prefix") ;;
3897         *) oldprefix="$prefix";;
3898         esac
3899         ;;
3900 esac
3901 prefix="$ans"
3902 prefixexp="$ansexp"
3903
3904 case "$afsroot" in
3905 '')     afsroot=/afs ;;
3906 *)      afsroot=$afsroot ;;
3907 esac
3908
3909 : is AFS running?
3910 echo " "
3911 case "$afs" in
3912 $define|true)   afs=true ;;
3913 $undef|false)   afs=false ;;
3914 *)      if test -d $afsroot; then
3915                 afs=true
3916         else
3917                 afs=false
3918         fi
3919         ;;
3920 esac
3921 if $afs; then
3922         echo "AFS may be running... I'll be extra cautious then..." >&4
3923 else
3924         echo "AFS does not seem to be running..." >&4
3925 fi
3926
3927 : determine installation prefix for where package is to be installed.
3928 if $afs; then 
3929 $cat <<EOM
3930
3931 Since you are running AFS, I need to distinguish the directory in which
3932 files will reside from the directory in which they are installed (and from
3933 which they are presumably copied to the former directory by occult means).
3934
3935 EOM
3936         case "$installprefix" in
3937         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3938         *) dflt="$installprefix";;
3939         esac
3940 else
3941 $cat <<EOM
3942
3943 In some special cases, particularly when building $package for distribution,
3944 it is convenient to distinguish the directory in which files should be
3945 installed from the directory ($prefix) in which they will
3946 eventually reside.  For most users, these two directories are the same.
3947
3948 EOM
3949         case "$installprefix" in
3950         '') dflt=$prefix ;;
3951         *) dflt=$installprefix;;
3952         esac
3953 fi
3954 fn=d~
3955 rp='What installation prefix should I use for installing files?'
3956 . ./getfile
3957 installprefix="$ans"
3958 installprefixexp="$ansexp"
3959
3960 : Perform the prefixexp/installprefixexp correction if necessary
3961 cat <<EOS >installprefix
3962 $startsh
3963 EOS
3964 cat <<'EOSC' >>installprefix
3965 : Change installation prefix, if necessary.
3966 if $test X"$prefix" != X"$installprefix"; then
3967     eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`"
3968 else
3969     eval "install${prefixvar}=\"\$${prefixvar}exp\""
3970 fi
3971 EOSC
3972 chmod +x installprefix
3973 $eunicefix installprefix
3974
3975 : Set variables such as privlib and privlibexp from the output of ./getfile
3976 : performing the prefixexp/installprefixexp correction if necessary.
3977 cat <<EOS >setprefixvar
3978 $startsh
3979 EOS
3980 cat <<'EOSC' >>setprefixvar
3981 eval "${prefixvar}=\"\$ans\""
3982 eval "${prefixvar}exp=\"\$ansexp\""
3983 . ./installprefix
3984 EOSC
3985 chmod +x setprefixvar
3986 $eunicefix setprefixvar
3987
3988 : set up the script used to warn in case of inconsistency
3989 cat <<EOS >whoa
3990 $startsh
3991 EOS
3992 cat <<'EOSC' >>whoa
3993 dflt=y
3994 case "$hint" in
3995     recommended)
3996         case "$hintfile" in
3997         '')     echo "The $hint value for \$$var on this machine was \"$was\"!" >&4
3998                 ;;
3999         *)      echo "Hmm.  Based on the hints in hints/$hintfile.sh, " >&4
4000                 echo "the $hint value for \$$var on this machine was \"$was\"!" >&4
4001                 ;;
4002         esac
4003         ;;
4004     *)  echo " "
4005         echo "*** WHOA THERE!!! ***" >&4
4006         echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
4007         ;;
4008 esac
4009 rp="    Keep the $hint value?"
4010 . ./myread
4011 case "$ans" in
4012 y) td=$was; tu=$was;;
4013 esac
4014 EOSC
4015
4016 : function used to set $1 to $val
4017 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
4018 case "$val$was" in
4019 $define$undef) . ./whoa; eval "$var=\$td";;
4020 $undef$define) . ./whoa; eval "$var=\$tu";;
4021 *) eval "$var=$val";;
4022 esac'
4023
4024 case "$usesocks" in
4025 $define|true|[yY]*)     dflt='y';;
4026 *) dflt='n';;
4027 esac
4028 cat <<EOM
4029
4030 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4031 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4032 to use the PerlIO abstraction layer, this will be implicitly selected.
4033
4034 If this doesn't make any sense to you, just accept the default '$dflt'.
4035 EOM
4036 rp='Build Perl for SOCKS?'
4037 . ./myread
4038 case "$ans" in
4039 y|Y)    val="$define" ;;
4040 *)      val="$undef" ;;
4041 esac
4042 set usesocks
4043 eval $setvar
4044
4045 case "$usesocks" in
4046 $define|true|[yY]*) useperlio="$define";;
4047 esac
4048
4049 case "$useperlio" in
4050 $define|true|[yY]*|'')  dflt='y';;
4051 *) dflt='n';;
4052 esac
4053 cat <<EOM
4054
4055 Previous version of $package used the standard IO mechanisms as
4056 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
4057 alternate IO mechanisms via the PerlIO abstraction layer, but the
4058 stdio mechanism is still available if needed.  The abstraction layer
4059 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
4060 Using PerlIO with sfio may cause problems with some extension modules.
4061
4062 If this doesn't make any sense to you, just accept the default '$dflt'.
4063 EOM
4064 rp='Use the PerlIO abstraction layer?'
4065 . ./myread
4066 case "$ans" in
4067 y|Y) 
4068         val="$define"
4069         ;;
4070 *)      
4071         echo "Ok, doing things the stdio way."
4072         val="$undef"
4073         ;;
4074 esac
4075 set useperlio
4076 eval $setvar 
4077
4078 case "$usesocks" in
4079 $define|true|[yY]*)
4080         case "$useperlio" in
4081         $define|true|[yY]*) ;;
4082         *)      cat >&4 <<EOM
4083
4084 You are using the SOCKS proxy protocol library which means that you
4085 should also use the PerlIO layer.  You may be headed for trouble.
4086
4087 EOM
4088                 ;;
4089         esac
4090         ;;
4091 esac
4092
4093         
4094 : get the patchlevel
4095 echo " "
4096 echo "Getting the current patchlevel..." >&4
4097 if $test -r $rsrc/patchlevel.h;then
4098         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4099         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4100         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4101         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4102         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4103         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4104         perl_patchlevel=`egrep ',"(MAINT|SMOKE)[0-9][0-9]*"' $rsrc/patchlevel.h|tail -1|sed 's/[^0-9]//g'`
4105 else
4106         revision=0
4107         patchlevel=0
4108         subversion=0
4109         api_revision=0
4110         api_version=0
4111         api_subversion=0
4112         perl_patchlevel=0
4113         $echo "(You do not have patchlevel.h.  Eek.)"
4114 fi
4115 if $test -r $rsrc/.patch ; then
4116         if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
4117                 perl_patchlevel=`cat $rsrc/.patch`
4118         fi
4119 fi
4120 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
4121 version_patchlevel_string="version $patchlevel subversion $subversion"
4122 case "$perl_patchlevel" in
4123 0|'') ;;
4124 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
4125 esac
4126
4127 $echo "(You have $package $version_patchlevel_string.)"
4128
4129 case "$osname" in
4130 dos|vms)
4131         : XXX Should be a Configure test for double-dots in filenames.
4132         version=`echo $revision $patchlevel $subversion | \
4133                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4134         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4135                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4136         ;;
4137 *)
4138         version=`echo $revision $patchlevel $subversion | \
4139                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4140         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4141                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4142         ;;
4143 esac
4144 : Special case the 5.005_xx maintenance series, which used 5.005
4145 : without any subversion label as a subdirectory in $sitelib
4146 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4147         api_versionstring='5.005'
4148 fi
4149
4150 : Do we want threads support and if so, what type
4151 case "$usethreads" in
4152 $define|true|[yY]*)     dflt='y';;
4153 *)     # Catch case where user specified ithreads or 5005threads but
4154        # forgot -Dusethreads (A.D. 4/2002)
4155        case "$useithreads$use5005threads" in
4156        *$define*)
4157                 case "$useperlio" in
4158                 "$define")      dflt='y' ;;
4159                 *)              dflt='n' ;;
4160                 esac
4161                 ;;
4162        *)       dflt='n';;
4163        esac
4164        ;;
4165 esac
4166 cat <<EOM
4167
4168 Perl can be built to take advantage of threads on some systems.
4169 To do so, Configure can be run with -Dusethreads.
4170
4171 Note that Perl built with threading support runs slightly slower
4172 and uses more memory than plain Perl. The current implementation
4173 is believed to be stable, but it is fairly new, and so should be
4174 treated with caution.
4175
4176 If this doesn't make any sense to you, just accept the default '$dflt'.
4177 EOM
4178 rp='Build a threading Perl?'
4179 . ./myread
4180 case "$ans" in
4181 y|Y)    val="$define" ;;
4182 *)      val="$undef" ;;
4183 esac
4184 set usethreads
4185 eval $setvar
4186
4187 if $test $patchlevel -lt 9; then
4188     case "$usethreads" in
4189     $define)
4190         $cat <<EOM
4191
4192 Since release 5.6, Perl has had two different threading implementations,
4193 the newer interpreter-based version (ithreads) with one interpreter per
4194 thread, and the older 5.005 version (5005threads).
4195 The 5005threads version is effectively unmaintained and will probably be
4196 removed in Perl 5.10, so there should be no need to build a Perl using it
4197 unless needed for backwards compatibility with some existing 5.005threads
4198 code.
4199
4200 EOM
4201         : Default to ithreads unless overridden on command line or with
4202         : old config.sh
4203         dflt='y'
4204         case "$use5005threads" in
4205                 $define|true|[yY]*) dflt='n';;
4206         esac
4207         case "$useithreads" in
4208                 $undef|false|[nN]*) dflt='n';;
4209         esac
4210         rp='Use the newer interpreter-based ithreads?'
4211         . ./myread
4212         case "$ans" in
4213         y|Y)    val="$define" ;;
4214         *)      val="$undef" ;;
4215         esac
4216         set useithreads
4217         eval $setvar
4218         : Now set use5005threads to the opposite value.
4219         case "$useithreads" in
4220         $define) val="$undef" ;;
4221         *) val="$define" ;;
4222         esac
4223         set use5005threads
4224         eval $setvar
4225         ;;
4226     *)
4227         useithreads="$undef"
4228         use5005threads="$undef"
4229         ;;
4230     esac
4231
4232     case "$useithreads$use5005threads" in
4233     "$define$define")
4234         $cat >&4 <<EOM
4235
4236 You cannot have both the ithreads and the 5.005 threads enabled
4237 at the same time.  Disabling the 5.005 threads since they are
4238 much less stable than the ithreads.
4239
4240 EOM
4241         use5005threads="$undef"
4242         ;;
4243     esac
4244
4245 else
4246 : perl-5.9.x and later
4247
4248     if test X"$usethreads" = "X$define"; then
4249         case "$use5005threads" in
4250             $define|true|[yY]*)
4251                 $cat >&4 <<EOM
4252
4253 5.005 threads has been removed for 5.10.  Perl will be built using ithreads.
4254
4255 EOM
4256             ;;
4257         esac
4258     fi
4259
4260     use5005threads="$undef"
4261     useithreads="$usethreads"
4262 fi
4263
4264 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
4265         cat >&4 <<EOF
4266 ***
4267 *** To build with ithreads you must also use the PerlIO layer.
4268 *** Cannot continue, aborting.
4269 ***
4270 EOF
4271         exit 1
4272 fi
4273
4274 case "$d_oldpthreads" in
4275 '')     : Configure tests would be welcome here.  For now, assume undef.
4276         val="$undef" ;;
4277 *)      val="$d_oldpthreads" ;;
4278 esac
4279 set d_oldpthreads
4280 eval $setvar
4281
4282
4283 : Look for a hint-file generated 'call-back-unit'.  If the
4284 : user has specified that a threading perl is to be built,
4285 : we may need to set or change some other defaults.
4286 if $test -f usethreads.cbu; then
4287     echo "Your platform has some specific hints regarding threaded builds, using them..."
4288     . ./usethreads.cbu
4289 else
4290     case "$usethreads" in
4291         "$define"|true|[yY]*)
4292                 $cat <<EOM
4293 (Your platform does not have any specific hints for threaded builds.
4294  Assuming POSIX threads, then.)
4295 EOM
4296         ;;
4297     esac
4298 fi
4299
4300 cat <<EOM
4301
4302 Perl can be built so that multiple Perl interpreters can coexist
4303 within the same Perl executable.
4304 EOM
4305
4306 case "$useithreads" in
4307 $define)
4308         cat <<EOM
4309 This multiple interpreter support is required for interpreter-based threads.
4310 EOM
4311         val="$define"
4312         ;;
4313 *)      case "$usemultiplicity" in
4314         $define|true|[yY]*)     dflt='y';;
4315         *) dflt='n';;
4316         esac
4317         echo " "
4318         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
4319         rp='Build Perl for multiplicity?'
4320         . ./myread
4321         case "$ans" in
4322         y|Y)    val="$define" ;;
4323         *)      val="$undef" ;;
4324         esac
4325         ;;
4326 esac
4327 set usemultiplicity
4328 eval $setvar
4329
4330
4331 case "$usemorebits" in
4332 "$define"|true|[yY]*)
4333         use64bitint="$define"
4334         uselongdouble="$define"
4335         usemorebits="$define"
4336         ;;
4337 *)      usemorebits="$undef"
4338         ;;
4339 esac
4340
4341 : make some quick guesses about what we are up against
4342 echo " "
4343 $echo $n "Hmm...  $c"
4344 echo exit 1 >bsd
4345 echo exit 1 >usg
4346 echo exit 1 >v7
4347 echo exit 1 >osf1
4348 echo exit 1 >eunice
4349 echo exit 1 >xenix
4350 echo exit 1 >venix
4351 echo exit 1 >os2
4352 d_bsd="$undef"
4353 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
4354 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
4355 then
4356         echo "Looks kind of like an OSF/1 system, but we'll see..."
4357         echo exit 0 >osf1
4358 elif test `echo abc | $tr a-z A-Z` = Abc ; then
4359         xxx=`./loc addbib blurfl $pth`
4360         if $test -f $xxx; then
4361         echo "Looks kind of like a USG system with BSD features, but we'll see..."
4362                 echo exit 0 >bsd
4363                 echo exit 0 >usg
4364         else
4365                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
4366                         echo "Looks kind of like an extended USG system, but we'll see..."
4367                 else
4368                         echo "Looks kind of like a USG system, but we'll see..."
4369                 fi
4370                 echo exit 0 >usg
4371         fi
4372 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
4373         echo "Looks kind of like a BSD system, but we'll see..."
4374         d_bsd="$define"
4375         echo exit 0 >bsd
4376 else
4377         echo "Looks kind of like a Version 7 system, but we'll see..."
4378         echo exit 0 >v7
4379 fi
4380 case "$eunicefix" in
4381 *unixtovms*)
4382         $cat <<'EOI'
4383 There is, however, a strange, musty smell in the air that reminds me of
4384 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
4385 EOI
4386         echo exit 0 >eunice
4387         d_eunice="$define"
4388 : it so happens the Eunice I know will not run shell scripts in Unix format
4389         ;;
4390 *)
4391         echo " "
4392         echo "Congratulations.  You aren't running Eunice."
4393         d_eunice="$undef"
4394         ;;
4395 esac
4396 : Detect OS2.  The p_ variable is set above in the Head.U unit.
4397 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
4398 : semicolon as a patch separator
4399 case "$p_" in
4400 :) ;;
4401 *)
4402         $cat <<'EOI'
4403 I have the feeling something is not exactly right, however...don't tell me...
4404 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
4405 (Or you may be running DOS with DJGPP.)
4406 EOI
4407         echo exit 0 >os2
4408         ;;
4409 esac
4410 if test -f /xenix; then
4411         echo "Actually, this looks more like a XENIX system..."
4412         echo exit 0 >xenix
4413         d_xenix="$define"
4414 else
4415         echo " "
4416         echo "It's not Xenix..."
4417         d_xenix="$undef"
4418 fi
4419 chmod +x xenix
4420 $eunicefix xenix
4421 if test -f /venix; then
4422         echo "Actually, this looks more like a VENIX system..."
4423         echo exit 0 >venix
4424 else
4425         echo " "
4426         if ./xenix; then
4427                 : null
4428         else
4429                 echo "Nor is it Venix..."
4430         fi
4431 fi
4432 chmod +x bsd usg v7 osf1 eunice xenix venix os2
4433 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
4434 $rm -f foo
4435
4436 case "$cc" in
4437 '') dflt=cc;;
4438 *) dflt="$cc";;
4439 esac
4440 rp="Use which C compiler?"
4441 . ./myread
4442 cc="$ans"
4443
4444 : See if they have not cc but they do have gcc
4445 . ./trygcc
4446 : Look for a hint-file generated 'call-back-unit'.  Now that the
4447 : user has specified the compiler, we may need to set or change some
4448 : other defaults.
4449 if $test -f cc.cbu; then
4450     . ./cc.cbu
4451 fi
4452 . ./checkcc
4453
4454 : Check if we are using GNU gcc and what its version is
4455 echo " "
4456 echo "Checking for GNU cc in disguise and/or its version number..." >&4
4457 $cat >try.c <<EOM
4458 #include <stdio.h>
4459 int main() {
4460 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
4461 #ifdef __VERSION__
4462         printf("%s\n", __VERSION__);
4463 #else
4464         printf("%s\n", "1");
4465 #endif
4466 #endif
4467         return(0);
4468 }
4469 EOM
4470 if $cc -o try $ccflags $ldflags try.c; then
4471         gccversion=`$run ./try`
4472         case "$gccversion" in
4473         '') echo "You are not using GNU cc." ;;
4474         *)  echo "You are using GNU cc $gccversion."
4475             ccname=gcc
4476             ;;
4477         esac
4478 else
4479         echo " "
4480         echo "*** WHOA THERE!!! ***" >&4
4481         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
4482         case "$knowitall" in
4483         '')
4484         echo "    You'd better start hunting for one and let me know about it." >&4
4485                 exit 1
4486                 ;;
4487         esac
4488 fi
4489 $rm -f try try.*
4490 case "$gccversion" in
4491 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
4492 esac
4493 case "$gccversion" in
4494 '') gccosandvers='' ;;
4495 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
4496    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
4497    gccshortvers=''
4498    case "$gccosandvers" in
4499    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
4500    $osname$osvers) ;; # looking good
4501    $osname*) cat <<EOM >&4
4502
4503 *** WHOA THERE!!! ***
4504
4505     Your gcc has not been compiled for the exact release of
4506     your operating system ($gccosandvers versus $osname$osvers).
4507
4508     In general it is a good idea to keep gcc synchronized with
4509     the operating system because otherwise serious problems
4510     may ensue when trying to compile software, like Perl.
4511
4512     I'm trying to be optimistic here, though, and will continue.
4513     If later during the configuration and build icky compilation
4514     problems appear (headerfile conflicts being the most common
4515     manifestation), I suggest reinstalling the gcc to match
4516     your operating system release.
4517
4518 EOM
4519       ;;
4520    *) gccosandvers='' ;; # failed to parse, better be silent
4521    esac
4522    ;;
4523 esac
4524 case "$ccname" in
4525 '') ccname="$cc" ;;
4526 esac
4527
4528 # gcc 3.* complain about adding -Idirectories that they already know about,
4529 # so we will take those off from locincpth.
4530 case "$gccversion" in
4531 3*)
4532     echo "main(){}">try.c
4533     for incdir in $locincpth; do
4534        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
4535              grep '^c[cp]p*[01]: warning: changing search order '`
4536        if test "X$warn" != X; then
4537            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
4538        fi
4539     done
4540     $rm -f try try.*
4541 esac
4542
4543 : What should the include directory be ?
4544 echo " "
4545 $echo $n "Hmm...  $c"
4546 dflt='/usr/include'
4547 incpath=''
4548 mips_type=''
4549 if $test -f /bin/mips && /bin/mips; then
4550         echo "Looks like a MIPS system..."
4551         $cat >usr.c <<'EOCP'
4552 #ifdef SYSTYPE_BSD43
4553 /bsd43
4554 #endif
4555 EOCP
4556         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4557                 dflt='/bsd43/usr/include'
4558                 incpath='/bsd43'
4559                 mips_type='BSD 4.3'
4560         else
4561                 mips_type='System V'
4562         fi
4563         $rm -f usr.c usr.out
4564         echo "and you're compiling with the $mips_type compiler and libraries."
4565         xxx_prompt=y
4566         echo "exit 0" >mips
4567 else
4568         echo "Doesn't look like a MIPS system."
4569         xxx_prompt=n
4570         echo "exit 1" >mips
4571 fi
4572 chmod +x mips
4573 $eunicefix mips
4574 case "$usrinc" in
4575 '') ;;
4576 *) dflt="$usrinc";;
4577 esac
4578 case "$xxx_prompt" in
4579 y)      fn=d/
4580         echo " "
4581         rp='Where are the include files you want to use?'
4582         . ./getfile
4583         usrinc="$ans"
4584         ;;
4585 *)      usrinc="$dflt"
4586         ;;
4587 esac
4588
4589 : see how we invoke the C preprocessor
4590 echo " "
4591 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4592 cat <<'EOT' >testcpp.c
4593 #define ABC abc
4594 #define XYZ xyz
4595 ABC.XYZ
4596 EOT
4597 cd ..
4598 if test ! -f cppstdin; then
4599         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4600                 # AIX cc -E doesn't show the absolute headerfile
4601                 # locations but we'll cheat by using the -M flag.
4602                 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
4603         else
4604                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4605         fi
4606 else
4607         echo "Keeping your $hint cppstdin wrapper."
4608 fi
4609 chmod 755 cppstdin
4610 wrapper=`pwd`/cppstdin
4611 ok='false'
4612 cd UU
4613
4614 if $test "X$cppstdin" != "X" && \
4615         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4616         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4617 then
4618         echo "You used to use $cppstdin $cppminus so we'll use that again."
4619         case "$cpprun" in
4620         '') echo "But let's see if we can live without a wrapper..." ;;
4621         *)
4622                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4623                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4624                 then
4625                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4626                         ok='true'
4627                 else
4628                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4629                 fi
4630                 ;;
4631         esac
4632 else
4633         case "$cppstdin" in
4634         '') ;;
4635         *)
4636                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4637                 ;;
4638         esac
4639 fi
4640
4641 if $ok; then
4642         : nothing
4643 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4644         $cc -E <testcpp.c >testcpp.out 2>&1; \
4645         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4646         echo "Yup, it does."
4647         x_cpp="$cc -E"
4648         x_minus='';
4649 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4650         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4651         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4652         echo "Yup, it does."
4653         x_cpp="$cc -E"
4654         x_minus='-';
4655 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4656         $cc -P <testcpp.c >testcpp.out 2>&1; \
4657         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4658         echo "Yipee, that works!"
4659         x_cpp="$cc -P"
4660         x_minus='';
4661 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4662         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4663         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4664         echo "At long last!"
4665         x_cpp="$cc -P"
4666         x_minus='-';
4667 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4668         $cpp <testcpp.c >testcpp.out 2>&1; \
4669         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4670         echo "It works!"
4671         x_cpp="$cpp"
4672         x_minus='';
4673 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4674         $cpp - <testcpp.c >testcpp.out 2>&1; \
4675         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4676         echo "Hooray, it works!  I was beginning to wonder."
4677         x_cpp="$cpp"
4678         x_minus='-';
4679 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4680         $wrapper <testcpp.c >testcpp.out 2>&1; \
4681         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4682         x_cpp="$wrapper"
4683         x_minus=''
4684         echo "Eureka!"
4685 else
4686         dflt=''
4687         rp="No dice.  I can't find a C preprocessor.  Name one:"
4688         . ./myread
4689         x_cpp="$ans"
4690         x_minus=''
4691         $x_cpp <testcpp.c >testcpp.out 2>&1
4692         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4693                 echo "OK, that will do." >&4
4694         else
4695 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4696                 exit 1
4697         fi
4698 fi
4699
4700 case "$ok" in
4701 false)
4702         cppstdin="$x_cpp"
4703         cppminus="$x_minus"
4704         cpprun="$x_cpp"
4705         cpplast="$x_minus"
4706         set X $x_cpp
4707         shift
4708         case "$1" in
4709         "$cpp")
4710                 echo "Perhaps can we force $cc -E using a wrapper..."
4711                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4712                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4713                 then
4714                         echo "Yup, we can."
4715                         cppstdin="$wrapper"
4716                         cppminus='';
4717                 else
4718                         echo "Nope, we'll have to live without it..."
4719                 fi
4720                 ;;
4721         esac
4722         case "$cpprun" in
4723         "$wrapper")
4724                 cpprun=''
4725                 cpplast=''
4726                 ;;
4727         esac
4728         ;;
4729 esac
4730
4731 case "$cppstdin" in
4732 "$wrapper"|'cppstdin') ;;
4733 *) $rm -f $wrapper;;
4734 esac
4735 $rm -f testcpp.c testcpp.out
4736
4737 : Set private lib path
4738 case "$plibpth" in
4739 '') if ./mips; then
4740                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4741         fi;;
4742 esac
4743 case "$libpth" in
4744 ' ') dlist='';;
4745 '') dlist="$loclibpth $plibpth $glibpth";;
4746 *) dlist="$libpth";;
4747 esac
4748
4749 : Now check and see which directories actually exist, avoiding duplicates
4750 libpth=''
4751 for xxx in $dlist
4752 do
4753     if $test -d $xxx; then
4754                 case " $libpth " in
4755                 *" $xxx "*) ;;
4756                 *) libpth="$libpth $xxx";;
4757                 esac
4758     fi
4759 done
4760 $cat <<'EOM'
4761
4762 Some systems have incompatible or broken versions of libraries.  Among
4763 the directories listed in the question below, please remove any you
4764 know not to be holding relevant libraries, and add any that are needed.
4765 Say "none" for none.
4766
4767 EOM
4768 case "$libpth" in
4769 '') dflt='none';;
4770 *)
4771         set X $libpth
4772         shift
4773         dflt=${1+"$@"}
4774         ;;
4775 esac
4776 rp="Directories to use for library searches?"
4777 . ./myread
4778 case "$ans" in
4779 none) libpth=' ';;
4780 *) libpth="$ans";;
4781 esac
4782
4783 : compute shared library extension
4784 case "$so" in
4785 '')
4786         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4787                 dflt='sl'
4788         else
4789                 dflt='so'
4790         fi
4791         ;;
4792 *) dflt="$so";;
4793 esac
4794 $cat <<EOM
4795
4796 On some systems, shared libraries may be available.  Answer 'none' if
4797 you want to suppress searching of shared libraries for the remainder
4798 of this configuration.
4799
4800 EOM
4801 rp='What is the file extension used for shared libraries?'
4802 . ./myread
4803 so="$ans"
4804
4805 : Define several unixisms.
4806 : Hints files or command line option can be used to override them.
4807 : The convoluted testing is in case hints files set either the old
4808 : or the new name.
4809 case "$_exe" in
4810 '')     case "$exe_ext" in
4811         '')     ;;
4812         *)      _exe="$exe_ext" ;;
4813         esac
4814         ;;
4815 esac
4816 case "$_a" in
4817 '')     case "$lib_ext" in
4818     '') _a='.a';;
4819         *)      _a="$lib_ext" ;;
4820         esac
4821         ;;
4822 esac
4823 case "$_o" in
4824 '') case "$obj_ext" in
4825         '')     _o='.o';;
4826         *)      _o="$obj_ext";;
4827         esac
4828         ;;
4829 esac
4830 case "$p_" in
4831 '') case "$path_sep" in
4832         '')     p_=':';;
4833         *)      p_="$path_sep";;
4834         esac
4835         ;;
4836 esac
4837 exe_ext=$_exe
4838 lib_ext=$_a
4839 obj_ext=$_o
4840 path_sep=$p_
4841
4842 rm_try="$rm -f try try$_exe a.out .out try.[cho] try.$_o core core.try* try.core*"
4843
4844 : Which makefile gets called first.  This is used by make depend.
4845 case "$firstmakefile" in
4846 '') firstmakefile='makefile';;
4847 esac
4848
4849 case "$ccflags" in
4850 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4851 esac
4852
4853 case "$uselongdouble" in
4854 $define|true|[yY]*)     dflt='y';;
4855 *) dflt='n';;
4856 esac
4857 cat <<EOM
4858
4859 Perl can be built to take advantage of long doubles which
4860 (if available) may give more accuracy and range for floating point numbers.
4861
4862 If this doesn't make any sense to you, just accept the default '$dflt'.
4863 EOM
4864 rp='Try to use long doubles if available?'
4865 . ./myread
4866 case "$ans" in
4867 y|Y)    val="$define"   ;;
4868 *)      val="$undef"    ;;
4869 esac
4870 set uselongdouble
4871 eval $setvar
4872
4873 case "$uselongdouble" in
4874 true|[yY]*) uselongdouble="$define" ;;
4875 esac
4876
4877 : Look for a hint-file generated 'call-back-unit'.  If the
4878 : user has specified that long doubles should be used,
4879 : we may need to set or change some other defaults.
4880 if $test -f uselongdouble.cbu; then
4881     echo "Your platform has some specific hints regarding long doubles, using them..."
4882     . ./uselongdouble.cbu
4883 else
4884     case "$uselongdouble" in
4885         $define)
4886                 $cat <<EOM
4887 (Your platform does not have any specific hints for long doubles.)
4888 EOM
4889         ;;
4890     esac
4891 fi
4892
4893 : Looking for optional libraries
4894 echo " "
4895 echo "Checking for optional libraries..." >&4
4896 case "$libs" in
4897 ' '|'') dflt='';;
4898 *) dflt="$libs";;
4899 esac
4900 case "$libswanted" in
4901 '') libswanted='c_s';;
4902 esac
4903 case "$usesocks" in
4904 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4905 esac
4906 libsfound=''
4907 libsfiles=''
4908 libsdirs=''
4909 libspath=''
4910 for thisdir in $libpth $xlibpth; do
4911   test -d $thisdir && libspath="$libspath $thisdir"
4912 done
4913 for thislib in $libswanted; do
4914         for thisdir in $libspath; do
4915             xxx=''
4916             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4917                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4918                 $test -f "$xxx" && eval $libscheck
4919                 $test -f "$xxx" && libstyle=shared
4920             fi
4921             if test ! -f "$xxx"; then
4922                 xxx=$thisdir/lib$thislib.$so
4923                 $test -f "$xxx" && eval $libscheck
4924                 $test -f "$xxx" && libstyle=shared
4925             fi
4926             if test ! -f "$xxx"; then
4927                 xxx=$thisdir/lib$thislib$_a
4928                 $test -f "$xxx" && eval $libscheck
4929                 $test -f "$xxx" && libstyle=static
4930             fi
4931             if test ! -f "$xxx"; then
4932                 xxx=$thisdir/$thislib$_a
4933                 $test -f "$xxx" && eval $libscheck
4934                 $test -f "$xxx" && libstyle=static
4935             fi
4936             if test ! -f "$xxx"; then
4937                 xxx=$thisdir/lib${thislib}_s$_a
4938                 $test -f "$xxx" && eval $libscheck
4939                 $test -f "$xxx" && libstyle=static
4940                 $test -f "$xxx" && thislib=${thislib}_s
4941             fi
4942             if test ! -f "$xxx"; then
4943                 xxx=$thisdir/Slib$thislib$_a
4944                 $test -f "$xxx" && eval $libscheck
4945                 $test -f "$xxx" && libstyle=static
4946             fi
4947             if $test -f "$xxx"; then
4948                 case "$libstyle" in
4949                 shared) echo "Found -l$thislib (shared)." ;;
4950                 static) echo "Found -l$thislib." ;;
4951                 *)      echo "Found -l$thislib ($libstyle)." ;;
4952                 esac
4953                 case " $dflt " in
4954                 *"-l$thislib "*);;
4955                 *) dflt="$dflt -l$thislib"
4956                    libsfound="$libsfound $xxx"
4957                    yyy=`basename $xxx`
4958                    libsfiles="$libsfiles $yyy"
4959                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4960                    case " $libsdirs " in
4961                    *" $yyy "*) ;;
4962                    *) libsdirs="$libsdirs $yyy" ;;
4963                    esac
4964                    ;;
4965                 esac
4966                 break
4967             fi
4968         done
4969         if $test ! -f "$xxx"; then
4970             echo "No -l$thislib."
4971         fi
4972 done
4973 set X $dflt
4974 shift
4975 dflt="$*"
4976 case "$libs" in
4977 '') dflt="$dflt";;
4978 *) dflt="$libs";;
4979 esac
4980 case "$dflt" in
4981 ' '|'') dflt='none';;
4982 esac
4983
4984 $cat <<EOM
4985
4986 In order to compile $package on your machine, a number of libraries
4987 are usually needed.  Include any other special libraries here as well.
4988 Say "none" for none.  The default list is almost always right.
4989 EOM
4990
4991 echo " "
4992 rp="What libraries to use?"
4993 . ./myread
4994 case "$ans" in
4995 none) libs=' ';;
4996 *) libs="$ans";;
4997 esac
4998
4999 : determine optimization, if desired, or use for debug flag also
5000 case "$optimize" in
5001 ' '|$undef) dflt='none';;
5002 '') dflt='-O';;
5003 *) dflt="$optimize";;
5004 esac
5005 $cat <<EOH
5006
5007 By default, $package compiles with the -O flag to use the optimizer.
5008 Alternately, you might want to use the symbolic debugger, which uses
5009 the -g flag (on traditional Unix systems).  Either flag can be
5010 specified here.  To use neither flag, specify the word "none".
5011
5012 EOH
5013 rp="What optimizer/debugger flag should be used?"
5014 . ./myread
5015 optimize="$ans"
5016 case "$optimize" in
5017 'none') optimize=" ";;
5018 esac
5019
5020 : Check what DEBUGGING is required from the command line
5021 : -DEBUGGING      or -DDEBUGGING or
5022 : -DEBUGGING=both                       = -g + -DDEBUGGING
5023 : -DEBUGGING=-g   or -Doptimize=-g      = -g
5024 : -DEBUGGING=none or -UDEBUGGING        =
5025 : -DEBUGGING=old  or -DEBUGGING=default = ? $optimize
5026 case "$EBUGGING" in
5027 '')     ;;
5028 *)      DEBUGGING=$EBUGGING ;;
5029 esac
5030
5031 case "$DEBUGGING" in
5032 -g|both|$define)
5033     case "$optimize" in
5034         *-g*) ;;
5035         *)    optimize="$optimize -g" ;;
5036     esac ;;
5037 none|$undef)
5038     case "$optimize" in
5039         *-g*)   set `echo "X $optimize " | sed 's/ -g / /'`
5040                 shift
5041                 optimize="$*"
5042                 ;;
5043     esac ;;
5044 esac
5045
5046 dflt=''
5047 case "$DEBUGGING" in
5048 both|$define) dflt='-DDEBUGGING'
5049 esac
5050
5051 : argument order is deliberate, as the flag will start with - which set could
5052 : think is an option
5053 checkccflag='check=$1; flag=$2; callback=$3;
5054 echo " ";
5055 echo "Checking if your compiler accepts $flag" 2>&1;
5056 echo "int main(void) { return 0; }" > gcctest.c;
5057 if $cc -O2 $flag -o gcctest gcctest.c 2>gcctest.out && ./gcctest; then
5058     echo "Yes, it does." 2>&1;
5059     if $test -s gcctest.out ; then
5060         echo "But your platform does not like it:";
5061         cat gcctest.out;
5062     else
5063         case "$ccflags" in
5064         *$check*)
5065             echo "Leaving current flags $ccflags alone." 2>&1
5066             ;;
5067         *) dflt="$dflt $flag";
5068             eval $callback
5069             ;;
5070         esac
5071     fi
5072 else
5073     echo "Nope, it does not, but that is ok." 2>&1;
5074 fi
5075 '
5076
5077 : We will not override a previous value, but we might want to
5078 : augment a hint file
5079 case "$hint" in
5080 default|recommended)
5081         case "$gccversion" in
5082         1*) dflt="$dflt -fpcc-struct-return" ;;
5083         esac
5084         case "$optimize:$DEBUGGING" in
5085         *-g*:old) dflt="$dflt -DDEBUGGING";;
5086         esac
5087         case "$gccversion" in
5088         2*) if $test -d /etc/conf/kconfig.d &&
5089                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
5090                 then
5091                         # Interactive Systems (ISC) POSIX mode.
5092                         dflt="$dflt -posix"
5093                 fi
5094                 ;;
5095         esac
5096         case "$gccversion" in
5097         1*) ;;
5098         2.[0-8]*) ;;
5099         ?*)     set strict-aliasing -fno-strict-aliasing
5100                 eval $checkccflag
5101                 ;;
5102         esac
5103         # For gcc, adding -pipe speeds up compilations for some, but apparently
5104         # some assemblers can't read from stdin.  (It also slows down compilations
5105         # in other cases, but those are apparently rarer these days.)  AD 5/2004.
5106         case "$gccversion" in
5107         ?*)     set pipe -pipe
5108                 eval $checkccflag
5109                 ;;
5110         esac
5111
5112         # on x86_64 (at least) we require an extra library (libssp) in the
5113         # link command line. This library is not named, so I infer that it is
5114         # an implementation detail that may change. Hence the safest approach
5115         # is to add the flag to the flags passed to the compiler at link time,
5116         # as that way the compiler can do the right implementation dependant
5117         # thing. (NWC)
5118         case "$gccversion" in
5119         ?*)     set stack-protector -fstack-protector 'ldflags="$ldflags -fstack-protector"'
5120                 eval $checkccflag
5121                 ;;
5122         esac
5123         ;;
5124 esac
5125
5126 case "$mips_type" in
5127 *BSD*|'') inclwanted="$locincpth $usrinc";;
5128 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
5129 esac
5130 for thisincl in $inclwanted; do
5131         if $test -d $thisincl; then
5132                 if $test x$thisincl != x$usrinc; then
5133                         case "$dflt" in
5134                         *" -I$thisincl "*);;
5135                         *) dflt="$dflt -I$thisincl ";;
5136                         esac
5137                 fi
5138         fi
5139 done
5140
5141 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
5142         xxx=true;
5143 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
5144         xxx=true;
5145 else
5146         xxx=false;
5147 fi;
5148 if $xxx; then
5149         case "$dflt" in
5150         *$2*);;
5151         *) dflt="$dflt -D$2";;
5152         esac;
5153 fi'
5154
5155 set signal.h LANGUAGE_C; eval $inctest
5156
5157 case "$usesocks" in
5158 $define)
5159         ccflags="$ccflags -DSOCKS"
5160         ;;
5161 esac
5162
5163 case "$hint" in
5164 default|recommended) dflt="$ccflags $dflt" ;;
5165 *) dflt="$ccflags";;
5166 esac
5167
5168 case "$dflt" in
5169 ''|' ') dflt=none;;
5170 esac
5171
5172 $cat <<EOH
5173
5174 Your C compiler may want other flags.  For this question you should include
5175 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
5176 but you should NOT include libraries or ld flags like -lwhatever.  If you
5177 want $package to honor its debug switch, you should include -DDEBUGGING here.
5178 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
5179
5180 To use no flags, specify the word "none".
5181
5182 EOH
5183 set X $dflt
5184 shift
5185 dflt=${1+"$@"}
5186 rp="Any additional cc flags?"
5187 . ./myread
5188 case "$ans" in
5189 none) ccflags='';;
5190 *) ccflags="$ans";;
5191 esac
5192
5193 : the following weeds options from ccflags that are of no interest to cpp
5194 case "$cppflags" in
5195 '') cppflags="$ccflags" ;;
5196 *)  cppflags="$cppflags $ccflags" ;;
5197 esac
5198 case "$gccversion" in
5199 1*) cppflags="$cppflags -D__GNUC__"
5200 esac
5201 case "$mips_type" in
5202 '');;
5203 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
5204 esac
5205 case "$cppflags" in
5206 '');;
5207 *)
5208         echo " "
5209         echo "Let me guess what the preprocessor flags are..." >&4
5210         set X $cppflags
5211         shift
5212         cppflags=''
5213         $cat >cpp.c <<'EOM'
5214 #define BLURFL foo
5215
5216 BLURFL xx LFRULB
5217 EOM
5218         previous=''
5219         for flag in $*
5220         do
5221                 case "$flag" in
5222                 -*) ftry="$flag";;
5223                 *) ftry="$previous $flag";;
5224                 esac
5225                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
5226                         >cpp1.out 2>/dev/null && \
5227                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
5228                         >cpp2.out 2>/dev/null && \
5229                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
5230                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
5231                 then
5232                         cppflags="$cppflags $ftry"
5233                         previous=''
5234                 else
5235                         previous="$flag"
5236                 fi
5237         done
5238         set X $cppflags
5239         shift
5240         cppflags=${1+"$@"}
5241         case "$cppflags" in
5242         *-*)  echo "They appear to be: $cppflags";;
5243         esac
5244         $rm -f cpp.c cpp?.out
5245         ;;
5246 esac
5247
5248 : flags used in final linking phase
5249 case "$ldflags" in
5250 '') if ./venix; then
5251                 dflt='-i -z'
5252         else
5253                 dflt=''
5254         fi
5255         case "$ccflags" in
5256         *-posix*) dflt="$dflt -posix" ;;
5257         esac
5258         ;;
5259 *) dflt="$ldflags";;
5260 esac
5261
5262 : Try to guess additional flags to pick up local libraries.
5263 for thislibdir in $libpth; do
5264         case " $loclibpth " in
5265         *" $thislibdir "*)
5266                 case "$dflt " in
5267                 *"-L$thislibdir "*) ;;
5268                 *)  dflt="$dflt -L$thislibdir" ;;
5269                 esac
5270                 ;;
5271         esac
5272 done
5273
5274 case "$dflt" in
5275 '') dflt='none' ;;
5276 esac
5277
5278 $cat <<EOH
5279
5280 Your C linker may need flags.  For this question you should
5281 include -L/whatever and any other flags used by the C linker, but you
5282 should NOT include libraries like -lwhatever.
5283
5284 Make sure you include the appropriate -L/path flags if your C linker
5285 does not normally search all of the directories you specified above,
5286 namely
5287         $libpth
5288 To use no flags, specify the word "none".
5289
5290 EOH
5291
5292 rp="Any additional ld flags (NOT including libraries)?"
5293 . ./myread
5294 case "$ans" in
5295 none) ldflags='';;
5296 *) ldflags="$ans";;
5297 esac
5298 rmlist="$rmlist pdp11"
5299
5300 : coherency check
5301 echo " "
5302 echo "Checking your choice of C compiler and flags for coherency..." >&4
5303 $cat > try.c <<'EOF'
5304 #include <stdio.h>
5305 int main() { printf("Ok\n"); return(0); }
5306 EOF
5307 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
5308 shift
5309 $cat >try.msg <<'EOM'
5310 I've tried to compile and run the following simple program:
5311
5312 EOM
5313 $cat try.c >> try.msg
5314
5315 $cat >> try.msg <<EOM
5316
5317 I used the command:
5318
5319         $*
5320         $run ./try
5321
5322 and I got the following output:
5323
5324 EOM
5325 dflt=y
5326 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5327         if $sh -c "$run ./try " >>try.msg 2>&1; then
5328                 xxx=`$run ./try`
5329                 case "$xxx" in
5330                 "Ok") dflt=n ;;
5331                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
5332                         case " $libs " in
5333                         *" -lsfio "*)
5334                                 cat >> try.msg <<'EOQS'
5335 If $libs contains -lsfio, and sfio is mis-configured, then it
5336 sometimes (apparently) runs and exits with a 0 status, but with no
5337 output!  It may have to do with sfio's use of _exit vs. exit.
5338
5339 EOQS
5340                                 rp="You have a big problem.  Shall I abort Configure"
5341                                 dflt=y
5342                                 ;;
5343                         esac
5344                         ;;
5345                 esac
5346         else
5347                 echo "The program compiled OK, but exited with status $?." >>try.msg
5348                 rp="You have a problem.  Shall I abort Configure"
5349                 dflt=y
5350         fi
5351 else
5352         echo "I can't compile the test program." >>try.msg
5353         rp="You have a BIG problem.  Shall I abort Configure"
5354         dflt=y
5355 fi
5356 case "$dflt" in
5357 y)
5358         $cat try.msg >&4
5359         case "$knowitall" in
5360         '')
5361                 echo "(The supplied flags or libraries might be incorrect.)"
5362                 ;;
5363         *) dflt=n;;
5364         esac
5365         echo " "
5366         . ./myread
5367         case "$ans" in
5368         n*|N*) ;;
5369         *)      echo "Ok.  Stopping Configure." >&4
5370                 exit 1
5371                 ;;
5372         esac
5373         ;;
5374 n) echo "OK, that should do.";;
5375 esac
5376 $rm_try gcctest gcctest.out
5377
5378 : define a shorthand compile call
5379 compile='
5380 mc_file=$1;
5381 shift;
5382 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5383 : define a shorthand compile call for compilations that should be ok.
5384 compile_ok='
5385 mc_file=$1;
5386 shift;
5387 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5388
5389 : determine filename position in cpp output
5390 echo " "
5391 echo "Computing filename position in cpp output for #include directives..." >&4
5392 case "$osname" in
5393 vos) testaccess=-e ;;
5394 *)   testaccess=-r ;;
5395 esac
5396 echo '#include <stdio.h>' > foo.c
5397 $cat >fieldn <<EOF
5398 $startsh
5399 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5400 $grep '^[       ]*#.*stdio\.h' | \
5401 while read cline; do
5402         pos=1
5403         set \$cline
5404         while $test \$# -gt 0; do
5405                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5406                         echo "\$pos"
5407                         exit 0
5408                 fi
5409                 shift
5410                 pos=\`expr \$pos + 1\`
5411         done
5412 done
5413 EOF
5414 chmod +x fieldn
5415 fieldn=`./fieldn`
5416 $rm -f foo.c fieldn
5417 case $fieldn in
5418 '') pos='???';;
5419 1) pos=first;;
5420 2) pos=second;;
5421 3) pos=third;;
5422 *) pos="${fieldn}th";;
5423 esac
5424 echo "Your cpp writes the filename in the $pos field of the line."
5425
5426 case "$osname" in
5427 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5428 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5429 *)   cppfilter='' ;;
5430 esac
5431 : locate header file
5432 $cat >findhdr <<EOF
5433 $startsh
5434 wanted=\$1
5435 name=''
5436 for usrincdir in $usrinc
5437 do
5438         if test -f \$usrincdir/\$wanted; then
5439                 echo "\$usrincdir/\$wanted"
5440                 exit 0
5441         fi
5442 done
5443 awkprg='{ print \$$fieldn }'
5444 echo "#include <\$wanted>" > foo\$\$.c
5445 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5446 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5447 while read cline; do
5448         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5449         case "\$name" in
5450         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5451         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5452         *) exit 2;;
5453         esac;
5454 done;
5455 #
5456 # status = 0: grep returned 0 lines, case statement not executed
5457 # status = 1: headerfile found
5458 # status = 2: while loop executed, no headerfile found
5459 #
5460 status=\$?
5461 $rm -f foo\$\$.c;
5462 if test \$status -eq 1; then
5463         exit 0;
5464 fi
5465 exit 1
5466 EOF
5467 chmod +x findhdr
5468
5469 : define an alternate in-header-list? function
5470 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5471 cont=true; xxf="echo \"<\$1> found.\" >&4";
5472 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5473 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5474 esac;
5475 case $# in 4) instead=instead;; *) instead="at last";; esac;
5476 while $test "$cont"; do
5477         xxx=`./findhdr $1`
5478         var=$2; eval "was=\$$2";
5479         if $test "$xxx" && $test -r "$xxx";
5480         then eval $xxf;
5481         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5482                 cont="";
5483         else eval $xxnf;
5484         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5485         set $yyy; shift; shift; yyy=$@;
5486         case $# in 0) cont="";;
5487         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5488                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5489         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5490                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5491         esac;
5492 done;
5493 while $test "$yyy";
5494 do set $yyy; var=$2; eval "was=\$$2";
5495         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5496         set $yyy; shift; shift; yyy=$@;
5497 done'
5498
5499 : see if stdlib is available
5500 set stdlib.h i_stdlib
5501 eval $inhdr
5502
5503 : check for lengths of integral types
5504 echo " "
5505 case "$intsize" in
5506 '')
5507         echo "Checking to see how big your integers 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("intsize=%d;\n", (int)sizeof(int));
5517         printf("longsize=%d;\n", (int)sizeof(long));
5518         printf("shortsize=%d;\n", (int)sizeof(short));
5519         exit(0);
5520 }
5521 EOCP
5522         set try
5523         if eval $compile_ok && $run ./try > /dev/null; then
5524                 eval `$run ./try`
5525                 echo "Your integers are $intsize bytes long."
5526                 echo "Your long integers are $longsize bytes long."
5527                 echo "Your short integers are $shortsize bytes long."
5528         else
5529                 $cat >&4 <<EOM
5530 !
5531 Help! I can't compile and run the intsize test program: please enlighten me!
5532 (This is probably a misconfiguration in your system or libraries, and
5533 you really ought to fix it.  Still, I'll try anyway.)
5534 !
5535 EOM
5536                 dflt=4
5537                 rp="What is the size of an integer (in bytes)?"
5538                 . ./myread
5539                 intsize="$ans"
5540                 dflt=$intsize
5541                 rp="What is the size of a long integer (in bytes)?"
5542                 . ./myread
5543                 longsize="$ans"
5544                 dflt=2
5545                 rp="What is the size of a short integer (in bytes)?"
5546                 . ./myread
5547                 shortsize="$ans"
5548         fi
5549         ;;
5550 esac
5551 $rm_try
5552
5553 : check for long long
5554 echo " "
5555 echo "Checking to see if you have long long..." >&4
5556 echo 'int main() { long long x = 7; return 0; }' > try.c
5557 set try
5558 if eval $compile; then
5559         val="$define"
5560         echo "You have long long."
5561 else
5562         val="$undef"
5563         echo "You do not have long long."
5564 fi
5565 $rm_try
5566 set d_longlong
5567 eval $setvar
5568
5569 : check for length of long long
5570 case "${d_longlong}${longlongsize}" in
5571 $define)
5572         echo " "
5573         echo "Checking to see how big your long longs are..." >&4
5574         $cat >try.c <<'EOCP'
5575 #include <stdio.h>
5576 int main()
5577 {
5578     printf("%d\n", (int)sizeof(long long));
5579     return(0);
5580 }
5581 EOCP
5582         set try
5583         if eval $compile_ok; then
5584                 longlongsize=`$run ./try`
5585                 echo "Your long longs are $longlongsize bytes long."
5586         else
5587                 dflt='8'
5588                 echo " "
5589                 echo "(I can't seem to compile the test program.  Guessing...)"
5590                 rp="What is the size of a long long (in bytes)?"
5591                 . ./myread
5592                 longlongsize="$ans"
5593         fi
5594         if $test "X$longsize" = "X$longlongsize"; then
5595                 echo "(That isn't any different from an ordinary long.)"
5596         fi
5597         ;;
5598 esac
5599 $rm_try
5600
5601 : see if inttypes.h is available
5602 : we want a real compile instead of Inhdr because some systems
5603 : have an inttypes.h which includes non-existent headers
5604 echo " "
5605 $cat >try.c <<EOCP
5606 #include <inttypes.h>
5607 int main() {
5608         static int32_t foo32 = 0x12345678;
5609 }
5610 EOCP
5611 set try
5612 if eval $compile; then
5613         echo "<inttypes.h> found." >&4
5614         val="$define"
5615 else
5616         echo "<inttypes.h> NOT found." >&4
5617         val="$undef"
5618 fi
5619 $rm_try
5620 set i_inttypes
5621 eval $setvar
5622
5623 : check for int64_t
5624 echo " "
5625 echo "Checking to see if you have int64_t..." >&4
5626 $cat >try.c <<EOCP
5627 #include <sys/types.h>
5628 #$i_inttypes I_INTTYPES
5629 #ifdef I_INTTYPES
5630 #include <inttypes.h>
5631 #endif
5632 int main() { int64_t x = 7; }
5633 EOCP
5634 set try
5635 if eval $compile; then
5636         val="$define"
5637         echo "You have int64_t."
5638 else
5639         val="$undef"
5640         echo "You do not have int64_t."
5641 fi
5642 $rm_try
5643 set d_int64_t
5644 eval $setvar
5645
5646 : Check if 64bit ints have a quad type
5647 echo " "
5648 echo "Checking which 64-bit integer type we could use..." >&4
5649
5650 case "$intsize" in
5651 8) val=int
5652    set quadtype
5653    eval $setvar
5654    val='"unsigned int"'
5655    set uquadtype
5656    eval $setvar
5657    quadkind=1
5658    ;;
5659 *) case "$longsize" in
5660    8) val=long
5661       set quadtype
5662       eval $setvar
5663       val='"unsigned long"'
5664       set uquadtype
5665       eval $setvar
5666       quadkind=2
5667       ;;
5668    *) case "$d_longlong:$longlongsize" in
5669       define:8)
5670         val='"long long"'
5671         set quadtype
5672         eval $setvar
5673         val='"unsigned long long"'
5674         set uquadtype
5675         eval $setvar
5676         quadkind=3
5677         ;;
5678       *) case "$d_int64_t" in
5679          define)
5680            val=int64_t
5681            set quadtype
5682            eval $setvar
5683            val=uint64_t
5684            set uquadtype
5685            eval $setvar
5686            quadkind=4
5687            ;;
5688          esac
5689          ;;
5690       esac
5691       ;;
5692    esac
5693    ;;
5694 esac
5695
5696 case "$quadtype" in
5697 '')     echo "Alas, no 64-bit integer types in sight." >&4
5698         d_quad="$undef"
5699         ;;
5700 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5701         d_quad="$define"
5702         ;;
5703 esac
5704
5705
5706 case "$uselonglong" in
5707 "$define"|true|[yY]*)
5708         cat <<EOM >&4
5709
5710 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5711 EOM
5712         use64bitint="$define"
5713         ;;
5714 esac
5715 case "$use64bits" in
5716 "$define"|true|[yY]*)
5717         cat <<EOM >&4
5718
5719 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5720 EOM
5721         use64bitint="$define"
5722         ;;
5723 esac
5724 case "$use64bitints" in
5725 "$define"|true|[yY]*)
5726         cat <<EOM >&4
5727
5728 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5729 EOM
5730         use64bitint="$define"
5731         ;;
5732 esac
5733 case "$use64bitsint" in
5734 "$define"|true|[yY]*)
5735         cat <<EOM >&4
5736
5737 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5738 EOM
5739         use64bitint="$define"
5740         ;;
5741 esac
5742 case "$uselonglongs" in
5743 "$define"|true|[yY]*)
5744         cat <<EOM >&4
5745
5746 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5747 EOM
5748         use64bitint="$define"
5749         ;;
5750 esac
5751 case "$use64bitsall" in
5752 "$define"|true|[yY]*)
5753         cat <<EOM >&4
5754
5755 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5756 EOM
5757         use64bitall="$define"
5758         ;;
5759 esac
5760
5761 case "$ccflags" in
5762 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5763 esac
5764 case "$use64bitall" in
5765 "$define"|true|[yY]*) use64bitint="$define" ;;
5766 esac
5767
5768 case "$longsize" in
5769 8) cat <<EOM
5770
5771 You have natively 64-bit long integers.
5772 EOM
5773    val="$define"
5774    ;;
5775 *) case "$use64bitint" in
5776    "$define"|true|[yY]*) dflt='y';;
5777    *) dflt='n';;
5778    esac
5779    case "$d_quad" in
5780    "$define") ;;
5781    *) dflt='n' ;;
5782    esac
5783    cat <<EOM
5784
5785 Perl can be built to take advantage of 64-bit integer types
5786 on some systems.  To do so, Configure can be run with -Duse64bitint.
5787 Choosing this option will most probably introduce binary incompatibilities.
5788
5789 If this doesn't make any sense to you, just accept the default '$dflt'.
5790 (The default has been chosen based on your configuration.)
5791 EOM
5792    rp='Try to use 64-bit integers, if available?'
5793    . ./myread
5794    case "$ans" in
5795    [yY]*) val="$define" ;;
5796    *)     val="$undef"  ;;
5797    esac
5798    ;;
5799 esac
5800 set use64bitint
5801 eval $setvar
5802
5803 case "$use64bitall" in
5804 "$define"|true|[yY]*) dflt='y' ;;
5805 *) case "$longsize" in
5806    8) dflt='y' ;;
5807    *) dflt='n' ;;
5808    esac
5809    ;;
5810 esac
5811 cat <<EOM
5812
5813 You may also choose to try maximal 64-bitness.  It means using as much
5814 64-bitness as possible on the platform.  This in turn means even more
5815 binary incompatibilities.  On the other hand, your platform may not
5816 have any more 64-bitness available than what you already have chosen.
5817
5818 If this doesn't make any sense to you, just accept the default '$dflt'.
5819 (The default has been chosen based on your configuration.)
5820 EOM
5821 rp='Try to use maximal 64-bit support, if available?'
5822 . ./myread
5823 case "$ans" in
5824 [yY]*) val="$define" ;;
5825 *)     val="$undef"  ;;
5826 esac
5827 set use64bitall
5828 eval $setvar
5829 case "$use64bitall" in
5830 "$define")
5831         case "$use64bitint" in
5832         "$undef")
5833                 cat <<EOM
5834
5835 Since you have chosen a maximally 64-bit build, I'm also turning on
5836 the use of 64-bit integers.
5837 EOM
5838                 use64bitint="$define" ;;
5839         esac
5840         ;;
5841 esac
5842
5843 : Look for a hint-file generated 'call-back-unit'.  If the
5844 : user has specified that a 64-bit perl is to be built,
5845 : we may need to set or change some other defaults.
5846 if $test -f use64bitint.cbu; then
5847         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5848         . ./use64bitint.cbu
5849 fi
5850 case "$use64bitint" in
5851 "$define"|true|[yY]*)
5852         case "$longsize" in
5853         4) case "$archname64" in
5854            '') archname64=64int ;;
5855            esac
5856            ;;
5857         esac
5858         ;;
5859 esac
5860
5861 : Look for a hint-file generated 'call-back-unit'.  If the
5862 : user has specified that a maximally 64-bit perl is to be built,
5863 : we may need to set or change some other defaults.
5864 if $test -f use64bitall.cbu; then
5865         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5866         . ./use64bitall.cbu
5867 fi
5868 case "$use64bitall" in
5869 "$define"|true|[yY]*)
5870         case "$longsize" in
5871         4) case "$archname64" in
5872            ''|64int) archname64=64all ;;
5873            esac
5874            ;;
5875         esac
5876         ;;
5877 esac
5878
5879 case "$d_quad:$use64bitint" in
5880 $undef:$define)
5881         cat >&4 <<EOF
5882
5883 *** You have chosen to use 64-bit integers,
5884 *** but none can be found.
5885 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5886 *** Cannot continue, aborting.
5887
5888 EOF
5889         exit 1
5890         ;;
5891 esac
5892
5893 : check for length of double
5894 echo " "
5895 case "$doublesize" in
5896 '')
5897         echo "Checking to see how big your double precision numbers are..." >&4
5898         $cat >try.c <<EOCP
5899 #include <stdio.h>
5900 #$i_stdlib I_STDLIB
5901 #ifdef I_STDLIB
5902 #include <stdlib.h>
5903 #endif
5904 int main()
5905 {
5906     printf("%d\n", (int)sizeof(double));
5907     exit(0);
5908 }
5909 EOCP
5910         set try
5911         if eval $compile_ok; then
5912                 doublesize=`$run ./try`
5913                 echo "Your double is $doublesize bytes long."
5914         else
5915                 dflt='8'
5916                 echo "(I can't seem to compile the test program.  Guessing...)"
5917                 rp="What is the size of a double precision number (in bytes)?"
5918                 . ./myread
5919                 doublesize="$ans"
5920         fi
5921         ;;
5922 esac
5923 $rm_try
5924
5925 : check for long doubles
5926 echo " "
5927 echo "Checking to see if you have long double..." >&4
5928 echo 'int main() { long double x = 7.0; }' > try.c
5929 set try
5930 if eval $compile; then
5931         val="$define"
5932         echo "You have long double."
5933 else
5934         val="$undef"
5935         echo "You do not have long double."
5936 fi
5937 $rm_try
5938 set d_longdbl
5939 eval $setvar
5940
5941 : check for length of long double
5942 case "${d_longdbl}${longdblsize}" in
5943 $define)
5944         echo " "
5945         echo "Checking to see how big your long doubles are..." >&4
5946         $cat >try.c <<'EOCP'
5947 #include <stdio.h>
5948 int main()
5949 {
5950         printf("%d\n", sizeof(long double));
5951 }
5952 EOCP
5953         set try
5954         set try
5955         if eval $compile; then
5956                 longdblsize=`$run ./try`
5957                 echo "Your long doubles are $longdblsize bytes long."
5958         else
5959                 dflt='8'
5960                 echo " "
5961                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5962                 rp="What is the size of a long double (in bytes)?"
5963                 . ./myread
5964                 longdblsize="$ans"
5965         fi
5966         if $test "X$doublesize" = "X$longdblsize"; then
5967                 echo "That isn't any different from an ordinary double."
5968                 echo "I'll keep your setting anyway, but you may see some"
5969                 echo "harmless compilation warnings."
5970         fi
5971         ;;
5972 esac
5973 $rm_try
5974
5975 : determine the architecture name
5976 echo " "
5977 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5978         tarch=`arch`"-$osname"
5979 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5980         if uname -m > tmparch 2>&1 ; then
5981                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5982                         -e 's/$/'"-$osname/" tmparch`
5983         else
5984                 tarch="$osname"
5985         fi
5986         $rm -f tmparch
5987 else
5988         tarch="$osname"
5989 fi
5990 case "$myarchname" in
5991 ''|"$tarch") ;;
5992 *)
5993         echo "(Your architecture name used to be $myarchname.)"
5994         archname=''
5995         ;;
5996 esac
5997 case "$targetarch" in
5998 '') ;;
5999 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6000 esac
6001 myarchname="$tarch"
6002 case "$archname" in
6003 '') dflt="$tarch";;
6004 *) dflt="$archname";;
6005 esac
6006 rp='What is your architecture name'
6007 . ./myread
6008 archname="$ans"
6009 case "$usethreads" in
6010 $define)
6011         echo "Threads selected." >&4
6012         case "$archname" in
6013         *-thread*) echo "...and architecture name already has -thread." >&4
6014                 ;;
6015         *)      archname="$archname-thread"
6016                 echo "...setting architecture name to $archname." >&4
6017                 ;;
6018         esac
6019         ;;
6020 esac
6021 case "$usemultiplicity" in
6022 $define)
6023         echo "Multiplicity selected." >&4
6024         case "$archname" in
6025         *-multi*) echo "...and architecture name already has -multi." >&4
6026                 ;;
6027         *)      archname="$archname-multi"
6028                 echo "...setting architecture name to $archname." >&4
6029                 ;;
6030         esac
6031         ;;
6032 esac
6033 case "$use64bitint$use64bitall" in
6034 *"$define"*)
6035         case "$archname64" in
6036         '')
6037                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6038                 ;;
6039         *)
6040                 case "$use64bitint" in
6041                 "$define") echo "64 bit integers selected." >&4 ;;
6042                 esac
6043                 case "$use64bitall" in
6044                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6045                 esac
6046                 case "$archname" in
6047                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6048                         ;;
6049                 *)      archname="$archname-$archname64"
6050                         echo "...setting architecture name to $archname." >&4
6051                         ;;
6052                 esac
6053                 ;;
6054         esac
6055 esac
6056 case "$uselongdouble" in
6057 $define)
6058         echo "Long doubles selected." >&4
6059         case "$longdblsize" in
6060         $doublesize)
6061                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6062                 ;;
6063         *)
6064                 case "$archname" in
6065                 *-ld*) echo "...and architecture name already has -ld." >&4
6066                         ;;
6067                 *)      archname="$archname-ld"
6068                         echo "...setting architecture name to $archname." >&4
6069                         ;;
6070                 esac
6071                 ;;
6072         esac
6073         ;;
6074 esac
6075 case "$useperlio" in
6076 $define)
6077         echo "Perlio selected." >&4
6078         ;;
6079 *)
6080         echo "Perlio not selected, using stdio." >&4
6081         case "$archname" in
6082         *-stdio*) echo "...and architecture name already has -stdio." >&4
6083                 ;;
6084         *)      archname="$archname-stdio"
6085                 echo "...setting architecture name to $archname." >&4
6086                 ;;
6087         esac
6088         ;;
6089 esac
6090 if $test -f archname.cbu; then
6091         echo "Your platform has some specific hints for architecture name, using them..."
6092         . ./archname.cbu
6093 fi
6094
6095 : set the prefixit variable, to compute a suitable default value
6096 prefixit='case "$3" in
6097 ""|none)
6098         case "$oldprefix" in
6099         "") eval "$1=\"\$$2\"";;
6100         *)
6101                 case "$3" in
6102                 "") eval "$1=";;
6103                 none)
6104                         eval "tp=\"\$$2\"";
6105                         case "$tp" in
6106                         ""|" ") eval "$1=\"\$$2\"";;
6107                         *) eval "$1=";;
6108                         esac;;
6109                 esac;;
6110         esac;;
6111 *)
6112         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6113         case "$tp" in
6114         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6115         /*-$oldprefix/*|\~*-$oldprefix/*)
6116                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6117         *) eval "$1=\"\$$2\"";;
6118         esac;;
6119 esac'
6120
6121 : determine installation style
6122 : For now, try to deduce it from prefix unless it is already set.
6123 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6124 case "$installstyle" in
6125 '')     case "$prefix" in
6126                 *perl*) dflt='lib';;
6127                 *) dflt='lib/perl5' ;;
6128         esac
6129         ;;
6130 *)      dflt="$installstyle" ;;
6131 esac
6132 : Probably not worth prompting for this since we prompt for all
6133 : the directories individually, and the prompt would be too long and
6134 : confusing anyway.
6135 installstyle=$dflt
6136
6137 : determine where public executables go
6138 echo " "
6139 set dflt bin bin
6140 eval $prefixit
6141 fn=d~
6142 rp='Pathname where the public executables will reside?'
6143 . ./getfile
6144 if $test "X$ansexp" != "X$binexp"; then
6145         installbin=''
6146 fi
6147 prefixvar=bin
6148 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6149 : XXX If this is fixed, also fix the "start perl" hunk below, which relies on
6150 :     this via initialinstalllocation
6151 . ./setprefixvar
6152
6153 case "$userelocatableinc" in
6154 $define|true|[yY]*)     dflt='y' ;;
6155 *)                      dflt='n' ;;
6156 esac
6157 cat <<EOM
6158
6159 Would you like to build Perl so that the installation is relocatable, so that
6160 library paths in @INC are determined relative to the path of the perl binary?
6161 This is not advised for system Perl installs, or if you need to run setid
6162 scripts or scripts under taint mode.
6163
6164 If this doesn't make any sense to you, just accept the default '$dflt'.
6165 EOM
6166 rp='Use relocatable @INC?'
6167 . ./myread
6168 case "$ans" in
6169 y|Y)    val="$define" ;;
6170 *)      val="$undef"  ;;
6171 esac
6172 set userelocatableinc
6173 eval $setvar
6174
6175 initialinstalllocation="$binexp"
6176 : Default prefix is now "up one level from where the binaries are"
6177 case "$userelocatableinc" in
6178 $define|true|[yY]*)
6179     bin=".../"
6180     binexp=".../"
6181     prefix=".../.."
6182     prefixexp=".../.."
6183     installprefixexp=".../.."
6184     ;;
6185 esac
6186
6187 : determine where private library files go
6188 : Usual default is /usr/local/lib/perl5/$version.
6189 : Also allow things like /opt/perl/lib/$version, since
6190 : /opt/perl/lib/perl5... would be redundant.
6191 : The default "style" setting is made in installstyle.U
6192 case "$installstyle" in
6193 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6194 *)       set dflt privlib lib/$version ;;
6195 esac
6196 eval $prefixit
6197 $cat <<EOM
6198
6199 There are some auxiliary files for $package that need to be put into a
6200 private library directory that is accessible by everyone.
6201
6202 EOM
6203 fn=$binexp
6204 fn=d~+
6205 rp='Pathname where the private library files will reside?'
6206 . ./getfile
6207 prefixvar=privlib
6208 . ./setprefixvar
6209
6210 : set the prefixup variable, to restore leading tilda escape
6211 prefixup='case "$prefixexp" in
6212 "$prefix") ;;
6213 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6214 esac'
6215
6216 : determine where public architecture dependent libraries go
6217 set archlib archlib
6218 eval $prefixit
6219 : privlib default is /usr/local/lib/$package/$version
6220 : archlib default is /usr/local/lib/$package/$version/$archname
6221 : privlib may have an optional trailing /share.
6222 tdflt=`echo $privlib | $sed 's,/share$,,'`
6223 tdflt=$tdflt/$archname
6224 case "$archlib" in
6225 '')     dflt=$tdflt
6226         ;;
6227 *)      dflt="$archlib"
6228     ;;
6229 esac
6230 $cat <<EOM
6231
6232 $spackage contains architecture-dependent library files.  If you are
6233 sharing libraries in a heterogeneous environment, you might store
6234 these files in a separate location.  Otherwise, you can just include
6235 them with the rest of the public library files.
6236
6237 EOM
6238 fn=$binexp
6239 fn=d+~
6240 rp='Where do you want to put the public architecture-dependent libraries?'
6241 . ./getfile
6242 prefixvar=archlib
6243 . ./setprefixvar
6244 if $test X"$archlib" = X"$privlib"; then
6245         d_archlib="$undef"
6246 else
6247         d_archlib="$define"
6248 fi
6249
6250 : see if setuid scripts can be secure
6251 $cat <<EOM
6252
6253 Some kernels have a bug that prevents setuid #! scripts from being
6254 secure.  Some sites have disabled setuid #! scripts because of this.
6255
6256 First let's decide if your kernel supports secure setuid #! scripts.
6257 (If setuid #! scripts would be secure but have been disabled anyway,
6258 don't say that they are secure if asked.)
6259
6260 EOM
6261
6262 val="$undef"
6263 if $test -d /dev/fd; then
6264         echo "#!$ls" >reflect
6265         chmod +x,u+s reflect
6266         ./reflect >flect 2>&1
6267         if $contains "/dev/fd" flect >/dev/null; then
6268                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6269                 val="$define"
6270         else
6271                 $cat <<EOM
6272 If you are not sure if they are secure, I can check but I'll need a
6273 username and password different from the one you are using right now.
6274 If you don't have such a username or don't want me to test, simply
6275 enter 'none'.
6276
6277 EOM
6278                 rp='Other username to test security of setuid scripts with?'
6279                 dflt='none'
6280                 . ./myread
6281                 case "$ans" in
6282                 n|none)
6283                         case "$d_suidsafe" in
6284                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6285                                 dflt=n;;
6286                         "$undef")
6287                                 echo "Well, the $hint value is *not* secure." >&4
6288                                 dflt=n;;
6289                         *)      echo "Well, the $hint value *is* secure." >&4
6290                                 dflt=y;;
6291                         esac
6292                         ;;
6293                 *)
6294                         $rm -f reflect flect
6295                         echo "#!$ls" >reflect
6296                         chmod +x,u+s reflect
6297                         echo >flect
6298                         chmod a+w flect
6299                         echo '"su" will (probably) prompt you for '"$ans's password."
6300                         su $ans -c './reflect >flect'
6301                         if $contains "/dev/fd" flect >/dev/null; then
6302                                 echo "Okay, it looks like setuid scripts are secure." >&4
6303                                 dflt=y
6304                         else
6305                                 echo "I don't think setuid scripts are secure." >&4
6306                                 dflt=n
6307                         fi
6308                         ;;
6309                 esac
6310                 rp='Does your kernel have *secure* setuid scripts?'
6311                 . ./myread
6312                 case "$ans" in
6313                 [yY]*)  val="$define";;
6314                 *)      val="$undef";;
6315                 esac
6316         fi
6317 else
6318         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6319         echo "(That's for file descriptors, not floppy disks.)"
6320         val="$undef"
6321 fi
6322 set d_suidsafe
6323 eval $setvar
6324
6325 $rm -f reflect flect
6326
6327 : now see if they want to do setuid emulation
6328 echo " "
6329 val="$undef"
6330 case "$d_suidsafe" in
6331 "$define")
6332         val="$undef"
6333         echo "No need to emulate SUID scripts since they are secure here." >&4
6334         ;;
6335 *)
6336         $cat <<EOM
6337 Some systems have disabled setuid scripts, especially systems where
6338 setuid scripts cannot be secure.  On systems where setuid scripts have
6339 been disabled, the setuid/setgid bits on scripts are currently
6340 useless.  It is possible for $package to detect those bits and emulate
6341 setuid/setgid in a secure fashion.  This emulation will only work if
6342 setuid scripts have been disabled in your kernel.
6343
6344 EOM
6345         case "$d_dosuid" in
6346         "$define") dflt=y ;;
6347         *) dflt=n ;;
6348         esac
6349         rp="Do you want to do setuid/setgid emulation?"
6350         . ./myread
6351         case "$ans" in
6352         [yY]*)  val="$define";;
6353         *)      val="$undef";;
6354         esac
6355         ;;
6356 esac
6357 set d_dosuid
6358 eval $setvar
6359
6360 : Find perl5.005 or later.
6361 echo "Looking for a previously installed perl5.005 or later... "
6362 case "$perl5" in
6363 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6364                 : Check if this perl is recent and can load a simple module
6365                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6366                         perl5=$tdir/perl
6367                         break;
6368                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6369                         perl5=$tdir/perl5
6370                         break;
6371                 fi
6372         done
6373         ;;
6374 *)      perl5="$perl5"
6375         ;;
6376 esac
6377 case "$perl5" in
6378 '')     echo "None found.  That's ok.";;
6379 *)      echo "Using $perl5." ;;
6380 esac
6381
6382 : Set the siteprefix variables
6383 $cat <<EOM
6384
6385 After $package is installed, you may wish to install various
6386 add-on modules and utilities.  Typically, these add-ons will
6387 be installed under $prefix with the rest
6388 of this package.  However, you may wish to install such add-ons
6389 elsewhere under a different prefix.
6390
6391 If you do not wish to put everything under a single prefix, that's
6392 ok.  You will be prompted for the individual locations; this siteprefix
6393 is only used to suggest the defaults.
6394
6395 The default should be fine for most people.
6396
6397 EOM
6398 fn=d~+
6399 rp='Installation prefix to use for add-on modules and utilities?'
6400 : XXX Here might be another good place for an installstyle setting.
6401 case "$siteprefix" in
6402 '') dflt=$prefix ;;
6403 *)  dflt=$siteprefix ;;
6404 esac
6405 . ./getfile
6406 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6407 oldsiteprefix=''
6408 case "$siteprefix" in
6409 '') ;;
6410 *)      case "$ans" in
6411         "$prefix") ;;
6412         *) oldsiteprefix="$prefix";;
6413         esac
6414         ;;
6415 esac
6416 siteprefix="$ans"
6417 siteprefixexp="$ansexp"
6418
6419 : determine where site specific libraries go.
6420 : Usual default is /usr/local/lib/perl5/site_perl/$version
6421 : The default "style" setting is made in installstyle.U
6422 : XXX No longer works with Prefixit stuff.
6423 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6424 case "$sitelib" in
6425 '') case "$installstyle" in
6426         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6427         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6428         esac
6429         ;;
6430 *)      dflt="$sitelib"
6431         ;;
6432 esac
6433 $cat <<EOM
6434
6435 The installation process will create a directory for
6436 site-specific extensions and modules.  Most users find it convenient
6437 to place all site-specific files in this directory rather than in the
6438 main distribution directory.
6439
6440 EOM
6441 fn=d~+
6442 rp='Pathname for the site-specific library files?'
6443 . ./getfile
6444 prefixvar=sitelib
6445 . ./setprefixvar
6446 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6447
6448 : Determine list of previous versions to include in @INC
6449 $cat > getverlist <<EOPL
6450 #!$perl5 -w
6451 use File::Basename;
6452 \$api_versionstring = "$api_versionstring";
6453 \$version = "$version";
6454 \$stem = "$sitelib_stem";
6455 \$archname = "$archname";
6456 EOPL
6457         $cat >> getverlist <<'EOPL'
6458 # The list found is store twice for each entry: the original name, and
6459 # the binary broken down version as pack "sss", so sorting is easy and
6460 # unambiguous. This will work for all versions that have a maximum of
6461 # three digit groups, separate by '.'s or '_'s. Names are extended with
6462 # ".0.0" to ensure at least three elements for the pack.
6463 #                                       -- H.Merijn Brand (m)'06 23-10-2006
6464
6465 # Can't have leading @ because metaconfig interprets it as a command!
6466 ;@inc_version_list=();
6467 # XXX Redo to do opendir/readdir?
6468 if (-d $stem) {
6469     chdir($stem);
6470     ;@candidates = map {
6471         [ $_, pack "sss", split m/[._]/, "$_.0.0" ] } glob("5.*");
6472 }
6473 else {
6474     ;@candidates = ();
6475 }
6476
6477 ($pversion, $aversion, $vsn5005) = map {
6478     pack "sss", split m/[._]/, "$_.0.0" } $version, $api_versionstring, "5.005";
6479 foreach $d (@candidates) {
6480     if ($d->[1] lt $pversion) {
6481         if ($d->[1] ge $aversion) {
6482             unshift(@inc_version_list, grep { -d } $d->[0]."/$archname", $d->[0]);
6483         }
6484         elsif ($d->[1] ge $vsn5005) {
6485             unshift(@inc_version_list, grep { -d } $d->[0]);
6486         }
6487     }
6488     else {
6489         # Skip newer version.  I.e. don't look in
6490         # 5.7.0 if we're installing 5.6.1.
6491     }
6492 }
6493
6494 if (@inc_version_list) {
6495     print join(' ', @inc_version_list);
6496 }
6497 else {
6498     # Blank space to preserve value for next Configure run.
6499     print " ";
6500 }
6501 EOPL
6502 chmod +x getverlist
6503 case "$inc_version_list" in
6504 '')     if test -x "$perl5$exe_ext"; then
6505                 dflt=`$perl5 getverlist`
6506         else
6507                 dflt='none'
6508         fi
6509         ;;
6510 $undef) dflt='none' ;;
6511 *)  eval dflt=\"$inc_version_list\" ;;
6512 esac
6513 case "$dflt" in
6514 ''|' ') dflt=none ;;
6515 esac
6516 case "$dflt" in
6517 5.005) dflt=none ;;
6518 esac
6519 $cat <<EOM
6520
6521 In order to ease the process of upgrading, this version of perl
6522 can be configured to use modules built and installed with earlier
6523 versions of perl that were installed under $prefix.  Specify here
6524 the list of earlier versions that this version of perl should check.
6525 If Configure detected no earlier versions of perl installed under
6526 $prefix, then the list will be empty.  Answer 'none' to tell perl
6527 to not search earlier versions.
6528
6529 The default should almost always be sensible, so if you're not sure,
6530 just accept the default.
6531 EOM
6532
6533 rp='List of earlier versions to include in @INC?'
6534 . ./myread
6535 case "$ans" in
6536 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6537 *) inc_version_list="$ans" ;;
6538 esac
6539 case "$inc_version_list" in
6540 ''|' ')
6541         inc_version_list_init='0'
6542         d_inc_version_list="$undef"
6543         ;;
6544 *)      inc_version_list_init=`echo $inc_version_list |
6545                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6546         d_inc_version_list="$define"
6547         ;;
6548 esac
6549 $rm -f getverlist
6550
6551 : see if this is a malloc.h system
6552 : we want a real compile instead of Inhdr because some systems have a
6553 : malloc.h that just gives a compile error saying to use stdlib.h instead
6554 echo " "
6555 $cat >try.c <<EOCP
6556 #include <stdlib.h>
6557 #include <malloc.h>
6558 int main () { return 0; }
6559 EOCP
6560 set try
6561 if eval $compile; then
6562     echo "<malloc.h> found." >&4
6563     val="$define"
6564 else
6565     echo "<malloc.h> NOT found." >&4
6566     val="$undef"
6567 fi
6568 $rm_try
6569 set i_malloc
6570 eval $setvar
6571
6572 : check for void type
6573 echo " "
6574 echo "Checking to see how well your C compiler groks the void type..." >&4
6575 case "$voidflags" in
6576 '')
6577         $cat >try.c <<EOCP
6578 #$i_stdlib I_STDLIB
6579 #ifdef I_STDLIB
6580 #include <stdlib.h>
6581 #endif
6582 #if TRY & 1
6583 void sub() {
6584 #else
6585 sub() {
6586 #endif
6587         extern void moo();      /* function returning void */
6588         void (*goo)();          /* ptr to func returning void */
6589 #if TRY & 8
6590         void *hue;              /* generic ptr */
6591 #endif
6592 #if TRY & 2
6593         void (*foo[10])();
6594 #endif
6595
6596 #if TRY & 4
6597         if(goo == moo) {
6598                 exit(0);
6599         }
6600 #endif
6601         exit(0);
6602 }
6603 int main() { sub(); }
6604 EOCP
6605         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6606                 voidflags=$defvoidused
6607         echo "Good.  It appears to support void to the level $package wants.">&4
6608                 if $contains warning .out >/dev/null 2>&1; then
6609                         echo "However, you might get some warnings that look like this:"
6610                         $cat .out
6611                 fi
6612         else
6613 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6614                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6615                         echo "It supports 1..."
6616                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6617                                 echo "It also supports 2..."
6618                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6619                                         voidflags=7
6620                                         echo "And it supports 4 but not 8 definitely."
6621                                 else
6622                                         echo "It doesn't support 4..."
6623                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6624                                                 voidflags=11
6625                                                 echo "But it supports 8."
6626                                         else
6627                                                 voidflags=3
6628                                                 echo "Neither does it support 8."
6629                                         fi
6630                                 fi
6631                         else
6632                                 echo "It does not support 2..."
6633                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6634                                         voidflags=13
6635                                         echo "But it supports 4 and 8."
6636                                 else
6637                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6638                                                 voidflags=5
6639                                                 echo "And it supports 4 but has not heard about 8."
6640                                         else
6641                                                 echo "However it supports 8 but not 4."
6642                                         fi
6643                                 fi
6644                         fi
6645                 else
6646                         echo "There is no support at all for void."
6647                         voidflags=0
6648                 fi
6649         fi
6650 esac
6651 case "$voidflags" in
6652 "$defvoidused") ;;
6653 *)      $cat >&4 <<'EOM'
6654   Support flag bits are:
6655     1: basic void declarations.
6656     2: arrays of pointers to functions returning void.
6657     4: operations between pointers to and addresses of void functions.
6658     8: generic void pointers.
6659 EOM
6660         dflt="$voidflags";
6661         rp="Your void support flags add up to what?"
6662         . ./myread
6663         voidflags="$ans"
6664         ;;
6665 esac
6666 $rm_try
6667
6668 : check for length of pointer
6669 echo " "
6670 case "$ptrsize" in
6671 '')
6672         echo "Checking to see how big your pointers are..." >&4
6673         if test "$voidflags" -gt 7; then
6674                 echo '#define VOID_PTR char *' > try.c
6675         else
6676                 echo '#define VOID_PTR void *' > try.c
6677         fi
6678         $cat >>try.c <<EOCP
6679 #include <stdio.h>
6680 #$i_stdlib I_STDLIB
6681 #ifdef I_STDLIB
6682 #include <stdlib.h>
6683 #endif
6684 int main()
6685 {
6686     printf("%d\n", (int)sizeof(VOID_PTR));
6687     exit(0);
6688 }
6689 EOCP
6690         set try
6691         if eval $compile_ok; then
6692                 ptrsize=`$run ./try`
6693                 echo "Your pointers are $ptrsize bytes long."
6694         else
6695                 dflt='4'
6696                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6697                 rp="What is the size of a pointer (in bytes)?"
6698                 . ./myread
6699                 ptrsize="$ans"
6700         fi
6701         ;;
6702 esac
6703 $rm_try
6704 case "$use64bitall" in
6705 "$define"|true|[yY]*)
6706         case "$ptrsize" in
6707         4)      cat <<EOM >&4
6708
6709 *** You have chosen a maximally 64-bit build,
6710 *** but your pointers are only 4 bytes wide.
6711 *** Please rerun Configure without -Duse64bitall.
6712 EOM
6713                 case "$d_quad" in
6714                 define)
6715                         cat <<EOM >&4
6716 *** Since you have quads, you could possibly try with -Duse64bitint.
6717 EOM
6718                         ;;
6719                 esac
6720                 cat <<EOM >&4
6721 *** Cannot continue, aborting.
6722
6723 EOM
6724
6725                 exit 1
6726                 ;;
6727         esac
6728         ;;
6729 esac
6730
6731
6732 : determine whether to use malloc wrapping
6733 echo " "
6734 case "$usemallocwrap" in
6735 [yY]*|true|$define)     dflt='y' ;;
6736 [nN]*|false|$undef)     dflt='n' ;;
6737 *)      case "$usedevel" in
6738         [yY]*|true|$define)     dflt='y' ;;
6739         *) dflt='n' ;;
6740         esac
6741         ;;
6742 esac
6743 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6744 . ./myread
6745 usemallocwrap="$ans"
6746 case "$ans" in
6747 y*|true)
6748         usemallocwrap="$define" ;;
6749 *)
6750         usemallocwrap="$undef" ;;
6751 esac
6752
6753 : determine which malloc to compile in
6754 echo " "
6755 case "$usemymalloc" in
6756 [yY]*|true|$define)     dflt='y' ;;
6757 [nN]*|false|$undef)     dflt='n' ;;
6758 *)      case "$ptrsize" in
6759         4) dflt='y' ;;
6760         *) dflt='n' ;;
6761         esac
6762         ;;
6763 esac
6764 rp="Do you wish to attempt to use the malloc that comes with $package?"
6765 . ./myread
6766 usemymalloc="$ans"
6767 case "$ans" in
6768 y*|true)
6769         usemymalloc='y'
6770         mallocsrc='malloc.c'
6771         mallocobj="malloc$_o"
6772         d_mymalloc="$define"
6773         case "$libs" in
6774         *-lmalloc*)
6775                 : Remove malloc from list of libraries to use
6776                 echo "Removing unneeded -lmalloc from library list" >&4
6777                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6778                 shift
6779                 libs="$*"
6780                 echo "libs = $libs" >&4
6781                 ;;
6782         esac
6783         ;;
6784 *)
6785         usemymalloc='n'
6786         mallocsrc=''
6787         mallocobj=''
6788         d_mymalloc="$undef"
6789         ;;
6790 esac
6791
6792 : compute the return types of malloc and free
6793 echo " "
6794 $cat >malloc.c <<END
6795 #$i_malloc I_MALLOC
6796 #$i_stdlib I_STDLIB
6797 #include <stdio.h>
6798 #include <sys/types.h>
6799 #ifdef I_MALLOC
6800 #include <malloc.h>
6801 #endif
6802 #ifdef I_STDLIB
6803 #include <stdlib.h>
6804 #endif
6805 #ifdef TRY_MALLOC
6806 void *malloc();
6807 #endif
6808 #ifdef TRY_FREE
6809 void free();
6810 #endif
6811 END
6812 case "$malloctype" in
6813 '')
6814         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6815                 malloctype='void *'
6816         else
6817                 malloctype='char *'
6818         fi
6819         ;;
6820 esac
6821 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6822
6823 case "$freetype" in
6824 '')
6825         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6826                 freetype='void'
6827         else
6828                 freetype='int'
6829         fi
6830         ;;
6831 esac
6832 echo "Your system uses $freetype free(), it would seem." >&4
6833 $rm -f malloc.[co]
6834 : determine where site specific architecture-dependent libraries go.
6835 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6836 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6837 : sitelib may have an optional trailing /share.
6838 case "$sitearch" in
6839 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6840         dflt="$dflt/$archname"
6841         ;;
6842 *)      dflt="$sitearch"
6843         ;;
6844 esac
6845 set sitearch sitearch none
6846 eval $prefixit
6847 $cat <<EOM
6848
6849 The installation process will also create a directory for
6850 architecture-dependent site-specific extensions and modules.
6851
6852 EOM
6853 fn=d~+
6854 rp='Pathname for the site-specific architecture-dependent library files?'
6855 . ./getfile
6856 prefixvar=sitearch
6857 . ./setprefixvar
6858 if $test X"$sitearch" = X"$sitelib"; then
6859         d_sitearch="$undef"
6860 else
6861         d_sitearch="$define"
6862 fi
6863
6864 : Set the vendorprefix variables
6865 $cat <<EOM
6866
6867 The installation process will also create a directory for
6868 vendor-supplied add-ons.  Vendors who supply perl with their system
6869 may find it convenient to place all vendor-supplied files in this
6870 directory rather than in the main distribution directory.  This will
6871 ease upgrades between binary-compatible maintenance versions of perl.
6872
6873 Of course you may also use these directories in whatever way you see
6874 fit.  For example, you might use them to access modules shared over a
6875 company-wide network.
6876
6877 The default answer should be fine for most people.
6878 This causes further questions about vendor add-ons to be skipped
6879 and no vendor-specific directories will be configured for perl.
6880
6881 EOM
6882 rp='Do you want to configure vendor-specific add-on directories?'
6883 case "$usevendorprefix" in
6884 define|true|[yY]*) dflt=y ;;
6885 *)      : User may have set vendorprefix directly on Configure command line.
6886         case "$vendorprefix" in
6887         ''|' ') dflt=n ;;
6888         *)      dflt=y ;;
6889         esac
6890         ;;
6891 esac
6892 . ./myread
6893 case "$ans" in
6894 [yY]*)  fn=d~+
6895         rp='Installation prefix to use for vendor-supplied add-ons?'
6896         case "$vendorprefix" in
6897         '') dflt='' ;;
6898         *)  dflt=$vendorprefix ;;
6899         esac
6900         . ./getfile
6901         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6902         oldvendorprefix=''
6903         case "$vendorprefix" in
6904         '') ;;
6905         *)      case "$ans" in
6906                 "$prefix") ;;
6907                 *) oldvendorprefix="$prefix";;
6908                 esac
6909                 ;;
6910         esac
6911         usevendorprefix="$define"
6912         vendorprefix="$ans"
6913         vendorprefixexp="$ansexp"
6914         ;;
6915 *)      usevendorprefix="$undef"
6916         vendorprefix=''
6917         vendorprefixexp=''
6918         ;;
6919 esac
6920
6921 : Set the vendorlib variables
6922 case "$vendorprefix" in
6923 '')     d_vendorlib="$undef"
6924         vendorlib=''
6925         vendorlibexp=''
6926         ;;
6927 *)      d_vendorlib="$define"
6928         : determine where vendor-supplied modules go.
6929         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6930         case "$vendorlib" in
6931         '')
6932                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6933                 case "$installstyle" in
6934                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6935                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6936                 esac
6937                 ;;
6938         *)      dflt="$vendorlib"
6939                 ;;
6940         esac
6941         fn=d~+
6942         rp='Pathname for the vendor-supplied library files?'
6943         . ./getfile
6944         vendorlib="$ans"
6945         vendorlibexp="$ansexp"
6946         ;;
6947 esac
6948 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6949 prefixvar=vendorlib
6950 . ./installprefix
6951
6952 : Set the vendorarch variables
6953 case "$vendorprefix" in
6954 '')     d_vendorarch="$undef"
6955         vendorarch=''
6956         vendorarchexp=''
6957         ;;
6958 *)      d_vendorarch="$define"
6959         : determine where vendor-supplied architecture-dependent libraries go.
6960         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6961         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6962         : vendorlib may have an optional trailing /share.
6963         case "$vendorarch" in
6964         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6965                 dflt="$dflt/$archname"
6966                 ;;
6967         *)      dflt="$vendorarch" ;;
6968         esac
6969         fn=d~+
6970         rp='Pathname for vendor-supplied architecture-dependent files?'
6971         . ./getfile
6972         vendorarch="$ans"
6973         vendorarchexp="$ansexp"
6974         ;;
6975 esac
6976 prefixvar=vendorarch
6977 . ./installprefix
6978
6979 : Final catch-all directories to search
6980 $cat <<EOM
6981
6982 Lastly, you can have perl look in other directories for extensions and
6983 modules in addition to those already specified.
6984 These directories will be searched after 
6985         $sitearch 
6986         $sitelib 
6987 EOM
6988 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6989 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6990 echo ' '
6991 case "$otherlibdirs" in
6992 ''|' ') dflt='none' ;;
6993 *)      dflt="$otherlibdirs" ;;
6994 esac
6995 $cat <<EOM
6996 Enter a colon-separated set of extra paths to include in perl's @INC
6997 search path, or enter 'none' for no extra paths.
6998
6999 EOM
7000
7001 rp='Colon-separated list of additional directories for perl to search?'
7002 . ./myread
7003 case "$ans" in
7004 ' '|''|none)    otherlibdirs=' ' ;;     
7005 *)      otherlibdirs="$ans" ;;
7006 esac
7007 case "$otherlibdirs" in
7008 ' ') val=$undef ;;
7009 *)      val=$define ;;
7010 esac
7011 set d_perl_otherlibdirs
7012 eval $setvar
7013
7014 : Cruising for prototypes
7015 echo " "
7016 echo "Checking out function prototypes..." >&4
7017 $cat >prototype.c <<EOCP
7018 #$i_stdlib I_STDLIB
7019 #ifdef I_STDLIB
7020 #include <stdlib.h>
7021 #endif
7022 int main(int argc, char *argv[]) {
7023         exit(0);}
7024 EOCP
7025 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7026         echo "Your C compiler appears to support function prototypes."
7027         val="$define"
7028 else
7029         echo "Your C compiler doesn't seem to understand function prototypes."
7030         val="$undef"
7031 fi
7032 set prototype
7033 eval $setvar
7034 $rm -f prototype*
7035
7036 : Check if ansi2knr is required
7037 case "$prototype" in
7038 "$define") ;;
7039 *)      ansi2knr='ansi2knr'
7040         echo " "
7041         cat <<EOM >&4
7042
7043 $me:  FATAL ERROR:
7044 This version of $package can only be compiled by a compiler that 
7045 understands function prototypes.  Unfortunately, your C compiler 
7046         $cc $ccflags
7047 doesn't seem to understand them.  Sorry about that.
7048
7049 If GNU cc is available for your system, perhaps you could try that instead.  
7050
7051 Eventually, we hope to support building Perl with pre-ANSI compilers.
7052 If you would like to help in that effort, please contact <perlbug@perl.org>.
7053
7054 Aborting Configure now.
7055 EOM
7056         exit 2
7057         ;;
7058 esac
7059
7060 : See if we want extra modules installed
7061 echo " "
7062 case "$extras" in
7063 '') dflt='n';;
7064 *) dflt='y';;
7065 esac
7066 cat <<EOM
7067 Perl can be built with extra modules or bundles of modules which
7068 will be fetched from the CPAN and installed alongside Perl.
7069
7070 Notice that you will need access to the CPAN; either via the Internet,
7071 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
7072 be asked later to configure the CPAN.pm module which will in turn do
7073 the installation of the rest of the extra modules or bundles.)
7074
7075 Notice also that if the modules require any external software such as
7076 libraries and headers (the libz library and the zlib.h header for the
7077 Compress::Zlib module, for example) you MUST have any such software
7078 already installed, this configuration process will NOT install such
7079 things for you.
7080
7081 If this doesn't make any sense to you, just accept the default '$dflt'.
7082 EOM
7083 rp='Install any extra modules (y or n)?'
7084 . ./myread
7085 case "$ans" in
7086 y|Y)
7087         cat <<EOM
7088
7089 Please list any extra modules or bundles to be installed from CPAN,
7090 with spaces between the names.  The names can be in any format the
7091 'install' command of CPAN.pm will understand.  (Answer 'none',
7092 without the quotes, to install no extra modules or bundles.)
7093 EOM
7094         rp='Extras?'
7095         dflt="$extras"
7096         . ./myread
7097         extras="$ans"
7098 esac
7099 case "$extras" in
7100 ''|'none')
7101         val=''
7102         $rm -f ../extras.lst
7103         ;;
7104 *)      echo "(Saving the list of extras for later...)"
7105         echo "$extras" > ../extras.lst
7106         val="'$extras'"
7107         ;;
7108 esac
7109 set extras
7110 eval $setvar
7111 echo " "
7112
7113 : determine where html pages for programs go
7114 set html1dir html1dir none
7115 eval $prefixit
7116 $cat <<EOM
7117
7118 If you wish to install html files for programs in $spackage, indicate
7119 the appropriate directory here.  To skip installing html files,
7120 answer "none".
7121 EOM
7122 case "$html1dir" in
7123 ''|none|$undef|' ') dflt=none ;;
7124 *) dflt=$html1dir ;;
7125 esac
7126 fn=dn+~
7127 rp="Directory for the main $spackage html pages?"
7128 . ./getfile
7129 prefixvar=html1dir
7130 . ./setprefixvar
7131 : Use ' ' for none so value is preserved next time through Configure
7132 $test X"$html1dir" = "X" && html1dir=' '
7133
7134 : determine where html pages for libraries and modules go
7135 set html3dir html3dir none
7136 eval $prefixit
7137 $cat <<EOM
7138
7139 If you wish to install html files for modules associated with $spackage,
7140 indicate the appropriate directory here.  To skip installing html files,
7141 answer "none".
7142 EOM
7143 : There is no obvious default.  If they have specified html1dir, then
7144 : try to key off that, possibly changing .../html1 into .../html3.
7145 case "$html3dir" in
7146 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
7147 *) dflt=$html3dir ;;
7148 esac
7149 fn=dn+~
7150 rp="Directory for the $spackage module html pages?"
7151 . ./getfile
7152 prefixvar=html3dir
7153 . ./setprefixvar
7154 : Use ' ' for none so value is preserved next time through Configure
7155 $test X"$html3dir" = "X" && html3dir=' '
7156
7157 : determine whether to install perl also as /usr/bin/perl
7158
7159 echo " "
7160 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7161         $cat <<EOM
7162 Many scripts expect perl to be installed as /usr/bin/perl.
7163
7164 If you want to, I can install the perl you are about to compile
7165 as /usr/bin/perl (in addition to $bin/perl).
7166 EOM
7167         if test -f /usr/bin/perl; then
7168             $cat <<EOM
7169
7170 However, please note that because you already have a /usr/bin/perl,
7171 overwriting that with a new Perl would very probably cause problems.
7172 Therefore I'm assuming you don't want to do that (unless you insist).
7173
7174 EOM
7175             case "$installusrbinperl" in
7176             "$define"|[yY]*)    dflt='y';;
7177             *)                  dflt='n';;
7178             esac
7179         else
7180             $cat <<EOM
7181
7182 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
7183
7184 EOM
7185             case "$installusrbinperl" in
7186             "$undef"|[nN]*)     dflt='n';;
7187             *)                  dflt='y';;
7188             esac
7189         fi
7190         rp="Do you want to install perl as /usr/bin/perl?"
7191         . ./myread
7192         case "$ans" in
7193         [yY]*)  val="$define";;
7194         *)      val="$undef" ;;
7195         esac
7196 else
7197         val="$undef"
7198 fi
7199 set installusrbinperl
7200 eval $setvar
7201
7202 : Check if we are using the GNU C library
7203 echo " "
7204 echo "Checking for GNU C Library..." >&4
7205 cat >try.c <<'EOCP'
7206 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
7207    alone are insufficient to distinguish different versions, such as
7208    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
7209    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
7210 */
7211 #include <stdio.h>
7212 int main(void)
7213 {
7214 #ifdef __GLIBC__
7215 #   ifdef __GLIBC_MINOR__
7216 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 && !defined(__cplusplus)
7217 #           include <gnu/libc-version.h>
7218             printf("%s\n",  gnu_get_libc_version());
7219 #       else
7220             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
7221 #       endif
7222 #   else
7223         printf("%d\n",  __GLIBC__);
7224 #   endif
7225     return 0;
7226 #else
7227     return 1;
7228 #endif
7229 }
7230 EOCP
7231 set try
7232 if eval $compile_ok && $run ./try > glibc.ver; then
7233         val="$define"
7234         gnulibc_version=`$cat glibc.ver`
7235         echo "You are using the GNU C Library version $gnulibc_version"
7236 else
7237         val="$undef"
7238         gnulibc_version=''
7239         echo "You are not using the GNU C Library"
7240 fi
7241 $rm_try glibc.ver
7242 set d_gnulibc
7243 eval $setvar
7244
7245 : see if nm is to be used to determine whether a symbol is defined or not
7246 case "$usenm" in
7247 '')
7248         dflt=''
7249         case "$d_gnulibc" in
7250         "$define")
7251                 echo " "
7252                 echo "nm probably won't work on the GNU C Library." >&4
7253                 dflt=n
7254                 ;;
7255         esac
7256         case "$dflt" in
7257         '') 
7258                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7259                         echo " "
7260                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
7261                         echo "'nm' won't be sufficient on this sytem." >&4
7262                         dflt=n
7263                 fi
7264                 ;;
7265         esac
7266         case "$dflt" in
7267         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7268                 if $test $dflt -gt 20; then
7269                         dflt=y
7270                 else
7271                         dflt=n
7272                 fi
7273                 ;;
7274         esac
7275         ;;
7276 *)
7277         case "$usenm" in
7278         true|$define) dflt=y;;
7279         *) dflt=n;;
7280         esac
7281         ;;
7282 esac
7283 $cat <<EOM
7284
7285 I can use $nm to extract the symbols from your C libraries. This
7286 is a time consuming task which may generate huge output on the disk (up
7287 to 3 megabytes) but that should make the symbols extraction faster. The
7288 alternative is to skip the 'nm' extraction part and to compile a small
7289 test program instead to determine whether each symbol is present. If
7290 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7291 this may be the best solution.
7292
7293 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7294
7295 EOM
7296 rp="Shall I use $nm to extract C symbols from the libraries?"
7297 . ./myread
7298 case "$ans" in
7299 [Nn]*) usenm=false;;
7300 *) usenm=true;;
7301 esac
7302
7303 runnm=$usenm
7304 case "$reuseval" in
7305 true) runnm=false;;
7306 esac
7307
7308 : nm options which may be necessary
7309 case "$nm_opt" in
7310 '') if $test -f /mach_boot; then
7311                 nm_opt=''       # Mach
7312         elif $test -d /usr/ccs/lib; then
7313                 nm_opt='-p'     # Solaris (and SunOS?)
7314         elif $test -f /dgux; then
7315                 nm_opt='-p'     # DG-UX
7316         elif $test -f /lib64/rld; then
7317                 nm_opt='-p'     # 64-bit Irix
7318         else
7319                 nm_opt=''
7320         fi;;
7321 esac
7322
7323 : nm options which may be necessary for shared libraries but illegal
7324 : for archive libraries.  Thank you, Linux.
7325 case "$nm_so_opt" in
7326 '')     case "$myuname" in
7327         *linux*|gnu*)
7328                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7329                         nm_so_opt='--dynamic'
7330                 fi
7331                 ;;
7332         esac
7333         ;;
7334 esac
7335
7336 case "$runnm" in
7337 true)
7338 : get list of predefined functions in a handy place
7339 echo " "
7340 case "$libc" in
7341 '') libc=unknown
7342         case "$libs" in
7343         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7344         esac
7345         ;;
7346 esac
7347 case "$libs" in
7348 '') ;;
7349 *)  for thislib in $libs; do
7350         case "$thislib" in
7351         -lc|-lc_s)
7352                 : Handle C library specially below.
7353                 ;;
7354         -l*)
7355                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7356                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7357                         :
7358                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7359                         :
7360                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7361                         :
7362                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7363                         :
7364                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7365                         :
7366                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7367                         :
7368                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7369                         :
7370                 else
7371                         try=''
7372                 fi
7373                 libnames="$libnames $try"
7374                 ;;
7375         *) libnames="$libnames $thislib" ;;
7376         esac
7377         done
7378         ;;
7379 esac
7380 xxx=normal
7381 case "$libc" in
7382 unknown)
7383         set /lib/libc.$so
7384         for xxx in $libpth; do
7385                 $test -r $1 || set $xxx/libc.$so
7386                 : The messy sed command sorts on library version numbers.
7387                 $test -r $1 || \
7388                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7389                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7390                                 h
7391                                 s/[0-9][0-9]*/0000&/g
7392                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7393                                 G
7394                                 s/\n/ /' | \
7395                          $sort | $sed -e 's/^.* //'`
7396                 eval set \$$#
7397         done
7398         $test -r $1 || set /usr/ccs/lib/libc.$so
7399         $test -r $1 || set /lib/libsys_s$_a
7400         ;;
7401 *)
7402         set blurfl
7403         ;;
7404 esac
7405 if $test -r "$1"; then
7406         echo "Your (shared) C library seems to be in $1."
7407         libc="$1"
7408 elif $test -r /lib/libc && $test -r /lib/clib; then
7409         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7410         xxx=apollo
7411         libc='/lib/clib /lib/libc'
7412         if $test -r /lib/syslib; then
7413                 echo "(Your math library is in /lib/syslib.)"
7414                 libc="$libc /lib/syslib"
7415         fi
7416 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7417         echo "Your C library seems to be in $libc, as you said before."
7418 elif $test -r $incpath/usr/lib/libc$_a; then
7419         libc=$incpath/usr/lib/libc$_a;
7420         echo "Your C library seems to be in $libc.  That's fine."
7421 elif $test -r /lib/libc$_a; then
7422         libc=/lib/libc$_a;
7423         echo "Your C library seems to be in $libc.  You're normal."
7424 else
7425         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7426                 :
7427         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7428                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7429         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7430                 :
7431         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7432                 :
7433         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7434                 :
7435         else
7436                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7437         fi
7438         if $test -r "$tans"; then
7439                 echo "Your C library seems to be in $tans, of all places."
7440                 libc=$tans
7441         else
7442                 libc='blurfl'
7443         fi
7444 fi
7445 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7446         dflt="$libc"
7447         cat <<EOM
7448
7449 If the guess above is wrong (which it might be if you're using a strange
7450 compiler, or your machine supports multiple models), you can override it here.
7451
7452 EOM
7453 else
7454         dflt=''
7455         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7456         cat >&4 <<EOM
7457 I can't seem to find your C library.  I've looked in the following places:
7458
7459 EOM
7460         $sed 's/^/      /' libpath
7461         cat <<EOM
7462
7463 None of these seems to contain your C library. I need to get its name...
7464
7465 EOM
7466 fi
7467 fn=f
7468 rp='Where is your C library?'
7469 . ./getfile
7470 libc="$ans"
7471
7472 echo " "
7473 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7474 set X `cat libnames`
7475 shift
7476 xxx=files
7477 case $# in 1) xxx=file; esac
7478 echo "Extracting names from the following $xxx for later perusal:" >&4
7479 echo " "
7480 $sed 's/^/      /' libnames >&4
7481 echo " "
7482 $echo $n "This may take a while...$c" >&4
7483
7484 for file in $*; do
7485         case $file in
7486         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7487         *) $nm $nm_opt $file 2>/dev/null;;
7488         esac
7489 done >libc.tmp
7490
7491 $echo $n ".$c"
7492 $grep fprintf libc.tmp > libc.ptf
7493 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7494 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7495 xxx='[ADTSIW]'
7496 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7497         eval $xscan;\
7498         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7499                 eval $xrun
7500 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7501         eval $xscan;\
7502         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7503                 eval $xrun
7504 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7505         eval $xscan;\
7506         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7507                 eval $xrun
7508 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7509         eval $xscan;\
7510         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7511                 eval $xrun
7512 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7513         eval $xscan;\
7514         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7515                 eval $xrun
7516 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7517         eval $xscan;\
7518         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7519                 eval $xrun
7520 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7521                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7522         eval $xscan;\
7523         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7524                 eval $xrun
7525 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7526         eval $xscan;\
7527         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7528                 eval $xrun
7529 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7530         eval $xscan;\
7531         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7532                 eval $xrun
7533 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7534         eval $xscan;\
7535         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7536                 eval $xrun
7537 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7538         eval $xscan;\
7539         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7540                 eval $xrun
7541 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7542         eval $xscan;\
7543         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7544                 eval $xrun
7545 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7546         eval $xscan;\
7547         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7548                 eval $xrun
7549 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7550         eval $xscan;\
7551         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7552                 eval $xrun
7553 else
7554         $nm -p $* 2>/dev/null >libc.tmp
7555         $grep fprintf libc.tmp > libc.ptf
7556         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7557                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7558         then
7559                 nm_opt='-p'
7560                 eval $xrun
7561         else
7562                 echo " "
7563                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7564                 com=''
7565                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7566                         for thisname in $libnames $libc; do
7567                                 $ar t $thisname >>libc.tmp
7568                         done
7569                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7570                         echo "Ok." >&4
7571                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7572                         # Repeat libc to extract forwarders to DLL entries too
7573                         for thisname in $libnames $libc; do
7574                                 $ar tv $thisname >>libc.tmp
7575                                 # Revision 50 of EMX has bug in $ar.
7576                                 # it will not extract forwarders to DLL entries
7577                                 # Use emximp which will extract exactly them.
7578                                 emximp -o tmp.imp $thisname \
7579                                     2>/dev/null && \
7580                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7581                                     < tmp.imp >>libc.tmp
7582                                 $rm tmp.imp
7583                         done
7584                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7585                         echo "Ok." >&4
7586                 else
7587                         echo "$ar didn't seem to work right." >&4
7588                         echo "Maybe this is a Cray...trying bld instead..." >&4
7589                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7590                         then
7591                                 for thisname in $libnames; do
7592                                         bld t $libnames | \
7593                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7594                                         $ar t $thisname >>libc.tmp
7595                                 done
7596                                 echo "Ok." >&4
7597                         else
7598                                 echo "That didn't work either.  Giving up." >&4
7599                                 exit 1
7600                         fi
7601                 fi
7602         fi
7603 fi
7604 nm_extract="$com"
7605 case "$PASE" in
7606 define)
7607     echo " "
7608     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7609     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7610     ;;
7611 *)  if $test -f /lib/syscalls.exp; then
7612         echo " "
7613         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7614         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7615     fi
7616     ;;
7617 esac
7618 ;;
7619 esac
7620 $rm -f libnames libpath
7621
7622 : see if dld is available
7623 set dld.h i_dld
7624 eval $inhdr
7625
7626 : Check if we are using C++
7627 echo " "
7628 echo "Checking for C++..." >&4
7629 $cat >try.c <<'EOCP'
7630 #include <stdio.h>
7631 int main(void)
7632 {
7633 #ifdef __cplusplus
7634     return 0;
7635 #else
7636     return 1;
7637 #endif
7638 }
7639 EOCP
7640 set try
7641 if eval $compile_ok && $run ./try; then
7642         val="$define"
7643         echo "You are using a C++ compiler."
7644 else
7645         val="$undef"
7646         echo "You are not using a C++ compiler."
7647 fi
7648 $rm_try cplusplus$$
7649 set d_cplusplus
7650 eval $setvar
7651
7652 : is a C symbol defined?
7653 csym='tlook=$1;
7654 case "$3" in
7655 -v) tf=libc.tmp; tdc="";;
7656 -a) tf=libc.tmp; tdc="[]";;
7657 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7658 esac;
7659 tx=yes;
7660 case "$reuseval-$4" in
7661 true-) ;;
7662 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7663 esac;
7664 case "$tx" in
7665 yes)
7666         tval=false;
7667         case "$d_cplusplus" in
7668                 $define) extern_C=\"C\";;
7669         esac;
7670         if $test "$runnm" = true; then
7671                 if $contains $tlook $tf >/dev/null 2>&1; then
7672                         tval=true;
7673                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7674                         echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7675                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7676                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7677                         $rm_try;
7678                 fi;
7679         else
7680                 echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7681                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7682                 $rm_try;
7683         fi;
7684         ;;
7685 *)
7686         case "$tval" in
7687         $define) tval=true;;
7688         *) tval=false;;
7689         esac;
7690         ;;
7691 esac;
7692 eval "$2=$tval"'
7693
7694 : define an is-in-libc? function
7695 inlibc='echo " "; td=$define; tu=$undef;
7696 sym=$1; var=$2; eval "was=\$$2";
7697 tx=yes;
7698 case "$reuseval$was" in
7699 true) ;;
7700 true*) tx=no;;
7701 esac;
7702 case "$tx" in
7703 yes)
7704         set $sym tres -f;
7705         eval $csym;
7706         case "$tres" in
7707         true)
7708                 echo "$sym() found." >&4;
7709                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7710         *)
7711                 echo "$sym() NOT found." >&4;
7712                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7713         esac;;
7714 *)
7715         case "$was" in
7716         $define) echo "$sym() found." >&4;;
7717         *) echo "$sym() NOT found." >&4;;
7718         esac;;
7719 esac'
7720
7721 : see if dlopen exists
7722 xxx_runnm="$runnm"
7723 xxx_ccflags="$ccflags"
7724 runnm=false
7725 : with g++ one needs -shared to get is-in-libc to work for dlopen
7726 case "$gccversion" in
7727 '')     ;;
7728 *)      case "$d_cplusplus" in
7729         "$define") ccflags="$ccflags -shared" ;;
7730         esac
7731         ;;
7732 esac
7733 set dlopen d_dlopen
7734 eval $inlibc
7735 runnm="$xxx_runnm"
7736 ccflags="$xxx_ccflags"
7737
7738 : see if this is a unistd.h system
7739 set unistd.h i_unistd
7740 eval $inhdr
7741
7742 : determine which dynamic loading, if any, to compile in
7743 echo " "
7744 dldir="ext/DynaLoader"
7745 case "$usedl" in
7746 $define|y|true)
7747         dflt='y'
7748         usedl="$define"
7749         ;;
7750 $undef|n|false)
7751         dflt='n'
7752         usedl="$undef"
7753         ;;
7754 *)
7755         dflt='n'
7756         case "$d_dlopen" in
7757             $define) dflt='y' ;;
7758         esac
7759         case "$i_dld" in
7760             $define) dflt='y' ;;
7761         esac
7762         : Does a dl_xxx.xs file exist for this operating system
7763         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7764         ;;
7765 esac
7766 rp="Do you wish to use dynamic loading?"
7767 . ./myread
7768 usedl="$ans"
7769 case "$ans" in
7770 y*) usedl="$define"
7771         case "$dlsrc" in
7772         '')
7773                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7774                         dflt="$dldir/dl_${osname}.xs"
7775                 elif $test "$d_dlopen" = "$define" ; then
7776                         dflt="$dldir/dl_dlopen.xs"
7777                 elif $test "$i_dld" = "$define" ; then
7778                         dflt="$dldir/dl_dld.xs"
7779                 else
7780                         dflt=''
7781                 fi
7782                 ;;
7783         *)      dflt="$dldir/$dlsrc"
7784                 ;;
7785         esac
7786     echo "The following dynamic loading files are available:"
7787         : Can not go over to $dldir because getfile has path hard-coded in.
7788         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7789         rp="Source file to use for dynamic loading"
7790         fn="fne"
7791         gfpth="$src"
7792         . ./getfile
7793         usedl="$define"
7794         : emulate basename
7795         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7796
7797         $cat << EOM
7798
7799 Some systems may require passing special flags to $cc -c to
7800 compile modules that will be used to create a shared library.
7801 To use no flags, say "none".
7802
7803 EOM
7804     case "$cccdlflags" in
7805     '') case "$gccversion" in
7806                 '') case "$osname" in
7807                         hpux)   dflt='+z' ;;
7808                         next)   dflt='none' ;;
7809                         irix*)  dflt='-KPIC' ;;
7810                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7811                         sunos)  dflt='-pic' ;;
7812                         *)      dflt='none' ;;
7813                     esac
7814                         ;;
7815                 *)  case "$osname" in
7816                         darwin) dflt='none' ;;
7817                         linux*|svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7818                         *)      dflt='-fpic' ;;
7819                     esac ;;
7820             esac ;;
7821         ' ') dflt='none' ;;
7822     *)  dflt="$cccdlflags" ;;
7823     esac
7824     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7825     . ./myread
7826     case "$ans" in
7827     none) cccdlflags=' ' ;;
7828     *) cccdlflags="$ans" ;;
7829     esac
7830
7831     cat << EOM
7832
7833 Some systems use ld to create libraries that can be dynamically loaded,
7834 while other systems (such as those using ELF) use $cc.
7835
7836 EOM
7837         case "$ld" in
7838         '')     $cat >try.c <<EOM
7839 /* Test for whether ELF binaries are produced */
7840 #include <fcntl.h>
7841 #$i_stdlib I_STDLIB
7842 #ifdef I_STDLIB
7843 #include <stdlib.h>
7844 #endif
7845 #$i_unistd I_UNISTD
7846 #ifdef I_UNISTD
7847 #include <unistd.h>
7848 #endif
7849 int main() {
7850         char b[4];
7851         int i = open("a.out",O_RDONLY);
7852         if(i == -1)
7853                 exit(1); /* fail */
7854         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7855                 exit(0); /* succeed (yes, it's ELF) */
7856         else
7857                 exit(1); /* fail */
7858 }
7859 EOM
7860                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7861                         cat <<EOM
7862 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7863 EOM
7864                         dflt="$cc"
7865                 else
7866                         echo "I'll use ld to build dynamic libraries."
7867                         dflt='ld'
7868                 fi
7869                 $rm_try
7870                 ;;
7871         *)      dflt="$ld"
7872                 ;;
7873         esac
7874
7875     rp="What command should be used to create dynamic libraries?"
7876     . ./myread
7877         ld="$ans"
7878
7879     cat << EOM
7880
7881 Some systems may require passing special flags to $ld to create a
7882 library that can be dynamically loaded.  If your ld flags include
7883 -L/other/path options to locate libraries outside your loader's normal
7884 search path, you may need to specify those -L options here as well.  To
7885 use no flags, say "none".
7886
7887 EOM
7888     case "$lddlflags" in
7889     '') case "$osname" in
7890                         beos) dflt='-nostart' ;;
7891                         hpux) dflt='-b';
7892                               case "$gccversion" in
7893                               '') dflt="$dflt +vnocompatwarnings" ;;
7894                               esac
7895                               ;;
7896                         linux|irix*|gnu*)  dflt="-shared $optimize" ;;
7897                         next)  dflt='none' ;;
7898                         solaris) dflt='-G' ;;
7899                         sunos) dflt='-assert nodefinitions' ;;
7900                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7901                 *)     dflt='none' ;;
7902                         esac
7903                         ;;
7904     *) dflt="$lddlflags" ;;
7905     esac
7906
7907         : Try to guess additional flags to pick up local libraries.
7908         : Be careful not to append to a plain 'none'
7909         case "$dflt" in
7910         none) dflt='' ;;
7911         esac
7912         for thisflag in $ldflags; do
7913                 case "$thisflag" in
7914                 -L*|-R*|-Wl,-R*)
7915                         case " $dflt " in
7916                         *" $thisflag "*) ;;
7917                         *) dflt="$dflt $thisflag" ;;
7918                         esac
7919                         ;;
7920                 esac
7921         done
7922
7923         case "$dflt" in
7924         ''|' ') dflt='none' ;;
7925         esac
7926
7927     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7928     . ./myread
7929     case "$ans" in
7930     none) lddlflags=' ' ;;
7931     *) lddlflags="$ans" ;;
7932     esac
7933
7934         cat <<EOM
7935
7936 Some systems may require passing special flags to $cc to indicate that
7937 the resulting executable will use dynamic linking.  To use no flags,
7938 say "none".
7939
7940 EOM
7941     case "$ccdlflags" in
7942     '') case "$osname" in
7943             linux|hpux|gnu*)    dflt='-Wl,-E' ;;
7944             next|sunos) dflt='none' ;;
7945             *)          dflt='none' ;;
7946             esac ;;
7947     ' ')  dflt='none' ;;
7948     *)  dflt="$ccdlflags" ;;
7949     esac
7950     rp="Any special flags to pass to $cc to use dynamic linking?"
7951     . ./myread
7952     case "$ans" in
7953     none) ccdlflags=' ' ;;
7954     *) ccdlflags="$ans" ;;
7955     esac
7956     ;;
7957 *)  usedl="$undef"
7958         ld='ld'
7959     dlsrc='dl_none.xs'
7960     lddlflags=''
7961     ccdlflags=''
7962     ;;
7963 esac
7964
7965 also=''
7966 case "$usedl" in
7967 $undef)
7968         # No dynamic loading being used, so don't bother even to prompt.
7969         useshrplib='false'
7970         ;;
7971 *)      case "$useshrplib" in
7972         '')     case "$osname" in
7973                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7974                         dflt=y
7975                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7976                         ;;
7977                 next*)
7978                         case "$osvers" in
7979                         4*)     dflt=y
7980                                 also='Building a shared libperl is needed for MAB support.'
7981                                 ;;
7982                         *)      dflt=n
7983                                 ;;
7984                         esac
7985                         ;;
7986                 *)      dflt=n
7987                         ;;
7988                 esac
7989                 ;;
7990         $define|true|[Yy]*)
7991                 dflt=y
7992                 ;;
7993         *)      dflt=n
7994                 ;;
7995         esac
7996         $cat << EOM
7997
7998 The perl executable is normally obtained by linking perlmain.c with
7999 libperl${_a}, any static extensions (usually just DynaLoader), and
8000 any other libraries needed on this system (such as -lm, etc.).  Since
8001 your system supports dynamic loading, it is probably possible to build
8002 a shared libperl.$so.  If you will have more than one executable linked
8003 to libperl.$so, this will significantly reduce the size of each
8004 executable, but it may have a noticeable effect on performance.  The
8005 default is probably sensible for your system.
8006 $also
8007
8008 EOM
8009         rp="Build a shared libperl.$so (y/n)"
8010         . ./myread
8011         case "$ans" in
8012         true|$define|[Yy]*)
8013                 useshrplib='true'  ;;
8014         *)      useshrplib='false' ;;
8015         esac
8016         ;;
8017 esac
8018
8019 case "$useshrplib" in
8020 true)
8021         case "$libperl" in
8022         '')
8023                 # Figure out a good name for libperl.so.  Since it gets stored in
8024                 # a version-specific architecture-dependent library, the version
8025                 # number isn't really that important, except for making cc/ld happy.
8026                 #
8027                 # A name such as libperl.so.3.1
8028                 majmin="libperl.$so.$patchlevel.$subversion"
8029                 # A name such as libperl.so.301
8030                 majonly=`echo $patchlevel $subversion |
8031                         $awk '{printf "%d%02d", $1, $2}'`
8032                 majonly=libperl.$so.$majonly
8033                 # I'd prefer to keep the os-specific stuff here to a minimum, and
8034                 # rely on figuring it out from the naming of libc.
8035                 case "${osname}${osvers}" in
8036                 next4*)
8037                         dflt=libperl.5.$so
8038                         # XXX How handle the --version stuff for MAB?
8039                         ;;
8040                 linux*|gnu*)  # ld won't link with a bare -lperl otherwise.
8041                         dflt=libperl.$so
8042                         ;;
8043                 cygwin*) # ld links against an importlib
8044                         dflt=libperl$lib_ext
8045                         ;;
8046                 *)      # Try to guess based on whether libc has major.minor.
8047                         case "$libc" in
8048                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
8049                         *libc.$so.[0-9]*) dflt=$majonly ;;
8050                         *)      dflt=libperl.$so ;;
8051                         esac
8052                         ;;
8053                 esac
8054                 ;;
8055         *)      dflt=$libperl
8056                 ;;
8057         esac
8058         cat << EOM
8059
8060 I need to select a good name for the shared libperl.  If your system uses
8061 library names with major and minor numbers, then you might want something
8062 like $majmin.  Alternatively, if your system uses a single version
8063 number for shared libraries, then you might want to use $majonly.
8064 Or, your system might be quite happy with a simple libperl.$so.
8065
8066 Since the shared libperl will get installed into a version-specific
8067 architecture-dependent directory, the version number of the shared perl
8068 library probably isn't important, so the default should be o.k.
8069
8070 EOM
8071         rp='What name do you want to give to the shared libperl?'
8072         . ./myread
8073         libperl=$ans
8074         echo "Ok, I'll use $libperl"
8075         ;;
8076 *)
8077         libperl="libperl${_a}"
8078         ;;
8079 esac
8080
8081 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
8082 case "$shrpdir" in
8083 '') ;;
8084 *)      $cat >&4 <<EOM
8085 WARNING:  Use of the shrpdir variable for the installation location of
8086 the shared $libperl is not supported.  It was never documented and
8087 will not work in this version.  Let me (perlbug@perl.org)
8088 know of any problems this may cause.
8089
8090 EOM
8091         case "$shrpdir" in
8092         "$archlibexp/CORE")
8093                 $cat >&4 <<EOM
8094 But your current setting of $shrpdir is
8095 the default anyway, so it's harmless.
8096 EOM
8097                 ;;
8098         *)
8099                 $cat >&4 <<EOM
8100 Further, your current attempted setting of $shrpdir
8101 conflicts with the value of $archlibexp/CORE
8102 that installperl will use.
8103 EOM
8104                 ;;
8105         esac
8106         ;;
8107 esac
8108
8109 # How will the perl executable find the installed shared $libperl?
8110 # Add $xxx to ccdlflags.
8111 # If we can't figure out a command-line option, use $shrpenv to
8112 # set env LD_RUN_PATH.  The main perl makefile uses this.
8113 shrpdir=$archlibexp/CORE
8114 xxx=''
8115 tmp_shrpenv=''
8116 if "$useshrplib"; then
8117     case "$osname" in 
8118         aix)
8119                 # We'll set it in Makefile.SH...
8120                 ;;
8121         solaris)
8122                 xxx="-R $shrpdir"
8123                 ;;
8124         freebsd|netbsd|openbsd|interix|dragonfly)
8125                 xxx="-Wl,-R$shrpdir"
8126                 ;;
8127         bsdos|linux|irix*|dec_osf|gnu*)
8128                 xxx="-Wl,-rpath,$shrpdir"
8129                 ;;
8130         next)
8131                 # next doesn't like the default...
8132                 ;;
8133         beos)
8134                 # beos doesn't like the default, either.
8135                 ;;
8136         hpux*)
8137                 # hpux doesn't like the default, either.
8138                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
8139                 ;;
8140         *)
8141                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
8142                 ;;
8143         esac
8144         case "$xxx" in
8145         '') ;;
8146         *)      
8147                 # Only add $xxx if it isn't already in ccdlflags.
8148                 case " $ccdlflags " in
8149                 *" $xxx "*)     ;;
8150                 *)      ccdlflags="$ccdlflags $xxx"
8151                         cat <<EOM >&4
8152
8153 Adding $xxx to the flags
8154 passed to $ld so that the perl executable will find the 
8155 installed shared $libperl.
8156
8157 EOM
8158                         ;;
8159                 esac
8160                 ;;
8161         esac
8162 fi
8163 # Fix ccdlflags in AIX for building external extensions.
8164 # (For building Perl itself bare -bE:perl.exp is needed,
8165 #  Makefile.SH takes care of this.)
8166 case "$osname" in
8167 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
8168 esac
8169 # Respect a hint or command-line value.
8170 case "$shrpenv" in
8171 '') shrpenv="$tmp_shrpenv" ;;
8172 esac
8173 case "$ldlibpthname" in
8174 '')     ldlibpthname=LD_LIBRARY_PATH ;;
8175 none)   ldlibpthname='' ;;
8176 esac
8177
8178 : determine where manual pages are on this system
8179 echo " "
8180 case "$sysman" in
8181 '') 
8182         syspath='/usr/share/man/man1 /usr/man/man1'
8183         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
8184         syspath="$syspath /usr/man/u_man/man1"
8185         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
8186         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
8187         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
8188         sysman=`./loc . /usr/man/man1 $syspath`
8189         ;;
8190 esac
8191 if $test -d "$sysman"; then
8192         echo "System manual is in $sysman." >&4
8193 else
8194         echo "Could not find manual pages in source form." >&4
8195 fi
8196
8197 : determine where manual pages go
8198 set man1dir man1dir none
8199 eval $prefixit
8200 $cat <<EOM
8201
8202 $spackage has manual pages available in source form.
8203 EOM
8204 case "$nroff" in
8205 nroff)
8206         echo "However, you don't have nroff, so they're probably useless to you."
8207         case "$man1dir" in
8208         '') man1dir="none";;
8209         esac;;
8210 esac
8211 echo "If you don't want the manual sources installed, answer 'none'."
8212 case "$man1dir" in
8213 ' ') dflt=none
8214         ;;
8215 '')
8216         lookpath="$prefixexp/share/man/man1"
8217         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
8218         lookpath="$lookpath $prefixexp/man/p_man/man1"
8219         lookpath="$lookpath $prefixexp/man/u_man/man1"
8220         lookpath="$lookpath $prefixexp/man/man.1"
8221         case "$sysman" in
8222         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
8223         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
8224         esac
8225         set dflt
8226         eval $prefixup
8227         ;;
8228 *)  dflt="$man1dir"
8229         ;;
8230 esac
8231 echo " "
8232 fn=dn+~
8233 rp="Where do the main $spackage manual pages (source) go?"
8234 . ./getfile
8235 if $test "X$man1direxp" != "X$ansexp"; then
8236         installman1dir=''
8237 fi
8238 prefixvar=man1dir
8239 . ./setprefixvar
8240
8241 case "$man1dir" in
8242 '')     man1dir=' '
8243         installman1dir='';;
8244 esac
8245
8246 : What suffix to use on installed man pages
8247
8248 case "$man1dir" in
8249 ' ')
8250         man1ext='0'
8251         ;;
8252 *)
8253         rp="What suffix should be used for the main $spackage man pages?"
8254         case "$man1ext" in
8255         '')     case "$man1dir" in
8256                 *1)  dflt=1 ;;
8257                 *1p) dflt=1p ;;
8258                 *1pm) dflt=1pm ;;
8259                 *l) dflt=l;;
8260                 *n) dflt=n;;
8261                 *o) dflt=o;;
8262                 *p) dflt=p;;
8263                 *C) dflt=C;;
8264                 *L) dflt=L;;
8265                 *L1) dflt=L1;;
8266                 *) dflt=1;;
8267                 esac
8268                 ;;
8269         *)      dflt="$man1ext";;
8270         esac
8271         . ./myread
8272         man1ext="$ans"
8273         ;;
8274 esac
8275
8276 : see if we can have long filenames
8277 echo " "
8278 first=123456789abcdef
8279 $rm -f $first
8280 if (echo hi >$first) 2>/dev/null; then
8281         if $test -f 123456789abcde; then
8282                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
8283                 val="$undef"
8284         else
8285                 echo 'You can have filenames longer than 14 characters.'>&4
8286                 val="$define"
8287         fi
8288 else
8289         $cat <<'EOM'
8290 You can't have filenames longer than 14 chars.
8291 You can't even think about them!
8292 EOM
8293         val="$undef"
8294 fi 
8295 set d_flexfnam
8296 eval $setvar
8297 $rm -rf 123456789abcde*
8298
8299 : determine where library module manual pages go
8300 set man3dir man3dir none
8301 eval $prefixit
8302 $cat <<EOM
8303
8304 $spackage has manual pages for many of the library modules.
8305 EOM
8306
8307 case "$nroff" in
8308 nroff)
8309         $cat <<'EOM'
8310 However, you don't have nroff, so they're probably useless to you.
8311 EOM
8312         case "$man3dir" in
8313         '') man3dir="none";;
8314         esac;;
8315 esac
8316
8317 case "$d_flexfnam" in
8318 undef)
8319         $cat <<'EOM'
8320 However, your system can't handle the long file names like File::Basename.3.
8321 EOM
8322         case "$man3dir" in
8323         '') man3dir="none";;
8324         esac;;
8325 esac
8326
8327 echo "If you don't want the manual sources installed, answer 'none'."
8328 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8329 case "$man3dir" in
8330 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8331         if $test -d "$privlib/man/man3"; then
8332                 cat <<EOM >&4
8333
8334 WARNING:  Previous versions of perl installed man3 pages into
8335 $privlib/man/man3.  This version will suggest a
8336 new default of $dflt.
8337 EOM
8338                 tdflt=$dflt
8339                 dflt='n'
8340                 rp='Do you wish to preserve the old behavior?(y/n)'
8341                 . ./myread
8342                 case "$ans" in
8343                 y*) dflt="$privlib/man/man3" ;;
8344                 *)  dflt=$tdflt ;;
8345                 esac
8346     fi
8347         ;;
8348 *)      dflt="$man3dir" ;;
8349 esac
8350 case "$dflt" in
8351 ' ') dflt=none ;;
8352 esac
8353 echo " "
8354 fn=dn+~
8355 rp="Where do the $package library man pages (source) go?"
8356 . ./getfile
8357 prefixvar=man3dir
8358 . ./setprefixvar
8359
8360 case "$man3dir" in
8361 '')     man3dir=' '
8362         installman3dir='';;
8363 esac
8364
8365 : What suffix to use on installed man pages
8366 case "$man3dir" in
8367 ' ')
8368         man3ext='0'
8369         ;;
8370 *)
8371         rp="What suffix should be used for the $package library man pages?"
8372         case "$man3ext" in
8373         '')     case "$man3dir" in
8374                 *3)  dflt=3 ;;
8375                 *3p) dflt=3p ;;
8376                 *3pm) dflt=3pm ;;
8377                 *l) dflt=l;;
8378                 *n) dflt=n;;
8379                 *o) dflt=o;;
8380                 *p) dflt=p;;
8381                 *C) dflt=C;;
8382                 *L) dflt=L;;
8383                 *L3) dflt=L3;;
8384                 *) dflt=3;;
8385                 esac
8386                 ;;
8387         *)      dflt="$man3ext";;
8388         esac
8389         . ./myread
8390         man3ext="$ans"
8391         ;;
8392 esac
8393
8394 : see if we have to deal with yellow pages, now NIS.
8395 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8396         if $test -f /usr/etc/nibindd; then
8397                 echo " "
8398                 echo "I'm fairly confident you're on a NeXT."
8399                 echo " "
8400                 rp='Do you get the hosts file via NetInfo?'
8401                 dflt=y
8402                 case "$hostcat" in
8403                 nidump*) ;;
8404                 '') ;;
8405                 *) dflt=n;;
8406                 esac
8407                 . ./myread
8408                 case "$ans" in
8409                 y*) hostcat='nidump hosts .';;
8410                 *)      case "$hostcat" in
8411                         nidump*) hostcat='';;
8412                         esac
8413                         ;;
8414                 esac
8415         fi
8416         case "$hostcat" in
8417         nidump*) ;;
8418         *)
8419                 case "$hostcat" in
8420                 *ypcat*) dflt=y;;
8421                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8422                                 dflt=y
8423                         else
8424                                 dflt=n
8425                         fi;;
8426                 *) dflt=n;;
8427                 esac
8428                 echo " "
8429                 rp='Are you getting the hosts file via yellow pages?'
8430                 . ./myread
8431                 case "$ans" in
8432                 y*) hostcat='ypcat hosts';;
8433                 *) hostcat='cat /etc/hosts';;
8434                 esac
8435                 ;;
8436         esac
8437 fi
8438 case "$hostcat" in
8439 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8440 esac
8441 case "$groupcat" in
8442 '') test -f /etc/group && groupcat='cat /etc/group';;
8443 esac
8444 case "$passcat" in
8445 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8446 esac
8447
8448 : now get the host name
8449 echo " "
8450 echo "Figuring out host name..." >&4
8451 case "$myhostname" in
8452 '') cont=true
8453         echo 'Maybe "hostname" will work...'
8454         if tans=`sh -c hostname 2>&1` ; then
8455                 myhostname=$tans
8456                 phostname=hostname
8457                 cont=''
8458         fi
8459         ;;
8460 *) cont='';;
8461 esac
8462 if $test "$cont"; then
8463         if ./xenix; then
8464                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8465                 if tans=`cat /etc/systemid 2>&1` ; then
8466                         myhostname=$tans
8467                         phostname='cat /etc/systemid'
8468                         echo "Whadyaknow.  Xenix always was a bit strange..."
8469                         cont=''
8470                 fi
8471         elif $test -r /etc/systemid; then
8472                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8473         fi
8474 fi
8475 if $test "$cont"; then
8476         echo 'No, maybe "uuname -l" will work...'
8477         if tans=`sh -c 'uuname -l' 2>&1` ; then
8478                 myhostname=$tans
8479                 phostname='uuname -l'
8480         else
8481                 echo 'Strange.  Maybe "uname -n" will work...'
8482                 if tans=`sh -c 'uname -n' 2>&1` ; then
8483                         myhostname=$tans
8484                         phostname='uname -n'
8485                 else
8486                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8487                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8488                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8489                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8490                         else
8491                                 case "$myhostname" in
8492                                 '') echo "Does this machine have an identity crisis or something?"
8493                                         phostname='';;
8494                                 *)
8495                                         echo "Well, you said $myhostname before..."
8496                                         phostname='echo $myhostname';;
8497                                 esac
8498                         fi
8499                 fi
8500         fi
8501 fi
8502 case "$myhostname" in
8503 '') myhostname=noname ;;
8504 esac
8505 : you do not want to know about this
8506 set $myhostname
8507 myhostname=$1
8508
8509 : verify guess
8510 if $test "$myhostname" ; then
8511         dflt=y
8512         rp='Your host name appears to be "'$myhostname'".'" Right?"
8513         . ./myread
8514         case "$ans" in
8515         y*) ;;
8516         *) myhostname='';;
8517         esac
8518 fi
8519
8520 : bad guess or no guess
8521 while $test "X$myhostname" = X ; do
8522         dflt=''
8523         rp="Please type the (one word) name of your host:"
8524         . ./myread
8525         myhostname="$ans"
8526 done
8527
8528 : translate upper to lower if necessary
8529 case "$myhostname" in
8530 *[A-Z]*)
8531         echo "(Normalizing case in your host name)"
8532         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8533         ;;
8534 esac
8535
8536 case "$myhostname" in
8537 *.*)
8538         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8539         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8540         echo "(Trimming domain name from host name--host name is now $myhostname)"
8541         ;;
8542 *) case "$mydomain" in
8543         '')
8544                 {
8545                         test "X$hostcat" = "Xypcat hosts" &&
8546                         ypmatch "$myhostname" hosts 2>/dev/null |\
8547                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8548                         $test -s hosts
8549                 } || {
8550                         test "X$hostcat" != "X" &&
8551                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8552                                         /[       ]$myhostname[  . ]/p" > hosts
8553                 }
8554                 tmp_re="[       . ]"
8555                 if $test -f hosts; then
8556                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8557                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8558                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8559                                 hosts | $sort | $uniq | \
8560                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8561                         case `$echo X$dflt` in
8562                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8563                                 dflt=.
8564                                 ;;
8565                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8566                                 ;;
8567                         esac
8568                 else
8569                         echo "(I cannot locate a hosts database anywhere)"
8570                         dflt=.
8571                 fi
8572                 case "$dflt" in
8573                 .)
8574                         tans=`./loc resolv.conf X /etc /usr/etc`
8575                         if $test -f "$tans"; then
8576                                 echo "(Attempting domain name extraction from $tans)"
8577                                 dflt=.`$sed -n -e 's/   / /g' \
8578                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8579                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8580                                 case "$dflt" in
8581                                 .) dflt=.`$sed -n -e 's/        / /g' \
8582                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8583                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8584                                         ;;
8585                                 esac
8586                         fi
8587                         ;;
8588                 esac
8589                 case "$dflt" in
8590                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8591                         dflt=.`sh -c domainname 2>/dev/null`
8592                         case "$dflt" in
8593                         '') dflt='.';;
8594                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8595                         esac
8596                         ;;
8597                 esac
8598                 case "$dflt$osname" in
8599                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8600                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8601                         ;;
8602                 esac
8603                 case "$dflt" in
8604                 .) echo "(Lost all hope -- silly guess then)"
8605                         dflt='.nonet'
8606                         ;;
8607                 esac
8608                 $rm -f hosts
8609                 ;;
8610         *) dflt="$mydomain";;
8611         esac;;
8612 esac
8613 echo " "
8614 rp="What is your domain name?"
8615 . ./myread
8616 tans="$ans"
8617 case "$ans" in
8618 '') ;;
8619 .*) ;;
8620 *) tans=".$tans";;
8621 esac
8622 mydomain="$tans"
8623
8624 : translate upper to lower if necessary
8625 case "$mydomain" in
8626 *[A-Z]*)
8627         echo "(Normalizing case in your domain name)"
8628         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8629         ;;
8630 esac
8631
8632 : a little sanity check here
8633 case "$phostname" in
8634 '') ;;
8635 *)
8636         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8637         $myhostname$mydomain|$myhostname) ;;
8638         *)
8639                 case "$phostname" in
8640                 sed*)
8641                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8642                         ;;
8643                 *)
8644                         echo "(That doesn't agree with your $phostname command, by the way.)"
8645                         ;;
8646                 esac
8647         ;;
8648         esac
8649         ;;
8650 esac
8651
8652 $cat <<EOM
8653
8654 I need to get your e-mail address in Internet format if possible, i.e.
8655 something like user@host.domain. Please answer accurately since I have
8656 no easy means to double check it. The default value provided below
8657 is most probably close to reality but may not be valid from outside
8658 your organization...
8659
8660 EOM
8661 cont=x
8662 while test "$cont"; do
8663         case "$cf_email" in
8664         '') dflt="$cf_by@$myhostname$mydomain";;
8665         *) dflt="$cf_email";;
8666         esac
8667         rp='What is your e-mail address?'
8668         . ./myread
8669         cf_email="$ans"
8670         case "$cf_email" in
8671         *@*.*) cont='' ;;
8672         *)
8673                 rp='Address does not look like an Internet one.  Use it anyway?'
8674                 case "$fastread" in
8675                 yes) dflt=y ;;
8676                 *) dflt=n ;;
8677                 esac
8678                 . ./myread
8679                 case "$ans" in
8680                 y*) cont='' ;;
8681                 *) echo " " ;;
8682                 esac
8683                 ;;
8684         esac
8685 done
8686
8687 $cat <<EOM
8688
8689 If you or somebody else will be maintaining perl at your site, please
8690 fill in the correct e-mail address here so that they may be contacted
8691 if necessary. Currently, the "perlbug" program included with perl
8692 will send mail to this address in addition to perlbug@perl.org. You may
8693 enter "none" for no administrator.
8694
8695 EOM
8696 case "$perladmin" in
8697 '') dflt="$cf_email";;
8698 *) dflt="$perladmin";;
8699 esac
8700 rp='Perl administrator e-mail address'
8701 . ./myread
8702 perladmin="$ans"
8703
8704 : determine whether to only install version-specific parts.
8705 echo " "
8706 $cat <<EOM
8707 Do you want to install only the version-specific parts of the perl
8708 distribution?  Usually you do *not* want to do this.
8709 EOM
8710 case "$versiononly" in
8711 "$define"|[Yy]*|true) dflt='y' ;;
8712 *) dflt='n';
8713 esac
8714 rp="Do you want to install only the version-specific parts of perl?"
8715 . ./myread
8716 case "$ans" in
8717 [yY]*)  val="$define";;
8718 *)      val="$undef" ;;
8719 esac
8720 set versiononly
8721 eval $setvar
8722
8723 case "$versiononly" in
8724 "$define") inc_version_list=''
8725            inc_version_list_init=0
8726            ;;
8727 esac
8728
8729 : figure out how to guarantee perl startup
8730 : XXX Note that this currently takes advantage of the bug that binexp ignores
8731 :     the Configure -Dinstallprefix setting, which in turn means that under
8732 :     relocatable @INC, initialinstalllocation is what binexp started as.
8733 case "$startperl" in
8734 '')
8735         case "$sharpbang" in
8736         *!)
8737                 $cat <<EOH
8738
8739 I can use the #! construct to start perl on your system. This will
8740 make startup of perl scripts faster, but may cause problems if you
8741 want to share those scripts and perl is not in a standard place
8742 ($initialinstalllocation/perl) on all your platforms. The alternative
8743 is to force a shell by starting the script with a single ':' character.
8744
8745 EOH
8746                 case "$versiononly" in
8747                 "$define")      dflt="$initialinstalllocation/perl$version";;
8748                 *)              dflt="$initialinstalllocation/perl";;
8749                 esac
8750                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8751                 . ./myread
8752                 case "$ans" in
8753                 none)   startperl=": # use perl";;
8754                 *)      startperl="#!$ans"
8755                         if $test 30 -lt `echo "$ans" | wc -c`; then
8756                                 $cat >&4 <<EOM
8757
8758 WARNING:  Some systems limit the #! command to 32 characters.
8759 If you experience difficulty running Perl scripts with #!, try
8760 installing Perl in a directory with a shorter pathname.
8761
8762 EOM
8763                         fi ;;
8764                 esac
8765                 ;;
8766         *) startperl=": # use perl"
8767                 ;;
8768         esac
8769         ;;
8770 esac
8771 echo "I'll use $startperl to start perl scripts."
8772
8773 : figure best path for perl in scripts
8774 case "$perlpath" in
8775 '')
8776         case "$versiononly" in
8777         "$define")      perlpath="$initialinstalllocation/perl$version";;
8778         *)              perlpath="$initialinstalllocation/perl";;
8779         esac
8780         case "$startperl" in
8781         *!*) ;;
8782         *)
8783                 $cat <<EOH
8784
8785 I will use the "eval 'exec'" idiom to start Perl on your system.
8786 I can use the full path of your Perl binary for this purpose, but
8787 doing so may cause problems if you want to share those scripts and
8788 Perl is not always in a standard place ($initialinstalllocation/perl).
8789
8790 EOH
8791                 dflt="$initialinstalllocation/perl"
8792                 rp="What path shall I use in \"eval 'exec'\"?"
8793                 . ./myread
8794                 perlpath="$ans"
8795                 ;;
8796         esac
8797         ;;
8798 esac
8799 case "$startperl" in
8800 *!*)    ;;
8801 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8802 esac
8803
8804 : determine where public executable scripts go
8805 set scriptdir scriptdir
8806 eval $prefixit
8807 case "$scriptdir" in
8808 '')
8809         dflt="$bin"
8810         : guess some guesses
8811         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8812         $test -d /usr/share/bin     && dflt=/usr/share/bin
8813         $test -d /usr/local/script  && dflt=/usr/local/script
8814         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8815         $test -d $prefixexp/script  && dflt=$prefixexp/script
8816         set dflt
8817         eval $prefixup
8818         ;;
8819 *)  dflt="$scriptdir"
8820         ;;
8821 esac
8822 $cat <<EOM
8823
8824 Some installations have a separate directory just for executable scripts so
8825 that they can mount it across multiple architectures but keep the scripts in
8826 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8827 Or you might just lump your scripts in with all your other executables.
8828
8829 EOM
8830 fn=d~
8831 rp='Where do you keep publicly executable scripts?'
8832 . ./getfile
8833 if $test "X$ansexp" != "X$scriptdirexp"; then
8834         installscript=''
8835 fi
8836 installscriptdir=''
8837 prefixvar=scriptdir
8838 . ./setprefixvar
8839 : A little fix up for an irregularly named variable.
8840 installscript="$installscriptdir"
8841
8842 : determine where add-on public executables go
8843 case "$sitebin" in
8844 '')     dflt=$siteprefix/bin ;;
8845 *)      dflt=$sitebin ;;
8846 esac
8847 fn=d~
8848 rp='Pathname where the add-on public executables should be installed?'
8849 . ./getfile
8850 prefixvar=sitebin
8851 . ./setprefixvar
8852
8853 : determine where add-on html pages go
8854 : There is no standard location, so try to copy the previously-selected
8855 : directory structure for the core html pages.
8856 case "$sitehtml1dir" in
8857 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8858 *)     dflt=$sitehtml1dir ;;
8859 esac
8860 case "$dflt" in
8861 ''|' ') dflt=none ;;
8862 esac
8863 fn=dn+~
8864 rp='Pathname where the site-specific html pages should be installed?'
8865 . ./getfile
8866 prefixvar=sitehtml1dir
8867 . ./setprefixvar
8868
8869 : determine where add-on library html pages go
8870 : There is no standard location, so try to copy the previously-selected
8871 : directory structure for the core html pages.
8872 case "$sitehtml3dir" in
8873 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8874 *)     dflt=$sitehtml3dir ;;
8875 esac
8876 case "$dflt" in
8877 ''|' ') dflt=none ;;
8878 esac
8879 fn=dn+~
8880 rp='Pathname where the site-specific library html pages should be installed?'
8881 . ./getfile
8882 prefixvar=sitehtml3dir
8883 . ./setprefixvar
8884
8885 : determine where add-on manual pages go
8886 case "$siteman1dir" in
8887 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8888 *)      dflt=$siteman1dir ;;
8889 esac
8890 case "$dflt" in
8891 ''|' ') dflt=none ;;
8892 esac
8893 fn=dn+~
8894 rp='Pathname where the site-specific manual pages should be installed?'
8895 . ./getfile
8896 prefixvar=siteman1dir
8897 . ./setprefixvar
8898
8899 : determine where add-on library man pages go
8900 case "$siteman3dir" in
8901 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8902 *)      dflt=$siteman3dir ;;
8903 esac
8904 case "$dflt" in
8905 ''|' ') dflt=none ;;
8906 esac
8907 fn=dn+~
8908 rp='Pathname where the site-specific library manual pages should be installed?'
8909 . ./getfile
8910 prefixvar=siteman3dir
8911 . ./setprefixvar
8912
8913 : determine where add-on public executable scripts go
8914 case "$sitescript" in
8915 '')     dflt=$siteprefix/script
8916         $test -d $dflt || dflt=$sitebin ;;
8917 *)  dflt="$sitescript" ;;
8918 esac
8919 fn=d~+
8920 rp='Pathname where add-on public executable scripts should be installed?'
8921 . ./getfile
8922 prefixvar=sitescript
8923 . ./setprefixvar
8924
8925 case "$usefaststdio" in
8926 $define|true|[yY]*|'')
8927         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8928         case "$xversion" in
8929         [68])   dflt='y' ;;
8930         *)      dflt='n' ;;
8931         esac
8932         ;;
8933 *) dflt='n';;
8934 esac
8935 cat <<EOM
8936
8937 Perl can be built to use 'fast stdio', which means using the stdio
8938 library but also directly manipulating the stdio buffers to enable
8939 faster I/O.  Using stdio is better for backward compatibility (especially
8940 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8941 interface has been preferred instead of stdio.
8942
8943 If this doesn't make any sense to you, just accept the default '$dflt'.
8944 EOM
8945 rp='Use the "fast stdio" if available?'
8946 . ./myread
8947 case "$ans" in
8948 y|Y)    val="$define" ;;     
8949 *)      val="$undef" ;;
8950 esac
8951 set usefaststdio
8952 eval $setvar
8953
8954 : DTrace support
8955 dflt_dtrace='/usr/sbin/dtrace'
8956 cat <<EOM
8957
8958 Perl can be built to support DTrace on platforms that support it.
8959 DTrace is a diagnosis and performance analysis tool from Sun.
8960
8961 If this doesn't make any sense to you, just accept the default '$dflt'.
8962 EOM
8963
8964 while test 1 ; do
8965         case "$usedtrace" in
8966         $define|true|[yY]*) 
8967                 dflt='y' 
8968                 ;;
8969         ?*)
8970                 dflt='y' 
8971                 dflt_dtrace=$usedtrace
8972                 ;;
8973         *) 
8974                 dflt='n' 
8975                 ;;
8976         esac
8977
8978         rp='Support DTrace if available?'
8979         . ./myread
8980         case "$ans" in
8981         y|Y)    val="$define" ;;
8982         *)      val="$undef" ;;
8983         esac
8984         set usedtrace
8985         eval $setvar
8986
8987         test "X$usedtrace" != "X$define" && break
8988
8989         echo " "
8990         rp='Where is the dtrace executable?'
8991         dflt=$dflt_dtrace
8992         . ./getfile
8993         val="$ans"
8994         set dtrace
8995         eval $setvar
8996         
8997         if test -f $dtrace
8998         then
8999                 if ! $dtrace -h -s ../perldtrace.d \
9000                         -o perldtrace.tmp >/dev/null 2>&1 \
9001                         && rm -f perldtrace.tmp
9002                 then
9003                         cat >&2 <<EOM
9004
9005 *** $me:  Fatal Error:  $dtrace doesn't support -h flag
9006 ***
9007 *** Your installed dtrace doesn't support the -h switch to compile a D
9008 *** program into a C header. Can't continue.
9009
9010 EOM
9011                         exit 1
9012                 fi
9013                 break;
9014         fi
9015
9016         echo "$dtrace was not found."
9017         echo " "
9018 done
9019
9020 : define an is-a-typedef? function
9021 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9022 case "$inclist" in
9023 "") inclist="sys/types.h";;
9024 esac;
9025 eval "varval=\$$var";
9026 case "$varval" in
9027 "")
9028         $rm -f temp.c;
9029         for inc in $inclist; do
9030                 echo "#include <$inc>" >>temp.c;
9031         done;
9032         echo "#ifdef $type" >> temp.c;
9033         echo "printf(\"We have $type\");" >> temp.c;
9034         echo "#endif" >> temp.c;
9035         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9036         if $contains $type temp.E >/dev/null 2>&1; then
9037                 eval "$var=\$type";
9038         else
9039                 eval "$var=\$def";
9040         fi;
9041         $rm -f temp.?;;
9042 *) eval "$var=\$varval";;
9043 esac'
9044
9045 : define an is-a-typedef? function that prompts if the type is not available.
9046 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9047 case "$inclist" in
9048 "") inclist="sys/types.h";;
9049 esac;
9050 eval "varval=\$$var";
9051 case "$varval" in
9052 "")
9053         $rm -f temp.c;
9054         for inc in $inclist; do
9055                 echo "#include <$inc>" >>temp.c;
9056         done;
9057         echo "#ifdef $type" >> temp.c;
9058         echo "printf(\"We have $type\");" >> temp.c;
9059         echo "#endif" >> temp.c;
9060         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9061         echo " " ;
9062         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
9063         if $contains $type temp.E >/dev/null 2>&1; then
9064                 echo "$type found." >&4;
9065                 eval "$var=\$type";
9066         else
9067                 echo "$type NOT found." >&4;
9068                 dflt="$def";
9069                 . ./myread ;
9070                 eval "$var=\$ans";
9071         fi;
9072         $rm -f temp.?;;
9073 *) eval "$var=\$varval";;
9074 esac'
9075
9076 : see what type lseek is declared as in the kernel
9077 rp="What is the type used for lseek's offset on this system?"
9078 set off_t lseektype long stdio.h sys/types.h
9079 eval $typedef_ask
9080
9081 echo " "
9082 echo "Checking to see how big your file offsets are..." >&4
9083 $cat >try.c <<EOCP
9084 #include <sys/types.h>
9085 #include <stdio.h>
9086 int main()
9087 {
9088     printf("%d\n", (int)sizeof($lseektype));
9089     return(0);
9090 }
9091 EOCP
9092 set try
9093 if eval $compile_ok; then
9094         lseeksize=`$run ./try`
9095         echo "Your file offsets are $lseeksize bytes long."
9096 else
9097         dflt=$longsize
9098         echo " "
9099         echo "(I can't seem to compile the test program.  Guessing...)"
9100         rp="What is the size of your file offsets (in bytes)?"
9101         . ./myread
9102         lseeksize="$ans"
9103 fi
9104 $rm_try
9105
9106 : see what type file positions are declared as in the library
9107 rp="What is the type for file position used by fsetpos()?"
9108 set fpos_t fpostype long stdio.h sys/types.h
9109 eval $typedef_ask
9110
9111 : Check size for Fpos_t
9112 echo " "
9113 case "$fpostype" in
9114 *_t) zzz="$fpostype"    ;;
9115 *)   zzz="fpos_t"       ;;
9116 esac
9117 echo "Checking the size of $zzz..." >&4
9118 cat > try.c <<EOCP
9119 #include <sys/types.h>
9120 #include <stdio.h>
9121 #$i_stdlib I_STDLIB
9122 #ifdef I_STDLIB
9123 #include <stdlib.h>
9124 #endif
9125 int main() {
9126     printf("%d\n", (int)sizeof($fpostype));
9127     exit(0);
9128 }
9129 EOCP
9130 set try
9131 if eval $compile_ok; then
9132         yyy=`$run ./try`
9133         case "$yyy" in
9134         '')     fpossize=4
9135                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9136                 ;;
9137         *)      fpossize=$yyy
9138                 echo "Your $zzz is $fpossize bytes long."
9139                 ;;
9140         esac
9141 else
9142         dflt="$longsize"
9143         echo " " >&4
9144         echo "(I can't compile the test program.  Guessing...)" >&4
9145         rp="What is the size of your file positions (in bytes)?"
9146         . ./myread
9147         fpossize="$ans"
9148 fi
9149
9150 : Check for large file support
9151 # Backward compatibility (uselfs is deprecated).
9152 case "$uselfs" in
9153 "$define"|true|[yY]*)
9154         cat <<EOM >&4
9155
9156 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
9157 EOM
9158         uselargefiles="$define"
9159         ;;
9160 esac
9161
9162 case "$lseeksize:$fpossize" in
9163 8:8) cat <<EOM
9164
9165 You can have files larger than 2 gigabytes.
9166 EOM
9167    val="$define" ;;
9168 *)    case "$uselargefiles" in
9169    "$undef"|false|[nN]*) dflt='n' ;;
9170    *)   dflt='y' ;;
9171    esac
9172    cat <<EOM
9173
9174 Perl can be built to understand large files (files larger than 2 gigabytes)
9175 on some systems.  To do so, Configure can be run with -Duselargefiles.
9176
9177 If this doesn't make any sense to you, just accept the default '$dflt'.
9178 EOM
9179    rp='Try to understand large files, if available?'
9180    . ./myread
9181    case "$ans" in
9182    y|Y)         val="$define" ;;
9183    *)           val="$undef"  ;;
9184    esac
9185    ;;
9186 esac
9187 set uselargefiles
9188 eval $setvar
9189 : Look for a hint-file generated 'call-back-unit'.  If the
9190 : user has specified that a large files perl is to be built,
9191 : we may need to set or change some other defaults.
9192 if $test -f uselargefiles.cbu; then
9193         echo "Your platform has some specific hints regarding large file builds, using them..."
9194         . ./uselargefiles.cbu
9195 fi
9196 case "$uselargefiles" in
9197 "$define")
9198         if $test -f uselargefiles.cbu; then
9199                 echo " "
9200                 echo "Rechecking to see how big your file offsets are..." >&4
9201                 $cat >try.c <<EOCP
9202 #include <sys/types.h>
9203 #include <stdio.h>
9204 int main()
9205 {
9206     printf("%d\n", (int)sizeof($lseektype));
9207     return(0);
9208 }
9209 EOCP
9210                 set try
9211                 if eval $compile_ok; then
9212                         lseeksize=`$run ./try`
9213                         $echo "Your file offsets are now $lseeksize bytes long."
9214                 else
9215                         dflt="$lseeksize"
9216                         echo " "
9217                         echo "(I can't seem to compile the test program.  Guessing...)"
9218                         rp="What is the size of your file offsets (in bytes)?"
9219                         . ./myread
9220                         lseeksize="$ans"
9221                 fi
9222                 case "$fpostype" in
9223                 *_t) zzz="$fpostype"    ;;
9224                 *)   zzz="fpos_t"       ;;
9225                 esac
9226                 $echo $n "Rechecking the size of $zzz...$c" >&4
9227                 $cat > try.c <<EOCP
9228 #include <sys/types.h>
9229 #include <stdio.h>
9230 #$i_stdlib I_STDLIB
9231 #ifdef I_STDLIB
9232 #include <stdlib.h>
9233 #endif
9234 int main() {
9235     printf("%d\n", (int)sizeof($fpostype));
9236     return(0);
9237 }
9238 EOCP
9239                 set try
9240                 if eval $compile_ok; then
9241                         yyy=`$run ./try`
9242                         dflt="$lseeksize"
9243                         case "$yyy" in
9244                         '')     echo " "
9245                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9246                                 ;;
9247                         *)      fpossize=$yyy
9248                                 echo " $fpossize bytes." >&4
9249                                 ;;
9250                         esac
9251                 else
9252                         dflt="$fpossize"
9253                         echo " "
9254                         echo "(I can't compile the test program.  Guessing...)" >&4
9255                         rp="What is the size of your file positions (in bytes)?"
9256                         . ./myread
9257                         fpossize="$ans"
9258                 fi
9259                 $rm_try
9260         fi
9261         ;;
9262 esac
9263
9264 : Set the vendorbin variables
9265 case "$vendorprefix" in
9266 '')     d_vendorbin="$undef"
9267         vendorbin=''
9268         vendorbinexp=''
9269         ;;
9270 *)      d_vendorbin="$define"
9271         : determine where vendor-supplied executables go.
9272         case "$vendorbin" in
9273         '') dflt=$vendorprefix/bin ;;
9274         *)      dflt="$vendorbin" ;;
9275         esac
9276         fn=d~+
9277         rp='Pathname for the vendor-supplied executables directory?'
9278         . ./getfile
9279         vendorbin="$ans"
9280         vendorbinexp="$ansexp"
9281         ;;
9282 esac
9283 prefixvar=vendorbin
9284 . ./installprefix
9285
9286 : Set the vendorhtml1dir variables
9287 case "$vendorprefix" in
9288 '')     vendorhtml1dir=''
9289         vendorhtml1direxp=''
9290         ;;
9291 *)      : determine where vendor-supplied html pages go.
9292         : There is no standard location, so try to copy the previously-selected
9293         : directory structure for the core html pages.
9294         : XXX Better default suggestions would be welcome.
9295         case "$vendorhtml1dir" in
9296         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9297         *)      dflt=$vendorhtml1dir ;;
9298         esac
9299         case "$dflt" in
9300         ''|' ') dflt=none ;;
9301         esac
9302         fn=dn+~
9303         rp='Pathname for the vendor-supplied html pages?'
9304         . ./getfile
9305         vendorhtml1dir="$ans"
9306         vendorhtml1direxp="$ansexp"
9307         ;;
9308 esac
9309 : Use ' ' for none so value is preserved next time through Configure
9310 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9311 prefixvar=vendorhtml1dir
9312 . ./installprefix
9313
9314 : Set the vendorhtml3dir variables
9315 case "$vendorprefix" in
9316 '')     vendorhtml3dir=''
9317         vendorhtml3direxp=''
9318         ;;
9319 *)      : determine where vendor-supplied module html pages go.
9320         : There is no standard location, so try to copy the previously-selected
9321         : directory structure for the core html pages.
9322         : XXX Better default suggestions would be welcome.
9323         case "$vendorhtml3dir" in
9324         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9325         *)      dflt=$vendorhtml3dir ;;
9326         esac
9327         case "$dflt" in
9328         ''|' ') dflt=none ;;
9329         esac
9330         fn=dn+~
9331         rp='Pathname for the vendor-supplied html pages?'
9332         . ./getfile
9333         vendorhtml3dir="$ans"
9334         vendorhtml3direxp="$ansexp"
9335         ;;
9336 esac
9337 : Use ' ' for none so value is preserved next time through Configure
9338 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9339 prefixvar=vendorhtml3dir
9340 . ./installprefix
9341
9342 : Set the vendorman1dir variables
9343 case "$vendorprefix" in
9344 '')     vendorman1dir=''
9345         vendorman1direxp=''
9346         ;;
9347 *)      : determine where vendor-supplied manual pages go.
9348         case "$vendorman1dir" in
9349         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9350         *)      dflt=$vendorman1dir ;;
9351         esac
9352         case "$dflt" in
9353         ''|' ') dflt=none ;;
9354         esac
9355         fn=nd~+
9356         rp='Pathname for the vendor-supplied manual section 1 pages?'
9357         . ./getfile
9358         vendorman1dir="$ans"
9359         vendorman1direxp="$ansexp"
9360         ;;
9361 esac
9362 : Use ' ' for none so value is preserved next time through Configure
9363 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9364 prefixvar=vendorman1dir
9365 . ./installprefix
9366
9367 : Set the vendorman3dir variables
9368 case "$vendorprefix" in
9369 '')     vendorman3dir=''
9370         vendorman3direxp=''
9371         ;;
9372 *)      : determine where vendor-supplied module manual pages go.
9373         case "$vendorman3dir" in
9374         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9375         *)      dflt=$vendorman3dir ;;
9376         esac
9377         case "$dflt" in
9378         ''|' ') dflt=none ;;
9379         esac
9380         fn=nd~+
9381         rp='Pathname for the vendor-supplied manual section 3 pages?'
9382         . ./getfile
9383         vendorman3dir="$ans"
9384         vendorman3direxp="$ansexp"
9385         ;;
9386 esac
9387 : Use ' ' for none so value is preserved next time through Configure
9388 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9389 prefixvar=vendorman3dir
9390 . ./installprefix
9391
9392 : Set the vendorscript variables
9393 case "$vendorprefix" in
9394 '')     d_vendorscript="$undef"
9395         vendorscript=''
9396         vendorscriptexp=''
9397         ;;
9398 *)      d_vendorscript="$define"
9399         : determine where vendor-supplied scripts go.
9400         case "$vendorscript" in
9401         '')     dflt=$vendorprefix/script
9402                 $test -d $dflt || dflt=$vendorbin ;;
9403         *)  dflt="$vendorscript" ;;
9404         esac
9405         $cat <<EOM
9406
9407 The installation process will create a directory for
9408 vendor-supplied scripts.
9409
9410 EOM
9411         fn=d~+
9412         rp='Pathname for the vendor-supplied scripts directory?'
9413         . ./getfile
9414         vendorscript="$ans"
9415         vendorscriptexp="$ansexp"
9416         ;;
9417 esac
9418 prefixvar=vendorscript
9419 . ./installprefix
9420
9421 : see if qgcvt exists
9422 set qgcvt d_qgcvt
9423 eval $inlibc
9424
9425 : Check print/scan long double stuff
9426 echo " "
9427
9428 if $test X"$d_longdbl" = X"$define"; then
9429
9430 echo "Checking how to print long doubles..." >&4
9431
9432 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9433         $cat >try.c <<'EOCP'
9434 #include <sys/types.h>
9435 #include <stdio.h>
9436 int main() {
9437   double d = 123.456;
9438   printf("%.3f\n", d);
9439 }
9440 EOCP
9441         set try
9442         if eval $compile; then
9443                 yyy=`$run ./try`
9444                 case "$yyy" in
9445                 123.456)
9446                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9447                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9448                         echo "We will use %f."
9449                         ;;
9450                 esac
9451         fi
9452 fi
9453
9454 if $test X"$sPRIfldbl" = X; then
9455         $cat >try.c <<'EOCP'
9456 #include <sys/types.h>
9457 #include <stdio.h>
9458 int main() {
9459   long double d = 123.456;
9460   printf("%.3Lf\n", d);
9461 }
9462 EOCP
9463         set try
9464         if eval $compile; then
9465                 yyy=`$run ./try`
9466                 case "$yyy" in
9467                 123.456)
9468                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9469                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9470                         echo "We will use %Lf."
9471                         ;;
9472                 esac
9473         fi
9474 fi
9475
9476 if $test X"$sPRIfldbl" = X; then
9477         $cat >try.c <<'EOCP'
9478 #include <sys/types.h>
9479 #include <stdio.h>
9480 int main() {
9481   long double d = 123.456;
9482   printf("%.3llf\n", d);
9483 }
9484 EOCP
9485         set try
9486         if eval $compile; then
9487                 yyy=`$run ./try`
9488                 case "$yyy" in
9489                 123.456)
9490                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9491                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9492                         echo "We will use %llf."
9493                         ;;
9494                 esac
9495         fi
9496 fi
9497
9498 if $test X"$sPRIfldbl" = X; then
9499         $cat >try.c <<'EOCP'
9500 #include <sys/types.h>
9501 #include <stdio.h>
9502 int main() {
9503   long double d = 123.456;
9504   printf("%.3lf\n", d);
9505 }
9506 EOCP
9507         set try
9508         if eval $compile; then
9509                 yyy=`$run ./try`
9510                 case "$yyy" in
9511                 123.456)
9512                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9513                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9514                         echo "We will use %lf."
9515                         ;;
9516                 esac
9517         fi
9518 fi
9519
9520 if $test X"$sPRIfldbl" = X; then
9521         echo "Cannot figure out how to print long doubles." >&4
9522 else
9523         sSCNfldbl=$sPRIfldbl    # expect consistency
9524 fi
9525
9526 $rm_try
9527
9528 fi # d_longdbl
9529
9530 case "$sPRIfldbl" in
9531 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
9532         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
9533         d_SCNfldbl="$undef";
9534         ;;
9535 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
9536         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
9537         d_SCNfldbl="$define";
9538         ;;
9539 esac
9540
9541 : Check how to convert floats to strings.
9542
9543 if test "X$d_Gconvert" = X; then
9544
9545 echo " "
9546 echo "Checking for an efficient way to convert floats to strings."
9547 echo " " > try.c
9548 case "$uselongdouble" in
9549 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9550 esac
9551 case "$d_longdbl" in
9552 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9553 esac
9554 case "$d_PRIgldbl" in
9555 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9556 esac
9557 $cat >>try.c <<EOP
9558 #ifdef TRY_gconvert
9559 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9560 char *myname = "gconvert";
9561 #endif
9562 #ifdef TRY_gcvt
9563 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9564 char *myname = "gcvt";
9565 #endif
9566 #ifdef TRY_qgcvt
9567 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9568 char *myname = "qgcvt";
9569 #define DOUBLETYPE long double
9570 #endif
9571 #ifdef TRY_sprintf
9572 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9573 #ifdef HAS_PRIgldbl
9574 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9575 #else
9576 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9577 #endif
9578 #else
9579 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9580 #endif
9581 char *myname = "sprintf";
9582 #endif
9583
9584 #ifndef DOUBLETYPE
9585 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9586 #define DOUBLETYPE long double
9587 #else
9588 #define DOUBLETYPE double
9589 #endif
9590 #endif
9591
9592 #include <stdio.h>
9593
9594 #define I_STDLIB $i_stdlib
9595 #ifdef I_STDLIB
9596 #include <stdlib.h>
9597 #endif
9598
9599 int
9600 checkit(expect, got)
9601 char *expect;
9602 char *got;
9603 {
9604     if (strcmp(expect, got)) {
9605                 printf("%s oddity:  Expected %s, got %s\n",
9606                         myname, expect, got);
9607                 exit(1);
9608         }
9609 }
9610
9611 int main()
9612 {
9613         char buf[64];
9614         buf[63] = '\0';
9615
9616         /* This must be 1st test on (which?) platform */
9617         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9618         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9619         checkit("0.1", buf);
9620
9621         Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
9622         checkit("0.01", buf);
9623
9624         Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
9625         checkit("0.001", buf);
9626
9627         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
9628         checkit("0.0001", buf);
9629
9630         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9631         if (strlen(buf) > 5)
9632             checkit("9e-005", buf); /* for Microsoft ?? */
9633         else
9634             checkit("9e-05", buf);
9635
9636         Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
9637         checkit("1", buf);
9638
9639         Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
9640         checkit("1.1", buf);
9641
9642         Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
9643         checkit("1.01", buf);
9644
9645         Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
9646         checkit("1.001", buf);
9647
9648         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
9649         checkit("1.0001", buf);
9650
9651         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
9652         checkit("1.00001", buf);
9653
9654         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
9655         checkit("1.000001", buf);
9656
9657         Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
9658         checkit("0", buf);
9659
9660         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
9661         checkit("-1", buf);
9662
9663         /* Some Linux gcvt's give 1.e+5 here. */
9664         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
9665         checkit("100000", buf);
9666
9667         /* Some Linux gcvt's give -1.e+5 here. */
9668         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
9669         checkit("-100000", buf);
9670
9671         Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
9672         checkit("123.456", buf);
9673
9674         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9675         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9676         /* 34 should be enough to scare even long double
9677          * places into using the e notation. */
9678         if (strlen(buf) > 5)
9679             checkit("1e+034", buf); /* for Microsoft */
9680         else
9681             checkit("1e+34", buf);
9682
9683         /* For Perl, if you add additional tests here, also add them to
9684          * t/base/num.t for benefit of platforms not using Configure or
9685          * overriding d_Gconvert */
9686
9687         exit(0);
9688 }
9689 EOP
9690 : first add preferred functions to our list
9691 xxx_list=""
9692 for xxx_convert in $gconvert_preference; do
9693     case $xxx_convert in
9694     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9695     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9696     esac
9697 done
9698 : then add any others
9699 for xxx_convert in gconvert gcvt sprintf; do
9700     case "$xxx_list" in
9701     *$xxx_convert*) ;;
9702     *) xxx_list="$xxx_list $xxx_convert" ;;
9703     esac
9704 done
9705
9706 case "$d_longdbl$uselongdouble" in
9707 "$define$define")
9708     : again, add prefered functions to our list first
9709     xxx_ld_list=""
9710     for xxx_convert in $gconvert_ld_preference; do
9711         case $xxx_convert in
9712         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9713         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9714         esac
9715     done
9716     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9717     for xxx_convert in qgcvt sprintf $xxx_list; do
9718         case "$xxx_ld_list" in
9719         $xxx_convert*|*" $xxx_convert"*) ;;
9720         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9721         esac
9722     done
9723     : if sprintf cannot do long doubles, move it to the end
9724     if test "$d_PRIgldbl" != "$define"; then
9725         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9726     fi
9727     : if no qgcvt, remove it
9728     if test "$d_qgcvt" != "$define"; then
9729         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9730     fi
9731     : use the ld_list
9732     xxx_list="$xxx_ld_list"
9733     ;;
9734 esac
9735
9736 for xxx_convert in $xxx_list; do
9737         echo "Trying $xxx_convert..."
9738         $rm -f try try$_o core
9739         set try -DTRY_$xxx_convert
9740         if eval $compile; then
9741                 echo "$xxx_convert() found." >&4
9742                 if $run ./try; then
9743                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9744                         break;
9745                 else
9746                         echo "...But $xxx_convert didn't work as I expected."
9747                         xxx_convert=''
9748                 fi
9749         else
9750                 echo "$xxx_convert NOT found." >&4
9751         fi
9752 done
9753
9754 if test X$xxx_convert = X; then
9755     echo "*** WHOA THERE!!! ***" >&4
9756     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9757     xxx_convert=sprintf
9758 fi
9759
9760 case "$xxx_convert" in
9761 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9762 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9763 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9764 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9765    "$define$define$define")
9766       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9767    "$define$define$undef")
9768       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9769    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9770    esac
9771    ;;
9772 esac
9773
9774 fi
9775 $rm_try
9776
9777 : see if _fwalk exists
9778 set fwalk d__fwalk
9779 eval $inlibc
9780
9781 : Initialize h_fcntl
9782 h_fcntl=false
9783
9784 : Initialize h_sysfile
9785 h_sysfile=false
9786
9787 : access call always available on UNIX
9788 set access d_access
9789 eval $inlibc
9790
9791 : locate the flags for 'access()'
9792 case "$d_access" in
9793 "$define")
9794         echo " "
9795         $cat >access.c <<EOCP
9796 #include <sys/types.h>
9797 #ifdef I_FCNTL
9798 #include <fcntl.h>
9799 #endif
9800 #ifdef I_SYS_FILE
9801 #include <sys/file.h>
9802 #endif
9803 #ifdef I_UNISTD
9804 #include <unistd.h>
9805 #endif
9806 #$i_stdlib I_STDLIB
9807 #ifdef I_STDLIB
9808 #include <stdlib.h>
9809 #endif
9810 int main() {
9811         exit(R_OK);
9812 }
9813 EOCP
9814         : check sys/file.h first, no particular reason here
9815         if $test `./findhdr sys/file.h` && \
9816                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9817                 h_sysfile=true;
9818                 echo "<sys/file.h> defines the *_OK access constants." >&4
9819         elif $test `./findhdr fcntl.h` && \
9820                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9821                 h_fcntl=true;
9822                 echo "<fcntl.h> defines the *_OK access constants." >&4
9823         elif $test `./findhdr unistd.h` && \
9824                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9825                 echo "<unistd.h> defines the *_OK access constants." >&4
9826         else
9827                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9828         fi
9829         ;;
9830 esac
9831 $rm -f access*
9832
9833 : see if accessx exists
9834 set accessx d_accessx
9835 eval $inlibc
9836
9837 : see if aintl exists
9838 set aintl d_aintl
9839 eval $inlibc
9840
9841 : see if alarm exists
9842 set alarm d_alarm
9843 eval $inlibc
9844
9845 : see if POSIX threads are available
9846 set pthread.h i_pthread
9847 eval $inhdr
9848
9849 : define a fucntion to check prototypes
9850 $cat > protochk <<EOSH
9851 $startsh
9852 cc="$cc"
9853 optimize="$optimize"
9854 ccflags="$ccflags"
9855 prototype="$prototype"
9856 define="$define"
9857 rm_try="$rm_try"
9858 usethreads=$usethreads
9859 i_pthread=$i_pthread
9860 pthread_h_first=$pthread_h_first
9861 EOSH
9862
9863 $cat >> protochk <<'EOSH'
9864
9865 $rm_try
9866 foo="$1"
9867 shift
9868 while test $# -ge 2; do
9869         case "$1" in
9870                 $define) echo "#include <$2>" >> try.c ;;
9871                 literal) echo "$2" >> try.c ;;
9872         esac
9873     # Extra magic for the benefit of systems that need pthread.h
9874     # to be included early to correctly detect threadsafe functions.
9875     # Such functions must guarantee themselves, though, that the usethreads
9876     # and i_pthread have been defined, before calling protochk.
9877     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9878         echo "#include <pthread.h>" >> try.c
9879         pthread_h_done=yes
9880     fi
9881     shift 2
9882 done
9883 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9884 cat >> try.c <<'EOCP'
9885 #ifdef CAN_PROTOTYPE
9886 #define _(args) args
9887 #else
9888 #define _(args) ()
9889 #endif
9890 EOCP
9891 echo "$foo" >> try.c
9892 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9893 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9894 status=$?
9895 $rm_try
9896 exit $status
9897 EOSH
9898 chmod +x protochk
9899 $eunicefix protochk
9900
9901 hasproto='varname=$1; func=$2; shift; shift;
9902 while $test $# -ge 2; do
9903         case "$1" in
9904         $define) echo "#include <$2>";;
9905         esac ;
9906     shift 2;
9907 done > try.c;
9908 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9909 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9910         echo "$func() prototype found.";
9911         val="$define";
9912 else
9913         echo "$func() prototype NOT found.";
9914         val="$undef";
9915 fi;
9916 set $varname;
9917 eval $setvar;
9918 $rm_try tryout.c'
9919
9920 : see if sys/types.h has to be included
9921 set sys/types.h i_systypes
9922 eval $inhdr
9923
9924 : see if sys/select.h has to be included
9925 set sys/select.h i_sysselct
9926 eval $inhdr
9927
9928 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9929 while $test $# -ge 2; do
9930         case "$1" in
9931         $define) echo "#include <$2>";;
9932         esac ;
9933     shift 2;
9934 done > try.c;
9935 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9936 set try;
9937 if eval $compile; then
9938         val="$define";
9939 else
9940         val="$undef";
9941 fi;
9942 set $varname;
9943 eval $setvar;
9944 $rm_try'
9945
9946 : see if we should include time.h, sys/time.h, or both
9947 echo " "
9948 if test "X$timeincl" = X; then
9949         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9950         $echo $n "I'm now running the test program...$c"
9951         $cat >try.c <<EOCP
9952 #include <sys/types.h>
9953 #ifdef I_TIME
9954 #include <time.h>
9955 #endif
9956 #ifdef I_SYSTIME
9957 #ifdef SYSTIMEKERNEL
9958 #define KERNEL
9959 #endif
9960 #include <sys/time.h>
9961 #endif
9962 #ifdef I_SYSSELECT
9963 #include <sys/select.h>
9964 #endif
9965 #$i_stdlib I_STDLIB
9966 #ifdef I_STDLIB
9967 #include <stdlib.h>
9968 #endif
9969 int main()
9970 {
9971         struct tm foo;
9972 #ifdef S_TIMEVAL
9973         struct timeval bar;
9974 #endif
9975 #ifdef S_TIMEZONE
9976         struct timezone tzp;
9977 #endif
9978         if (foo.tm_sec == foo.tm_sec)
9979                 exit(0);
9980 #ifdef S_TIMEVAL
9981         if (bar.tv_sec == bar.tv_sec)
9982                 exit(0);
9983 #endif
9984         exit(1);
9985 }
9986 EOCP
9987         flags=''
9988         for s_timezone in '-DS_TIMEZONE' ''; do
9989         sysselect=''
9990         for s_timeval in '-DS_TIMEVAL' ''; do
9991         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9992         for i_time in '' '-DI_TIME'; do
9993         for i_systime in '-DI_SYSTIME' ''; do
9994                 case "$flags" in
9995                 '') $echo $n ".$c"
9996                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9997                         if eval $compile; then
9998                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9999                                 shift
10000                                 flags="$*"
10001                                 echo " "
10002                                 $echo $n "Succeeded with $flags$c"
10003                         fi
10004                         ;;
10005                 esac
10006         done
10007         done
10008         done
10009         done
10010         done
10011         timeincl=''
10012         echo " "
10013         case "$flags" in
10014         *SYSTIMEKERNEL*) i_systimek="$define"
10015                 timeincl=`./findhdr sys/time.h`
10016                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10017         *) i_systimek="$undef";;
10018         esac
10019         case "$flags" in
10020         *I_TIME*) i_time="$define"
10021                 timeincl=`./findhdr time.h`" $timeincl"
10022                 echo "We'll include <time.h>." >&4;;
10023         *) i_time="$undef";;
10024         esac
10025         case "$flags" in
10026         *I_SYSTIME*) i_systime="$define"
10027                 timeincl=`./findhdr sys/time.h`" $timeincl"
10028                 echo "We'll include <sys/time.h>." >&4;;
10029         *) i_systime="$undef";;
10030         esac
10031         $rm_try
10032 fi
10033 : see if struct tm knows about tm_zone
10034 case "$i_systime$i_time" in
10035 *$define*)
10036         echo " "
10037         echo "Checking to see if your struct tm has tm_zone field..." >&4
10038         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
10039         eval $hasfield
10040         ;;
10041 *)      val="$undef"
10042         set d_tm_tm_zone
10043         eval $setvar
10044         ;;
10045 esac
10046 case "$d_tm_tm_zone" in
10047 "$define")      echo "Yes, it does."   ;;
10048 *)              echo "No, it doesn't." ;;
10049 esac
10050 : see if struct tm knows about tm_gmtoff
10051 case "$i_systime$i_time" in
10052 *$define*)
10053         echo " "
10054         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
10055         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
10056         eval $hasfield
10057         ;;
10058 *)      val="$undef"
10059         set d_tm_tm_gmtoff
10060         eval $setvar
10061         ;;
10062 esac
10063 case "$d_tm_tm_gmtoff" in
10064 "$define")      echo "Yes, it does."   ;;
10065 *)              echo "No, it doesn't." ;;
10066 esac
10067
10068 : see if asctime_r exists
10069 set asctime_r d_asctime_r
10070 eval $inlibc
10071 case "$d_asctime_r" in
10072 "$define")
10073         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10074         case "$d_asctime_r_proto:$usethreads" in
10075         ":define")      d_asctime_r_proto=define
10076                 set d_asctime_r_proto asctime_r $hdrs
10077                 eval $hasproto ;;
10078         *)      ;;
10079         esac
10080         case "$d_asctime_r_proto" in
10081         define)
10082         case "$asctime_r_proto" in
10083         ''|0) try='char* asctime_r(const struct tm*, char*);'
10084         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
10085         esac
10086         case "$asctime_r_proto" in
10087         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
10088         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
10089         esac
10090         case "$asctime_r_proto" in
10091         ''|0) try='int asctime_r(const struct tm*, char*);'
10092         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
10093         esac
10094         case "$asctime_r_proto" in
10095         ''|0) try='int asctime_r(const struct tm*, char*, int);'
10096         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
10097         esac
10098         case "$asctime_r_proto" in
10099         ''|0)   d_asctime_r=undef
10100                 asctime_r_proto=0
10101                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
10102         * )     case "$asctime_r_proto" in
10103                 REENTRANT_PROTO*) ;;
10104                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
10105                 esac
10106                 echo "Prototype: $try" ;;
10107         esac
10108         ;;
10109         *)      case "$usethreads" in
10110                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
10111                 esac
10112                 d_asctime_r=undef
10113                 asctime_r_proto=0
10114                 ;;
10115         esac
10116         ;;
10117 *)      asctime_r_proto=0
10118         ;;
10119 esac
10120
10121 : see if atolf exists
10122 set atolf d_atolf
10123 eval $inlibc
10124
10125 : see if atoll exists
10126 set atoll d_atoll
10127 eval $inlibc
10128
10129 : Look for GCC-style attribute format
10130 case "$d_attribute_format" in
10131 '')
10132 echo " "
10133 echo "Checking whether your compiler can handle __attribute__((format)) ..." >&4
10134 $cat >attrib.c <<'EOCP'
10135 #include <stdio.h>
10136 void my_special_printf(char* pat,...) __attribute__((__format__(__printf__,1,2)));
10137 EOCP
10138 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10139         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10140                 echo "Your C compiler doesn't support __attribute__((format))."
10141                 val="$undef"
10142         else
10143                 echo "Your C compiler supports __attribute__((format))."
10144                 val="$define"
10145         fi
10146 else
10147         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10148         val="$undef"
10149 fi
10150 ;;
10151 *) val="$d_attribute_format" ;;
10152 esac
10153 set d_attribute_format
10154 eval $setvar
10155 $rm -f attrib*
10156
10157 : Look for GCC-style attribute format with null format allowed
10158 case "$d_printf_format_null" in
10159 '') case "$d_attribute_format" in
10160     $define)
10161         echo " "
10162         echo "Checking whether your compiler allows __printf__ format to be null ..." >&4
10163 $cat >attrib.c <<EOCP
10164 #include <stdio.h>
10165 #$i_stdlib I_STDLIB
10166 #ifdef I_STDLIB
10167 #include <stdlib.h>
10168 #endif
10169 int null_printf (char* pat,...) __attribute__((__format__(__printf__,1,2)));
10170 int null_printf (char* pat,...) { return (int)pat; }
10171 int main () { exit(null_printf(NULL)); }
10172 EOCP
10173         if $cc $ccflags -o attrib attrib.c >attrib.out 2>&1 ; then
10174             : run the executable in case it produces a run-time warning
10175             if $run ./attrib >>attrib.out 2>&1; then
10176                 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10177                     echo "Your C compiler doesn't allow __printf__ format to be null."
10178                     val="$undef"
10179                 else
10180                     echo "Your C compiler allows __printf__ format to be null."
10181                     val="$define"
10182                 fi
10183             else
10184             echo "Your C compiler executable failed with __printf__ format null."
10185             val="$undef"
10186         fi
10187     else
10188         echo "Your C compiler fails with __printf__ format null."
10189         val="$undef"
10190     fi
10191     ;;
10192     *)  val="$undef" ;;
10193     esac
10194 ;;
10195 *)  val="$d_printf_format_null" ;;
10196 esac
10197 set d_printf_format_null
10198 eval $setvar
10199 $rm -f attrib*
10200
10201 : Look for GCC-style attribute malloc
10202 case "$d_attribute_malloc" in
10203 '')
10204 echo " "
10205 echo "Checking whether your compiler can handle __attribute__((malloc)) ..." >&4
10206 $cat >attrib.c <<'EOCP'
10207 #include <stdio.h>
10208 char *go_get_some_memory( int how_many_bytes ) __attribute__((malloc));
10209 EOCP
10210 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10211         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10212                 echo "Your C compiler doesn't support __attribute__((malloc))."
10213                 val="$undef"
10214         else
10215                 echo "Your C compiler supports __attribute__((malloc))."
10216                 val="$define"
10217         fi
10218 else
10219         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10220         val="$undef"
10221 fi
10222 ;;
10223 *) val="$d_attribute_malloc" ;;
10224 esac
10225 set d_attribute_malloc
10226 eval $setvar
10227 $rm -f attrib*
10228
10229 : Look for GCC-style attribute nonnull
10230 case "$d_attribute_nonnull" in
10231 '')
10232 echo " "
10233 echo "Checking whether your compiler can handle __attribute__((nonnull(1))) ..." >&4
10234 $cat >attrib.c <<'EOCP'
10235 #include <stdio.h>
10236 void do_something (char *some_pointer,...) __attribute__((nonnull(1)));
10237 EOCP
10238 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10239         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10240                 echo "Your C compiler doesn't support __attribute__((nonnull))."
10241                 val="$undef"
10242         else
10243                 echo "Your C compiler supports __attribute__((nonnull))."
10244                 val="$define"
10245         fi
10246 else
10247         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10248         val="$undef"
10249 fi
10250 ;;
10251 *) val="$d_attribute_nonnull" ;;
10252 esac
10253 set d_attribute_nonnull
10254 eval $setvar
10255 $rm -f attrib*
10256
10257 : Look for GCC-style attribute noreturn
10258 case "$d_attribute_noreturn" in
10259 '')
10260 echo " "
10261 echo "Checking whether your compiler can handle __attribute__((noreturn)) ..." >&4
10262 $cat >attrib.c <<'EOCP'
10263 #include <stdio.h>
10264 void fall_over_dead( void ) __attribute__((noreturn));
10265 EOCP
10266 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10267         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10268                 echo "Your C compiler doesn't support __attribute__((noreturn))."
10269                 val="$undef"
10270         else
10271                 echo "Your C compiler supports __attribute__((noreturn))."
10272                 val="$define"
10273         fi
10274 else
10275         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10276         val="$undef"
10277 fi
10278 ;;
10279 *) val="$d_attribute_noreturn" ;;
10280 esac
10281 set d_attribute_noreturn
10282 eval $setvar
10283 $rm -f attrib*
10284
10285 : Look for GCC-style attribute pure
10286 case "$d_attribute_pure" in
10287 '')
10288 echo " "
10289 echo "Checking whether your compiler can handle __attribute__((pure)) ..." >&4
10290 $cat >attrib.c <<'EOCP'
10291 #include <stdio.h>
10292 int square( int n ) __attribute__((pure));
10293 EOCP
10294 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10295         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10296                 echo "Your C compiler doesn't support __attribute__((pure))."
10297                 val="$undef"
10298         else
10299                 echo "Your C compiler supports __attribute__((pure))."
10300                 val="$define"
10301         fi
10302 else
10303         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10304         val="$undef"
10305 fi
10306 ;;
10307 *) val="$d_attribute_pure" ;;
10308 esac
10309 set d_attribute_pure
10310 eval $setvar
10311 $rm -f attrib*
10312
10313 : Look for GCC-style attribute unused
10314 case "$d_attribute_unused" in
10315 '')
10316 echo " "
10317 echo "Checking whether your compiler can handle __attribute__((unused)) ..." >&4
10318 $cat >attrib.c <<'EOCP'
10319 #include <stdio.h>
10320 int do_something( int dummy __attribute__((unused)), int n );
10321 EOCP
10322 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10323         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10324                 echo "Your C compiler doesn't support __attribute__((unused))."
10325                 val="$undef"
10326         else
10327                 echo "Your C compiler supports __attribute__((unused))."
10328                 val="$define"
10329         fi
10330 else
10331         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10332         val="$undef"
10333 fi
10334 ;;
10335 *) val="$d_attribute_unused" ;;
10336 esac
10337 set d_attribute_unused
10338 eval $setvar
10339 $rm -f attrib*
10340
10341 : Look for GCC-style attribute warn_unused_result
10342 case "$d_attribute_warn_unused_result" in
10343 '')
10344 echo " "
10345 echo "Checking whether your compiler can handle __attribute__((warn_unused_result)) ..." >&4
10346 $cat >attrib.c <<'EOCP'
10347 #include <stdio.h>
10348 int I_will_not_be_ignored(void) __attribute__((warn_unused_result));
10349 EOCP
10350 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10351         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10352                 echo "Your C compiler doesn't support __attribute__((warn_unused_result))."
10353                 val="$undef"
10354         else
10355                 echo "Your C compiler supports __attribute__((warn_unused_result))."
10356                 val="$define"
10357         fi
10358 else
10359         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10360         val="$undef"
10361 fi
10362 ;;
10363 *) val="$d_attribute_warn_unused_result" ;;
10364 esac
10365 set d_attribute_warn_unused_result
10366 eval $setvar
10367 $rm -f attrib*
10368
10369 : see if bcmp exists
10370 set bcmp d_bcmp
10371 eval $inlibc
10372
10373 : see if bcopy exists
10374 set bcopy d_bcopy
10375 eval $inlibc
10376
10377 : see if getpgrp exists
10378 set getpgrp d_getpgrp
10379 eval $inlibc
10380
10381 case "$d_getpgrp" in
10382 "$define")
10383         echo " "
10384         echo "Checking to see which flavor of getpgrp is in use..."
10385         $cat >try.c <<EOP
10386 #$i_unistd I_UNISTD
10387 #include <sys/types.h>
10388 #ifdef I_UNISTD
10389 #  include <unistd.h>
10390 #endif
10391 #$i_stdlib I_STDLIB
10392 #ifdef I_STDLIB
10393 #include <stdlib.h>
10394 #endif
10395 int main()
10396 {
10397         if (getuid() == 0) {
10398                 printf("(I see you are running Configure as super-user...)\n");
10399                 setuid(1);
10400         }
10401 #ifdef TRY_BSD_PGRP
10402         if (getpgrp(1) == 0)
10403                 exit(0);
10404 #else
10405         if (getpgrp() > 0)
10406                 exit(0);
10407 #endif
10408         exit(1);
10409 }
10410 EOP
10411         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10412                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
10413                 val="$define"
10414         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10415                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
10416                 val="$undef"
10417         else
10418                 echo "I can't seem to compile and run the test program."
10419                 if ./usg; then
10420                         xxx="a USG one, i.e. you use getpgrp()."
10421                 else
10422                         # SVR4 systems can appear rather BSD-ish.
10423                         case "$i_unistd" in
10424                         $undef)
10425                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
10426                                 val="$define"
10427                                 ;;
10428                         $define)
10429                                 xxx="probably a USG one, i.e. you use getpgrp()."
10430                                 val="$undef"
10431                                 ;;
10432                         esac
10433                 fi
10434                 echo "Assuming your getpgrp is $xxx" >&4
10435         fi
10436         ;;
10437 *) val="$undef";;
10438 esac
10439 set d_bsdgetpgrp
10440 eval $setvar
10441 $rm_try
10442
10443 : see if setpgrp exists
10444 set setpgrp d_setpgrp
10445 eval $inlibc
10446
10447 case "$d_setpgrp" in
10448 "$define")
10449         echo " "
10450         echo "Checking to see which flavor of setpgrp is in use..."
10451         $cat >try.c <<EOP
10452 #$i_unistd I_UNISTD
10453 #include <sys/types.h>
10454 #ifdef I_UNISTD
10455 #  include <unistd.h>
10456 #endif
10457 #$i_stdlib I_STDLIB
10458 #ifdef I_STDLIB
10459 #include <stdlib.h>
10460 #endif
10461 int main()
10462 {
10463         if (getuid() == 0) {
10464                 printf("(I see you are running Configure as super-user...)\n");
10465                 setuid(1);
10466         }
10467 #ifdef TRY_BSD_PGRP
10468         if (-1 == setpgrp(1, 1))
10469                 exit(0);
10470 #else
10471         if (setpgrp() != -1)
10472                 exit(0);
10473 #endif
10474         exit(1);
10475 }
10476 EOP
10477         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10478                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10479                 val="$define"
10480         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10481                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10482                 val="$undef"
10483         else
10484                 echo "(I can't seem to compile and run the test program.)"
10485                 if ./usg; then
10486                         xxx="a USG one, i.e. you use setpgrp()."
10487                 else
10488                         # SVR4 systems can appear rather BSD-ish.
10489                         case "$i_unistd" in
10490                         $undef)
10491                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10492                                 val="$define"
10493                                 ;;
10494                         $define)
10495                                 xxx="probably a USG one, i.e. you use setpgrp()."
10496                                 val="$undef"
10497                                 ;;
10498                         esac
10499                 fi
10500                 echo "Assuming your setpgrp is $xxx" >&4
10501         fi
10502         ;;
10503 *) val="$undef";;
10504 esac
10505 set d_bsdsetpgrp
10506 eval $setvar
10507 $rm_try
10508
10509 : Look for GCC-style __builtin_choose_expr
10510 case "$d_builtin_choose_expr" in
10511 '')
10512     echo " "
10513     echo "Checking whether your compiler can handle __builtin_choose_expr ..." >&4
10514     $cat >try.c <<'EOCP'
10515 #include <assert.h>
10516 #include <stdlib.h>
10517 #include <stdio.h>
10518
10519 #define SYRINX(x) __builtin_choose_expr( x, (1056*2), (103*50) )
10520
10521 int main(void) {
10522     assert( SYRINX(1) == 2112 );
10523     assert( SYRINX(1) != 5150 );
10524     assert( SYRINX(0) == 5150 );
10525     assert( SYRINX(0) != 2112 );
10526     puts( "All good!" );
10527     exit(0);
10528 }
10529
10530 EOCP
10531     set try
10532     if eval $compile; then
10533         echo "Your C compiler supports __builtin_choose_expr."
10534         val="$define"
10535     else
10536         echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10537         val="$undef"
10538     fi
10539 ;;
10540 *) val="$d_builtin_choose_expr" ;;
10541 esac
10542
10543 set d_builtin_choose_expr
10544 eval $setvar
10545 $rm_try
10546
10547 : Look for GCC-style __builtin_expect
10548 case "$d_builtin_expect" in
10549 '')
10550     echo " "
10551     echo "Checking whether your compiler can handle __builtin_expect ..." >&4
10552     $cat >builtin.c <<'EOCP'
10553 int main(void) {
10554     int n = 50;
10555     if ( __builtin_expect(n, 0) ) n = 1;
10556 }
10557 EOCP
10558     set try
10559     if eval $compile; then
10560         echo "Your C compiler supports __builtin_choose_expr."
10561         val="$define"
10562     else
10563         echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10564         val="$undef"
10565     fi
10566     ;;
10567 *) val="$d_builtin_expect" ;;
10568 esac
10569
10570 set d_builtin_expect
10571 eval $setvar
10572 $rm_try
10573
10574 : see if bzero exists
10575 set bzero d_bzero
10576 eval $inlibc
10577
10578 : see if stdarg is available
10579 echo " "
10580 if $test `./findhdr stdarg.h`; then
10581         echo "<stdarg.h> found." >&4
10582         valstd="$define"
10583 else
10584         echo "<stdarg.h> NOT found." >&4
10585         valstd="$undef"
10586 fi
10587
10588 : see if varags is available
10589 echo " "
10590 if $test `./findhdr varargs.h`; then
10591         echo "<varargs.h> found." >&4
10592 else
10593         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
10594 fi
10595
10596 : set up the varargs testing programs
10597 $cat > varargs.c <<EOP
10598 #ifdef I_STDARG
10599 #include <stdarg.h>
10600 #endif
10601 #ifdef I_VARARGS
10602 #include <varargs.h>
10603 #endif
10604
10605 #ifdef I_STDARG
10606 int f(char *p, ...)
10607 #else
10608 int f(va_alist)
10609 va_dcl
10610 #endif
10611 {
10612         va_list ap;
10613 #ifndef I_STDARG
10614         char *p;
10615 #endif
10616 #ifdef I_STDARG
10617         va_start(ap,p);
10618 #else
10619         va_start(ap);
10620         p = va_arg(ap, char *);
10621 #endif
10622         va_end(ap);
10623         return 0;
10624 }
10625 EOP
10626 $cat > varargs <<EOP
10627 $startsh
10628 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
10629         echo "true"
10630 else
10631         echo "false"
10632 fi
10633 $rm -f varargs$_o
10634 EOP
10635 chmod +x varargs
10636
10637 : now check which varargs header should be included
10638 echo " "
10639 i_varhdr=''
10640 case "$valstd" in
10641 "$define")
10642         if `./varargs I_STDARG`; then
10643                 val='stdarg.h'
10644         elif `./varargs I_VARARGS`; then
10645                 val='varargs.h'
10646         fi
10647         ;;
10648 *)
10649         if `./varargs I_VARARGS`; then
10650                 val='varargs.h'
10651         fi
10652         ;;
10653 esac
10654 case "$val" in
10655 '')
10656 echo "I could not find the definition for va_dcl... You have problems..." >&4
10657         val="$undef"; set i_stdarg; eval $setvar
10658         val="$undef"; set i_varargs; eval $setvar
10659         ;;
10660 *)
10661         set i_varhdr
10662         eval $setvar
10663         case "$i_varhdr" in
10664         stdarg.h)
10665                 val="$define"; set i_stdarg; eval $setvar
10666                 val="$undef"; set i_varargs; eval $setvar
10667                 ;;
10668         varargs.h)
10669                 val="$undef"; set i_stdarg; eval $setvar
10670                 val="$define"; set i_varargs; eval $setvar
10671                 ;;
10672         esac
10673         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
10674 esac
10675 $rm -f varargs*
10676
10677 : see if the Compiler supports C99 variadic macros
10678 case "$i_stdarg$i_stdlib" in
10679     "$define$define")
10680     echo "You have <stdarg.h> and <stdlib.h>, so checking for C99 variadic macros." >&4
10681     $cat >try.c <<EOCP
10682 #include <stdio.h>
10683 #include <stdarg.h>
10684
10685 #define foo(buffer, format, ...) sprintf(buffer, format, __VA_ARGS__)
10686
10687 int main() {
10688   char buf[20];
10689   foo(buf, "%d %g %.*s", 123, 456.0, (int)3, "789fail");
10690   puts(buf);
10691   return 0;
10692 }
10693 EOCP
10694     set try
10695     if eval $compile && $run ./try 2>&1 >/dev/null; then
10696         case "`$run ./try`" in
10697             "123 456 789")
10698             echo "You have C99 variadic macros." >&4
10699             d_c99_variadic_macros="$define"
10700             ;;
10701             *)
10702             echo "You don't have functional C99 variadic macros." >&4
10703             d_c99_variadic_macros="$undef"
10704             ;;
10705         esac
10706     else
10707         echo "I couldn't compile and run the test program, so I assume that you don't have functional C99 variadic macros." >&4
10708         d_c99_variadic_macros="$undef"
10709     fi
10710     $rm_try
10711     ;;
10712     *)
10713     echo "You don't have <stdarg.h> and <stdlib.h>, so not checking for C99 variadic macros." >&4
10714     d_c99_variadic_macros="$undef"
10715     ;;
10716 esac
10717
10718 : see if signal is declared as pointer to function returning int or void
10719 echo " "
10720 xxx=`./findhdr signal.h`
10721 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10722 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10723         echo "You have int (*signal())() instead of void." >&4
10724         val="$undef"
10725 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10726         echo "You have void (*signal())()." >&4
10727         val="$define"
10728 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10729         echo "You have int (*signal())() instead of void." >&4
10730         val="$undef"
10731 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10732         echo "You have void (*signal())()." >&4
10733         val="$define"
10734 else
10735         case "$d_voidsig" in
10736         '')
10737         echo "I can't determine whether signal handler returns void or int..." >&4
10738                 dflt=void
10739                 rp="What type does your signal handler return?"
10740                 . ./myread
10741                 case "$ans" in
10742                 v*) val="$define";;
10743                 *) val="$undef";;
10744                 esac;;
10745         "$define")
10746                 echo "As you already told me, signal handler returns void." >&4
10747                 val="$define"
10748                 ;;
10749         *)      echo "As you already told me, signal handler returns int." >&4
10750                 val="$undef"
10751                 ;;
10752         esac
10753 fi
10754 set d_voidsig
10755 eval $setvar
10756 case "$d_voidsig" in
10757 "$define") signal_t="void";;
10758 *) signal_t="int";;
10759 esac
10760 $rm -f $$.tmp
10761
10762 : check for ability to cast large floats to 32-bit ints.
10763 echo " "
10764 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10765 if $test "$intsize" -ge 4; then
10766         xxx=int
10767 else
10768         xxx=long
10769 fi
10770 $cat >try.c <<EOCP
10771 #include <stdio.h>
10772 #$i_stdlib I_STDLIB
10773 #ifdef I_STDLIB
10774 #include <stdlib.h>
10775 #endif
10776 #include <sys/types.h>
10777 #include <signal.h>
10778 $signal_t blech(int s) { exit(3); }
10779 int main()
10780 {
10781         $xxx i32;
10782         double f, g;
10783         int result = 0;
10784         char str[16];
10785         signal(SIGFPE, blech);
10786
10787         /* Don't let compiler optimize the test away.  Store the number
10788            in a writable string for gcc to pass to sscanf under HP/UX.
10789         */
10790         sprintf(str, "2147483647");
10791         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10792         g = 10 * f;
10793         i32  = ($xxx) g;
10794
10795         /* x86 processors will probably give 0x8000 0000, which is a
10796            sign change.  We don't want that.  We want to mimic SPARC
10797            behavior here, which is to preserve the sign and give
10798            back 0x7fff ffff.
10799         */
10800         if (i32 != ($xxx) f)
10801                 result |= 1;
10802         exit(result);
10803 }
10804 EOCP
10805 set try
10806 if eval $compile_ok; then
10807         $run ./try
10808         yyy=$?
10809 else
10810         echo "(I can't seem to compile the test program--assuming it can't)"
10811         yyy=1
10812 fi
10813 case "$yyy" in
10814 0)      val="$define"
10815         echo "Yup, it can."
10816         ;;
10817 *)      val="$undef"
10818         echo "Nope, it can't."
10819         ;;
10820 esac
10821 set d_casti32
10822 eval $setvar
10823 $rm_try
10824
10825 : check for ability to cast negative floats to unsigned
10826 echo " "
10827 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10828 $cat >try.c <<EOCP
10829 #include <stdio.h>
10830 #$i_stdlib I_STDLIB
10831 #ifdef I_STDLIB
10832 #include <stdlib.h>
10833 #endif
10834 #include <sys/types.h>
10835 #include <signal.h>
10836 $signal_t blech(int s) { exit(7); }
10837 $signal_t blech_in_list(int s) { exit(4); }
10838 unsigned long dummy_long(unsigned long p) { return p; }
10839 unsigned int dummy_int(unsigned int p) { return p; }
10840 unsigned short dummy_short(unsigned short p) { return p; }
10841 int main()
10842 {
10843         double f;
10844         unsigned long along;
10845         unsigned int aint;
10846         unsigned short ashort;
10847         int result = 0;
10848         char str[16];
10849
10850         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10851            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10852            optimized the whole file away
10853         */
10854         /* Store the number in a writable string for gcc to pass to
10855            sscanf under HP/UX.
10856         */
10857         sprintf(str, "-123");
10858         sscanf(str, "%lf", &f);  /* f = -123.; */
10859
10860         signal(SIGFPE, blech);
10861         along = (unsigned long)f;
10862         aint = (unsigned int)f;
10863         ashort = (unsigned short)f;
10864         if (along != (unsigned long)-123)
10865                 result |= 1;
10866         if (aint != (unsigned int)-123)
10867                 result |= 1;
10868         if (ashort != (unsigned short)-123)
10869                 result |= 1;
10870         sprintf(str, "1073741824.");
10871         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10872         f = f + f;
10873         along = 0;
10874         along = (unsigned long)f;
10875         if (along != 0x80000000)
10876                 result |= 2;
10877         f -= 1.;
10878         along = 0;
10879         along = (unsigned long)f;
10880         if (along != 0x7fffffff)
10881                 result |= 1;
10882         f += 2.;
10883         along = 0;
10884         along = (unsigned long)f;
10885         if (along != 0x80000001)
10886                 result |= 2;
10887         if (result)
10888                 exit(result);
10889         signal(SIGFPE, blech_in_list);
10890         sprintf(str, "123.");
10891         sscanf(str, "%lf", &f);  /* f = 123.; */
10892         along = dummy_long((unsigned long)f);
10893         aint = dummy_int((unsigned int)f);
10894         ashort = dummy_short((unsigned short)f);
10895         if (along != (unsigned long)123)
10896                 result |= 4;
10897         if (aint != (unsigned int)123)
10898                 result |= 4;
10899         if (ashort != (unsigned short)123)
10900                 result |= 4;
10901         exit(result);
10902
10903 }
10904 EOCP
10905 set try
10906 if eval $compile_ok; then
10907         $run ./try
10908         castflags=$?
10909 else
10910         echo "(I can't seem to compile the test program--assuming it can't)"
10911         castflags=7
10912 fi
10913 case "$castflags" in
10914 0)      val="$define"
10915         echo "Yup, it can."
10916         ;;
10917 *)      val="$undef"
10918         echo "Nope, it can't."
10919         ;;
10920 esac
10921 set d_castneg
10922 eval $setvar
10923 $rm_try
10924
10925 : see if vprintf exists
10926 echo " "
10927 if set vprintf val -f d_vprintf; eval $csym; $val; then
10928         echo 'vprintf() found.' >&4
10929         val="$define"
10930         $cat >try.c <<EOF
10931 #$i_stdarg I_STDARG  /* Only one of these can be defined by i_varhrd */
10932 #$i_varargs I_VARARGS
10933
10934 #$i_stdlib I_STDLIB
10935 #$i_unistd I_UNISTD
10936
10937 #ifdef I_STDARG
10938 #  include <stdarg.h>
10939 #else /* I_VARARGS */
10940 #  include <varargs.h>
10941 #endif
10942
10943 #ifdef I_UNISTD
10944 #  include <unistd.h>
10945 #endif
10946
10947 #ifdef I_STDLIB
10948 #  include <stdlib.h>
10949 #endif
10950
10951 #include <stdio.h> /* vsprintf prototype */
10952
10953 #ifdef I_STDARG
10954 void xxx(int n, ...)
10955 {
10956     va_list args;
10957     char buf[10];
10958     va_start(args, n);
10959     exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10960 }
10961 int main() { xxx(1, "foo"); }
10962
10963 #else /* I_VARARGS */
10964
10965 xxx(va_alist)
10966 va_dcl
10967 {
10968     va_list args;
10969     char buf[10];
10970     va_start(args);
10971     exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10972 }
10973 int main() { xxx("foo"); }
10974
10975 #endif
10976
10977 EOF
10978         set try
10979         if eval $compile_ok; then
10980                 if $run ./try; then
10981                         echo "Your vsprintf() returns (int)." >&4
10982                         val2="$undef"
10983                 else
10984                         echo "Your vsprintf() returns (char*)." >&4
10985                         val2="$define"
10986                 fi
10987         else
10988                 echo 'I am unable to compile the vsprintf() test program.' >&4
10989                 # We shouldn't get here.  If we do, assume the standard signature,
10990                 # not the old BSD one.
10991                 echo 'Guessing that vsprintf() returns (int).' >&4
10992                 val2="$undef"
10993         fi
10994 else
10995         echo 'vprintf() NOT found.' >&4
10996         val="$undef"
10997         val2="$undef"
10998 fi
10999 $rm_try
11000 set d_vprintf
11001 eval $setvar
11002 val=$val2
11003 set d_charvspr
11004 eval $setvar
11005
11006 : see if chown exists
11007 set chown d_chown
11008 eval $inlibc
11009
11010 : see if chroot exists
11011 set chroot d_chroot
11012 eval $inlibc
11013
11014 : see if chsize exists
11015 set chsize d_chsize
11016 eval $inlibc
11017
11018 : see if class exists
11019 set class d_class
11020 eval $inlibc
11021
11022 : see if clearenv exists
11023 set clearenv d_clearenv
11024 eval $inlibc
11025
11026 hasstruct='varname=$1; struct=$2; shift; shift;
11027 while $test $# -ge 2; do
11028         case "$1" in
11029         $define) echo "#include <$2>";;
11030         esac ;
11031     shift 2;
11032 done > try.c;
11033 echo "int main () { struct $struct foo; }" >> try.c;
11034 set try;
11035 if eval $compile; then
11036         val="$define";
11037 else
11038         val="$undef";
11039 fi;
11040 set $varname;
11041 eval $setvar;
11042 $rm_try'
11043
11044 socketlib=''
11045 sockethdr=''
11046 : see whether socket exists
11047 echo " "
11048 $echo $n "Hmm... $c" >&4
11049 if set socket val -f d_socket; eval $csym; $val; then
11050         echo "Looks like you have Berkeley networking support." >&4
11051         d_socket="$define"
11052         if set setsockopt val -f; eval $csym; $val; then
11053                 d_oldsock="$undef"
11054         else
11055                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
11056                 d_oldsock="$define"
11057         fi
11058 else
11059         if $contains socklib libc.list >/dev/null 2>&1; then
11060                 echo "Looks like you have Berkeley networking support." >&4
11061                 d_socket="$define"
11062                 : we will have to assume that it supports the 4.2 BSD interface
11063                 d_oldsock="$undef"
11064         else
11065                 echo "You don't have Berkeley networking in libc$_a..." >&4
11066                 if test "X$d_socket" = "X$define"; then
11067                    echo "...but you seem to believe that you have sockets." >&4
11068                 else
11069                         for net in net socket
11070                         do
11071                                 if test -f /usr/lib/lib$net$_a; then
11072                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
11073                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
11074                                         if $contains socket libc.list >/dev/null 2>&1; then
11075                                                 d_socket="$define"
11076                                                 socketlib="-l$net"
11077                                                 case "$net" in
11078                                                 net)
11079                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
11080                                                         sockethdr="-I/usr/netinclude"
11081                                                         ;;
11082                                                 esac
11083                                                 echo "Found Berkeley sockets interface in lib$net." >&4
11084                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
11085                                                         d_oldsock="$undef"
11086                                                 else
11087                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
11088                                                         d_oldsock="$define"
11089                                                 fi
11090                                                 break
11091                                         fi
11092                                 fi
11093                         done
11094                         if test "X$d_socket" != "X$define"; then
11095                            echo "or anywhere else I see." >&4
11096                            d_socket="$undef"
11097                            d_oldsock="$undef"
11098                         fi
11099                 fi
11100         fi
11101 fi
11102
11103 : see if socketpair exists
11104 set socketpair d_sockpair
11105 eval $inlibc
11106
11107
11108 echo " "
11109 echo "Checking the availability of certain socket constants..." >&4
11110 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
11111         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
11112         $cat >try.c <<EOF
11113 #include <sys/types.h>
11114 #include <sys/socket.h>
11115 int main() {
11116     int i = $ENUM;
11117 }
11118 EOF
11119         val="$undef"
11120         set try; if eval $compile; then
11121                 val="$define"
11122         fi
11123         set d_${enum}; eval $setvar
11124         $rm_try
11125 done
11126
11127 : see if this is a sys/uio.h system
11128 set sys/uio.h i_sysuio
11129 eval $inhdr
11130
11131
11132 echo " "
11133 echo "Checking to see if your system supports struct cmsghdr..." >&4
11134 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11135 eval $hasstruct
11136 case "$d_cmsghdr_s" in
11137 "$define")      echo "Yes, it does."   ;;
11138 *)              echo "No, it doesn't." ;;
11139 esac
11140
11141
11142 : check for const keyword
11143 echo " "
11144 echo 'Checking to see if your C compiler knows about "const"...' >&4
11145 $cat >const.c <<'EOCP'
11146 typedef struct spug { int drokk; } spug;
11147 int main()
11148 {
11149         const char *foo;
11150         const spug y = { 0 };
11151 }
11152 EOCP
11153 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
11154         val="$define"
11155         echo "Yup, it does."
11156 else
11157         val="$undef"
11158         echo "Nope, it doesn't."
11159 fi
11160 set d_const
11161 eval $setvar
11162
11163 : see if copysignl exists
11164 set copysignl d_copysignl
11165 eval $inlibc
11166
11167 : see if crypt exists
11168 echo " "
11169 set crypt d_crypt
11170 eval $inlibc
11171 case "$d_crypt" in
11172 $define) cryptlib='' ;;
11173 *)      if set crypt val -f d_crypt; eval $csym; $val; then
11174                 echo 'crypt() found.' >&4
11175                 val="$define"
11176                 cryptlib=''
11177         else
11178                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
11179                 if $test -z "$cryptlib"; then
11180                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
11181                 else
11182                         cryptlib=-lcrypt
11183                 fi
11184                 if $test -z "$cryptlib"; then
11185                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
11186                 else
11187                         cryptlib=-lcrypt
11188                 fi
11189                 if $test -z "$cryptlib"; then
11190                         cryptlib=`./loc libcrypt$_a "" $libpth`
11191                 else
11192                         cryptlib=-lcrypt
11193                 fi
11194                 if $test -z "$cryptlib"; then
11195                         echo 'crypt() NOT found.' >&4
11196                         val="$undef"
11197                 else
11198                         val="$define"
11199                 fi
11200         fi
11201         set d_crypt
11202         eval $setvar
11203         ;;
11204 esac
11205
11206 : see if this is a crypt.h system
11207 set crypt.h i_crypt
11208 eval $inhdr
11209
11210 : see if crypt_r exists
11211 set crypt_r d_crypt_r
11212 eval $inlibc
11213 case "$d_crypt_r" in
11214 "$define")
11215         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
11216         case "$d_crypt_r_proto:$usethreads" in
11217         ":define")      d_crypt_r_proto=define
11218                 set d_crypt_r_proto crypt_r $hdrs
11219                 eval $hasproto ;;
11220         *)      ;;
11221         esac
11222         case "$d_crypt_r_proto" in
11223         define)
11224         case "$crypt_r_proto" in
11225         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
11226         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
11227         esac
11228         case "$crypt_r_proto" in
11229         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
11230         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
11231         esac
11232         case "$crypt_r_proto" in
11233         ''|0)   d_crypt_r=undef
11234                 crypt_r_proto=0
11235                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
11236         * )     case "$crypt_r_proto" in
11237                 REENTRANT_PROTO*) ;;
11238                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
11239                 esac
11240                 echo "Prototype: $try" ;;
11241         esac
11242         ;;
11243         *)      case "$usethreads" in
11244                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
11245                 esac
11246                 d_crypt_r=undef
11247                 crypt_r_proto=0
11248                 ;;
11249         esac
11250         ;;
11251 *)      crypt_r_proto=0
11252         ;;
11253 esac
11254
11255 : get csh whereabouts
11256 case "$csh" in
11257 'csh') val="$undef" ;;
11258 *) val="$define" ;;
11259 esac
11260 set d_csh
11261 eval $setvar
11262 : Respect a hint or command line value for full_csh.
11263 case "$full_csh" in
11264 '') full_csh=$csh ;;
11265 esac
11266
11267 : see if ctermid exists
11268 set ctermid d_ctermid
11269 eval $inlibc
11270
11271 : see if ctermid_r exists
11272 set ctermid_r d_ctermid_r
11273 eval $inlibc
11274 case "$d_ctermid_r" in
11275 "$define")
11276         hdrs="$i_systypes sys/types.h define stdio.h "
11277         case "$d_ctermid_r_proto:$usethreads" in
11278         ":define")      d_ctermid_r_proto=define
11279                 set d_ctermid_r_proto ctermid_r $hdrs
11280                 eval $hasproto ;;
11281         *)      ;;
11282         esac
11283         case "$d_ctermid_r_proto" in
11284         define)
11285         case "$ctermid_r_proto" in
11286         ''|0) try='char* ctermid_r(char*);'
11287         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
11288         esac
11289         case "$ctermid_r_proto" in
11290         ''|0)   d_ctermid_r=undef
11291                 ctermid_r_proto=0
11292                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
11293         * )     case "$ctermid_r_proto" in
11294                 REENTRANT_PROTO*) ;;
11295                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
11296                 esac
11297                 echo "Prototype: $try" ;;
11298         esac
11299         ;;
11300         *)      case "$usethreads" in
11301                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
11302                 esac
11303                 d_ctermid_r=undef
11304                 ctermid_r_proto=0
11305                 ;;
11306         esac
11307         ;;
11308 *)      ctermid_r_proto=0
11309         ;;
11310 esac
11311
11312 : see if ctime_r exists
11313 set ctime_r d_ctime_r
11314 eval $inlibc
11315 case "$d_ctime_r" in
11316 "$define")
11317         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
11318         case "$d_ctime_r_proto:$usethreads" in
11319         ":define")      d_ctime_r_proto=define
11320                 set d_ctime_r_proto ctime_r $hdrs
11321                 eval $hasproto ;;
11322         *)      ;;
11323         esac
11324         case "$d_ctime_r_proto" in
11325         define)
11326         case "$ctime_r_proto" in
11327         ''|0) try='char* ctime_r(const time_t*, char*);'
11328         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
11329         esac
11330         case "$ctime_r_proto" in
11331         ''|0) try='char* ctime_r(const time_t*, char*, int);'
11332         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
11333         esac
11334         case "$ctime_r_proto" in
11335         ''|0) try='int ctime_r(const time_t*, char*);'
11336         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
11337         esac
11338         case "$ctime_r_proto" in
11339         ''|0) try='int ctime_r(const time_t*, char*, int);'
11340         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
11341         esac
11342         case "$ctime_r_proto" in
11343         ''|0)   d_ctime_r=undef
11344                 ctime_r_proto=0
11345                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
11346         * )     case "$ctime_r_proto" in
11347                 REENTRANT_PROTO*) ;;
11348                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
11349                 esac
11350                 echo "Prototype: $try" ;;
11351         esac
11352         ;;
11353         *)      case "$usethreads" in
11354                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
11355                 esac
11356                 d_ctime_r=undef
11357                 ctime_r_proto=0
11358                 ;;
11359         esac
11360         ;;
11361 *)      ctime_r_proto=0
11362         ;;
11363 esac
11364
11365 : see if cuserid exists
11366 set cuserid d_cuserid
11367 eval $inlibc
11368
11369 : see if this is a limits.h system
11370 set limits.h i_limits
11371 eval $inhdr
11372
11373 : see if this is a float.h system
11374 set float.h i_float
11375 eval $inhdr
11376
11377 : See if number of significant digits in a double precision number is known
11378 echo " "
11379 $cat >dbl_dig.c <<EOM
11380 #$i_limits I_LIMITS
11381 #$i_float I_FLOAT
11382 #ifdef I_LIMITS
11383 #include <limits.h>
11384 #endif
11385 #ifdef I_FLOAT
11386 #include <float.h>
11387 #endif
11388 #ifdef DBL_DIG
11389 printf("Contains DBL_DIG");
11390 #endif
11391 EOM
11392 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
11393 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
11394         echo "DBL_DIG found." >&4
11395         val="$define"
11396 else
11397         echo "DBL_DIG NOT found." >&4
11398         val="$undef"
11399 fi
11400 $rm -f dbl_dig.?
11401 set d_dbl_dig
11402 eval $setvar
11403
11404 : see if dbm.h is available
11405 : see if dbmclose exists
11406 set dbmclose d_dbmclose
11407 eval $inlibc
11408
11409 case "$d_dbmclose" in
11410 $define)
11411         set dbm.h i_dbm
11412         eval $inhdr
11413         case "$i_dbm" in
11414         $define)
11415                 val="$undef"
11416                 set i_rpcsvcdbm
11417                 eval $setvar
11418                 ;;
11419         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11420                 eval $inhdr
11421                 ;;
11422         esac
11423         ;;
11424 *)      echo "We won't be including <dbm.h>"
11425         val="$undef"
11426         set i_dbm
11427         eval $setvar
11428         val="$undef"
11429         set i_rpcsvcdbm
11430         eval $setvar
11431         ;;
11432 esac
11433
11434 : see if prototype for dbminit is available
11435 echo " "
11436 set d_dbminitproto dbminit $i_dbm dbm.h
11437 eval $hasproto
11438
11439 : see if difftime exists
11440 set difftime d_difftime
11441 eval $inlibc
11442
11443 : see if this is a dirent system
11444 echo " "
11445 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
11446         val="$define"
11447         echo "<dirent.h> found." >&4
11448 else
11449         val="$undef"
11450         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
11451                 echo "<sys/dir.h> found." >&4
11452                 echo " "
11453         else
11454                 xinc=`./findhdr sys/ndir.h`
11455         fi
11456         echo "<dirent.h> NOT found." >&4
11457 fi
11458 set i_dirent
11459 eval $setvar
11460
11461 : Look for type of directory structure.
11462 echo " "
11463 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11464
11465 case "$direntrytype" in
11466 ''|' ')
11467         case "$i_dirent" in
11468         $define) guess1='struct dirent' ;;
11469         *) guess1='struct direct'  ;;
11470         esac
11471         ;;
11472 *)      guess1="$direntrytype"
11473         ;;
11474 esac
11475
11476 case "$guess1" in
11477 'struct dirent') guess2='struct direct' ;;
11478 *) guess2='struct dirent' ;;
11479 esac
11480
11481 if $contains "$guess1" try.c >/dev/null 2>&1; then
11482         direntrytype="$guess1"
11483         echo "Your directory entries are $direntrytype." >&4
11484 elif $contains "$guess2" try.c >/dev/null 2>&1; then
11485         direntrytype="$guess2"
11486         echo "Your directory entries seem to be $direntrytype." >&4
11487 else
11488         echo "I don't recognize your system's directory entries." >&4
11489         rp="What type is used for directory entries on this system?"
11490         dflt="$guess1"
11491         . ./myread
11492         direntrytype="$ans"
11493 fi
11494 $rm_try
11495
11496 : see if the directory entry stores field length
11497 echo " "
11498 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11499 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
11500         echo "Good, your directory entry keeps length information in d_namlen." >&4
11501         val="$define"
11502 else
11503         echo "Your directory entry does not know about the d_namlen field." >&4
11504         val="$undef"
11505 fi
11506 set d_dirnamlen
11507 eval $setvar
11508 $rm_try
11509
11510 : Look for DIR.dd_fd
11511 case "$i_dirent" in
11512 "$define")
11513     echo "Checking to see if DIR has a dd_fd member variable" >&4
11514     $cat >try.c <<EOCP
11515 #$i_stdlib I_STDLIB
11516 #ifdef I_STDLIB
11517 #include <stdlib.h>
11518 #endif
11519 #include <dirent.h>
11520
11521 int main() {
11522     DIR dir;
11523     dir.dd_fd = 1;
11524     return 0;
11525 }
11526 EOCP
11527     val=$undef
11528     set try
11529     if eval $compile; then
11530         echo "Yes, it does."
11531         val="$define"
11532     else
11533         echo "No, it does not."
11534         val="$undef"
11535     fi
11536     ;;
11537 *)
11538     echo "You don't have a <dirent.h>, so not checking for dd_fd." >&4
11539     val="$undef"
11540     ;;
11541 esac
11542 set d_dir_dd_fd
11543 eval $setvar
11544 $rm_try
11545
11546 : see if this is an sysdir system
11547 set sys/dir.h i_sysdir
11548 eval $inhdr
11549
11550 : see if this is an sysndir system
11551 set sys/ndir.h i_sysndir
11552 eval $inhdr
11553
11554 : Look for dirfd
11555 echo " "
11556 $cat >dirfd.c <<EOM
11557 #include <stdio.h>
11558 #$i_stdlib I_STDLIB
11559 #ifdef I_STDLIB
11560 #include <stdlib.h>
11561 #endif
11562 #$i_dirent I_DIRENT             /**/
11563 #$i_sysdir I_SYS_DIR            /**/
11564 #$i_sysndir I_SYS_NDIR          /**/
11565 #$i_systypes I_SYS_TYPES        /**/
11566 #if defined(I_SYS_TYPES)
11567 #include <sys/types.h>
11568 #endif
11569 #if defined(I_DIRENT)
11570 #include <dirent.h>
11571 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11572 #include <sys/dir.h>
11573 #endif
11574 #else
11575 #ifdef I_SYS_NDIR
11576 #include <sys/ndir.h>
11577 #else
11578 #ifdef I_SYS_DIR
11579 #ifdef hp9000s500
11580 #include <ndir.h>       /* may be wrong in the future */
11581 #else
11582 #include <sys/dir.h>
11583 #endif
11584 #endif
11585 #endif
11586 #endif 
11587 int main() {
11588         DIR *dirp = opendir(".");
11589         if (dirfd(dirp) >= 0)
11590                 exit(0);
11591         else
11592                 exit(1);
11593 }
11594 EOM
11595 val=$undef
11596 set dirfd
11597 if eval $compile; then
11598         val="$define"
11599 fi
11600 case "$val" in
11601 $define)        echo "dirfd() found." >&4       ;;
11602 *)              echo "dirfd() NOT found." >&4   ;;
11603 esac
11604 set d_dirfd
11605 eval $setvar
11606 $rm -f dirfd*
11607
11608 : see if dlerror exists
11609 xxx_runnm="$runnm"
11610 runnm=false
11611 set dlerror d_dlerror
11612 eval $inlibc
11613 runnm="$xxx_runnm"
11614
11615 : see if dlfcn is available
11616 set dlfcn.h i_dlfcn
11617 eval $inhdr
11618
11619 case "$usedl" in
11620 $define|y|true)
11621         $cat << EOM
11622
11623 On a few systems, the dynamically loaded modules that perl generates and uses
11624 will need a different extension than shared libs. The default will probably
11625 be appropriate.
11626
11627 EOM
11628         case "$dlext" in
11629         '')     dflt="$so" ;;
11630         *)      dflt="$dlext" ;;
11631         esac
11632         rp='What is the extension of dynamically loaded modules'
11633         . ./myread
11634         dlext="$ans"
11635         ;;
11636 *)
11637         dlext="none"
11638         ;;
11639 esac
11640
11641 : Check if dlsym need a leading underscore
11642 echo " "
11643 val="$undef"
11644
11645 case "$dlsrc" in
11646 dl_dlopen.xs)
11647         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
11648         $cat >dyna.c <<'EOM'
11649 fred () { }
11650 EOM
11651
11652 $cat >fred.c<<EOM
11653
11654 #include <stdio.h>
11655 #$i_stdlib I_STDLIB
11656 #ifdef I_STDLIB
11657 #include <stdlib.h>
11658 #endif
11659 #$i_dlfcn I_DLFCN
11660 #ifdef I_DLFCN
11661 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
11662 #else
11663 #include <sys/types.h>
11664 #include <nlist.h>
11665 #include <link.h>
11666 #endif
11667
11668 extern int fred() ;
11669
11670 int main()
11671 {
11672     void * handle ;
11673     void * symbol ;
11674 #ifndef RTLD_LAZY
11675     int mode = 1 ;
11676 #else
11677     int mode = RTLD_LAZY ;
11678 #endif
11679     handle = dlopen("./dyna.$dlext", mode) ;
11680     if (handle == NULL) {
11681         printf ("1\n") ;
11682         fflush (stdout) ;
11683         exit(0);
11684     }
11685     symbol = dlsym(handle, "fred") ;
11686     if (symbol == NULL) {
11687         /* try putting a leading underscore */
11688         symbol = dlsym(handle, "_fred") ;
11689         if (symbol == NULL) {
11690             printf ("2\n") ;
11691             fflush (stdout) ;
11692             exit(0);
11693         }
11694         printf ("3\n") ;
11695     }
11696     else
11697         printf ("4\n") ;
11698     fflush (stdout) ;
11699     exit(0);
11700 }
11701 EOM
11702         : Call the object file tmp-dyna.o in case dlext=o.
11703         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
11704                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
11705                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
11706                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
11707                 xxx=`$run ./fred`
11708                 case $xxx in
11709                 1)      echo "Test program failed using dlopen." >&4
11710                         echo "Perhaps you should not use dynamic loading." >&4;;
11711                 2)      echo "Test program failed using dlsym." >&4
11712                         echo "Perhaps you should not use dynamic loading." >&4;;
11713                 3)      echo "dlsym needs a leading underscore" >&4
11714                         val="$define" ;;
11715                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
11716                 esac
11717         else
11718                 echo "I can't compile and run the test program." >&4
11719                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
11720         fi
11721         ;;
11722 esac
11723
11724 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
11725
11726 set d_dlsymun
11727 eval $setvar
11728
11729 : see if drand48_r exists
11730 set drand48_r d_drand48_r
11731 eval $inlibc
11732 case "$d_drand48_r" in
11733 "$define")
11734         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
11735         case "$d_drand48_r_proto:$usethreads" in
11736         ":define")      d_drand48_r_proto=define
11737                 set d_drand48_r_proto drand48_r $hdrs
11738                 eval $hasproto ;;
11739         *)      ;;
11740         esac
11741         case "$d_drand48_r_proto" in
11742         define)
11743         case "$drand48_r_proto" in
11744         ''|0) try='int drand48_r(struct drand48_data*, double*);'
11745         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
11746         esac
11747         case "$drand48_r_proto" in
11748         ''|0)   d_drand48_r=undef
11749                 drand48_r_proto=0
11750                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
11751         * )     case "$drand48_r_proto" in
11752                 REENTRANT_PROTO*) ;;
11753                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
11754                 esac
11755                 echo "Prototype: $try" ;;
11756         esac
11757         ;;
11758         *)      case "$usethreads" in
11759                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11760                 esac
11761                 d_drand48_r=undef
11762                 drand48_r_proto=0
11763                 ;;
11764         esac
11765         ;;
11766 *)      drand48_r_proto=0
11767         ;;
11768 esac
11769
11770 : see if prototype for drand48 is available
11771 echo " "
11772 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11773 eval $hasproto
11774
11775 : see if dup2 exists
11776 set dup2 d_dup2
11777 eval $inlibc
11778
11779 : see if eaccess exists
11780 set eaccess d_eaccess
11781 eval $inlibc
11782
11783 : see if endgrent exists
11784 set endgrent d_endgrent
11785 eval $inlibc
11786
11787 : see if this is an grp system
11788 set grp.h i_grp
11789 eval $inhdr
11790
11791 case "$i_grp" in
11792 $define)
11793         xxx=`./findhdr grp.h`
11794         $cppstdin $cppflags $cppminus < $xxx >$$.h
11795
11796         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11797                 val="$define"
11798         else
11799                 val="$undef"
11800         fi
11801         set d_grpasswd
11802         eval $setvar
11803
11804         $rm -f $$.h
11805         ;;
11806 *)
11807         val="$undef";
11808         set d_grpasswd; eval $setvar
11809         ;;
11810 esac
11811
11812 : see if endgrent_r exists
11813 set endgrent_r d_endgrent_r
11814 eval $inlibc
11815 case "$d_endgrent_r" in
11816 "$define")
11817         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11818         case "$d_endgrent_r_proto:$usethreads" in
11819         ":define")      d_endgrent_r_proto=define
11820                 set d_endgrent_r_proto endgrent_r $hdrs
11821                 eval $hasproto ;;
11822         *)      ;;
11823         esac
11824         case "$d_endgrent_r_proto" in
11825         define)
11826         case "$endgrent_r_proto" in
11827         ''|0) try='int endgrent_r(FILE**);'
11828         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11829         esac
11830         case "$endgrent_r_proto" in
11831         ''|0) try='void endgrent_r(FILE**);'
11832         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11833         esac
11834         case "$endgrent_r_proto" in
11835         ''|0)   d_endgrent_r=undef
11836                 endgrent_r_proto=0
11837                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11838         * )     case "$endgrent_r_proto" in
11839                 REENTRANT_PROTO*) ;;
11840                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11841                 esac
11842                 echo "Prototype: $try" ;;
11843         esac
11844         ;;
11845         *)      case "$usethreads" in
11846                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11847                 esac
11848                 d_endgrent_r=undef
11849                 endgrent_r_proto=0
11850                 ;;
11851         esac
11852         ;;
11853 *)      endgrent_r_proto=0
11854         ;;
11855 esac
11856
11857 : see if endhostent exists
11858 set endhostent d_endhent
11859 eval $inlibc
11860
11861 : see if this is a netdb.h system
11862 set netdb.h i_netdb
11863 eval $inhdr
11864
11865 : see if endhostent_r exists
11866 set endhostent_r d_endhostent_r
11867 eval $inlibc
11868 case "$d_endhostent_r" in
11869 "$define")
11870         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11871         case "$d_endhostent_r_proto:$usethreads" in
11872         ":define")      d_endhostent_r_proto=define
11873                 set d_endhostent_r_proto endhostent_r $hdrs
11874                 eval $hasproto ;;
11875         *)      ;;
11876         esac
11877         case "$d_endhostent_r_proto" in
11878         define)
11879         case "$endhostent_r_proto" in
11880         ''|0) try='int endhostent_r(struct hostent_data*);'
11881         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11882         esac
11883         case "$endhostent_r_proto" in
11884         ''|0) try='void endhostent_r(struct hostent_data*);'
11885         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11886         esac
11887         case "$endhostent_r_proto" in
11888         ''|0)   d_endhostent_r=undef
11889                 endhostent_r_proto=0
11890                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11891         * )     case "$endhostent_r_proto" in
11892                 REENTRANT_PROTO*) ;;
11893                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11894                 esac
11895                 echo "Prototype: $try" ;;
11896         esac
11897         ;;
11898         *)      case "$usethreads" in
11899                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11900                 esac
11901                 d_endhostent_r=undef
11902                 endhostent_r_proto=0
11903                 ;;
11904         esac
11905         ;;
11906 *)      endhostent_r_proto=0
11907         ;;
11908 esac
11909
11910 : see if endnetent exists
11911 set endnetent d_endnent
11912 eval $inlibc
11913
11914 : see if endnetent_r exists
11915 set endnetent_r d_endnetent_r
11916 eval $inlibc
11917 case "$d_endnetent_r" in
11918 "$define")
11919         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11920         case "$d_endnetent_r_proto:$usethreads" in
11921         ":define")      d_endnetent_r_proto=define
11922                 set d_endnetent_r_proto endnetent_r $hdrs
11923                 eval $hasproto ;;
11924         *)      ;;
11925         esac
11926         case "$d_endnetent_r_proto" in
11927         define)
11928         case "$endnetent_r_proto" in
11929         ''|0) try='int endnetent_r(struct netent_data*);'
11930         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11931         esac
11932         case "$endnetent_r_proto" in
11933         ''|0) try='void endnetent_r(struct netent_data*);'
11934         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11935         esac
11936         case "$endnetent_r_proto" in
11937         ''|0)   d_endnetent_r=undef
11938                 endnetent_r_proto=0
11939                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11940         * )     case "$endnetent_r_proto" in
11941                 REENTRANT_PROTO*) ;;
11942                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11943                 esac
11944                 echo "Prototype: $try" ;;
11945         esac
11946         ;;
11947         *)      case "$usethreads" in
11948                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11949                 esac
11950                 d_endnetent_r=undef
11951                 endnetent_r_proto=0
11952                 ;;
11953         esac
11954         ;;
11955 *)      endnetent_r_proto=0
11956         ;;
11957 esac
11958
11959 : see if endprotoent exists
11960 set endprotoent d_endpent
11961 eval $inlibc
11962
11963 : see if endprotoent_r exists
11964 set endprotoent_r d_endprotoent_r
11965 eval $inlibc
11966 case "$d_endprotoent_r" in
11967 "$define")
11968         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11969         case "$d_endprotoent_r_proto:$usethreads" in
11970         ":define")      d_endprotoent_r_proto=define
11971                 set d_endprotoent_r_proto endprotoent_r $hdrs
11972                 eval $hasproto ;;
11973         *)      ;;
11974         esac
11975         case "$d_endprotoent_r_proto" in
11976         define)
11977         case "$endprotoent_r_proto" in
11978         ''|0) try='int endprotoent_r(struct protoent_data*);'
11979         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11980         esac
11981         case "$endprotoent_r_proto" in
11982         ''|0) try='void endprotoent_r(struct protoent_data*);'
11983         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11984         esac
11985         case "$endprotoent_r_proto" in
11986         ''|0)   d_endprotoent_r=undef
11987                 endprotoent_r_proto=0
11988                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11989         * )     case "$endprotoent_r_proto" in
11990                 REENTRANT_PROTO*) ;;
11991                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11992                 esac
11993                 echo "Prototype: $try" ;;
11994         esac
11995         ;;
11996         *)      case "$usethreads" in
11997                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11998                 esac
11999                 d_endprotoent_r=undef
12000                 endprotoent_r_proto=0
12001                 ;;
12002         esac
12003         ;;
12004 *)      endprotoent_r_proto=0
12005         ;;
12006 esac
12007
12008 : see if endpwent exists
12009 set endpwent d_endpwent
12010 eval $inlibc
12011
12012 : see if this is a pwd.h system
12013 set pwd.h i_pwd
12014 eval $inhdr
12015
12016 case "$i_pwd" in
12017 $define)
12018         xxx=`./findhdr pwd.h`
12019         $cppstdin $cppflags $cppminus < $xxx >$$.h
12020
12021         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
12022                 val="$define"
12023         else
12024                 val="$undef"
12025         fi
12026         set d_pwquota
12027         eval $setvar
12028
12029         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
12030                 val="$define"
12031         else
12032                 val="$undef"
12033         fi
12034         set d_pwage
12035         eval $setvar
12036
12037         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
12038                 val="$define"
12039         else
12040                 val="$undef"
12041         fi
12042         set d_pwchange
12043         eval $setvar
12044
12045         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
12046                 val="$define"
12047         else
12048                 val="$undef"
12049         fi
12050         set d_pwclass
12051         eval $setvar
12052
12053         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
12054                 val="$define"
12055         else
12056                 val="$undef"
12057         fi
12058         set d_pwexpire
12059         eval $setvar
12060
12061         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
12062                 val="$define"
12063         else
12064                 val="$undef"
12065         fi
12066         set d_pwcomment
12067         eval $setvar
12068
12069         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
12070                 val="$define"
12071         else
12072                 val="$undef"
12073         fi
12074         set d_pwgecos
12075         eval $setvar
12076
12077         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
12078                 val="$define"
12079         else
12080                 val="$undef"
12081         fi
12082         set d_pwpasswd
12083         eval $setvar
12084
12085         $rm -f $$.h
12086         ;;
12087 *)
12088         val="$undef"; 
12089         set d_pwquota; eval $setvar
12090         set d_pwage; eval $setvar
12091         set d_pwchange; eval $setvar
12092         set d_pwclass; eval $setvar
12093         set d_pwexpire; eval $setvar
12094         set d_pwcomment; eval $setvar
12095         set d_pwgecos; eval $setvar
12096         set d_pwpasswd; eval $setvar
12097         ;;
12098 esac
12099
12100 : see if endpwent_r exists
12101 set endpwent_r d_endpwent_r
12102 eval $inlibc
12103 case "$d_endpwent_r" in
12104 "$define")
12105         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12106         case "$d_endpwent_r_proto:$usethreads" in
12107         ":define")      d_endpwent_r_proto=define
12108                 set d_endpwent_r_proto endpwent_r $hdrs
12109                 eval $hasproto ;;
12110         *)      ;;
12111         esac
12112         case "$d_endpwent_r_proto" in
12113         define)
12114         case "$endpwent_r_proto" in
12115         ''|0) try='int endpwent_r(FILE**);'
12116         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
12117         esac
12118         case "$endpwent_r_proto" in
12119         ''|0) try='void endpwent_r(FILE**);'
12120         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
12121         esac
12122         case "$endpwent_r_proto" in
12123         ''|0)   d_endpwent_r=undef
12124                 endpwent_r_proto=0
12125                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
12126         * )     case "$endpwent_r_proto" in
12127                 REENTRANT_PROTO*) ;;
12128                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
12129                 esac
12130                 echo "Prototype: $try" ;;
12131         esac
12132         ;;
12133         *)      case "$usethreads" in
12134                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
12135                 esac
12136                 d_endpwent_r=undef
12137                 endpwent_r_proto=0
12138                 ;;
12139         esac
12140         ;;
12141 *)      endpwent_r_proto=0
12142         ;;
12143 esac
12144
12145 : see if endservent exists
12146 set endservent d_endsent
12147 eval $inlibc
12148
12149 : see if endservent_r exists
12150 set endservent_r d_endservent_r
12151 eval $inlibc
12152 case "$d_endservent_r" in
12153 "$define")
12154         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12155         case "$d_endservent_r_proto:$usethreads" in
12156         ":define")      d_endservent_r_proto=define
12157                 set d_endservent_r_proto endservent_r $hdrs
12158                 eval $hasproto ;;
12159         *)      ;;
12160         esac
12161         case "$d_endservent_r_proto" in
12162         define)
12163         case "$endservent_r_proto" in
12164         ''|0) try='int endservent_r(struct servent_data*);'
12165         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
12166         esac
12167         case "$endservent_r_proto" in
12168         ''|0) try='void endservent_r(struct servent_data*);'
12169         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
12170         esac
12171         case "$endservent_r_proto" in
12172         ''|0)   d_endservent_r=undef
12173                 endservent_r_proto=0
12174                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
12175         * )     case "$endservent_r_proto" in
12176                 REENTRANT_PROTO*) ;;
12177                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
12178                 esac
12179                 echo "Prototype: $try" ;;
12180         esac
12181         ;;
12182         *)      case "$usethreads" in
12183                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
12184                 esac
12185                 d_endservent_r=undef
12186                 endservent_r_proto=0
12187                 ;;
12188         esac
12189         ;;
12190 *)      endservent_r_proto=0
12191         ;;
12192 esac
12193
12194 : Locate the flags for 'open()'
12195 echo " "
12196 $cat >try.c <<EOCP
12197 #include <sys/types.h>
12198 #ifdef I_FCNTL
12199 #include <fcntl.h>
12200 #endif
12201 #ifdef I_SYS_FILE
12202 #include <sys/file.h>
12203 #endif
12204 #$i_stdlib I_STDLIB
12205 #ifdef I_STDLIB
12206 #include <stdlib.h>
12207 #endif
12208 int main() {
12209         if(O_RDONLY);
12210 #ifdef O_TRUNC
12211         exit(0);
12212 #else
12213         exit(1);
12214 #endif
12215 }
12216 EOCP
12217 : check sys/file.h first to get FREAD on Sun
12218 if $test `./findhdr sys/file.h` && \
12219                 set try -DI_SYS_FILE && eval $compile; then
12220         h_sysfile=true;
12221         echo "<sys/file.h> defines the O_* constants..." >&4
12222         if $run ./try; then
12223                 echo "and you have the 3 argument form of open()." >&4
12224                 val="$define"
12225         else
12226                 echo "but not the 3 argument form of open().  Oh, well." >&4
12227                 val="$undef"
12228         fi
12229 elif $test `./findhdr fcntl.h` && \
12230                 set try -DI_FCNTL && eval $compile; then
12231         h_fcntl=true;
12232         echo "<fcntl.h> defines the O_* constants..." >&4
12233         if $run ./try; then
12234                 echo "and you have the 3 argument form of open()." >&4
12235                 val="$define"
12236         else
12237                 echo "but not the 3 argument form of open().  Oh, well." >&4
12238                 val="$undef"
12239         fi
12240 else
12241         val="$undef"
12242         echo "I can't find the O_* constant definitions!  You got problems." >&4
12243 fi
12244 set d_open3
12245 eval $setvar
12246 $rm_try
12247
12248 : see which of string.h or strings.h is needed
12249 echo " "
12250 strings=`./findhdr string.h`
12251 if $test "$strings" && $test -r "$strings"; then
12252         echo "Using <string.h> instead of <strings.h>." >&4
12253         val="$define"
12254 else
12255         val="$undef"
12256         strings=`./findhdr strings.h`
12257         if $test "$strings" && $test -r "$strings"; then
12258                 echo "Using <strings.h> instead of <string.h>." >&4
12259         else
12260                 echo "No string header found -- You'll surely have problems." >&4
12261         fi
12262 fi
12263 set i_string
12264 eval $setvar
12265 case "$i_string" in
12266 "$undef") strings=`./findhdr strings.h`;;
12267 *)        strings=`./findhdr string.h`;;
12268 esac
12269
12270 : see if this is a sys/file.h system
12271 val=''
12272 set sys/file.h val
12273 eval $inhdr
12274
12275 : do we need to include sys/file.h ?
12276 case "$val" in
12277 "$define")
12278         echo " "
12279         if $h_sysfile; then
12280                 val="$define"
12281                 echo "We'll be including <sys/file.h>." >&4
12282         else
12283                 val="$undef"
12284                 echo "We won't be including <sys/file.h>." >&4
12285         fi
12286         ;;
12287 *)
12288         h_sysfile=false
12289         ;;
12290 esac
12291 set i_sysfile
12292 eval $setvar
12293
12294 : see if fcntl.h is there
12295 val=''
12296 set fcntl.h val
12297 eval $inhdr
12298
12299 : see if we can include fcntl.h
12300 case "$val" in
12301 "$define")
12302         echo " "
12303         if $h_fcntl; then
12304                 val="$define"
12305                 echo "We'll be including <fcntl.h>." >&4
12306         else
12307                 val="$undef"
12308                 if $h_sysfile; then
12309         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
12310                 else
12311                         echo "We won't be including <fcntl.h>." >&4
12312                 fi
12313         fi
12314         ;;
12315 *)
12316         h_fcntl=false
12317         val="$undef"
12318         ;;
12319 esac
12320 set i_fcntl
12321 eval $setvar
12322
12323 : see if fork exists
12324 set fork d_fork
12325 eval $inlibc
12326
12327 : see if pipe exists
12328 set pipe d_pipe
12329 eval $inlibc
12330
12331 : check for non-blocking I/O stuff
12332 case "$h_sysfile" in
12333 true) echo "#include <sys/file.h>" > head.c;;
12334 *)
12335        case "$h_fcntl" in
12336        true) echo "#include <fcntl.h>" > head.c;;
12337        *) echo "#include <sys/fcntl.h>" > head.c;;
12338        esac
12339        ;;
12340 esac
12341 echo " "
12342 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
12343 case "$o_nonblock" in
12344 '')
12345         $cat head.c > try.c
12346         $cat >>try.c <<EOCP
12347 #include <stdio.h>
12348 #$i_stdlib I_STDLIB
12349 #ifdef I_STDLIB
12350 #include <stdlib.h>
12351 #endif
12352 #$i_fcntl I_FCNTL
12353 #ifdef I_FCNTL
12354 #include <fcntl.h>
12355 #endif
12356 int main() {
12357 #ifdef O_NONBLOCK
12358         printf("O_NONBLOCK\n");
12359         exit(0);
12360 #endif
12361 #ifdef O_NDELAY
12362         printf("O_NDELAY\n");
12363         exit(0);
12364 #endif
12365 #ifdef FNDELAY
12366         printf("FNDELAY\n");
12367         exit(0);
12368 #endif
12369         exit(0);
12370 }
12371 EOCP
12372         set try
12373         if eval $compile_ok; then
12374                 o_nonblock=`$run ./try`
12375                 case "$o_nonblock" in
12376                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
12377                 *) echo "Seems like we can use $o_nonblock.";;
12378                 esac
12379         else
12380                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
12381         fi
12382         ;;
12383 *) echo "Using $hint value $o_nonblock.";;
12384 esac
12385 $rm_try
12386
12387 echo " "
12388 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
12389 case "$eagain" in
12390 '')
12391         case "$d_fork:$d_pipe" in
12392         define:define)
12393         $cat head.c > try.c
12394         $cat >>try.c <<EOCP
12395 #include <errno.h>
12396 #include <sys/types.h>
12397 #include <signal.h>
12398 #include <stdio.h>
12399 #$i_stdlib I_STDLIB
12400 #ifdef I_STDLIB
12401 #include <stdlib.h>
12402 #endif
12403 #$i_fcntl I_FCNTL
12404 #ifdef I_FCNTL
12405 #include <fcntl.h>
12406 #endif
12407 #define MY_O_NONBLOCK $o_nonblock
12408 #ifndef errno  /* XXX need better Configure test */
12409 extern int errno;
12410 #endif
12411 #$i_unistd I_UNISTD
12412 #ifdef I_UNISTD
12413 #include <unistd.h>
12414 #endif
12415 #$i_string I_STRING
12416 #ifdef I_STRING
12417 #include <string.h>
12418 #else
12419 #include <strings.h>
12420 #endif
12421 $signal_t blech(int x) { exit(3); }
12422 EOCP
12423         $cat >> try.c <<'EOCP'
12424 int main()
12425 {
12426         int pd[2];
12427         int pu[2];
12428         char buf[1];
12429         char string[100];
12430
12431         pipe(pd);       /* Down: child -> parent */
12432         pipe(pu);       /* Up: parent -> child */
12433         if (0 != fork()) {
12434                 int ret;
12435                 close(pd[1]);   /* Parent reads from pd[0] */
12436                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
12437 #ifdef F_SETFL
12438                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
12439                         exit(1);
12440 #else
12441                 exit(4);
12442 #endif
12443                 signal(SIGALRM, blech);
12444                 alarm(5);
12445                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
12446                         exit(2);
12447                 sprintf(string, "%d\n", ret);
12448                 write(2, string, strlen(string));
12449                 alarm(0);
12450 #ifdef EAGAIN
12451                 if (errno == EAGAIN) {
12452                         printf("EAGAIN\n");
12453                         goto ok;
12454                 }
12455 #endif
12456 #ifdef EWOULDBLOCK
12457                 if (errno == EWOULDBLOCK)
12458                         printf("EWOULDBLOCK\n");
12459 #endif
12460         ok:
12461                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
12462                 sleep(2);                               /* Give it time to close our pipe */
12463                 alarm(5);
12464                 ret = read(pd[0], buf, 1);      /* Should read EOF */
12465                 alarm(0);
12466                 sprintf(string, "%d\n", ret);
12467                 write(4, string, strlen(string));
12468                 exit(0);
12469         }
12470
12471         close(pd[0]);                   /* We write to pd[1] */
12472         close(pu[1]);                   /* We read from pu[0] */
12473         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
12474         close(pd[1]);                   /* Pipe pd is now fully closed! */
12475         exit(0);                                /* Bye bye, thank you for playing! */
12476 }
12477 EOCP
12478         set try
12479         if eval $compile_ok; then
12480                 echo "$startsh" >mtry
12481                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
12482                 chmod +x mtry
12483                 ./mtry >/dev/null 2>&1
12484                 case $? in
12485                 0) eagain=`$cat try.out`;;
12486                 1) echo "Could not perform non-blocking setting!";;
12487                 2) echo "I did a successful read() for something that was not there!";;
12488                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
12489                 4) echo "Could not find F_SETFL!";;
12490                 *) echo "Something terribly wrong happened during testing.";;
12491                 esac
12492                 rd_nodata=`$cat try.ret`
12493                 echo "A read() system call with no data present returns $rd_nodata."
12494                 case "$rd_nodata" in
12495                 0|-1) ;;
12496                 *)
12497                         echo "(That's peculiar, fixing that to be -1.)"
12498                         rd_nodata=-1
12499                         ;;
12500                 esac
12501                 case "$eagain" in
12502                 '')
12503                         echo "Forcing errno EAGAIN on read() with no data available."
12504                         eagain=EAGAIN
12505                         ;;
12506                 *)
12507                         echo "Your read() sets errno to $eagain when no data is available."
12508                         ;;
12509                 esac
12510                 status=`$cat try.err`
12511                 case "$status" in
12512                 0) echo "And it correctly returns 0 to signal EOF.";;
12513                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
12514                 *) echo "However, your read() returns '$status' on EOF??";;
12515                 esac
12516                 val="$define"
12517                 if test "$status" = "$rd_nodata"; then
12518                         echo "WARNING: you can't distinguish between EOF and no data!"
12519                         val="$undef"
12520                 fi
12521         else
12522                 echo "I can't compile the test program--assuming errno EAGAIN will do."
12523                 eagain=EAGAIN
12524         fi
12525         ;;
12526         *)      echo "Can't figure out how to test this--assuming errno EAGAIN will do."
12527                 eagain=EAGAIN
12528                 val="$define"
12529                 ;;
12530         esac
12531         set d_eofnblk
12532         eval $setvar
12533         ;;
12534 *)
12535         echo "Using $hint value $eagain."
12536         echo "Your read() returns $rd_nodata when no data is present."
12537         case "$d_eofnblk" in
12538         "$define") echo "And you can see EOF because read() returns 0.";;
12539         "$undef") echo "But you can't see EOF status from read() returned value.";;
12540         *)
12541                 echo "(Assuming you can't see EOF status from read anyway.)"
12542                 d_eofnblk=$undef
12543                 ;;
12544         esac
12545         ;;
12546 esac
12547 $rm_try head.c mtry
12548
12549 : see if _ptr and _cnt from stdio act std
12550 echo " "
12551
12552 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12553         echo "(Looks like you have stdio.h from BSD.)"
12554         case "$stdio_ptr" in
12555         '') stdio_ptr='((fp)->_p)'
12556                 ptr_lval=$define
12557                 ;;
12558         *)      ptr_lval=$d_stdio_ptr_lval;;
12559         esac
12560         case "$stdio_cnt" in
12561         '') stdio_cnt='((fp)->_r)'
12562                 cnt_lval=$define
12563                 ;;
12564         *)      cnt_lval=$d_stdio_cnt_lval;;
12565         esac
12566         case "$stdio_base" in
12567         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12568         esac
12569         case "$stdio_bufsiz" in
12570         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12571         esac
12572 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12573         echo "(Looks like you have stdio.h from Linux.)"
12574         case "$stdio_ptr" in
12575         '') stdio_ptr='((fp)->_IO_read_ptr)'
12576                 ptr_lval=$define
12577                 ;;
12578         *)      ptr_lval=$d_stdio_ptr_lval;;
12579         esac
12580         case "$stdio_cnt" in
12581         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12582                 cnt_lval=$undef
12583                 ;;
12584         *)      cnt_lval=$d_stdio_cnt_lval;;
12585         esac
12586         case "$stdio_base" in
12587         '') stdio_base='((fp)->_IO_read_base)';;
12588         esac
12589         case "$stdio_bufsiz" in
12590         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12591         esac
12592 else
12593         case "$stdio_ptr" in
12594         '') stdio_ptr='((fp)->_ptr)'
12595                 ptr_lval=$define
12596                 ;;
12597         *)      ptr_lval=$d_stdio_ptr_lval;;
12598         esac
12599         case "$stdio_cnt" in
12600         '') stdio_cnt='((fp)->_cnt)'
12601                 cnt_lval=$define
12602                 ;;
12603         *)      cnt_lval=$d_stdio_cnt_lval;;
12604         esac
12605         case "$stdio_base" in
12606         '') stdio_base='((fp)->_base)';;
12607         esac
12608         case "$stdio_bufsiz" in
12609         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12610         esac
12611 fi
12612
12613 : test whether _ptr and _cnt really work
12614 echo "Checking how std your stdio is..." >&4
12615 $cat >try.c <<EOP
12616 #include <stdio.h>
12617 #$i_stdlib I_STDLIB
12618 #ifdef I_STDLIB
12619 #include <stdlib.h>
12620 #endif
12621 #define FILE_ptr(fp)    $stdio_ptr
12622 #define FILE_cnt(fp)    $stdio_cnt
12623 int main() {
12624         FILE *fp = fopen("try.c", "r");
12625         char c = getc(fp);
12626         if (
12627                 18 <= FILE_cnt(fp) &&
12628                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12629         )
12630                 exit(0);
12631         exit(1);
12632 }
12633 EOP
12634 val="$undef"
12635 set try
12636 if eval $compile && $to try.c; then
12637         if $run ./try; then
12638                 echo "Your stdio acts pretty std."
12639                 val="$define"
12640         else
12641                 echo "Your stdio isn't very std."
12642         fi
12643 else
12644         echo "Your stdio doesn't appear very std."
12645 fi
12646 $rm_try
12647
12648 # glibc 2.2.90 and above apparently change stdio streams so Perl's
12649 # direct buffer manipulation no longer works.  The Configure tests
12650 # should be changed to correctly detect this, but until then,
12651 # the following check should at least let perl compile and run.
12652 # (This quick fix should be updated before 5.8.1.)
12653 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
12654 # A. Dougherty, June 3, 2002.
12655 case "$d_gnulibc" in
12656 $define)
12657         case "$gnulibc_version" in
12658         2.[01]*)  ;;
12659         2.2) ;;
12660         2.2.[0-9]) ;;
12661         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
12662                 val="$undef"
12663                 ;;
12664         esac
12665         ;;
12666 esac
12667 set d_stdstdio
12668 eval $setvar
12669
12670 : Can _ptr be used as an lvalue?
12671 case "$d_stdstdio$ptr_lval" in
12672 $define$define) val=$define ;;
12673 *) val=$undef ;;
12674 esac
12675 set d_stdio_ptr_lval
12676 eval $setvar
12677
12678 : Can _cnt be used as an lvalue?
12679 case "$d_stdstdio$cnt_lval" in
12680 $define$define) val=$define ;;
12681 *) val=$undef ;;
12682 esac
12683 set d_stdio_cnt_lval
12684 eval $setvar
12685
12686
12687 : test whether setting _ptr sets _cnt as a side effect
12688 d_stdio_ptr_lval_sets_cnt="$undef"
12689 d_stdio_ptr_lval_nochange_cnt="$undef"
12690 case "$d_stdio_ptr_lval$d_stdstdio" in
12691 $define$define)
12692         echo "Checking to see what happens if we set the stdio ptr..." >&4
12693 $cat >try.c <<EOP
12694 #include <stdio.h>
12695 /* Can we scream? */
12696 /* Eat dust sed :-) */
12697 /* In the buffer space, no one can hear you scream. */
12698 #$i_stdlib I_STDLIB
12699 #ifdef I_STDLIB
12700 #include <stdlib.h>
12701 #endif
12702 #define FILE_ptr(fp)    $stdio_ptr
12703 #define FILE_cnt(fp)    $stdio_cnt
12704 #include <sys/types.h>
12705 int main() {
12706         FILE *fp = fopen("try.c", "r");
12707         int c;
12708         char *ptr;
12709         size_t cnt;
12710         if (!fp) {
12711             puts("Fail even to read");
12712             exit(1);
12713         }
12714         c = getc(fp); /* Read away the first # */
12715         if (c == EOF) {
12716             puts("Fail even to read");
12717             exit(1);
12718         }
12719         if (!(
12720                 18 <= FILE_cnt(fp) &&
12721                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12722         )) {
12723                 puts("Fail even to read");
12724                 exit (1);
12725         }
12726         ptr = (char*) FILE_ptr(fp);
12727         cnt = (size_t)FILE_cnt(fp);
12728
12729         FILE_ptr(fp) += 42;
12730
12731         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12732                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12733                 exit (1);
12734         }
12735         if (FILE_cnt(fp) <= 20) {
12736                 printf ("Fail (<20 chars to test)");
12737                 exit (1);
12738         }
12739         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12740                 puts("Fail compare");
12741                 exit (1);
12742         }
12743         if (cnt == FILE_cnt(fp)) {
12744                 puts("Pass_unchanged");
12745                 exit (0);
12746         }
12747         if (FILE_cnt(fp) == (cnt - 42)) {
12748                 puts("Pass_changed");
12749                 exit (0);
12750         }
12751         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12752         return 1;
12753
12754 }
12755 EOP
12756         set try
12757         if eval $compile && $to try.c; then
12758                 case `$run ./try` in
12759                 Pass_changed)
12760                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12761                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12762                 Pass_unchanged)
12763                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12764                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12765                 Fail*)
12766                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12767                 *)
12768                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12769         esac
12770         else
12771                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12772         fi
12773         $rm_try
12774         ;;
12775 esac
12776
12777 : see if _base is also standard
12778 val="$undef"
12779 case "$d_stdstdio" in
12780 $define)
12781         $cat >try.c <<EOP
12782 #include <stdio.h>
12783 #$i_stdlib I_STDLIB
12784 #ifdef I_STDLIB
12785 #include <stdlib.h>
12786 #endif
12787 #define FILE_base(fp)   $stdio_base
12788 #define FILE_bufsiz(fp) $stdio_bufsiz
12789 int main() {
12790         FILE *fp = fopen("try.c", "r");
12791         char c = getc(fp);
12792         if (
12793                 19 <= FILE_bufsiz(fp) &&
12794                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12795         )
12796                 exit(0);
12797         exit(1);
12798 }
12799 EOP
12800         set try
12801         if eval $compile && $to try.c; then
12802                 if $run ./try; then
12803                         echo "And its _base field acts std."
12804                         val="$define"
12805                 else
12806                         echo "But its _base field isn't std."
12807                 fi
12808         else
12809                 echo "However, it seems to be lacking the _base field."
12810         fi
12811         $rm_try
12812         ;;
12813 esac
12814 set d_stdiobase
12815 eval $setvar
12816
12817 : see if fast_stdio exists
12818 val="$undef"
12819 case "$d_stdstdio:$d_stdio_ptr_lval" in
12820 "$define:$define")
12821         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12822         *$define*)
12823                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12824                 val="$define"
12825                 ;;
12826         esac
12827         ;;
12828 esac
12829 set d_faststdio
12830 eval $setvar
12831
12832
12833
12834 : see if fchdir exists
12835 set fchdir d_fchdir
12836 eval $inlibc
12837
12838 : see if fchmod exists
12839 set fchmod d_fchmod
12840 eval $inlibc
12841
12842 : see if fchown exists
12843 set fchown d_fchown
12844 eval $inlibc
12845
12846 : see if this is an fcntl system
12847 set fcntl d_fcntl
12848 eval $inlibc
12849
12850 : See if fcntl-based locking works.
12851 echo " "
12852 $cat >try.c <<EOCP
12853 #$i_stdlib I_STDLIB
12854 #ifdef I_STDLIB
12855 #include <stdlib.h>
12856 #endif
12857 #include <unistd.h>
12858 #include <fcntl.h>
12859 #include <signal.h>
12860 $signal_t blech(int x) { exit(3); }
12861 int main() {
12862 #if defined(F_SETLK) && defined(F_SETLKW)
12863      struct flock flock;
12864      int retval, fd;
12865      fd = open("try.c", O_RDONLY);
12866      flock.l_type = F_RDLCK;
12867      flock.l_whence = SEEK_SET;
12868      flock.l_start = flock.l_len = 0;
12869      signal(SIGALRM, blech);
12870      alarm(10);
12871      retval = fcntl(fd, F_SETLK, &flock);
12872      close(fd);
12873      (retval < 0 ? exit(2) : exit(0));
12874 #else
12875      exit(2);
12876 #endif
12877 }
12878 EOCP
12879 echo "Checking if fcntl-based file locking works... "
12880 case "$d_fcntl" in
12881 "$define")
12882         set try
12883         if eval $compile_ok; then
12884                 if $run ./try; then
12885                         echo "Yes, it seems to work."
12886                         val="$define"
12887                 else
12888                         echo "Nope, it didn't work."
12889                         val="$undef"
12890                         case "$?" in
12891                         3) $cat >&4 <<EOM
12892 ***
12893 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12894 *** This is (almost) impossible.
12895 *** If your NFS lock daemons are not feeling well, something like
12896 *** this may happen, please investigate.  Cannot continue, aborting.
12897 ***
12898 EOM
12899                                 exit 1
12900                                 ;;
12901                         esac
12902                 fi
12903         else
12904                 echo "I'm unable to compile the test program, so I'll assume not."
12905                 val="$undef"
12906         fi
12907         ;;
12908 *) val="$undef";
12909         echo "Nope, since you don't even have fcntl()."
12910         ;;
12911 esac
12912 set d_fcntl_can_lock
12913 eval $setvar
12914 $rm_try
12915
12916 : check for fd_set items
12917 $cat <<EOM
12918
12919 Checking to see how well your C compiler handles fd_set and friends ...
12920 EOM
12921 $cat >try.c <<EOCP
12922 #$i_stdlib I_STDLIB
12923 #ifdef I_STDLIB
12924 #include <stdlib.h>
12925 #endif
12926 #$i_systime I_SYS_TIME
12927 #$i_sysselct I_SYS_SELECT
12928 #$d_socket HAS_SOCKET
12929 #include <sys/types.h>
12930 #ifdef HAS_SOCKET
12931 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12932 #endif
12933 #ifdef I_SYS_TIME
12934 #include <sys/time.h>
12935 #endif
12936 #ifdef I_SYS_SELECT
12937 #include <sys/select.h>
12938 #endif
12939 int main() {
12940         fd_set fds;
12941
12942 #ifdef TRYBITS
12943         if(fds.fds_bits);
12944 #endif
12945
12946 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12947         exit(0);
12948 #else
12949         exit(1);
12950 #endif
12951 }
12952 EOCP
12953 set try -DTRYBITS
12954 if eval $compile; then
12955         d_fds_bits="$define"
12956         d_fd_set="$define"
12957         echo "Well, your system knows about the normal fd_set typedef..." >&4
12958         if $run ./try; then
12959                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12960                 d_fd_macros="$define"
12961         else
12962                 $cat >&4 <<'EOM'
12963 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12964 EOM
12965                 d_fd_macros="$undef"
12966         fi
12967 else
12968         $cat <<'EOM'
12969 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12970 EOM
12971         set try
12972         if eval $compile; then
12973                 d_fds_bits="$undef"
12974                 d_fd_set="$define"
12975                 echo "Well, your system has some sort of fd_set available..." >&4
12976                 if $run ./try; then
12977                         echo "and you have the normal fd_set macros." >&4
12978                         d_fd_macros="$define"
12979                 else
12980                         $cat <<'EOM'
12981 but not the normal fd_set macros!  Gross!  More work for me...
12982 EOM
12983                         d_fd_macros="$undef"
12984                 fi
12985         else
12986         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12987                 d_fd_set="$undef"
12988                 d_fds_bits="$undef"
12989                 d_fd_macros="$undef"
12990         fi
12991 fi
12992 $rm_try
12993
12994 : see if fgetpos exists
12995 set fgetpos d_fgetpos
12996 eval $inlibc
12997
12998 : see if finite exists
12999 set finite d_finite
13000 eval $inlibc
13001
13002 : see if finitel exists
13003 set finitel d_finitel
13004 eval $inlibc
13005
13006 : see if flock exists
13007 set flock d_flock
13008 eval $inlibc
13009
13010 : see if prototype for flock is available
13011 echo " "
13012 set d_flockproto flock $i_sysfile sys/file.h
13013 eval $hasproto
13014
13015 : see if fp_class exists
13016 set fp_class d_fp_class
13017 eval $inlibc
13018
13019 : see if pathconf exists
13020 set pathconf d_pathconf
13021 eval $inlibc
13022
13023 : see if fpathconf exists
13024 set fpathconf d_fpathconf
13025 eval $inlibc
13026
13027 : see if fpclass exists
13028 set fpclass d_fpclass
13029 eval $inlibc
13030
13031 : see if fpclassify exists
13032 set fpclassify d_fpclassify
13033 eval $inlibc
13034
13035 : see if fpclassl exists
13036 set fpclassl d_fpclassl
13037 eval $inlibc
13038
13039
13040 : check for fpos64_t
13041 echo " "
13042 echo "Checking to see if you have fpos64_t..." >&4
13043 $cat >try.c <<EOCP
13044 #include <stdio.h>
13045 int main() { fpos64_t x = 7; }
13046 EOCP
13047 set try
13048 if eval $compile; then
13049         val="$define"
13050         echo "You have fpos64_t."
13051 else
13052         val="$undef"
13053         echo "You do not have fpos64_t."
13054         case "$fpossize" in
13055         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
13056         esac
13057 fi
13058 $rm_try
13059 set d_fpos64_t
13060 eval $setvar
13061
13062 : see if frexpl exists
13063 set frexpl d_frexpl
13064 eval $inlibc
13065
13066 : see if this is a sys/param system
13067 set sys/param.h i_sysparam
13068 eval $inhdr
13069
13070 : see if this is a sys/mount.h system
13071 set sys/mount.h i_sysmount
13072 eval $inhdr
13073
13074
13075 echo " "
13076 echo "Checking to see if your system supports struct fs_data..." >&4
13077 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
13078 eval $hasstruct
13079 case "$d_fs_data_s" in
13080 "$define")      echo "Yes, it does."   ;;
13081 *)              echo "No, it doesn't." ;;
13082 esac
13083
13084 : see if fseeko exists
13085 set fseeko d_fseeko
13086 eval $inlibc
13087 case "$longsize" in
13088 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
13089 esac
13090
13091 : see if fsetpos exists
13092 set fsetpos d_fsetpos
13093 eval $inlibc
13094
13095
13096 : see if fstatfs exists
13097 set fstatfs d_fstatfs
13098 eval $inlibc
13099
13100
13101 : see if statvfs exists
13102 set statvfs d_statvfs
13103 eval $inlibc
13104
13105 : see if fstatvfs exists
13106 set fstatvfs d_fstatvfs
13107 eval $inlibc
13108
13109
13110 : see if fsync exists
13111 set fsync d_fsync
13112 eval $inlibc
13113
13114 : see if ftello exists
13115 set ftello d_ftello
13116 eval $inlibc
13117 case "$longsize" in
13118 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
13119 esac
13120
13121 : check for a working futimes
13122 d_futimes="$undef"
13123 echo " "
13124 echo "Checking if you have a working futimes()" >&4
13125 $cat >try.c <<EOCP
13126 #include <stdio.h>
13127 #include <sys/time.h>
13128 #include <errno.h>
13129 #include <fcntl.h>
13130
13131 int main ()
13132 {
13133     int fd, rv;
13134     fd = open ("try.c", O_RDWR);
13135     if (-1 == fd) exit (1);
13136     rv = futimes (fd, NULL);
13137     exit (rv == -1 ? errno : 0);
13138 }
13139 EOCP
13140 set try
13141 if eval $compile; then
13142     `$run ./try`
13143     rc=$?
13144     case "$rc" in
13145         0)  echo "Yes, you have" >&4
13146             d_futimes="$define"
13147             ;;
13148         *)  echo "No, you have futimes, but it isn't working ($rc) (probably harmless)" >&4
13149             ;;
13150     esac
13151 else
13152     echo "No, it does not (probably harmless)" >&4
13153 fi
13154 $rm_try
13155
13156 : see if getcwd exists
13157 set getcwd d_getcwd
13158 eval $inlibc
13159
13160 : see if getespwnam exists
13161 set getespwnam d_getespwnam
13162 eval $inlibc
13163
13164
13165 : see if getfsstat exists
13166 set getfsstat d_getfsstat
13167 eval $inlibc
13168
13169 : see if getgrent exists
13170 set getgrent d_getgrent
13171 eval $inlibc
13172
13173 : see if getgrent_r exists
13174 set getgrent_r d_getgrent_r
13175 eval $inlibc
13176 case "$d_getgrent_r" in
13177 "$define")
13178         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13179         case "$d_getgrent_r_proto:$usethreads" in
13180         ":define")      d_getgrent_r_proto=define
13181                 set d_getgrent_r_proto getgrent_r $hdrs
13182                 eval $hasproto ;;
13183         *)      ;;
13184         esac
13185         case "$d_getgrent_r_proto" in
13186         define)
13187         case "$getgrent_r_proto" in
13188         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
13189         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
13190         esac
13191         case "$getgrent_r_proto" in
13192         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
13193         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
13194         esac
13195         case "$getgrent_r_proto" in
13196         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
13197         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
13198         esac
13199         case "$getgrent_r_proto" in
13200         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
13201         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
13202         esac
13203         case "$getgrent_r_proto" in
13204         ''|0) try='int getgrent_r(struct group*, char*, int);'
13205         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
13206         esac
13207         case "$getgrent_r_proto" in
13208         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
13209         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
13210         esac
13211         case "$getgrent_r_proto" in
13212         ''|0)   d_getgrent_r=undef
13213                 getgrent_r_proto=0
13214                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
13215         * )     case "$getgrent_r_proto" in
13216                 REENTRANT_PROTO*) ;;
13217                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
13218                 esac
13219                 echo "Prototype: $try" ;;
13220         esac
13221         ;;
13222         *)      case "$usethreads" in
13223                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
13224                 esac
13225                 d_getgrent_r=undef
13226                 getgrent_r_proto=0
13227                 ;;
13228         esac
13229         ;;
13230 *)      getgrent_r_proto=0
13231         ;;
13232 esac
13233
13234 : see if getgrgid_r exists
13235 set getgrgid_r d_getgrgid_r
13236 eval $inlibc
13237 case "$d_getgrgid_r" in
13238 "$define")
13239         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13240         case "$d_getgrgid_r_proto:$usethreads" in
13241         ":define")      d_getgrgid_r_proto=define
13242                 set d_getgrgid_r_proto getgrgid_r $hdrs
13243                 eval $hasproto ;;
13244         *)      ;;
13245         esac
13246         case "$d_getgrgid_r_proto" in
13247         define)
13248         case "$getgrgid_r_proto" in
13249         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
13250         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
13251         esac
13252         case "$getgrgid_r_proto" in
13253         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
13254         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
13255         esac
13256         case "$getgrgid_r_proto" in
13257         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
13258         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
13259         esac
13260         case "$getgrgid_r_proto" in
13261         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
13262         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
13263         esac
13264         case "$getgrgid_r_proto" in
13265         ''|0)   d_getgrgid_r=undef
13266                 getgrgid_r_proto=0
13267                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
13268         * )     case "$getgrgid_r_proto" in
13269                 REENTRANT_PROTO*) ;;
13270                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
13271                 esac
13272                 echo "Prototype: $try" ;;
13273         esac
13274         ;;
13275         *)      case "$usethreads" in
13276                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
13277                 esac
13278                 d_getgrgid_r=undef
13279                 getgrgid_r_proto=0
13280                 ;;
13281         esac
13282         ;;
13283 *)      getgrgid_r_proto=0
13284         ;;
13285 esac
13286
13287 : see if getgrnam_r exists
13288 set getgrnam_r d_getgrnam_r
13289 eval $inlibc
13290 case "$d_getgrnam_r" in
13291 "$define")
13292         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13293         case "$d_getgrnam_r_proto:$usethreads" in
13294         ":define")      d_getgrnam_r_proto=define
13295                 set d_getgrnam_r_proto getgrnam_r $hdrs
13296                 eval $hasproto ;;
13297         *)      ;;
13298         esac
13299         case "$d_getgrnam_r_proto" in
13300         define)
13301         case "$getgrnam_r_proto" in
13302         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
13303         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
13304         esac
13305         case "$getgrnam_r_proto" in
13306         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
13307         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
13308         esac
13309         case "$getgrnam_r_proto" in
13310         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
13311         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
13312         esac
13313         case "$getgrnam_r_proto" in
13314         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
13315         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
13316         esac
13317         case "$getgrnam_r_proto" in
13318         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
13319         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
13320         esac
13321         case "$getgrnam_r_proto" in
13322         ''|0)   d_getgrnam_r=undef
13323                 getgrnam_r_proto=0
13324                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
13325         * )     case "$getgrnam_r_proto" in
13326                 REENTRANT_PROTO*) ;;
13327                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
13328                 esac
13329                 echo "Prototype: $try" ;;
13330         esac
13331         ;;
13332         *)      case "$usethreads" in
13333                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
13334                 esac
13335                 d_getgrnam_r=undef
13336                 getgrnam_r_proto=0
13337                 ;;
13338         esac
13339         ;;
13340 *)      getgrnam_r_proto=0
13341         ;;
13342 esac
13343
13344 : see if gethostbyaddr exists
13345 set gethostbyaddr d_gethbyaddr
13346 eval $inlibc
13347
13348 : see if gethostbyname exists
13349 set gethostbyname d_gethbyname
13350 eval $inlibc
13351
13352 : see if gethostent exists
13353 set gethostent d_gethent
13354 eval $inlibc
13355
13356 : see how we will look up host name
13357 echo " "
13358 call=''
13359 if set gethostname val -f d_gethname; eval $csym; $val; then
13360         echo 'gethostname() found.' >&4
13361         d_gethname="$define"
13362         call=gethostname
13363 fi
13364 if set uname val -f d_uname; eval $csym; $val; then
13365         if ./xenix; then
13366                 $cat <<'EOM'
13367 uname() was found, but you're running xenix, and older versions of xenix
13368 have a broken uname(). If you don't really know whether your xenix is old
13369 enough to have a broken system call, use the default answer.
13370
13371 EOM
13372                 dflt=y
13373                 case "$d_uname" in
13374                 "$define") dflt=n;;
13375                 esac
13376                 rp='Is your uname() broken?'
13377                 . ./myread
13378                 case "$ans" in
13379                 n*) d_uname="$define"; call=uname;;
13380                 esac
13381         else
13382                 echo 'uname() found.' >&4
13383                 d_uname="$define"
13384                 case "$call" in
13385                 '') call=uname ;;
13386                 esac
13387         fi
13388 fi
13389 case "$d_gethname" in
13390 '') d_gethname="$undef";;
13391 esac
13392 case "$d_uname" in
13393 '') d_uname="$undef";;
13394 esac
13395 case "$d_uname$d_gethname" in
13396 *define*)
13397         dflt=n
13398         cat <<EOM
13399
13400 Every now and then someone has a $call() that lies about the hostname
13401 but can't be fixed for political or economic reasons.  If you wish, I can
13402 pretend $call() isn't there and maybe compute hostname at run-time
13403 thanks to the '$phostname' command.
13404
13405 EOM
13406         rp="Shall I ignore $call() from now on?"
13407         . ./myread
13408         case "$ans" in
13409         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
13410         esac;;
13411 esac
13412 case "$phostname" in
13413 '') aphostname='';;
13414 *) case "$aphostname" in
13415         /*) ;;
13416         *) set X $phostname
13417                 shift
13418                 file=$1
13419                 shift
13420                 file=`./loc $file $file $pth`
13421                 aphostname=`echo $file $*`
13422                 ;;
13423         esac
13424         ;;
13425 esac
13426 case "$d_uname$d_gethname" in
13427 *define*) ;;
13428 *)
13429         case "$phostname" in
13430         '')
13431                 echo "There will be no way for $package to get your hostname." >&4;;
13432         *)
13433         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
13434                 ;;
13435         esac;;
13436 esac
13437 case "$d_phostname" in
13438 '') d_phostname="$undef";;
13439 esac
13440
13441 : see if gethostbyaddr_r exists
13442 set gethostbyaddr_r d_gethostbyaddr_r
13443 eval $inlibc
13444 case "$d_gethostbyaddr_r" in
13445 "$define")
13446         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13447         case "$d_gethostbyaddr_r_proto:$usethreads" in
13448         ":define")      d_gethostbyaddr_r_proto=define
13449                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
13450                 eval $hasproto ;;
13451         *)      ;;
13452         esac
13453         case "$d_gethostbyaddr_r_proto" in
13454         define)
13455         case "$gethostbyaddr_r_proto" in
13456         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13457         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
13458         esac
13459         case "$gethostbyaddr_r_proto" in
13460         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
13461         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
13462         esac
13463         case "$gethostbyaddr_r_proto" in
13464         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
13465         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
13466         esac
13467         case "$gethostbyaddr_r_proto" in
13468         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
13469         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
13470         esac
13471         case "$gethostbyaddr_r_proto" in
13472         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
13473         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
13474         esac
13475         case "$gethostbyaddr_r_proto" in
13476         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
13477         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
13478         esac
13479         case "$gethostbyaddr_r_proto" in
13480         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
13481         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
13482         esac
13483         case "$gethostbyaddr_r_proto" in
13484         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
13485         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
13486         esac
13487         case "$gethostbyaddr_r_proto" in
13488         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
13489         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
13490         esac
13491         case "$gethostbyaddr_r_proto" in
13492         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
13493         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
13494         esac
13495         case "$gethostbyaddr_r_proto" in
13496         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13497         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
13498         esac
13499         case "$gethostbyaddr_r_proto" in
13500         ''|0)   d_gethostbyaddr_r=undef
13501                 gethostbyaddr_r_proto=0
13502                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
13503         * )     case "$gethostbyaddr_r_proto" in
13504                 REENTRANT_PROTO*) ;;
13505                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
13506                 esac
13507                 echo "Prototype: $try" ;;
13508         esac
13509         ;;
13510         *)      case "$usethreads" in
13511                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
13512                 esac
13513                 d_gethostbyaddr_r=undef
13514                 gethostbyaddr_r_proto=0
13515                 ;;
13516         esac
13517         ;;
13518 *)      gethostbyaddr_r_proto=0
13519         ;;
13520 esac
13521
13522 : see if gethostbyname_r exists
13523 set gethostbyname_r d_gethostbyname_r
13524 eval $inlibc
13525 case "$d_gethostbyname_r" in
13526 "$define")
13527         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13528         case "$d_gethostbyname_r_proto:$usethreads" in
13529         ":define")      d_gethostbyname_r_proto=define
13530                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
13531                 eval $hasproto ;;
13532         *)      ;;
13533         esac
13534         case "$d_gethostbyname_r_proto" in
13535         define)
13536         case "$gethostbyname_r_proto" in
13537         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
13538         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
13539         esac
13540         case "$gethostbyname_r_proto" in
13541         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
13542         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
13543         esac
13544         case "$gethostbyname_r_proto" in
13545         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
13546         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
13547         esac
13548         case "$gethostbyname_r_proto" in
13549         ''|0)   d_gethostbyname_r=undef
13550                 gethostbyname_r_proto=0
13551                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
13552         * )     case "$gethostbyname_r_proto" in
13553                 REENTRANT_PROTO*) ;;
13554                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
13555                 esac
13556                 echo "Prototype: $try" ;;
13557         esac
13558         ;;
13559         *)      case "$usethreads" in
13560                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
13561                 esac
13562                 d_gethostbyname_r=undef
13563                 gethostbyname_r_proto=0
13564                 ;;
13565         esac
13566         ;;
13567 *)      gethostbyname_r_proto=0
13568         ;;
13569 esac
13570
13571 : see if gethostent_r exists
13572 set gethostent_r d_gethostent_r
13573 eval $inlibc
13574 case "$d_gethostent_r" in
13575 "$define")
13576         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13577         case "$d_gethostent_r_proto:$usethreads" in
13578         ":define")      d_gethostent_r_proto=define
13579                 set d_gethostent_r_proto gethostent_r $hdrs
13580                 eval $hasproto ;;
13581         *)      ;;
13582         esac
13583         case "$d_gethostent_r_proto" in
13584         define)
13585         case "$gethostent_r_proto" in
13586         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
13587         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
13588         esac
13589         case "$gethostent_r_proto" in
13590         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
13591         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
13592         esac
13593         case "$gethostent_r_proto" in
13594         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
13595         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
13596         esac
13597         case "$gethostent_r_proto" in
13598         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
13599         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
13600         esac
13601         case "$gethostent_r_proto" in
13602         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
13603         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
13604         esac
13605         case "$gethostent_r_proto" in
13606         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
13607         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
13608         esac
13609         case "$gethostent_r_proto" in
13610         ''|0)   d_gethostent_r=undef
13611                 gethostent_r_proto=0
13612                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
13613         * )     case "$gethostent_r_proto" in
13614                 REENTRANT_PROTO*) ;;
13615                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
13616                 esac
13617                 echo "Prototype: $try" ;;
13618         esac
13619         ;;
13620         *)      case "$usethreads" in
13621                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
13622                 esac
13623                 d_gethostent_r=undef
13624                 gethostent_r_proto=0
13625                 ;;
13626         esac
13627         ;;
13628 *)      gethostent_r_proto=0
13629         ;;
13630 esac
13631
13632 : see if prototypes for various gethostxxx netdb.h functions are available
13633 echo " "
13634 set d_gethostprotos gethostent $i_netdb netdb.h
13635 eval $hasproto
13636
13637 : see if getitimer exists
13638 set getitimer d_getitimer
13639 eval $inlibc
13640
13641 : see if getlogin exists
13642 set getlogin d_getlogin
13643 eval $inlibc
13644
13645 : see if getlogin_r exists
13646 set getlogin_r d_getlogin_r
13647 eval $inlibc
13648 case "$d_getlogin_r" in
13649 "$define")
13650         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
13651         case "$d_getlogin_r_proto:$usethreads" in
13652         ":define")      d_getlogin_r_proto=define
13653                 set d_getlogin_r_proto getlogin_r $hdrs
13654                 eval $hasproto ;;
13655         *)      ;;
13656         esac
13657         case "$d_getlogin_r_proto" in
13658         define)
13659         case "$getlogin_r_proto" in
13660         ''|0) try='int getlogin_r(char*, size_t);'
13661         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
13662         esac
13663         case "$getlogin_r_proto" in
13664         ''|0) try='int getlogin_r(char*, int);'
13665         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
13666         esac
13667         case "$getlogin_r_proto" in
13668         ''|0) try='char* getlogin_r(char*, size_t);'
13669         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
13670         esac
13671         case "$getlogin_r_proto" in
13672         ''|0) try='char* getlogin_r(char*, int);'
13673         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
13674         esac
13675         case "$getlogin_r_proto" in
13676         ''|0)   d_getlogin_r=undef
13677                 getlogin_r_proto=0
13678                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
13679         * )     case "$getlogin_r_proto" in
13680                 REENTRANT_PROTO*) ;;
13681                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
13682                 esac
13683                 echo "Prototype: $try" ;;
13684         esac
13685         ;;
13686         *)      case "$usethreads" in
13687                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
13688                 esac
13689                 d_getlogin_r=undef
13690                 getlogin_r_proto=0
13691                 ;;
13692         esac
13693         ;;
13694 *)      getlogin_r_proto=0
13695         ;;
13696 esac
13697
13698 : see if getmnt exists
13699 set getmnt d_getmnt
13700 eval $inlibc
13701
13702 : see if getmntent exists
13703 set getmntent d_getmntent
13704 eval $inlibc
13705
13706 : see if getnetbyaddr exists
13707 set getnetbyaddr d_getnbyaddr
13708 eval $inlibc
13709
13710 : see if getnetbyname exists
13711 set getnetbyname d_getnbyname
13712 eval $inlibc
13713
13714 : see if getnetent exists
13715 set getnetent d_getnent
13716 eval $inlibc
13717
13718 : see if getnetbyaddr_r exists
13719 set getnetbyaddr_r d_getnetbyaddr_r
13720 eval $inlibc
13721 case "$d_getnetbyaddr_r" in
13722 "$define")
13723         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13724         case "$d_getnetbyaddr_r_proto:$usethreads" in
13725         ":define")      d_getnetbyaddr_r_proto=define
13726                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
13727                 eval $hasproto ;;
13728         *)      ;;
13729         esac
13730         case "$d_getnetbyaddr_r_proto" in
13731         define)
13732         case "$getnetbyaddr_r_proto" in
13733         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
13734         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
13735         esac
13736         case "$getnetbyaddr_r_proto" in
13737         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
13738         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
13739         esac
13740         case "$getnetbyaddr_r_proto" in
13741         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
13742         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
13743         esac
13744         case "$getnetbyaddr_r_proto" in
13745         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
13746         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
13747         esac
13748         case "$getnetbyaddr_r_proto" in
13749         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
13750         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
13751         esac
13752         case "$getnetbyaddr_r_proto" in
13753         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
13754         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
13755         esac
13756         case "$getnetbyaddr_r_proto" in
13757         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
13758         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
13759         esac
13760         case "$getnetbyaddr_r_proto" in
13761         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
13762         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
13763         esac
13764         case "$getnetbyaddr_r_proto" in
13765         ''|0)   d_getnetbyaddr_r=undef
13766                 getnetbyaddr_r_proto=0
13767                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
13768         * )     case "$getnetbyaddr_r_proto" in
13769                 REENTRANT_PROTO*) ;;
13770                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
13771                 esac
13772                 echo "Prototype: $try" ;;
13773         esac
13774         ;;
13775         *)      case "$usethreads" in
13776                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
13777                 esac
13778                 d_getnetbyaddr_r=undef
13779                 getnetbyaddr_r_proto=0
13780                 ;;
13781         esac
13782         ;;
13783 *)      getnetbyaddr_r_proto=0
13784         ;;
13785 esac
13786
13787 : see if getnetbyname_r exists
13788 set getnetbyname_r d_getnetbyname_r
13789 eval $inlibc
13790 case "$d_getnetbyname_r" in
13791 "$define")
13792         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13793         case "$d_getnetbyname_r_proto:$usethreads" in
13794         ":define")      d_getnetbyname_r_proto=define
13795                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
13796                 eval $hasproto ;;
13797         *)      ;;
13798         esac
13799         case "$d_getnetbyname_r_proto" in
13800         define)
13801         case "$getnetbyname_r_proto" in
13802         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
13803         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
13804         esac
13805         case "$getnetbyname_r_proto" in
13806         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13807         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13808         esac
13809         case "$getnetbyname_r_proto" in
13810         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13811         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13812         esac
13813         case "$getnetbyname_r_proto" in
13814         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13815         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13816         esac
13817         case "$getnetbyname_r_proto" in
13818         ''|0)   d_getnetbyname_r=undef
13819                 getnetbyname_r_proto=0
13820                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13821         * )     case "$getnetbyname_r_proto" in
13822                 REENTRANT_PROTO*) ;;
13823                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13824                 esac
13825                 echo "Prototype: $try" ;;
13826         esac
13827         ;;
13828         *)      case "$usethreads" in
13829                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13830                 esac
13831                 d_getnetbyname_r=undef
13832                 getnetbyname_r_proto=0
13833                 ;;
13834         esac
13835         ;;
13836 *)      getnetbyname_r_proto=0
13837         ;;
13838 esac
13839
13840 : see if getnetent_r exists
13841 set getnetent_r d_getnetent_r
13842 eval $inlibc
13843 case "$d_getnetent_r" in
13844 "$define")
13845         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13846         case "$d_getnetent_r_proto:$usethreads" in
13847         ":define")      d_getnetent_r_proto=define
13848                 set d_getnetent_r_proto getnetent_r $hdrs
13849                 eval $hasproto ;;
13850         *)      ;;
13851         esac
13852         case "$d_getnetent_r_proto" in
13853         define)
13854         case "$getnetent_r_proto" in
13855         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13856         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13857         esac
13858         case "$getnetent_r_proto" in
13859         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13860         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13861         esac
13862         case "$getnetent_r_proto" in
13863         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13864         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13865         esac
13866         case "$getnetent_r_proto" in
13867         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13868         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13869         esac
13870         case "$getnetent_r_proto" in
13871         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13872         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13873         esac
13874         case "$getnetent_r_proto" in
13875         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13876         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13877         esac
13878         case "$getnetent_r_proto" in
13879         ''|0)   d_getnetent_r=undef
13880                 getnetent_r_proto=0
13881                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13882         * )     case "$getnetent_r_proto" in
13883                 REENTRANT_PROTO*) ;;
13884                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13885                 esac
13886                 echo "Prototype: $try" ;;
13887         esac
13888         ;;
13889         *)      case "$usethreads" in
13890                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13891                 esac
13892                 d_getnetent_r=undef
13893                 getnetent_r_proto=0
13894                 ;;
13895         esac
13896         ;;
13897 *)      getnetent_r_proto=0
13898         ;;
13899 esac
13900
13901 : see if prototypes for various getnetxxx netdb.h functions are available
13902 echo " "
13903 set d_getnetprotos getnetent $i_netdb netdb.h
13904 eval $hasproto
13905
13906 : see if getpagesize exists
13907 set getpagesize d_getpagsz
13908 eval $inlibc
13909
13910
13911 : see if getprotobyname exists
13912 set getprotobyname d_getpbyname
13913 eval $inlibc
13914
13915 : see if getprotobynumber exists
13916 set getprotobynumber d_getpbynumber
13917 eval $inlibc
13918
13919 : see if getprotoent exists
13920 set getprotoent d_getpent
13921 eval $inlibc
13922
13923 : see if getpgid exists
13924 set getpgid d_getpgid
13925 eval $inlibc
13926
13927 : see if getpgrp2 exists
13928 set getpgrp2 d_getpgrp2
13929 eval $inlibc
13930
13931 : see if getppid exists
13932 set getppid d_getppid
13933 eval $inlibc
13934
13935 : see if getpriority exists
13936 set getpriority d_getprior
13937 eval $inlibc
13938
13939 : see if getprotobyname_r exists
13940 set getprotobyname_r d_getprotobyname_r
13941 eval $inlibc
13942 case "$d_getprotobyname_r" in
13943 "$define")
13944         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13945         case "$d_getprotobyname_r_proto:$usethreads" in
13946         ":define")      d_getprotobyname_r_proto=define
13947                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13948                 eval $hasproto ;;
13949         *)      ;;
13950         esac
13951         case "$d_getprotobyname_r_proto" in
13952         define)
13953         case "$getprotobyname_r_proto" in
13954         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13955         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13956         esac
13957         case "$getprotobyname_r_proto" in
13958         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13959         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13960         esac
13961         case "$getprotobyname_r_proto" in
13962         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13963         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13964         esac
13965         case "$getprotobyname_r_proto" in
13966         ''|0)   d_getprotobyname_r=undef
13967                 getprotobyname_r_proto=0
13968                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13969         * )     case "$getprotobyname_r_proto" in
13970                 REENTRANT_PROTO*) ;;
13971                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13972                 esac
13973                 echo "Prototype: $try" ;;
13974         esac
13975         ;;
13976         *)      case "$usethreads" in
13977                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13978                 esac
13979                 d_getprotobyname_r=undef
13980                 getprotobyname_r_proto=0
13981                 ;;
13982         esac
13983         ;;
13984 *)      getprotobyname_r_proto=0
13985         ;;
13986 esac
13987
13988 : see if getprotobynumber_r exists
13989 set getprotobynumber_r d_getprotobynumber_r
13990 eval $inlibc
13991 case "$d_getprotobynumber_r" in
13992 "$define")
13993         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13994         case "$d_getprotobynumber_r_proto:$usethreads" in
13995         ":define")      d_getprotobynumber_r_proto=define
13996                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13997                 eval $hasproto ;;
13998         *)      ;;
13999         esac
14000         case "$d_getprotobynumber_r_proto" in
14001         define)
14002         case "$getprotobynumber_r_proto" in
14003         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
14004         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
14005         esac
14006         case "$getprotobynumber_r_proto" in
14007         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
14008         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
14009         esac
14010         case "$getprotobynumber_r_proto" in
14011         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
14012         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
14013         esac
14014         case "$getprotobynumber_r_proto" in
14015         ''|0)   d_getprotobynumber_r=undef
14016                 getprotobynumber_r_proto=0
14017                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
14018         * )     case "$getprotobynumber_r_proto" in
14019                 REENTRANT_PROTO*) ;;
14020                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
14021                 esac
14022                 echo "Prototype: $try" ;;
14023         esac
14024         ;;
14025         *)      case "$usethreads" in
14026                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
14027                 esac
14028                 d_getprotobynumber_r=undef
14029                 getprotobynumber_r_proto=0
14030                 ;;
14031         esac
14032         ;;
14033 *)      getprotobynumber_r_proto=0
14034         ;;
14035 esac
14036
14037 : see if getprotoent_r exists
14038 set getprotoent_r d_getprotoent_r
14039 eval $inlibc
14040 case "$d_getprotoent_r" in
14041 "$define")
14042         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14043         case "$d_getprotoent_r_proto:$usethreads" in
14044         ":define")      d_getprotoent_r_proto=define
14045                 set d_getprotoent_r_proto getprotoent_r $hdrs
14046                 eval $hasproto ;;
14047         *)      ;;
14048         esac
14049         case "$d_getprotoent_r_proto" in
14050         define)
14051         case "$getprotoent_r_proto" in
14052         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
14053         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
14054         esac
14055         case "$getprotoent_r_proto" in
14056         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
14057         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
14058         esac
14059         case "$getprotoent_r_proto" in
14060         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
14061         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
14062         esac
14063         case "$getprotoent_r_proto" in
14064         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
14065         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
14066         esac
14067         case "$getprotoent_r_proto" in
14068         ''|0)   d_getprotoent_r=undef
14069                 getprotoent_r_proto=0
14070                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
14071         * )     case "$getprotoent_r_proto" in
14072                 REENTRANT_PROTO*) ;;
14073                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
14074                 esac
14075                 echo "Prototype: $try" ;;
14076         esac
14077         ;;
14078         *)      case "$usethreads" in
14079                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
14080                 esac
14081                 d_getprotoent_r=undef
14082                 getprotoent_r_proto=0
14083                 ;;
14084         esac
14085         ;;
14086 *)      getprotoent_r_proto=0
14087         ;;
14088 esac
14089
14090 : see if prototypes for various getprotoxxx netdb.h functions are available
14091 echo " "
14092 set d_getprotoprotos getprotoent $i_netdb netdb.h
14093 eval $hasproto
14094
14095 : see if getprpwnam exists
14096 set getprpwnam d_getprpwnam
14097 eval $inlibc
14098
14099 : see if getpwent exists
14100 set getpwent d_getpwent
14101 eval $inlibc
14102
14103 : see if getpwent_r exists
14104 set getpwent_r d_getpwent_r
14105 eval $inlibc
14106 case "$d_getpwent_r" in
14107 "$define")
14108         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14109         case "$d_getpwent_r_proto:$usethreads" in
14110         ":define")      d_getpwent_r_proto=define
14111                 set d_getpwent_r_proto getpwent_r $hdrs
14112                 eval $hasproto ;;
14113         *)      ;;
14114         esac
14115         case "$d_getpwent_r_proto" in
14116         define)
14117         case "$getpwent_r_proto" in
14118         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
14119         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
14120         esac
14121         case "$getpwent_r_proto" in
14122         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
14123         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
14124         esac
14125         case "$getpwent_r_proto" in
14126         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
14127         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
14128         esac
14129         case "$getpwent_r_proto" in
14130         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
14131         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
14132         esac
14133         case "$getpwent_r_proto" in
14134         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
14135         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
14136         esac
14137         case "$getpwent_r_proto" in
14138         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
14139         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
14140         esac
14141         case "$getpwent_r_proto" in
14142         ''|0)   d_getpwent_r=undef
14143                 getpwent_r_proto=0
14144                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
14145         * )     case "$getpwent_r_proto" in
14146                 REENTRANT_PROTO*) ;;
14147                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
14148                 esac
14149                 echo "Prototype: $try" ;;
14150         esac
14151         ;;
14152         *)      case "$usethreads" in
14153                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
14154                 esac
14155                 d_getpwent_r=undef
14156                 getpwent_r_proto=0
14157                 ;;
14158         esac
14159         ;;
14160 *)      getpwent_r_proto=0
14161         ;;
14162 esac
14163
14164 : see if getpwnam_r exists
14165 set getpwnam_r d_getpwnam_r
14166 eval $inlibc
14167 case "$d_getpwnam_r" in
14168 "$define")
14169         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14170         case "$d_getpwnam_r_proto:$usethreads" in
14171         ":define")      d_getpwnam_r_proto=define
14172                 set d_getpwnam_r_proto getpwnam_r $hdrs
14173                 eval $hasproto ;;
14174         *)      ;;
14175         esac
14176         case "$d_getpwnam_r_proto" in
14177         define)
14178         case "$getpwnam_r_proto" in
14179         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
14180         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
14181         esac
14182         case "$getpwnam_r_proto" in
14183         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
14184         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
14185         esac
14186         case "$getpwnam_r_proto" in
14187         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
14188         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
14189         esac
14190         case "$getpwnam_r_proto" in
14191         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
14192         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
14193         esac
14194         case "$getpwnam_r_proto" in
14195         ''|0)   d_getpwnam_r=undef
14196                 getpwnam_r_proto=0
14197                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
14198         * )     case "$getpwnam_r_proto" in
14199                 REENTRANT_PROTO*) ;;
14200                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
14201                 esac
14202                 echo "Prototype: $try" ;;
14203         esac
14204         ;;
14205         *)      case "$usethreads" in
14206                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
14207                 esac
14208                 d_getpwnam_r=undef
14209                 getpwnam_r_proto=0
14210                 ;;
14211         esac
14212         ;;
14213 *)      getpwnam_r_proto=0
14214         ;;
14215 esac
14216
14217 : see if getpwuid_r exists
14218 set getpwuid_r d_getpwuid_r
14219 eval $inlibc
14220 case "$d_getpwuid_r" in
14221 "$define")
14222         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14223         case "$d_getpwuid_r_proto:$usethreads" in
14224         ":define")      d_getpwuid_r_proto=define
14225                 set d_getpwuid_r_proto getpwuid_r $hdrs
14226                 eval $hasproto ;;
14227         *)      ;;
14228         esac
14229         case "$d_getpwuid_r_proto" in
14230         define)
14231         case "$getpwuid_r_proto" in
14232         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
14233         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
14234         esac
14235         case "$getpwuid_r_proto" in
14236         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
14237         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
14238         esac
14239         case "$getpwuid_r_proto" in
14240         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
14241         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
14242         esac
14243         case "$getpwuid_r_proto" in
14244         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
14245         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
14246         esac
14247         case "$getpwuid_r_proto" in
14248         ''|0)   d_getpwuid_r=undef
14249                 getpwuid_r_proto=0
14250                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
14251         * )     case "$getpwuid_r_proto" in
14252                 REENTRANT_PROTO*) ;;
14253                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
14254                 esac
14255                 echo "Prototype: $try" ;;
14256         esac
14257         ;;
14258         *)      case "$usethreads" in
14259                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
14260                 esac
14261                 d_getpwuid_r=undef
14262                 getpwuid_r_proto=0
14263                 ;;
14264         esac
14265         ;;
14266 *)      getpwuid_r_proto=0
14267         ;;
14268 esac
14269
14270
14271 : see if getservbyname exists
14272 set getservbyname d_getsbyname
14273 eval $inlibc
14274
14275 : see if getservbyport exists
14276 set getservbyport d_getsbyport
14277 eval $inlibc
14278
14279 : see if getservent exists
14280 set getservent d_getsent
14281 eval $inlibc
14282
14283 : see if getservbyname_r exists
14284 set getservbyname_r d_getservbyname_r
14285 eval $inlibc
14286 case "$d_getservbyname_r" in
14287 "$define")
14288         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14289         case "$d_getservbyname_r_proto:$usethreads" in
14290         ":define")      d_getservbyname_r_proto=define
14291                 set d_getservbyname_r_proto getservbyname_r $hdrs
14292                 eval $hasproto ;;
14293         *)      ;;
14294         esac
14295         case "$d_getservbyname_r_proto" in
14296         define)
14297         case "$getservbyname_r_proto" in
14298         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
14299         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
14300         esac
14301         case "$getservbyname_r_proto" in
14302         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
14303         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
14304         esac
14305         case "$getservbyname_r_proto" in
14306         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
14307         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
14308         esac
14309         case "$getservbyname_r_proto" in
14310         ''|0)   d_getservbyname_r=undef
14311                 getservbyname_r_proto=0
14312                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
14313         * )     case "$getservbyname_r_proto" in
14314                 REENTRANT_PROTO*) ;;
14315                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
14316                 esac
14317                 echo "Prototype: $try" ;;
14318         esac
14319         ;;
14320         *)      case "$usethreads" in
14321                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
14322                 esac
14323                 d_getservbyname_r=undef
14324                 getservbyname_r_proto=0
14325                 ;;
14326         esac
14327         ;;
14328 *)      getservbyname_r_proto=0
14329         ;;
14330 esac
14331
14332 : see if getservbyport_r exists
14333 set getservbyport_r d_getservbyport_r
14334 eval $inlibc
14335 case "$d_getservbyport_r" in
14336 "$define")
14337         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14338         case "$d_getservbyport_r_proto:$usethreads" in
14339         ":define")      d_getservbyport_r_proto=define
14340                 set d_getservbyport_r_proto getservbyport_r $hdrs
14341                 eval $hasproto ;;
14342         *)      ;;
14343         esac
14344         case "$d_getservbyport_r_proto" in
14345         define)
14346         case "$getservbyport_r_proto" in
14347         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
14348         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
14349         esac
14350         case "$getservbyport_r_proto" in
14351         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
14352         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
14353         esac
14354         case "$getservbyport_r_proto" in
14355         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
14356         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
14357         esac
14358         case "$getservbyport_r_proto" in
14359         ''|0)   d_getservbyport_r=undef
14360                 getservbyport_r_proto=0
14361                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
14362         * )     case "$getservbyport_r_proto" in
14363                 REENTRANT_PROTO*) ;;
14364                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
14365                 esac
14366                 echo "Prototype: $try" ;;
14367         esac
14368         ;;
14369         *)      case "$usethreads" in
14370                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
14371                 esac
14372                 d_getservbyport_r=undef
14373                 getservbyport_r_proto=0
14374                 ;;
14375         esac
14376         ;;
14377 *)      getservbyport_r_proto=0
14378         ;;
14379 esac
14380
14381 : see if getservent_r exists
14382 set getservent_r d_getservent_r
14383 eval $inlibc
14384 case "$d_getservent_r" in
14385 "$define")
14386         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14387         case "$d_getservent_r_proto:$usethreads" in
14388         ":define")      d_getservent_r_proto=define
14389                 set d_getservent_r_proto getservent_r $hdrs
14390                 eval $hasproto ;;
14391         *)      ;;
14392         esac
14393         case "$d_getservent_r_proto" in
14394         define)
14395         case "$getservent_r_proto" in
14396         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
14397         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
14398         esac
14399         case "$getservent_r_proto" in
14400         ''|0) try='int getservent_r(struct servent*, char*, int);'
14401         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
14402         esac
14403         case "$getservent_r_proto" in
14404         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
14405         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
14406         esac
14407         case "$getservent_r_proto" in
14408         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
14409         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
14410         esac
14411         case "$getservent_r_proto" in
14412         ''|0)   d_getservent_r=undef
14413                 getservent_r_proto=0
14414                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
14415         * )     case "$getservent_r_proto" in
14416                 REENTRANT_PROTO*) ;;
14417                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
14418                 esac
14419                 echo "Prototype: $try" ;;
14420         esac
14421         ;;
14422         *)      case "$usethreads" in
14423                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
14424                 esac
14425                 d_getservent_r=undef
14426                 getservent_r_proto=0
14427                 ;;
14428         esac
14429         ;;
14430 *)      getservent_r_proto=0
14431         ;;
14432 esac
14433
14434 : see if prototypes for various getservxxx netdb.h functions are available
14435 echo " "
14436 set d_getservprotos getservent $i_netdb netdb.h
14437 eval $hasproto
14438
14439 : see if getspnam exists
14440 set getspnam d_getspnam
14441 eval $inlibc
14442
14443 : see if this is a shadow.h system
14444 set shadow.h i_shadow
14445 eval $inhdr
14446
14447 : see if getspnam_r exists
14448 set getspnam_r d_getspnam_r
14449 eval $inlibc
14450 case "$d_getspnam_r" in
14451 "$define")
14452         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
14453         case "$d_getspnam_r_proto:$usethreads" in
14454         ":define")      d_getspnam_r_proto=define
14455                 set d_getspnam_r_proto getspnam_r $hdrs
14456                 eval $hasproto ;;
14457         *)      ;;
14458         esac
14459         case "$d_getspnam_r_proto" in
14460         define)
14461         case "$getspnam_r_proto" in
14462         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
14463         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
14464         esac
14465         case "$getspnam_r_proto" in
14466         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
14467         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
14468         esac
14469         case "$getspnam_r_proto" in
14470         ''|0)   d_getspnam_r=undef
14471                 getspnam_r_proto=0
14472                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
14473         * )     case "$getspnam_r_proto" in
14474                 REENTRANT_PROTO*) ;;
14475                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
14476                 esac
14477                 echo "Prototype: $try" ;;
14478         esac
14479         ;;
14480         *)      case "$usethreads" in
14481                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
14482                 esac
14483                 d_getspnam_r=undef
14484                 getspnam_r_proto=0
14485                 ;;
14486         esac
14487         ;;
14488 *)      getspnam_r_proto=0
14489         ;;
14490 esac
14491
14492 : see if gettimeofday or ftime exists
14493 set gettimeofday d_gettimeod
14494 eval $inlibc
14495 case "$d_gettimeod" in
14496 "$undef")
14497         set ftime d_ftime 
14498         eval $inlibc
14499         ;;
14500 *)
14501         val="$undef"; set d_ftime; eval $setvar
14502         ;;
14503 esac
14504 case "$d_gettimeod$d_ftime" in
14505 "$undef$undef")
14506         echo " "
14507         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
14508         ;;
14509 esac
14510
14511 : see if gmtime_r exists
14512 set gmtime_r d_gmtime_r
14513 eval $inlibc
14514 case "$d_gmtime_r" in
14515 "$define")
14516         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14517         case "$d_gmtime_r_proto:$usethreads" in
14518         ":define")      d_gmtime_r_proto=define
14519                 set d_gmtime_r_proto gmtime_r $hdrs
14520                 eval $hasproto ;;
14521         *)      ;;
14522         esac
14523         case "$d_gmtime_r_proto" in
14524         define)
14525         case "$gmtime_r_proto" in
14526         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
14527         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
14528         esac
14529         case "$gmtime_r_proto" in
14530         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
14531         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
14532         esac
14533         case "$gmtime_r_proto" in
14534         ''|0)   d_gmtime_r=undef
14535                 gmtime_r_proto=0
14536                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
14537         * )     case "$gmtime_r_proto" in
14538                 REENTRANT_PROTO*) ;;
14539                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
14540                 esac
14541                 echo "Prototype: $try" ;;
14542         esac
14543         ;;
14544         *)      case "$usethreads" in
14545                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
14546                 esac
14547                 d_gmtime_r=undef
14548                 gmtime_r_proto=0
14549                 ;;
14550         esac
14551         ;;
14552 *)      gmtime_r_proto=0
14553         ;;
14554 esac
14555
14556 : see if hasmntopt exists
14557 set hasmntopt d_hasmntopt
14558 eval $inlibc
14559
14560 : see if this is a netinet/in.h or sys/in.h system
14561 set netinet/in.h i_niin sys/in.h i_sysin
14562 eval $inhdr
14563
14564 : see if arpa/inet.h has to be included
14565 set arpa/inet.h i_arpainet
14566 eval $inhdr
14567
14568 : see if htonl --and friends-- exists
14569 val=''
14570 set htonl val
14571 eval $inlibc
14572
14573 : Maybe they are macros.
14574 case "$val" in
14575 $undef)
14576         $cat >htonl.c <<EOM
14577 #include <stdio.h>
14578 #include <sys/types.h>
14579 #$i_niin I_NETINET_IN
14580 #$i_sysin I_SYS_IN
14581 #$i_arpainet I_ARPA_INET
14582 #ifdef I_NETINET_IN
14583 #include <netinet/in.h>
14584 #endif
14585 #ifdef I_SYS_IN
14586 #include <sys/in.h>
14587 #endif
14588 #ifdef I_ARPA_INET
14589 #include <arpa/inet.h>
14590 #endif
14591 #ifdef htonl
14592 printf("Defined as a macro.");
14593 #endif
14594 EOM
14595         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
14596         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
14597                 val="$define"
14598                 echo "But it seems to be defined as a macro." >&4
14599         fi
14600         $rm -f htonl.?
14601         ;;
14602 esac
14603 set d_htonl
14604 eval $setvar
14605
14606 : see if ilogbl exists
14607 set ilogbl d_ilogbl
14608 eval $inlibc
14609
14610 : index or strchr
14611 echo " "
14612 if set index val -f; eval $csym; $val; then
14613         if set strchr val -f d_strchr; eval $csym; $val; then
14614                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
14615                         val="$define"
14616                         vali="$undef"
14617                         echo "strchr() found." >&4
14618                 else
14619                         val="$undef"
14620                         vali="$define"
14621                         echo "index() found." >&4
14622                 fi
14623         else
14624                 val="$undef"
14625                 vali="$define"
14626                 echo "index() found." >&4
14627         fi
14628 else
14629         if set strchr val -f d_strchr; eval $csym; $val; then
14630                 val="$define"
14631                 vali="$undef"
14632                 echo "strchr() found." >&4
14633         else
14634                 echo "No index() or strchr() found!" >&4
14635                 val="$undef"
14636                 vali="$undef"
14637         fi
14638 fi
14639 set d_strchr; eval $setvar
14640 val="$vali"
14641 set d_index; eval $setvar
14642
14643 : check whether inet_aton exists
14644 set inet_aton d_inetaton
14645 eval $inlibc
14646
14647 : Look for isascii
14648 echo " "
14649 $cat >isascii.c <<EOCP
14650 #include <stdio.h>
14651 #include <ctype.h>
14652 #$i_stdlib I_STDLIB
14653 #ifdef I_STDLIB
14654 #include <stdlib.h>
14655 #endif
14656 int main() {
14657         int c = 'A';
14658         if (isascii(c))
14659                 exit(0);
14660         else
14661                 exit(1);
14662 }
14663 EOCP
14664 set isascii
14665 if eval $compile; then
14666         echo "isascii() found." >&4
14667         val="$define"
14668 else
14669         echo "isascii() NOT found." >&4
14670         val="$undef"
14671 fi
14672 set d_isascii
14673 eval $setvar
14674 $rm -f isascii*
14675
14676 : see if isfinite exists
14677 set isfinite d_isfinite
14678 eval $inlibc
14679
14680 : see if isinf exists
14681 set isinf d_isinf
14682 eval $inlibc
14683
14684 : see if isnan exists
14685 set isnan d_isnan
14686 eval $inlibc
14687
14688 : see if isnanl exists
14689 set isnanl d_isnanl
14690 eval $inlibc
14691
14692 : see if killpg exists
14693 set killpg d_killpg
14694 eval $inlibc
14695
14696 : see if lchown exists
14697 echo " "
14698 $cat > try.c <<'EOCP'
14699 /* System header to define __stub macros and hopefully few prototypes,
14700     which can conflict with char lchown(); below.  */
14701 #include <assert.h>
14702 /* Override any gcc2 internal prototype to avoid an error.  */
14703 /* We use char because int might match the return type of a gcc2
14704    builtin and then its argument prototype would still apply.  */
14705 char lchown();
14706 int main() {
14707     /*  The GNU C library defines this for functions which it implements
14708         to always fail with ENOSYS.  Some functions are actually named
14709         something starting with __ and the normal name is an alias.  */
14710 #if defined (__stub_lchown) || defined (__stub___lchown)
14711 choke me
14712 #else
14713 lchown();
14714 #endif
14715 ; return 0; }
14716 EOCP
14717 set try
14718 if eval $compile; then
14719     $echo "lchown() found." >&4
14720     val="$define"
14721 else
14722     $echo "lchown() NOT found." >&4
14723     val="$undef"
14724 fi
14725 set d_lchown
14726 eval $setvar
14727
14728 : See if number of significant digits in a double precision number is known
14729 echo " "
14730 $cat >ldbl_dig.c <<EOM
14731 #$i_limits I_LIMITS
14732 #$i_float I_FLOAT
14733 #ifdef I_LIMITS
14734 #include <limits.h>
14735 #endif
14736 #ifdef I_FLOAT
14737 #include <float.h>
14738 #endif
14739 #ifdef LDBL_DIG
14740 printf("Contains LDBL_DIG");
14741 #endif
14742 EOM
14743 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
14744 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
14745         echo "LDBL_DIG found." >&4
14746         val="$define"
14747 else
14748         echo "LDBL_DIG NOT found." >&4
14749         val="$undef"
14750 fi
14751 $rm -f ldbl_dig.?
14752 set d_ldbl_dig
14753 eval $setvar
14754
14755 : see if this is a math.h system
14756 set math.h i_math
14757 eval $inhdr
14758
14759 : check to see if math.h defines _LIB_VERSION
14760 d_libm_lib_version="$undef"
14761 case $i_math in
14762     $define)
14763         echo " "
14764         echo "Checking to see if your libm supports _LIB_VERSION..." >&4
14765         $cat >try.c <<EOCP
14766 #include <unistd.h>
14767 #include <math.h>
14768 int main (int argc, char *argv[])
14769 {
14770     printf ("%d\n", _LIB_VERSION);
14771     return (0);
14772     } /* main */
14773 EOCP
14774         set try
14775         if eval $compile; then
14776             foo=`$run ./try`
14777             echo "Yes, it does ($foo)" >&4
14778             d_libm_lib_version="$define"
14779         else
14780             echo "No, it does not (probably harmless)" >&4
14781             fi
14782         $rm_try
14783         ;;
14784
14785     esac
14786
14787 : see if link exists
14788 set link d_link
14789 eval $inlibc
14790
14791 : see if localtime_r exists
14792 set localtime_r d_localtime_r
14793 eval $inlibc
14794 case "$d_localtime_r" in
14795 "$define")
14796         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14797         case "$d_localtime_r_proto:$usethreads" in
14798         ":define")      d_localtime_r_proto=define
14799                 set d_localtime_r_proto localtime_r $hdrs
14800                 eval $hasproto ;;
14801         *)      ;;
14802         esac
14803         case "$d_localtime_r_proto" in
14804         define)
14805         case "$localtime_r_proto" in
14806         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
14807         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
14808         esac
14809         case "$localtime_r_proto" in
14810         ''|0) try='int localtime_r(const time_t*, struct tm*);'
14811         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
14812         esac
14813         case "$localtime_r_proto" in
14814         ''|0)   d_localtime_r=undef
14815                 localtime_r_proto=0
14816                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
14817         * )     case "$localtime_r_proto" in
14818                 REENTRANT_PROTO*) ;;
14819                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
14820                 esac
14821                 echo "Prototype: $try" ;;
14822         esac
14823         ;;
14824         *)      case "$usethreads" in
14825                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
14826                 esac
14827                 d_localtime_r=undef
14828                 localtime_r_proto=0
14829                 ;;
14830         esac
14831         ;;
14832 *)      localtime_r_proto=0
14833         ;;
14834 esac
14835
14836 : see if localtime_r calls tzset
14837 case "$localtime_r_proto" in
14838 REENTRANT_PROTO*)
14839         $cat >try.c <<EOCP
14840 /*  Does our libc's localtime_r call tzset ?
14841  *  return 0 if so, 1 otherwise.
14842  */
14843 #include <sys/types.h>
14844 #include <unistd.h>
14845 #include <time.h>
14846 #include <string.h>
14847 #include <malloc.h>
14848 int main()
14849 {
14850     time_t t = time(0L);
14851     char w_tz[]="TZ" "=GMT+5",
14852          e_tz[]="TZ" "=GMT-5",
14853         *tz_e = (char*)malloc(16),
14854         *tz_w = (char*)malloc(16);
14855     struct tm tm_e, tm_w;
14856     memset(&tm_e,'\0',sizeof(struct tm));
14857     memset(&tm_w,'\0',sizeof(struct tm));
14858     strcpy(tz_e,e_tz);
14859     strcpy(tz_w,w_tz);
14860
14861     putenv(tz_e);
14862     localtime_r(&t, &tm_e);
14863
14864     putenv(tz_w);
14865     localtime_r(&t, &tm_w);
14866
14867     if( memcmp(&tm_e, &tm_w, sizeof(struct tm)) == 0 )
14868         return 1;
14869     return 0;
14870 }
14871 EOCP
14872         set try
14873         if eval $compile; then
14874             if $run ./try; then
14875                 d_localtime_r_needs_tzset=undef;
14876             else
14877                 d_localtime_r_needs_tzset=define;
14878             fi;
14879         else
14880             d_localtime_r_needs_tzset=undef;
14881         fi;
14882      ;;
14883   *)
14884      d_localtime_r_needs_tzset=undef;
14885      ;;
14886 esac
14887 $rm_try
14888
14889 : see if localeconv exists
14890 set localeconv d_locconv
14891 eval $inlibc
14892
14893 : see if lockf exists
14894 set lockf d_lockf
14895 eval $inlibc
14896
14897 : see if prototype for lseek is available
14898 echo " "
14899 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
14900 eval $hasproto
14901
14902 : see if lstat exists
14903 set lstat d_lstat
14904 eval $inlibc
14905
14906 : see if madvise exists
14907 set madvise d_madvise
14908 eval $inlibc
14909
14910 : see if malloc_size exists
14911 set malloc_size d_malloc_size
14912 eval $inlibc
14913
14914 : see if malloc_size_good exists
14915 set malloc_good_size d_malloc_good_size
14916 eval $inlibc
14917
14918 : see if mblen exists
14919 set mblen d_mblen
14920 eval $inlibc
14921
14922 : see if mbstowcs exists
14923 set mbstowcs d_mbstowcs
14924 eval $inlibc
14925
14926 : see if mbtowc exists
14927 set mbtowc d_mbtowc
14928 eval $inlibc
14929
14930 : see if memchr exists
14931 set memchr d_memchr
14932 eval $inlibc
14933
14934 : see if memcmp exists
14935 set memcmp d_memcmp
14936 eval $inlibc
14937
14938 : see if memcpy exists
14939 set memcpy d_memcpy
14940 eval $inlibc
14941
14942 : see if memmove exists
14943 set memmove d_memmove
14944 eval $inlibc
14945
14946 : see if memset exists
14947 set memset d_memset
14948 eval $inlibc
14949
14950 : see if mkdir exists
14951 set mkdir d_mkdir
14952 eval $inlibc
14953
14954 : see if mkdtemp exists
14955 set mkdtemp d_mkdtemp
14956 eval $inlibc
14957
14958 : see if mkfifo exists
14959 set mkfifo d_mkfifo
14960 eval $inlibc
14961
14962 : see if mkstemp exists
14963 set mkstemp d_mkstemp
14964 eval $inlibc
14965
14966 : see if mkstemps exists
14967 set mkstemps d_mkstemps
14968 eval $inlibc
14969
14970 : see if mktime exists
14971 set mktime d_mktime
14972 eval $inlibc
14973
14974 : see if this is a sys/mman.h system
14975 set sys/mman.h i_sysmman
14976 eval $inhdr
14977
14978 : see if mmap exists
14979 set mmap d_mmap
14980 eval $inlibc
14981 : see what shmat returns
14982 : default to something harmless
14983 mmaptype='void *'
14984 case "$i_sysmman$d_mmap" in
14985 "$define$define")
14986         $cat >mmap.c <<'END'
14987 #include <sys/mman.h>
14988 void *mmap();
14989 END
14990         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14991                 mmaptype='void *'
14992         else
14993                 mmaptype='caddr_t'
14994         fi
14995         echo "and it returns ($mmaptype)." >&4
14996         ;;
14997 esac
14998
14999
15000
15001 : see if sqrtl exists
15002 set sqrtl d_sqrtl
15003 eval $inlibc
15004
15005 : see if scalbnl exists
15006 set scalbnl d_scalbnl
15007 eval $inlibc
15008
15009 : see if modfl exists
15010 set modfl d_modfl
15011 eval $inlibc
15012
15013 : see if prototype for modfl is available
15014 echo " "
15015 set d_modflproto modfl $i_math math.h
15016 eval $hasproto
15017
15018 d_modfl_pow32_bug="$undef"
15019
15020 case "$d_longdbl$d_modfl" in
15021 $define$define)
15022         $cat <<EOM
15023 Checking to see whether your modfl() is okay for large values...
15024 EOM
15025 $cat >try.c <<EOCP
15026 #include <math.h>
15027 #include <stdio.h>
15028 EOCP
15029 if $test "X$d_modflproto" != "X$define"; then
15030         $cat >>try.c <<EOCP
15031 /* Sigh. many current glibcs provide the function, but do not prototype it. */
15032 long double modfl (long double, long double *);
15033 EOCP
15034 fi
15035 $cat >>try.c <<EOCP
15036 int main() {
15037     long double nv = 4294967303.15;
15038     long double v, w;
15039     v = modfl(nv, &w);
15040 #ifdef __GLIBC__
15041     printf("glibc");
15042 #endif
15043     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
15044     return 0;
15045 }
15046 EOCP
15047         case "$osname:$gccversion" in
15048         aix:)   saveccflags="$ccflags"
15049                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
15050         esac
15051         set try
15052         if eval $compile; then
15053                 foo=`$run ./try`
15054                 case "$foo" in
15055                 *" 4294967303.150000 1.150000 4294967302.000000")
15056                         echo >&4 "Your modfl() is broken for large values."
15057                         d_modfl_pow32_bug="$define"
15058                         case "$foo" in
15059                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
15060                         ;;
15061                         esac
15062                         ;;
15063                 *" 4294967303.150000 0.150000 4294967303.000000")
15064                         echo >&4 "Your modfl() seems okay for large values."
15065                         ;;
15066                 *)      echo >&4 "I don't understand your modfl() at all."
15067                         d_modfl="$undef"
15068                         ;;
15069                 esac
15070                 $rm_try
15071         else
15072                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
15073                 d_modfl="$undef"
15074         fi
15075         case "$osname:$gccversion" in
15076         aix:)   ccflags="$saveccflags" ;; # restore
15077         esac
15078         ;;
15079 esac
15080
15081 if $test "$uselongdouble" = "$define"; then
15082     message=""
15083     if $test "$d_sqrtl" != "$define"; then
15084         message="$message sqrtl"
15085     fi
15086     if $test "$d_modfl" != "$define"; then
15087         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
15088             echo "You have both aintl and copysignl, so I can emulate modfl."
15089         else
15090             message="$message modfl"
15091         fi
15092     fi
15093     if $test "$d_frexpl" != "$define"; then
15094         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
15095             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
15096         else
15097             message="$message frexpl"
15098         fi
15099     fi
15100
15101     if $test "$message" != ""; then
15102         $cat <<EOM >&4
15103
15104 *** You requested the use of long doubles but you do not seem to have
15105 *** the following mathematical functions needed for long double support:
15106 ***    $message
15107 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
15108 *** Cannot continue, aborting.
15109
15110 EOM
15111
15112         exit 1
15113     fi
15114 fi
15115
15116 : see if mprotect exists
15117 set mprotect d_mprotect
15118 eval $inlibc
15119
15120 : see if msgctl exists
15121 set msgctl d_msgctl
15122 eval $inlibc
15123
15124 : see if msgget exists
15125 set msgget d_msgget
15126 eval $inlibc
15127
15128 : see if msgsnd exists
15129 set msgsnd d_msgsnd
15130 eval $inlibc
15131
15132 : see if msgrcv exists
15133 set msgrcv d_msgrcv
15134 eval $inlibc
15135
15136 : see how much of the 'msg*(2)' library is present.
15137 h_msg=true
15138 echo " "
15139 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
15140 *"$undef"*) h_msg=false;;
15141 esac
15142 case "$osname" in
15143 freebsd)
15144     case "`ipcs 2>&1`" in
15145     "SVID messages"*"not configured"*)
15146         echo "Your $osname does not have the msg*(2) configured." >&4
15147         h_msg=false
15148         val="$undef"
15149         set msgctl d_msgctl
15150         eval $setvar
15151         set msgget d_msgget
15152         eval $setvar
15153         set msgsnd d_msgsnd
15154         eval $setvar
15155         set msgrcv d_msgrcv
15156         eval $setvar
15157         ;;
15158     esac
15159     ;;
15160 esac
15161 : we could also check for sys/ipc.h ...
15162 if $h_msg && $test `./findhdr sys/msg.h`; then
15163         echo "You have the full msg*(2) library." >&4
15164         val="$define"
15165 else
15166         echo "You don't have the full msg*(2) library." >&4
15167         val="$undef"
15168 fi
15169 set d_msg
15170 eval $setvar
15171
15172
15173 echo " "
15174 echo "Checking to see if your system supports struct msghdr..." >&4
15175 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
15176 eval $hasstruct
15177 case "$d_msghdr_s" in
15178 "$define")      echo "Yes, it does."   ;;
15179 *)              echo "No, it doesn't." ;;
15180 esac
15181
15182
15183 : see if msync exists
15184 set msync d_msync
15185 eval $inlibc
15186
15187 : see if munmap exists
15188 set munmap d_munmap
15189 eval $inlibc
15190
15191 : see if nice exists
15192 set nice d_nice
15193 eval $inlibc
15194
15195 : see if this is a langinfo.h system
15196 set langinfo.h i_langinfo
15197 eval $inhdr
15198
15199 : see if nl_langinfo exists
15200 set nl_langinfo d_nl_langinfo
15201 eval $inlibc
15202
15203 : check for volatile keyword
15204 echo " "
15205 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
15206 $cat >try.c <<'EOCP'
15207 int main()
15208 {
15209         typedef struct _goo_struct goo_struct;
15210         goo_struct * volatile goo = ((goo_struct *)0);
15211         struct _goo_struct {
15212                 long long_int;
15213                 int reg_int;
15214                 char char_var;
15215         };
15216         typedef unsigned short foo_t;
15217         char *volatile foo;
15218         volatile int bar;
15219         volatile foo_t blech;
15220         foo = foo;
15221 }
15222 EOCP
15223 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
15224         val="$define"
15225         echo "Yup, it does."
15226 else
15227         val="$undef"
15228         echo "Nope, it doesn't."
15229 fi
15230 set d_volatile
15231 eval $setvar
15232 $rm_try
15233
15234 : Check basic sizes
15235 echo " "
15236 $echo "Choosing the C types to be used for Perl's internal types..." >&4
15237
15238 case "$use64bitint:$d_quad:$quadtype" in
15239 define:define:?*)
15240         ivtype="$quadtype"
15241         uvtype="$uquadtype"
15242         ivsize=8
15243         uvsize=8
15244         ;;
15245 *)      ivtype="long"
15246         uvtype="unsigned long"
15247         ivsize=$longsize
15248         uvsize=$longsize
15249         ;;
15250 esac
15251
15252 case "$uselongdouble:$d_longdbl" in
15253 define:define)
15254         nvtype="long double"
15255         nvsize=$longdblsize
15256         ;;
15257 *)      nvtype=double
15258         nvsize=$doublesize
15259         ;;
15260 esac
15261
15262 $echo "(IV will be "$ivtype", $ivsize bytes)"
15263 $echo "(UV will be "$uvtype", $uvsize bytes)"
15264 $echo "(NV will be "$nvtype", $nvsize bytes)"
15265
15266 $cat >try.c <<EOCP
15267 #$i_inttypes I_INTTYPES
15268 #ifdef I_INTTYPES
15269 #include <inttypes.h>
15270 #endif
15271 #include <stdio.h>
15272 int main() {
15273 #ifdef INT8
15274    int8_t i =  INT8_MAX;
15275   uint8_t u = UINT8_MAX;
15276   printf("int8_t\n");
15277 #endif
15278 #ifdef INT16
15279    int16_t i =  INT16_MAX;
15280   uint16_t i = UINT16_MAX;
15281   printf("int16_t\n");
15282 #endif
15283 #ifdef INT32
15284    int32_t i =  INT32_MAX;
15285   uint32_t u = UINT32_MAX;
15286   printf("int32_t\n");
15287 #endif
15288 }
15289 EOCP
15290
15291 i8type="signed char"
15292 u8type="unsigned char"
15293 i8size=1
15294 u8size=1
15295
15296 case "$i16type" in
15297 '')     case "$shortsize" in
15298         2)      i16type=short
15299                 u16type="unsigned short"
15300                 i16size=$shortsize
15301                 u16size=$shortsize
15302                 ;;
15303         esac
15304         ;;
15305 esac
15306 case "$i16type" in
15307 '')     set try -DINT16
15308         if eval $compile; then
15309                 case "`$run ./try`" in
15310                 int16_t)
15311                         i16type=int16_t
15312                         u16type=uint16_t
15313                         i16size=2
15314                         u16size=2
15315                         ;;
15316                 esac
15317         fi
15318         ;;
15319 esac
15320 case "$i16type" in
15321 '')     if $test $shortsize -ge 2; then
15322                 i16type=short
15323                 u16type="unsigned short"
15324                 i16size=$shortsize
15325                 u16size=$shortsize
15326         fi
15327         ;;
15328 esac
15329
15330 case "$i32type" in
15331 '')     case "$longsize" in
15332         4)      i32type=long
15333                 u32type="unsigned long"
15334                 i32size=$longsize
15335                 u32size=$longsize
15336                 ;;
15337         *)      case "$intsize" in
15338                 4)      i32type=int
15339                         u32type="unsigned int"
15340                         i32size=$intsize
15341                         u32size=$intsize
15342                         ;;
15343                 esac
15344                 ;;
15345         esac
15346         ;;
15347 esac
15348 case "$i32type" in
15349 '')     set try -DINT32
15350         if eval $compile; then
15351                 case "`$run ./try`" in
15352                 int32_t)
15353                         i32type=int32_t
15354                         u32type=uint32_t
15355                         i32size=4
15356                         u32size=4
15357                         ;;
15358                 esac
15359         fi
15360         ;;
15361 esac
15362 case "$i32type" in
15363 '')     if $test $intsize -ge 4; then
15364                 i32type=int
15365                 u32type="unsigned int"
15366                 i32size=$intsize
15367                 u32size=$intsize
15368         fi
15369         ;;
15370 esac
15371
15372 case "$i64type" in
15373 '')     case "$d_quad:$quadtype" in
15374         define:?*)
15375                 i64type="$quadtype"
15376                 u64type="$uquadtype"
15377                 i64size=8
15378                 u64size=8
15379                 ;;
15380         esac
15381         ;;
15382 esac
15383
15384 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
15385 : volatile so that the compiler has to store it out to memory.
15386 if test X"$d_volatile" = X"$define"; then
15387         volatile=volatile
15388 fi
15389 $cat <<EOP >try.c
15390 #include <stdio.h>
15391 #$i_stdlib I_STDLIB
15392 #ifdef I_STDLIB
15393 #include <stdlib.h>
15394 #endif
15395 #include <sys/types.h>
15396 #include <signal.h>
15397 #ifdef SIGFPE
15398 $volatile int bletched = 0;
15399 $signal_t blech(int s) { bletched = 1; }
15400 #endif
15401 int main() {
15402     $uvtype u = 0;
15403     $nvtype d;
15404     int     n = 8 * $uvsize;
15405     int     i;
15406 #ifdef SIGFPE
15407     signal(SIGFPE, blech);
15408 #endif
15409
15410     for (i = 0; i < n; i++) {
15411       u = u << 1 | ($uvtype)1;
15412       d = ($nvtype)u;
15413       if (($uvtype)d != u)
15414         break;
15415       if (d <= 0)
15416         break;
15417       d = ($nvtype)(u - 1);
15418       if (($uvtype)d != (u - 1))
15419         break;
15420 #ifdef SIGFPE
15421       if (bletched)
15422         break;
15423 #endif
15424     }
15425     printf("%d\n", ((i == n) ? -n : i));
15426     exit(0);
15427 }
15428 EOP
15429 set try
15430
15431 d_nv_preserves_uv="$undef"
15432 if eval $compile; then
15433         nv_preserves_uv_bits="`$run ./try`"
15434 fi
15435 case "$nv_preserves_uv_bits" in
15436 \-[1-9]*)
15437         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
15438         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
15439         d_nv_preserves_uv="$define"
15440         ;;
15441 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
15442         d_nv_preserves_uv="$undef" ;;
15443 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
15444         nv_preserves_uv_bits="0" ;;
15445 esac
15446 $rm_try
15447
15448 $echo "Checking whether NV 0.0 is all bits zero in memory..." >&4
15449 : volatile so that the compiler has to store it out to memory.
15450 if test X"$d_volatile" = X"$define"; then
15451         volatile=volatile
15452 fi
15453 $cat <<EOP >try.c
15454 #include <stdio.h>
15455 #$i_stdlib I_STDLIB
15456 #ifdef I_STDLIB
15457 #include <stdlib.h>
15458 #endif
15459 #$i_string I_STRING
15460 #ifdef I_STRING
15461 #  include <string.h>
15462 #else
15463 #  include <strings.h>
15464 #endif
15465 #include <sys/types.h>
15466 #include <signal.h>
15467 #ifdef SIGFPE
15468 $volatile int bletched = 0;
15469 $signal_t blech(int s) { bletched = 1; }
15470 #endif
15471
15472 int checkit($nvtype d, char *where) {
15473     unsigned char *p = (char *)&d;
15474     unsigned char *end = p + sizeof(d);
15475     int fail = 0;
15476
15477     while (p < end)
15478         fail += *p++;
15479
15480     if (!fail)
15481         return 0;
15482
15483     p = (char *)&d;
15484     printf("No - %s: 0x", where);
15485     while (p < end)
15486         printf ("%02X", *p++);
15487     printf("\n");
15488     return 1;
15489 }
15490
15491 int main(int argc, char **argv) {
15492     $nvtype d = 0.0;
15493     int fail = 0;
15494     fail += checkit(d, "0.0");
15495
15496     /* The compiler shouldn't be assuming that bletched is 0  */
15497     d = bletched;
15498
15499     fail += checkit(d, "bleched");
15500
15501 #ifdef SIGFPE
15502     signal(SIGFPE, blech);
15503 #endif
15504
15505     /* Paranoia - the compiler should have no way of knowing that ANSI says
15506        that argv[argc] will always be NULL.  Actually, if it did assume this it
15507        would be buggy, as this is C and main() can be called from elsewhere in
15508        the program.  */
15509     d = argv[argc] ? 1 : 0;
15510
15511     if (d) {
15512         printf("Odd argv[argc]=%p, d=%g\n", argv[argc], d);
15513     }
15514
15515     fail += checkit(d, "ternary");
15516
15517     memset(&d, sizeof(d), argv[argc] ? 1 : 0);
15518
15519     if (d != 0.0) {
15520         printf("No - memset doesn't give 0.0\n");
15521         /* This might just blow up:  */
15522         printf("(gives %g)\n", d);
15523         return 1;
15524     }
15525
15526 #ifdef SIGFPE
15527     if (bletched) {
15528         printf("No - something bleched\n");
15529         return 1;
15530     }
15531 #endif
15532     if (fail) {
15533       printf("No - %d fail(s)\n", fail);
15534       return 1;
15535     }
15536     printf("Yes\n");
15537     return 0;
15538 }
15539 EOP
15540 set try
15541
15542 d_nv_zero_is_allbits_zero="$undef"
15543 if eval $compile; then
15544     xxx="`$run ./try`"
15545     case "$?" in
15546         0)
15547             case "$xxx" in
15548                 Yes)  cat >&4 <<EOM
15549 0.0 is represented as all bits zero in memory
15550 EOM
15551                     d_nv_zero_is_allbits_zero="$define"
15552                     ;;
15553                 *)  cat >&4 <<EOM
15554 0.0 is not represented as all bits zero in memory
15555 EOM
15556                     d_nv_zero_is_allbits_zero="$undef"
15557                     ;;
15558             esac
15559             ;;
15560         *)  cat >&4 <<EOM
15561 0.0 is not represented as all bits zero in memory
15562 EOM
15563             d_nv_zero_is_allbits_zero="$undef"
15564             ;;
15565     esac
15566 fi
15567 $rm_try
15568
15569 : check for off64_t
15570 echo " "
15571 echo "Checking to see if you have off64_t..." >&4
15572 $cat >try.c <<EOCP
15573 #include <sys/types.h>
15574 #include <unistd.h>
15575 int main() { off64_t x = 7; }
15576 EOCP
15577 set try
15578 if eval $compile; then
15579         val="$define"
15580         echo "You have off64_t."
15581 else
15582         val="$undef"
15583         echo "You do not have off64_t."
15584         case "$lseeksize" in
15585         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
15586         esac
15587 fi
15588 $rm_try
15589 set d_off64_t
15590 eval $setvar
15591
15592 : how to create joinable pthreads
15593 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
15594         echo " "
15595         echo "Checking what constant to use for creating joinable pthreads..." >&4
15596         $cat >try.c <<'EOCP'
15597 #include <pthread.h>
15598 int main() {
15599     int detachstate = JOINABLE;
15600 }
15601 EOCP
15602         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
15603         if eval $compile; then
15604                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
15605                 val="$undef" # Yes, undef.
15606                 set d_old_pthread_create_joinable
15607                 eval $setvar
15608                 val=""
15609                 set old_pthread_create_joinable
15610                 eval $setvar
15611         else
15612                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
15613                 if eval $compile; then
15614                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
15615                         val="$define"
15616                         set d_old_pthread_create_joinable
15617                         eval $setvar
15618                         val=PTHREAD_CREATE_UNDETACHED
15619                         set old_pthread_create_joinable
15620                         eval $setvar
15621                 else
15622                         set try -DJOINABLE=__UNDETACHED
15623                         if eval $compile; then
15624                                 echo "You seem to use __UNDETACHED." >&4
15625                                 val="$define"
15626                                 set d_old_pthread_create_joinable
15627                                 eval $setvar
15628                                 val=__UNDETACHED
15629                                 set old_pthread_create_joinable
15630                                 eval $setvar
15631                         else
15632                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
15633                                 val="$define"
15634                                 set d_old_pthread_create_joinable
15635                                 eval $setvar
15636                                 val=0
15637                                 set old_pthread_create_joinable
15638                                 eval $setvar
15639                         fi
15640                 fi
15641         fi
15642         $rm_try
15643 else
15644     d_old_pthread_create_joinable="$undef"
15645     old_pthread_create_joinable=""
15646 fi
15647
15648 : see if pause exists
15649 set pause d_pause
15650 eval $inlibc
15651
15652 : see if poll exists
15653 set poll d_poll
15654 eval $inlibc
15655
15656 : see if readlink exists
15657 set readlink d_readlink
15658 eval $inlibc
15659
15660 : Check if exe is symlink to abs path of executing program
15661 echo " "
15662 procselfexe=''
15663 val="$undef"
15664 case "$d_readlink" in
15665 "$define")
15666         if $issymlink /proc/self/exe ; then
15667                 $ls -l /proc/self/exe > reflect
15668                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15669                         echo "You have Linux-like /proc/self/exe."
15670                         procselfexe='"/proc/self/exe"'
15671                         val="$define"
15672                 fi
15673         fi
15674         if $issymlink /proc/curproc/file ; then
15675                 $ls -l /proc/curproc/file > reflect
15676                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15677                         echo "You have BSD-like /proc/curproc/file."
15678                         procselfexe='"/proc/curproc/file"'
15679                         val="$define"
15680                 fi
15681         fi
15682         ;;
15683 esac
15684 $rm -f reflect
15685 set d_procselfexe
15686 eval $setvar
15687
15688 : backward compatibility for d_hvfork
15689 if test X$d_hvfork != X; then
15690         d_vfork="$d_hvfork"
15691         d_hvfork=''
15692 fi
15693 : see if there is a vfork
15694 val=''
15695 set vfork val
15696 eval $inlibc
15697
15698 d_pseudofork=$undef
15699
15700 : Ok, but do we want to use it. vfork is reportedly unreliable in
15701 : perl on Solaris 2.x, and probably elsewhere.
15702 case "$val" in
15703 $define)
15704         echo " "
15705         case "$usevfork" in
15706         false) dflt='n';;
15707         *) dflt='y';;
15708         esac
15709         cat <<'EOM'
15710
15711 Perl can only use a vfork() that doesn't suffer from strict
15712 restrictions on calling functions or modifying global data in
15713 the child.  For example, glibc-2.1 contains such a vfork()
15714 that is unsuitable.  If your system provides a proper fork()
15715 call, chances are that you do NOT want perl to use vfork().
15716
15717 EOM
15718         rp="Do you still want to use vfork()?"
15719         . ./myread
15720         case "$ans" in
15721         y|Y) ;;
15722         *)
15723                 echo "Ok, we won't use vfork()."
15724                 val="$undef"
15725                 ;;
15726         esac
15727         ;;
15728 esac
15729 set d_vfork
15730 eval $setvar
15731 case "$d_vfork" in
15732 $define) usevfork='true';;
15733 *) usevfork='false';;
15734 esac
15735
15736 : see whether the pthread_atfork exists
15737 $cat >try.c <<EOP
15738 #include <pthread.h>
15739 #include <stdio.h>
15740 int main() {
15741 #ifdef  PTHREAD_ATFORK
15742         pthread_atfork(NULL,NULL,NULL);
15743 #endif
15744 }
15745 EOP
15746
15747 : see if pthread_atfork exists
15748 set try -DPTHREAD_ATFORK
15749 if eval $compile; then
15750     val="$define"
15751 else
15752     val="$undef"
15753 fi
15754 case "$usethreads" in
15755 $define)
15756         case "$val" in
15757         $define) echo 'pthread_atfork found.' >&4        ;;
15758         *)       echo 'pthread_atfork NOT found.' >&4    ;;
15759         esac
15760 esac
15761 set d_pthread_atfork
15762 eval $setvar
15763
15764 : see if pthread_attr_setscope exists
15765 set pthread_attr_setscope d_pthread_attr_setscope
15766 eval $inlibc
15767
15768
15769 : see whether the various POSIXish _yields exist
15770 $cat >try.c <<EOP
15771 #include <pthread.h>
15772 #include <stdio.h>
15773 int main() {
15774 #ifdef SCHED_YIELD
15775         sched_yield();
15776 #else
15777 #ifdef PTHREAD_YIELD
15778         pthread_yield();
15779 #else
15780 #ifdef PTHREAD_YIELD_NULL
15781         pthread_yield(NULL);
15782 #endif
15783 #endif
15784 #endif
15785 }
15786 EOP
15787 : see if sched_yield exists
15788 set try -DSCHED_YIELD
15789 if eval $compile; then
15790     val="$define"
15791     sched_yield='sched_yield()'
15792 else
15793     val="$undef"
15794 fi
15795 case "$usethreads" in
15796 $define)
15797         case "$val" in
15798         $define) echo 'sched_yield() found.' >&4        ;;
15799         *)       echo 'sched_yield() NOT found.' >&4    ;;
15800         esac
15801 esac
15802 set d_sched_yield
15803 eval $setvar
15804
15805 : see if pthread_yield exists
15806 set try -DPTHREAD_YIELD
15807 if eval $compile; then
15808     val="$define"
15809     case "$sched_yield" in
15810     '') sched_yield='pthread_yield()' ;;
15811     esac
15812 else
15813     set try -DPTHREAD_YIELD_NULL
15814     if eval $compile; then
15815         val="$define"
15816         case "$sched_yield" in
15817         '') sched_yield='pthread_yield(NULL)' ;;
15818         esac
15819     else
15820         val="$undef"
15821     fi
15822 fi
15823 case "$usethreads" in
15824 $define)
15825         case "$val" in
15826         $define) echo 'pthread_yield() found.' >&4      ;;
15827         *)       echo 'pthread_yield() NOT found.' >&4  ;;
15828         esac
15829         ;;
15830 esac
15831 set d_pthread_yield
15832 eval $setvar
15833 case "$sched_yield" in
15834 '') sched_yield=undef ;;
15835 esac
15836 $rm_try
15837
15838 : see if random_r exists
15839 set random_r d_random_r
15840 eval $inlibc
15841 case "$d_random_r" in
15842 "$define")
15843         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15844         case "$d_random_r_proto:$usethreads" in
15845         ":define")      d_random_r_proto=define
15846                 set d_random_r_proto random_r $hdrs
15847                 eval $hasproto ;;
15848         *)      ;;
15849         esac
15850         case "$d_random_r_proto" in
15851         define)
15852         case "$random_r_proto" in
15853         ''|0) try='int random_r(int*, struct random_data*);'
15854         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
15855         esac
15856         case "$random_r_proto" in
15857         ''|0) try='int random_r(long*, struct random_data*);'
15858         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
15859         esac
15860         case "$random_r_proto" in
15861         ''|0) try='int random_r(struct random_data*, int32_t*);'
15862         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
15863         esac
15864         case "$random_r_proto" in
15865         ''|0)   d_random_r=undef
15866                 random_r_proto=0
15867                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
15868         * )     case "$random_r_proto" in
15869                 REENTRANT_PROTO*) ;;
15870                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
15871                 esac
15872                 echo "Prototype: $try" ;;
15873         esac
15874         ;;
15875         *)      case "$usethreads" in
15876                 define) echo "random_r has no prototype, not using it." >&4 ;;
15877                 esac
15878                 d_random_r=undef
15879                 random_r_proto=0
15880                 ;;
15881         esac
15882         ;;
15883 *)      random_r_proto=0
15884         ;;
15885 esac
15886
15887 : see if readdir and friends exist
15888 set readdir d_readdir
15889 eval $inlibc
15890 set seekdir d_seekdir
15891 eval $inlibc
15892 set telldir d_telldir
15893 eval $inlibc
15894 set rewinddir d_rewinddir
15895 eval $inlibc
15896
15897 : see if readdir64_r exists
15898 set readdir64_r d_readdir64_r
15899 eval $inlibc
15900 case "$d_readdir64_r" in
15901 "$define")
15902         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15903         case "$d_readdir64_r_proto:$usethreads" in
15904         ":define")      d_readdir64_r_proto=define
15905                 set d_readdir64_r_proto readdir64_r $hdrs
15906                 eval $hasproto ;;
15907         *)      ;;
15908         esac
15909         case "$d_readdir64_r_proto" in
15910         define)
15911         case "$readdir64_r_proto" in
15912         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
15913         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
15914         esac
15915         case "$readdir64_r_proto" in
15916         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
15917         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
15918         esac
15919         case "$readdir64_r_proto" in
15920         ''|0)   d_readdir64_r=undef
15921                 readdir64_r_proto=0
15922                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
15923         * )     case "$readdir64_r_proto" in
15924                 REENTRANT_PROTO*) ;;
15925                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
15926                 esac
15927                 echo "Prototype: $try" ;;
15928         esac
15929         ;;
15930         *)      case "$usethreads" in
15931                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
15932                 esac
15933                 d_readdir64_r=undef
15934                 readdir64_r_proto=0
15935                 ;;
15936         esac
15937         ;;
15938 *)      readdir64_r_proto=0
15939         ;;
15940 esac
15941
15942 : see if readdir_r exists
15943 set readdir_r d_readdir_r
15944 eval $inlibc
15945 case "$d_readdir_r" in
15946 "$define")
15947         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15948         case "$d_readdir_r_proto:$usethreads" in
15949         ":define")      d_readdir_r_proto=define
15950                 set d_readdir_r_proto readdir_r $hdrs
15951                 eval $hasproto ;;
15952         *)      ;;
15953         esac
15954         case "$d_readdir_r_proto" in
15955         define)
15956         case "$readdir_r_proto" in
15957         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
15958         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
15959         esac
15960         case "$readdir_r_proto" in
15961         ''|0) try='int readdir_r(DIR*, struct dirent*);'
15962         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
15963         esac
15964         case "$readdir_r_proto" in
15965         ''|0)   d_readdir_r=undef
15966                 readdir_r_proto=0
15967                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
15968         * )     case "$readdir_r_proto" in
15969                 REENTRANT_PROTO*) ;;
15970                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
15971                 esac
15972                 echo "Prototype: $try" ;;
15973         esac
15974         ;;
15975         *)      case "$usethreads" in
15976                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
15977                 esac
15978                 d_readdir_r=undef
15979                 readdir_r_proto=0
15980                 ;;
15981         esac
15982         ;;
15983 *)      readdir_r_proto=0
15984         ;;
15985 esac
15986
15987 : see if readv exists
15988 set readv d_readv
15989 eval $inlibc
15990
15991 : see if recvmsg exists
15992 set recvmsg d_recvmsg
15993 eval $inlibc
15994
15995 : see if rename exists
15996 set rename d_rename
15997 eval $inlibc
15998
15999 : see if rmdir exists
16000 set rmdir d_rmdir
16001 eval $inlibc
16002
16003 : see if memory.h is available.
16004 val=''
16005 set memory.h val
16006 eval $inhdr
16007
16008 : See if it conflicts with string.h
16009 case "$val" in
16010 $define)
16011         case "$strings" in
16012         '') ;;
16013         *)
16014                 $cppstdin $cppflags $cppminus < $strings > mem.h
16015                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
16016                         echo " "
16017                         echo "We won't be including <memory.h>."
16018                         val="$undef"
16019                 fi
16020                 $rm -f mem.h
16021                 ;;
16022         esac
16023 esac
16024 set i_memory
16025 eval $setvar
16026
16027 : can bcopy handle overlapping blocks?
16028 echo " "
16029 val="$undef"
16030 case "$d_memmove" in
16031 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
16032 *)      case "$d_bcopy" in
16033         "$define")
16034                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
16035                 $cat >try.c <<EOCP
16036 #$i_memory I_MEMORY
16037 #$i_stdlib I_STDLIB
16038 #$i_string I_STRING
16039 #$i_unistd I_UNISTD
16040 EOCP
16041         $cat >>try.c <<'EOCP'
16042 #include <stdio.h>
16043 #ifdef I_MEMORY
16044 #  include <memory.h>
16045 #endif
16046 #ifdef I_STDLIB
16047 #  include <stdlib.h>
16048 #endif
16049 #ifdef I_STRING
16050 #  include <string.h>
16051 #else
16052 #  include <strings.h>
16053 #endif
16054 #ifdef I_UNISTD
16055 #  include <unistd.h>  /* Needed for NetBSD */
16056 #endif
16057 int main()
16058 {
16059 char buf[128], abc[128];
16060 char *b;
16061 int len;
16062 int off;
16063 int align;
16064
16065 /* Copy "abcde..." string to char abc[] so that gcc doesn't
16066    try to store the string in read-only memory. */
16067 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
16068
16069 for (align = 7; align >= 0; align--) {
16070         for (len = 36; len; len--) {
16071                 b = buf+align;
16072                 bcopy(abc, b, len);
16073                 for (off = 1; off <= len; off++) {
16074                         bcopy(b, b+off, len);
16075                         bcopy(b+off, b, len);
16076                         if (bcmp(b, abc, len))
16077                                 exit(1);
16078                 }
16079         }
16080 }
16081 exit(0);
16082 }
16083 EOCP
16084                 set try
16085                 if eval $compile_ok; then
16086                         if $run ./try 2>/dev/null; then
16087                                 echo "Yes, it can."
16088                                 val="$define"
16089                         else
16090                                 echo "It can't, sorry."
16091                         fi
16092                 else
16093                         echo "(I can't compile the test program, so we'll assume not...)"
16094                 fi
16095                 ;;
16096         esac
16097         $rm_try
16098         ;;
16099 esac
16100 set d_safebcpy
16101 eval $setvar
16102
16103 : can memcpy handle overlapping blocks?
16104 echo " "
16105 val="$undef"
16106 case "$d_memmove" in
16107 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
16108 *)      case "$d_memcpy" in
16109         "$define")
16110                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
16111                 $cat >try.c <<EOCP
16112 #$i_memory I_MEMORY
16113 #$i_stdlib I_STDLIB
16114 #$i_string I_STRING
16115 #$i_unistd I_UNISTD
16116 EOCP
16117         $cat >>try.c <<'EOCP'
16118 #include <stdio.h>
16119 #ifdef I_MEMORY
16120 #  include <memory.h>
16121 #endif
16122 #ifdef I_STDLIB
16123 #  include <stdlib.h>
16124 #endif
16125 #ifdef I_STRING
16126 #  include <string.h>
16127 #else
16128 #  include <strings.h>
16129 #endif
16130 #ifdef I_UNISTD
16131 #  include <unistd.h>  /* Needed for NetBSD */
16132 #endif
16133 int main()
16134 {
16135 char buf[128], abc[128];
16136 char *b;
16137 int len;
16138 int off;
16139 int align;
16140
16141 /* Copy "abcde..." string to char abc[] so that gcc doesn't
16142    try to store the string in read-only memory. */
16143 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
16144
16145 for (align = 7; align >= 0; align--) {
16146         for (len = 36; len; len--) {
16147                 b = buf+align;
16148                 memcpy(b, abc, len);
16149                 for (off = 1; off <= len; off++) {
16150                         memcpy(b+off, b, len);
16151                         memcpy(b, b+off, len);
16152                         if (memcmp(b, abc, len))
16153                                 exit(1);
16154                 }
16155         }
16156 }
16157 exit(0);
16158 }
16159 EOCP
16160                 set try
16161                 if eval $compile_ok; then
16162                         if $run ./try 2>/dev/null; then
16163                                 echo "Yes, it can."
16164                                 val="$define"
16165                         else
16166                                 echo "It can't, sorry."
16167                         fi
16168                 else
16169                         echo "(I can't compile the test program, so we'll assume not...)"
16170                 fi
16171                 ;;
16172         esac
16173         $rm_try
16174         ;;
16175 esac
16176 set d_safemcpy
16177 eval $setvar
16178
16179 : can memcmp be trusted to compare relative magnitude?
16180 val="$undef"
16181 case "$d_memcmp" in
16182 "$define")
16183         echo " "
16184         echo "Checking if your memcmp() can compare relative magnitude..." >&4
16185         $cat >try.c <<EOCP
16186 #$i_memory I_MEMORY
16187 #$i_stdlib I_STDLIB
16188 #$i_string I_STRING
16189 #$i_unistd I_UNISTD
16190 EOCP
16191         $cat >>try.c <<'EOCP'
16192 #include <stdio.h>
16193 #ifdef I_MEMORY
16194 #  include <memory.h>
16195 #endif
16196 #ifdef I_STDLIB
16197 #  include <stdlib.h>
16198 #endif
16199 #ifdef I_STRING
16200 #  include <string.h>
16201 #else
16202 #  include <strings.h>
16203 #endif
16204 #ifdef I_UNISTD
16205 #  include <unistd.h>  /* Needed for NetBSD */
16206 #endif
16207 int main()
16208 {
16209 char a = -1;
16210 char b = 0;
16211 if ((a < b) && memcmp(&a, &b, 1) < 0)
16212         exit(1);
16213 exit(0);
16214 }
16215 EOCP
16216         set try
16217         if eval $compile_ok; then
16218                 if $run ./try 2>/dev/null; then
16219                         echo "Yes, it can."
16220                         val="$define"
16221                 else
16222                         echo "No, it can't (it uses signed chars)."
16223                 fi
16224         else
16225                 echo "(I can't compile the test program, so we'll assume not...)"
16226         fi
16227         ;;
16228 esac
16229 $rm_try
16230 set d_sanemcmp
16231 eval $setvar
16232
16233 : see if prototype for sbrk is available
16234 echo " "
16235 set d_sbrkproto sbrk $i_unistd unistd.h
16236 eval $hasproto
16237
16238 : see if select exists
16239 set select d_select
16240 eval $inlibc
16241
16242 : see if semctl exists
16243 set semctl d_semctl
16244 eval $inlibc
16245
16246 : see if semget exists
16247 set semget d_semget
16248 eval $inlibc
16249
16250 : see if semop exists
16251 set semop d_semop
16252 eval $inlibc
16253
16254 : see how much of the 'sem*(2)' library is present.
16255 h_sem=true
16256 echo " "
16257 case "$d_semctl$d_semget$d_semop" in
16258 *"$undef"*) h_sem=false;;
16259 esac
16260 case "$osname" in
16261 freebsd)
16262     case "`ipcs 2>&1`" in
16263     "SVID messages"*"not configured"*)
16264         echo "Your $osname does not have the sem*(2) configured." >&4
16265         h_sem=false
16266         val="$undef"
16267         set semctl d_semctl
16268         eval $setvar
16269         set semget d_semget
16270         eval $setvar
16271         set semop d_semop
16272         eval $setvar
16273         ;;
16274     esac
16275     ;;
16276 esac
16277 : we could also check for sys/ipc.h ...
16278 if $h_sem && $test `./findhdr sys/sem.h`; then
16279         echo "You have the full sem*(2) library." >&4
16280         val="$define"
16281 else
16282         echo "You don't have the full sem*(2) library." >&4
16283         val="$undef"
16284 fi
16285 set d_sem
16286 eval $setvar
16287
16288 : see whether sys/sem.h defines union semun
16289 echo " "
16290 $cat > try.c <<'END'
16291 #include <sys/types.h>
16292 #include <sys/ipc.h>
16293 #include <sys/sem.h>
16294 int main () { union semun semun; semun.buf = 0; }
16295 END
16296 set try
16297 if eval $compile; then
16298     echo "You have union semun in <sys/sem.h>." >&4
16299     val="$define"
16300 else
16301     echo "You do not have union semun in <sys/sem.h>." >&4
16302     val="$undef"
16303 fi
16304 $rm_try
16305 set d_union_semun
16306 eval $setvar
16307
16308 : see how to do semctl IPC_STAT
16309 case "$d_sem" in
16310 $define)
16311     echo " "
16312     $cat > tryh.h <<END
16313 #ifndef S_IRUSR
16314 #   ifdef S_IREAD
16315 #       define S_IRUSR S_IREAD
16316 #       define S_IWUSR S_IWRITE
16317 #       define S_IXUSR S_IEXEC
16318 #   else
16319 #       define S_IRUSR 0400
16320 #       define S_IWUSR 0200
16321 #       define S_IXUSR 0100
16322 #   endif
16323 #   define S_IRGRP (S_IRUSR>>3)
16324 #   define S_IWGRP (S_IWUSR>>3)
16325 #   define S_IXGRP (S_IXUSR>>3)
16326 #   define S_IROTH (S_IRUSR>>6)
16327 #   define S_IWOTH (S_IWUSR>>6)
16328 #   define S_IXOTH (S_IXUSR>>6)
16329 #endif
16330 #ifndef S_IRWXU
16331 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
16332 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
16333 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
16334 #endif
16335 END
16336     : see whether semctl IPC_STAT can use union semun
16337     case "$d_semctl_semun" in
16338     '')
16339       val="$undef"
16340       $cat > try.c <<END
16341 #include <sys/types.h>
16342 #include <sys/ipc.h>
16343 #include <sys/sem.h>
16344 #include <sys/stat.h>
16345 #include <stdio.h>
16346 #include <errno.h>
16347 #include "tryh.h"
16348 #ifndef errno
16349 extern int errno;
16350 #endif
16351 #$d_union_semun HAS_UNION_SEMUN
16352 int main() {
16353     union semun
16354 #ifndef HAS_UNION_SEMUN
16355     {
16356         int val;
16357         struct semid_ds *buf;
16358         unsigned short *array;
16359     }
16360 #endif
16361     arg;
16362     int sem, st;
16363
16364 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
16365     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16366     if (sem > -1) {
16367         struct semid_ds argbuf;
16368         arg.buf = &argbuf;
16369 #       ifdef IPC_STAT
16370         st = semctl(sem, 0, IPC_STAT, arg);
16371         if (st == 0)
16372             printf("semun\n");
16373         else
16374 #       endif /* IPC_STAT */
16375             printf("semctl IPC_STAT failed: errno = %d\n", errno);
16376 #       ifdef IPC_RMID
16377         if (semctl(sem, 0, IPC_RMID, arg) != 0)
16378 #       endif /* IPC_RMID */
16379             printf("semctl IPC_RMID failed: errno = %d\n", errno);
16380     } else
16381 #endif /* IPC_PRIVATE && ... */
16382         printf("semget failed: errno = %d\n", errno);
16383   return 0;
16384 }
16385 END
16386       set try
16387       if eval $compile; then
16388           xxx=`$run ./try`
16389           case "$xxx" in
16390           semun) val="$define" ;;
16391           esac
16392       fi
16393       $rm_try
16394       set d_semctl_semun
16395       eval $setvar
16396       ;;
16397     esac
16398     case "$d_semctl_semun" in
16399     $define)
16400         echo "You can use union semun for semctl IPC_STAT." >&4
16401         also='also'
16402         ;;
16403     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
16404         also=''
16405         ;;
16406     esac
16407
16408     : see whether semctl IPC_STAT can use struct semid_ds pointer
16409     case "$d_semctl_semid_ds" in
16410     '')
16411       val="$undef"
16412       $cat > try.c <<'END'
16413 #include <sys/types.h>
16414 #include <sys/ipc.h>
16415 #include <sys/sem.h>
16416 #include <sys/stat.h>
16417 #include "tryh.h"
16418 #include <stdio.h>
16419 #include <errno.h>
16420 #ifndef errno
16421 extern int errno;
16422 #endif
16423 int main() {
16424     struct semid_ds arg;
16425     int sem, st;
16426
16427 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
16428     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16429     if (sem > -1) {
16430 #       ifdef IPC_STAT
16431         st = semctl(sem, 0, IPC_STAT, &arg);
16432         if (st == 0)
16433             printf("semid_ds\n");
16434         else
16435 #       endif /* IPC_STAT */
16436             printf("semctl IPC_STAT failed: errno = %d\n", errno);
16437 #       ifdef IPC_RMID
16438         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
16439 #       endif /* IPC_RMID */
16440             printf("semctl IPC_RMID failed: errno = %d\n", errno);
16441     } else
16442 #endif /* IPC_PRIVATE && ... */
16443         printf("semget failed: errno = %d\n", errno);
16444
16445     return 0;
16446 }
16447 END
16448       set try
16449       if eval $compile; then
16450           xxx=`$run ./try`
16451           case "$xxx" in
16452           semid_ds) val="$define" ;;
16453           esac
16454       fi
16455       $rm_try
16456       set d_semctl_semid_ds
16457       eval $setvar
16458       ;;
16459     esac
16460     case "$d_semctl_semid_ds" in
16461     $define)
16462         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
16463         ;;
16464     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
16465         ;;
16466     esac
16467     ;;
16468 *)  val="$undef"
16469
16470     # We do not have the full sem*(2) library, so assume we can not
16471     # use either.
16472
16473     set d_semctl_semun
16474     eval $setvar
16475
16476     set d_semctl_semid_ds
16477     eval $setvar
16478     ;;
16479 esac
16480 $rm_try tryh.h
16481
16482 : see if sendmsg exists
16483 set sendmsg d_sendmsg
16484 eval $inlibc
16485
16486 : see if setegid exists
16487 set setegid d_setegid
16488 eval $inlibc
16489
16490 : see if seteuid exists
16491 set seteuid d_seteuid
16492 eval $inlibc
16493
16494 : see if setgrent exists
16495 set setgrent d_setgrent
16496 eval $inlibc
16497
16498 : see if setgrent_r exists
16499 set setgrent_r d_setgrent_r
16500 eval $inlibc
16501 case "$d_setgrent_r" in
16502 "$define")
16503         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
16504         case "$d_setgrent_r_proto:$usethreads" in
16505         ":define")      d_setgrent_r_proto=define
16506                 set d_setgrent_r_proto setgrent_r $hdrs
16507                 eval $hasproto ;;
16508         *)      ;;
16509         esac
16510         case "$d_setgrent_r_proto" in
16511         define)
16512         case "$setgrent_r_proto" in
16513         ''|0) try='int setgrent_r(FILE**);'
16514         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
16515         esac
16516         case "$setgrent_r_proto" in
16517         ''|0) try='void setgrent_r(FILE**);'
16518         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
16519         esac
16520         case "$setgrent_r_proto" in
16521         ''|0)   d_setgrent_r=undef
16522                 setgrent_r_proto=0
16523                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
16524         * )     case "$setgrent_r_proto" in
16525                 REENTRANT_PROTO*) ;;
16526                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
16527                 esac
16528                 echo "Prototype: $try" ;;
16529         esac
16530         ;;
16531         *)      case "$usethreads" in
16532                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
16533                 esac
16534                 d_setgrent_r=undef
16535                 setgrent_r_proto=0
16536                 ;;
16537         esac
16538         ;;
16539 *)      setgrent_r_proto=0
16540         ;;
16541 esac
16542
16543 : see if sethostent exists
16544 set sethostent d_sethent
16545 eval $inlibc
16546
16547 : see if sethostent_r exists
16548 set sethostent_r d_sethostent_r
16549 eval $inlibc
16550 case "$d_sethostent_r" in
16551 "$define")
16552         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16553         case "$d_sethostent_r_proto:$usethreads" in
16554         ":define")      d_sethostent_r_proto=define
16555                 set d_sethostent_r_proto sethostent_r $hdrs
16556                 eval $hasproto ;;
16557         *)      ;;
16558         esac
16559         case "$d_sethostent_r_proto" in
16560         define)
16561         case "$sethostent_r_proto" in
16562         ''|0) try='int sethostent_r(int, struct hostent_data*);'
16563         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
16564         esac
16565         case "$sethostent_r_proto" in
16566         ''|0) try='void sethostent_r(int, struct hostent_data*);'
16567         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
16568         esac
16569         case "$sethostent_r_proto" in
16570         ''|0)   d_sethostent_r=undef
16571                 sethostent_r_proto=0
16572                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
16573         * )     case "$sethostent_r_proto" in
16574                 REENTRANT_PROTO*) ;;
16575                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
16576                 esac
16577                 echo "Prototype: $try" ;;
16578         esac
16579         ;;
16580         *)      case "$usethreads" in
16581                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
16582                 esac
16583                 d_sethostent_r=undef
16584                 sethostent_r_proto=0
16585                 ;;
16586         esac
16587         ;;
16588 *)      sethostent_r_proto=0
16589         ;;
16590 esac
16591
16592 : see if setitimer exists
16593 set setitimer d_setitimer
16594 eval $inlibc
16595
16596 : see if setlinebuf exists
16597 set setlinebuf d_setlinebuf
16598 eval $inlibc
16599
16600 : see if setlocale exists
16601 set setlocale d_setlocale
16602 eval $inlibc
16603
16604 : see if locale.h is available
16605 set locale.h i_locale
16606 eval $inhdr
16607
16608 : see if setlocale_r exists
16609 set setlocale_r d_setlocale_r
16610 eval $inlibc
16611 case "$d_setlocale_r" in
16612 "$define")
16613         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
16614         case "$d_setlocale_r_proto:$usethreads" in
16615         ":define")      d_setlocale_r_proto=define
16616                 set d_setlocale_r_proto setlocale_r $hdrs
16617                 eval $hasproto ;;
16618         *)      ;;
16619         esac
16620         case "$d_setlocale_r_proto" in
16621         define)
16622         case "$setlocale_r_proto" in
16623         ''|0) try='int setlocale_r(int, const char*, char*, int);'
16624         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
16625         esac
16626         case "$setlocale_r_proto" in
16627         ''|0)   d_setlocale_r=undef
16628                 setlocale_r_proto=0
16629                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
16630         * )     case "$setlocale_r_proto" in
16631                 REENTRANT_PROTO*) ;;
16632                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
16633                 esac
16634                 echo "Prototype: $try" ;;
16635         esac
16636         ;;
16637         *)      case "$usethreads" in
16638                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
16639                 esac
16640                 d_setlocale_r=undef
16641                 setlocale_r_proto=0
16642                 ;;
16643         esac
16644         ;;
16645 *)      setlocale_r_proto=0
16646         ;;
16647 esac
16648
16649 : see if setnetent exists
16650 set setnetent d_setnent
16651 eval $inlibc
16652
16653 : see if setnetent_r exists
16654 set setnetent_r d_setnetent_r
16655 eval $inlibc
16656 case "$d_setnetent_r" in
16657 "$define")
16658         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16659         case "$d_setnetent_r_proto:$usethreads" in
16660         ":define")      d_setnetent_r_proto=define
16661                 set d_setnetent_r_proto setnetent_r $hdrs
16662                 eval $hasproto ;;
16663         *)      ;;
16664         esac
16665         case "$d_setnetent_r_proto" in
16666         define)
16667         case "$setnetent_r_proto" in
16668         ''|0) try='int setnetent_r(int, struct netent_data*);'
16669         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
16670         esac
16671         case "$setnetent_r_proto" in
16672         ''|0) try='void setnetent_r(int, struct netent_data*);'
16673         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
16674         esac
16675         case "$setnetent_r_proto" in
16676         ''|0)   d_setnetent_r=undef
16677                 setnetent_r_proto=0
16678                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
16679         * )     case "$setnetent_r_proto" in
16680                 REENTRANT_PROTO*) ;;
16681                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
16682                 esac
16683                 echo "Prototype: $try" ;;
16684         esac
16685         ;;
16686         *)      case "$usethreads" in
16687                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
16688                 esac
16689                 d_setnetent_r=undef
16690                 setnetent_r_proto=0
16691                 ;;
16692         esac
16693         ;;
16694 *)      setnetent_r_proto=0
16695         ;;
16696 esac
16697
16698 : see if setprotoent exists
16699 set setprotoent d_setpent
16700 eval $inlibc
16701
16702 : see if setpgid exists
16703 set setpgid d_setpgid
16704 eval $inlibc
16705
16706 : see if setpgrp2 exists
16707 set setpgrp2 d_setpgrp2
16708 eval $inlibc
16709
16710 : see if setpriority exists
16711 set setpriority d_setprior
16712 eval $inlibc
16713
16714 : see if setproctitle exists
16715 set setproctitle d_setproctitle
16716 eval $inlibc
16717
16718 : see if setprotoent_r exists
16719 set setprotoent_r d_setprotoent_r
16720 eval $inlibc
16721 case "$d_setprotoent_r" in
16722 "$define")
16723         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16724         case "$d_setprotoent_r_proto:$usethreads" in
16725         ":define")      d_setprotoent_r_proto=define
16726                 set d_setprotoent_r_proto setprotoent_r $hdrs
16727                 eval $hasproto ;;
16728         *)      ;;
16729         esac
16730         case "$d_setprotoent_r_proto" in
16731         define)
16732         case "$setprotoent_r_proto" in
16733         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
16734         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
16735         esac
16736         case "$setprotoent_r_proto" in
16737         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
16738         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
16739         esac
16740         case "$setprotoent_r_proto" in
16741         ''|0)   d_setprotoent_r=undef
16742                 setprotoent_r_proto=0
16743                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
16744         * )     case "$setprotoent_r_proto" in
16745                 REENTRANT_PROTO*) ;;
16746                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
16747                 esac
16748                 echo "Prototype: $try" ;;
16749         esac
16750         ;;
16751         *)      case "$usethreads" in
16752                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
16753                 esac
16754                 d_setprotoent_r=undef
16755                 setprotoent_r_proto=0
16756                 ;;
16757         esac
16758         ;;
16759 *)      setprotoent_r_proto=0
16760         ;;
16761 esac
16762
16763 : see if setpwent exists
16764 set setpwent d_setpwent
16765 eval $inlibc
16766
16767 : see if setpwent_r exists
16768 set setpwent_r d_setpwent_r
16769 eval $inlibc
16770 case "$d_setpwent_r" in
16771 "$define")
16772         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
16773         case "$d_setpwent_r_proto:$usethreads" in
16774         ":define")      d_setpwent_r_proto=define
16775                 set d_setpwent_r_proto setpwent_r $hdrs
16776                 eval $hasproto ;;
16777         *)      ;;
16778         esac
16779         case "$d_setpwent_r_proto" in
16780         define)
16781         case "$setpwent_r_proto" in
16782         ''|0) try='int setpwent_r(FILE**);'
16783         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
16784         esac
16785         case "$setpwent_r_proto" in
16786         ''|0) try='void setpwent_r(FILE**);'
16787         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
16788         esac
16789         case "$setpwent_r_proto" in
16790         ''|0)   d_setpwent_r=undef
16791                 setpwent_r_proto=0
16792                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
16793         * )     case "$setpwent_r_proto" in
16794                 REENTRANT_PROTO*) ;;
16795                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
16796                 esac
16797                 echo "Prototype: $try" ;;
16798         esac
16799         ;;
16800         *)      case "$usethreads" in
16801                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
16802                 esac
16803                 d_setpwent_r=undef
16804                 setpwent_r_proto=0
16805                 ;;
16806         esac
16807         ;;
16808 *)      setpwent_r_proto=0
16809         ;;
16810 esac
16811
16812 : see if setregid exists
16813 set setregid d_setregid
16814 eval $inlibc
16815 set setresgid d_setresgid
16816 eval $inlibc
16817
16818 : see if setreuid exists
16819 set setreuid d_setreuid
16820 eval $inlibc
16821 set setresuid d_setresuid
16822 eval $inlibc
16823
16824 : see if setrgid exists
16825 set setrgid d_setrgid
16826 eval $inlibc
16827
16828 : see if setruid exists
16829 set setruid d_setruid
16830 eval $inlibc
16831
16832 : see if setservent exists
16833 set setservent d_setsent
16834 eval $inlibc
16835
16836 : see if setservent_r exists
16837 set setservent_r d_setservent_r
16838 eval $inlibc
16839 case "$d_setservent_r" in
16840 "$define")
16841         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16842         case "$d_setservent_r_proto:$usethreads" in
16843         ":define")      d_setservent_r_proto=define
16844                 set d_setservent_r_proto setservent_r $hdrs
16845                 eval $hasproto ;;
16846         *)      ;;
16847         esac
16848         case "$d_setservent_r_proto" in
16849         define)
16850         case "$setservent_r_proto" in
16851         ''|0) try='int setservent_r(int, struct servent_data*);'
16852         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
16853         esac
16854         case "$setservent_r_proto" in
16855         ''|0) try='void setservent_r(int, struct servent_data*);'
16856         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
16857         esac
16858         case "$setservent_r_proto" in
16859         ''|0)   d_setservent_r=undef
16860                 setservent_r_proto=0
16861                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
16862         * )     case "$setservent_r_proto" in
16863                 REENTRANT_PROTO*) ;;
16864                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
16865                 esac
16866                 echo "Prototype: $try" ;;
16867         esac
16868         ;;
16869         *)      case "$usethreads" in
16870                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
16871                 esac
16872                 d_setservent_r=undef
16873                 setservent_r_proto=0
16874                 ;;
16875         esac
16876         ;;
16877 *)      setservent_r_proto=0
16878         ;;
16879 esac
16880
16881 : see if setsid exists
16882 set setsid d_setsid
16883 eval $inlibc
16884
16885 : see if setvbuf exists
16886 set setvbuf d_setvbuf
16887 eval $inlibc
16888
16889 : see if sfio.h is available
16890 set sfio.h i_sfio
16891 eval $inhdr
16892
16893
16894 : see if sfio library is available
16895 case "$i_sfio" in
16896 $define)
16897         val=''
16898         set sfreserve val
16899         eval $inlibc
16900         ;;
16901 *)
16902         val="$undef"
16903         ;;
16904 esac
16905 : Ok, but do we want to use it.
16906 case "$val" in
16907 $define)
16908         case "$usesfio" in
16909         true|$define|[yY]*) dflt='y';;
16910         *) dflt='n';;
16911         esac
16912         echo "$package can use the sfio library, but it is experimental."
16913         case "$useperlio" in
16914         "$undef")
16915             echo "For sfio also the PerlIO abstraction layer is needed."
16916             echo "Earlier you said you wouldn't want that."
16917             ;;
16918         esac
16919         rp="You seem to have sfio available, do you want to try using it?"
16920         . ./myread
16921         case "$ans" in
16922         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
16923                 useperlio="$define"
16924                 val="$define"
16925                 ;;
16926         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
16927                 val="$undef"
16928                 ;;
16929         esac
16930         ;;
16931 *)      case "$usesfio" in
16932         true|$define|[yY]*)
16933                 echo "Sorry, cannot find sfio on this machine." >&4
16934                 echo "Ignoring your setting of usesfio=$usesfio." >&4
16935                 val="$undef"
16936                 ;;
16937         esac
16938         ;;
16939 esac
16940 set d_sfio
16941 eval $setvar
16942 case "$d_sfio" in
16943 $define) usesfio='true';;
16944 *) usesfio='false';;
16945 esac
16946 case "$d_sfio" in
16947 $define) ;;
16948 *)      : Remove sfio from list of libraries to use
16949         case "$libs" in
16950         *-lsfio*)
16951                 echo "Removing unneeded -lsfio from library list" >&4
16952                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
16953                 shift
16954                 libs="$*"
16955                 echo "libs = $libs" >&4
16956                 ;;
16957         esac
16958 ;;
16959 esac
16960
16961
16962 : see if shmctl exists
16963 set shmctl d_shmctl
16964 eval $inlibc
16965
16966 : see if shmget exists
16967 set shmget d_shmget
16968 eval $inlibc
16969
16970 : see if shmat exists
16971 set shmat d_shmat
16972 eval $inlibc
16973 : see what shmat returns
16974 case "$d_shmat" in
16975 "$define")
16976         $cat >shmat.c <<'END'
16977 #include <sys/shm.h>
16978 void *shmat();
16979 END
16980         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
16981                 shmattype='void *'
16982         else
16983                 shmattype='char *'
16984         fi
16985         echo "and it returns ($shmattype)." >&4
16986         : see if a prototype for shmat is available
16987         xxx=`./findhdr sys/shm.h`
16988         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
16989         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
16990                 val="$define"
16991         else
16992                 val="$undef"
16993         fi
16994         $rm -f shmat.[co]
16995         ;;
16996 *)
16997         val="$undef"
16998         ;;
16999 esac
17000 set d_shmatprototype
17001 eval $setvar
17002
17003 : see if shmdt exists
17004 set shmdt d_shmdt
17005 eval $inlibc
17006
17007 : see how much of the 'shm*(2)' library is present.
17008 h_shm=true
17009 echo " "
17010 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
17011 *"$undef"*) h_shm=false;;
17012 esac
17013 case "$osname" in
17014 freebsd)
17015     case "`ipcs 2>&1`" in
17016     "SVID shared memory"*"not configured"*)
17017         echo "Your $osname does not have the shm*(2) configured." >&4
17018         h_shm=false
17019         val="$undef"
17020         set shmctl d_shmctl
17021         evat $setvar
17022         set shmget d_shmget
17023         evat $setvar
17024         set shmat d_shmat
17025         evat $setvar
17026         set shmdt d_shmdt
17027         evat $setvar
17028         ;;
17029     esac
17030     ;;
17031 esac
17032 : we could also check for sys/ipc.h ...
17033 if $h_shm && $test `./findhdr sys/shm.h`; then
17034         echo "You have the full shm*(2) library." >&4
17035         val="$define"
17036 else
17037         echo "You don't have the full shm*(2) library." >&4
17038         val="$undef"
17039 fi
17040 set d_shm
17041 eval $setvar
17042
17043 : see if we have sigaction
17044 echo " "
17045 if set sigaction val -f d_sigaction; eval $csym; $val; then
17046         echo 'sigaction() found.' >&4
17047         $cat > try.c <<EOP
17048 #include <stdio.h>
17049 #include <sys/types.h>
17050 #include <signal.h>
17051 #$i_stdlib I_STDLIB
17052 #ifdef I_STDLIB
17053 #include <stdlib.h>
17054 #endif
17055 int main()
17056 {
17057     struct sigaction act, oact;
17058     act.sa_flags = 0;
17059     oact.sa_handler = 0;
17060     /* so that act and oact are used */
17061     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
17062 }
17063 EOP
17064         set try
17065         if eval $compile_ok; then
17066                 val="$define"
17067         else
17068                 echo "But you don't seem to have a useable struct sigaction." >&4
17069                 val="$undef"
17070         fi
17071 else
17072         echo 'sigaction NOT found.' >&4
17073         val="$undef"
17074 fi
17075 set d_sigaction; eval $setvar
17076 $rm_try
17077
17078 : see if this is a sunmath.h system
17079 set sunmath.h i_sunmath
17080 eval $inhdr
17081
17082 : see if signbit exists
17083 $echo $n "Checking to see if you have signbit() available to work on $nvtype... $c" >&4
17084 $cat >try.c <<EOCP
17085 #$i_math I_MATH
17086 #$i_sunmath I_SUNMATH
17087 #ifdef I_MATH
17088 #  include <math.h>
17089 #endif
17090 #ifdef I_SUNMATH  /* Solaris special math library */
17091 #  include <sunmath.h>
17092 #endif
17093 #define NV $nvtype
17094 int main(int argc, char **argv)
17095 {
17096     NV x = 0.0;
17097     NV y = -0.0;
17098     if ((signbit(x) == 0) && (signbit(y) != 0))
17099         return 0;
17100     else
17101         return 1;
17102 }
17103 EOCP
17104 val="$undef"
17105 set try
17106 if eval $compile; then
17107     if $run ./try; then
17108         $echo "Yes." >&4
17109         val="$define"
17110     else
17111         $echo "Signbit seems to be available, but doesn't work as I expected."
17112         $echo "I won't use it." >&4
17113         val="$undef"
17114     fi
17115 else
17116     $echo "Nope." >&4
17117     dflt="$undef"
17118 fi
17119 set d_signbit
17120 eval $setvar
17121 $rm_try
17122
17123 : see if sigprocmask exists
17124 set sigprocmask d_sigprocmask
17125 eval $inlibc
17126
17127 : see if sigsetjmp exists
17128 echo " "
17129 case "$d_sigsetjmp" in
17130 '')
17131         $cat >try.c <<EOP
17132 #include <setjmp.h>
17133 #$i_stdlib I_STDLIB
17134 #ifdef I_STDLIB
17135 #include <stdlib.h>
17136 #endif
17137 sigjmp_buf env;
17138 int set = 1;
17139 int main()
17140 {
17141         if (sigsetjmp(env,1))
17142                 exit(set);
17143         set = 0;
17144         siglongjmp(env, 1);
17145         exit(1);
17146 }
17147 EOP
17148         set try
17149         if eval $compile; then
17150                 if $run ./try >/dev/null 2>&1; then
17151                         echo "POSIX sigsetjmp found." >&4
17152                         val="$define"
17153                 else
17154                         $cat >&4 <<EOM
17155 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
17156 I'll ignore them.
17157 EOM
17158                         val="$undef"
17159                 fi
17160         else
17161                 echo "sigsetjmp not found." >&4
17162                 val="$undef"
17163         fi
17164         ;;
17165 *) val="$d_sigsetjmp"
17166         case "$d_sigsetjmp" in
17167         $define) echo "POSIX sigsetjmp found." >&4;;
17168         $undef) echo "sigsetjmp not found." >&4;;
17169         esac
17170         ;;
17171 esac
17172 set d_sigsetjmp
17173 eval $setvar
17174 $rm_try
17175
17176 : see if snprintf exists
17177 set snprintf d_snprintf
17178 eval $inlibc
17179
17180 : see if vsnprintf exists
17181 set vsnprintf d_vsnprintf
17182 eval $inlibc
17183
17184 case "$d_snprintf-$d_vsnprintf" in
17185 "$define-$define")
17186     $cat <<EOM
17187 Checking whether your snprintf() and vsnprintf() work okay...
17188 EOM
17189     $cat >try.c <<'EOCP'
17190 /* v?snprintf testing logic courtesy of Russ Allbery.
17191  * According to C99:
17192  * - if the buffer is too short it still must be \0-terminated
17193  * - if the buffer is too short the potentially required length
17194  *   must be returned and not -1
17195  * - if the buffer is NULL the potentially required length
17196  *   must be returned and not -1 or core dump
17197  */
17198 #include <stdio.h>
17199 #include <stdarg.h>
17200
17201 char buf[2];
17202
17203 int test (char *format, ...)
17204 {
17205     va_list args;
17206     int count;
17207
17208     va_start (args, format);
17209     count = vsnprintf (buf, sizeof buf, format, args);
17210     va_end (args);
17211     return count;
17212 }
17213
17214 int main ()
17215 {
17216     return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0'
17217              && snprintf (NULL, 0, "%s", "abcd") == 4) ? 0 : 1);
17218 }
17219 EOCP
17220     set try
17221     if eval $compile; then
17222         `$run ./try`
17223         case "$?" in
17224         0) echo "Your snprintf() and vsnprintf() seem to be working okay." ;;
17225         *) cat <<EOM >&4
17226 Your snprintf() and snprintf() don't seem to be working okay.
17227 EOM
17228            d_snprintf="$undef"
17229            d_vsnprintf="$undef"
17230            ;;
17231         esac
17232     else
17233         echo "(I can't seem to compile the test program--assuming they don't)"
17234         d_snprintf="$undef"
17235         d_vsnprintf="$undef"
17236     fi
17237     $rm_try
17238     ;;
17239 esac
17240
17241 : see if sockatmark exists
17242 set sockatmark d_sockatmark
17243 eval $inlibc
17244
17245 : see if prototype for sockatmark is available
17246 echo " "
17247 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
17248 eval $hasproto
17249
17250 : see if socks5_init exists
17251 set socks5_init d_socks5_init
17252 eval $inlibc
17253
17254 : see if sprintf returns the length of the string in the buffer as per ANSI
17255 $echo "Checking whether sprintf returns the length of the string..." >&4
17256 $cat <<EOP >try.c
17257 #include <stdio.h>
17258 #$i_stdlib I_STDLIB
17259 #ifdef I_STDLIB
17260 #include <stdlib.h>
17261 #endif
17262 #$i_string I_STRING
17263 #ifdef I_STRING
17264 #  include <string.h>
17265 #else
17266 #  include <strings.h>
17267 #endif
17268 #$i_math I_MATH
17269 #ifdef I_MATH
17270 #include <math.h>
17271 #endif
17272
17273 char buffer[256];
17274
17275 int check (size_t expect, int test) {
17276   size_t got = strlen(buffer);
17277   if (expect == got)
17278     return 0;
17279
17280   printf("expected %ld, got %ld in test %d '%s'\n", (long) expect, (long) got,
17281        test, buffer);
17282   exit (test);
17283 }
17284
17285 int main(int argc, char **argv) {
17286   int test = 0;
17287
17288   check(sprintf(buffer, ""), ++test);
17289   check(sprintf(buffer, "%s %s", "perl", "rules"), ++test);
17290   check(sprintf(buffer, "I like %g", atan2(0,-1)), ++test);
17291
17292   return 0;
17293 }
17294 EOP
17295 set try
17296
17297 d_sprintf_returns_strlen="$undef"
17298 if eval $compile; then
17299     xxx="`$run ./try`"
17300     case "$?" in
17301         0) cat >&4 <<EOM
17302 sprintf returns the length of the string (as ANSI says it should)
17303 EOM
17304         d_sprintf_returns_strlen="$define"
17305         ;;
17306         *) cat >&4 <<EOM
17307 sprintf does not return the length of the string (how old is this system?)
17308 EOM
17309         d_sprintf_returns_strlen="$undef"
17310         ;;
17311     esac
17312 fi
17313 $rm_try
17314
17315 : see if srand48_r exists
17316 set srand48_r d_srand48_r
17317 eval $inlibc
17318 case "$d_srand48_r" in
17319 "$define")
17320         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17321         case "$d_srand48_r_proto:$usethreads" in
17322         ":define")      d_srand48_r_proto=define
17323                 set d_srand48_r_proto srand48_r $hdrs
17324                 eval $hasproto ;;
17325         *)      ;;
17326         esac
17327         case "$d_srand48_r_proto" in
17328         define)
17329         case "$srand48_r_proto" in
17330         ''|0) try='int srand48_r(long, struct drand48_data*);'
17331         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
17332         esac
17333         case "$srand48_r_proto" in
17334         ''|0)   d_srand48_r=undef
17335                 srand48_r_proto=0
17336                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
17337         * )     case "$srand48_r_proto" in
17338                 REENTRANT_PROTO*) ;;
17339                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
17340                 esac
17341                 echo "Prototype: $try" ;;
17342         esac
17343         ;;
17344         *)      case "$usethreads" in
17345                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
17346                 esac
17347                 d_srand48_r=undef
17348                 srand48_r_proto=0
17349                 ;;
17350         esac
17351         ;;
17352 *)      srand48_r_proto=0
17353         ;;
17354 esac
17355
17356 : see if srandom_r exists
17357 set srandom_r d_srandom_r
17358 eval $inlibc
17359 case "$d_srandom_r" in
17360 "$define")
17361         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17362         case "$d_srandom_r_proto:$usethreads" in
17363         ":define")      d_srandom_r_proto=define
17364                 set d_srandom_r_proto srandom_r $hdrs
17365                 eval $hasproto ;;
17366         *)      ;;
17367         esac
17368         case "$d_srandom_r_proto" in
17369         define)
17370         case "$srandom_r_proto" in
17371         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
17372         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
17373         esac
17374         case "$srandom_r_proto" in
17375         ''|0)   d_srandom_r=undef
17376                 srandom_r_proto=0
17377                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
17378         * )     case "$srandom_r_proto" in
17379                 REENTRANT_PROTO*) ;;
17380                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
17381                 esac
17382                 echo "Prototype: $try" ;;
17383         esac
17384         ;;
17385         *)      case "$usethreads" in
17386                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
17387                 esac
17388                 d_srandom_r=undef
17389                 srandom_r_proto=0
17390                 ;;
17391         esac
17392         ;;
17393 *)      srandom_r_proto=0
17394         ;;
17395 esac
17396
17397 : see if prototype for setresgid is available
17398 echo " "
17399 set d_sresgproto setresgid $i_unistd unistd.h
17400 eval $hasproto
17401
17402 : see if prototype for setresuid is available
17403 echo " "
17404 set d_sresuproto setresuid $i_unistd unistd.h
17405 eval $hasproto
17406
17407 : see if sys/stat.h is available
17408 set sys/stat.h i_sysstat
17409 eval $inhdr
17410
17411
17412 : see if stat knows about block sizes
17413 echo " "
17414 echo "Checking to see if your struct stat has st_blocks field..." >&4
17415 set d_statblks stat st_blocks $i_sysstat sys/stat.h
17416 eval $hasfield
17417
17418
17419 : see if this is a sys/vfs.h system
17420 set sys/vfs.h i_sysvfs
17421 eval $inhdr
17422
17423
17424 : see if this is a sys/statfs.h system
17425 set sys/statfs.h i_sysstatfs
17426 eval $inhdr
17427
17428
17429 echo " "
17430 echo "Checking to see if your system supports struct statfs..." >&4
17431 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
17432 eval $hasstruct
17433 case "$d_statfs_s" in
17434 "$define")      echo "Yes, it does."   ;;
17435 *)              echo "No, it doesn't." ;;
17436 esac
17437
17438
17439
17440 : see if struct statfs knows about f_flags
17441 case "$d_statfs_s" in
17442 define) 
17443         echo " "
17444         echo "Checking to see if your struct statfs has f_flags field..." >&4
17445         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
17446         eval $hasfield
17447         ;;
17448 *)      val="$undef"
17449         set d_statfs_f_flags
17450         eval $setvar
17451         ;;
17452 esac
17453 case "$d_statfs_f_flags" in
17454 "$define")      echo "Yes, it does."   ;;
17455 *)              echo "No, it doesn't." ;;
17456 esac
17457
17458 : Check stream access
17459 $cat >&4 <<EOM
17460 Checking how to access stdio streams by file descriptor number...
17461 EOM
17462 case "$stdio_stream_array" in
17463 '')     $cat >try.c <<EOCP
17464 #include <stdio.h>
17465 int main() {
17466   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
17467     printf("yes\n");
17468 }
17469 EOCP
17470         for s in _iob __iob __sF
17471         do
17472                 set try -DSTDIO_STREAM_ARRAY=$s
17473                 if eval $compile; then
17474                         case "`$run ./try`" in
17475                         yes)    stdio_stream_array=$s; break ;;
17476                         esac
17477                 fi
17478         done
17479         $rm_try
17480 esac
17481 case "$stdio_stream_array" in
17482 '')     $cat >&4 <<EOM
17483 I can't figure out how to access stdio streams by file descriptor number.
17484 EOM
17485         d_stdio_stream_array="$undef"
17486         ;;
17487 *)      $cat >&4 <<EOM
17488 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
17489 EOM
17490         d_stdio_stream_array="$define"
17491         ;;
17492 esac
17493
17494 : see if strcoll exists
17495 set strcoll d_strcoll
17496 eval $inlibc
17497
17498 : check for structure copying
17499 echo " "
17500 echo "Checking to see if your C compiler can copy structs..." >&4
17501 $cat >try.c <<'EOCP'
17502 int main()
17503 {
17504         struct blurfl {
17505                 int dyick;
17506         } foo, bar;
17507
17508         foo = bar;
17509 }
17510 EOCP
17511 if $cc -c try.c >/dev/null 2>&1 ; then
17512         val="$define"
17513         echo "Yup, it can."
17514 else
17515         val="$undef"
17516         echo "Nope, it can't."
17517 fi
17518 set d_strctcpy
17519 eval $setvar
17520 $rm_try
17521
17522 : see if strerror and/or sys_errlist[] exist
17523 echo " "
17524 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
17525     if set strerror val -f d_strerror; eval $csym; $val; then
17526                 echo 'strerror() found.' >&4
17527                 d_strerror="$define"
17528                 d_strerrm='strerror(e)'
17529                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
17530                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
17531                         d_syserrlst="$define"
17532                 else
17533                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
17534                         d_syserrlst="$undef"
17535                 fi
17536     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
17537                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
17538                 echo 'strerror() found in string header.' >&4
17539                 d_strerror="$define"
17540                 d_strerrm='strerror(e)'
17541                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
17542                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
17543                                 d_syserrlst="$define"
17544                 else
17545                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
17546                         d_syserrlst="$undef"
17547                 fi
17548     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
17549                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
17550                 d_strerror="$undef"
17551                 d_syserrlst="$define"
17552                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
17553     else
17554                 echo 'strerror() and sys_errlist[] NOT found.' >&4
17555                 d_strerror="$undef"
17556                 d_syserrlst="$undef"
17557                 d_strerrm='"unknown"'
17558     fi
17559 fi
17560
17561 : see if strerror_r exists
17562 set strerror_r d_strerror_r
17563 eval $inlibc
17564 case "$d_strerror_r" in
17565 "$define")
17566         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
17567         case "$d_strerror_r_proto:$usethreads" in
17568         ":define")      d_strerror_r_proto=define
17569                 set d_strerror_r_proto strerror_r $hdrs
17570                 eval $hasproto ;;
17571         *)      ;;
17572         esac
17573         case "$d_strerror_r_proto" in
17574         define)
17575         case "$strerror_r_proto" in
17576         ''|0) try='int strerror_r(int, char*, size_t);'
17577         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
17578         esac
17579         case "$strerror_r_proto" in
17580         ''|0) try='int strerror_r(int, char*, int);'
17581         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
17582         esac
17583         case "$strerror_r_proto" in
17584         ''|0) try='char* strerror_r(int, char*, size_t);'
17585         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
17586         esac
17587         case "$strerror_r_proto" in
17588         ''|0)   d_strerror_r=undef
17589                 strerror_r_proto=0
17590                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
17591         * )     case "$strerror_r_proto" in
17592                 REENTRANT_PROTO*) ;;
17593                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
17594                 esac
17595                 echo "Prototype: $try" ;;
17596         esac
17597         ;;
17598         *)      case "$usethreads" in
17599                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
17600                 esac
17601                 d_strerror_r=undef
17602                 strerror_r_proto=0
17603                 ;;
17604         esac
17605         ;;
17606 *)      strerror_r_proto=0
17607         ;;
17608 esac
17609
17610 : see if strftime exists
17611 set strftime d_strftime
17612 eval $inlibc
17613
17614 : see if strlcat exists
17615 set strlcat d_strlcat
17616 eval $inlibc
17617
17618 : see if strlcpy exists
17619 set strlcpy d_strlcpy
17620 eval $inlibc
17621
17622 : see if strtod exists
17623 set strtod d_strtod
17624 eval $inlibc
17625
17626 : see if strtol exists
17627 set strtol d_strtol
17628 eval $inlibc
17629
17630 : see if strtold exists
17631 set strtold d_strtold
17632 eval $inlibc
17633
17634 : see if strtoll exists
17635 set strtoll d_strtoll
17636 eval $inlibc
17637
17638 case "$d_longlong-$d_strtoll" in
17639 "$define-$define")
17640         $cat <<EOM
17641 Checking whether your strtoll() works okay...
17642 EOM
17643         $cat >try.c <<'EOCP'
17644 #include <errno.h>
17645 #ifdef __hpux
17646 #define strtoll __strtoll
17647 #endif
17648 #ifdef __EMX__
17649 #define strtoll _strtoll
17650 #endif
17651 #include <stdio.h>
17652 extern long long int strtoll(char *s, char **, int);
17653 static int bad = 0;
17654 int check(char *s, long long ell, int een) {
17655         long long gll;
17656         errno = 0;
17657         gll = strtoll(s, 0, 10);
17658         if (!((gll == ell) && (errno == een)))
17659                 bad++;
17660 }
17661 int main() {
17662         check(" 1",                                      1LL, 0);
17663         check(" 0",                                      0LL, 0);
17664         check("-1",                                     -1LL, 0);
17665         check("-9223372036854775808", -9223372036854775808LL, 0);
17666         check("-9223372036854775808", -9223372036854775808LL, 0);
17667         check(" 9223372036854775807",  9223372036854775807LL, 0);
17668         check("-9223372036854775808", -9223372036854775808LL, 0);
17669         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
17670         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
17671         if (!bad)
17672                 printf("ok\n");
17673 }
17674 EOCP
17675         set try
17676         if eval $compile; then
17677                 yyy=`$run ./try`
17678                 case "$yyy" in
17679                 ok) echo "Your strtoll() seems to be working okay." ;;
17680                 *) cat <<EOM >&4
17681 Your strtoll() doesn't seem to be working okay.
17682 EOM
17683                    d_strtoll="$undef"
17684                    ;;
17685                 esac
17686         else
17687                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17688                 d_strtoll="$undef"
17689         fi
17690         ;;
17691 esac
17692
17693 : see if strtoq exists
17694 set strtoq d_strtoq
17695 eval $inlibc
17696
17697 : see if strtoul exists
17698 set strtoul d_strtoul
17699 eval $inlibc
17700
17701 case "$d_strtoul" in
17702 "$define")
17703         $cat <<EOM
17704 Checking whether your strtoul() works okay...
17705 EOM
17706         $cat >try.c <<'EOCP'
17707 #include <errno.h>
17708 #include <stdio.h>
17709 extern unsigned long int strtoul(char *s, char **, int);
17710 static int bad = 0;
17711 void check(char *s, unsigned long eul, int een) {
17712         unsigned long gul;
17713         errno = 0;
17714         gul = strtoul(s, 0, 10);
17715         if (!((gul == eul) && (errno == een)))
17716                 bad++;
17717 }
17718 int main() {
17719         check(" 1", 1L, 0);
17720         check(" 0", 0L, 0);
17721 EOCP
17722         case "$longsize" in
17723         8)
17724             $cat >>try.c <<'EOCP'
17725         check("18446744073709551615", 18446744073709551615UL, 0);
17726         check("18446744073709551616", 18446744073709551615UL, ERANGE);
17727 #if 0 /* strtoul() for /^-/ strings is undefined. */
17728         check("-1", 18446744073709551615UL, 0);
17729         check("-18446744073709551614", 2, 0);
17730         check("-18446744073709551615", 1, 0);
17731         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
17732         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
17733 #endif
17734 EOCP
17735                 ;;
17736         4)
17737                     $cat >>try.c <<'EOCP'
17738         check("4294967295", 4294967295UL, 0);
17739         check("4294967296", 4294967295UL, ERANGE);
17740 #if 0 /* strtoul() for /^-/ strings is undefined. */
17741         check("-1", 4294967295UL, 0);
17742         check("-4294967294", 2, 0);
17743         check("-4294967295", 1, 0);
17744         check("-4294967296", 4294967295UL, ERANGE);
17745         check("-4294967297", 4294967295UL, ERANGE);
17746 #endif
17747 EOCP
17748                 ;;
17749         *)
17750 : Should we write these tests to be more portable by sprintf-ing
17751 : ~0 and then manipulating that char string as input for strtol?
17752                 ;;
17753         esac
17754         $cat >>try.c <<'EOCP'
17755         if (!bad)
17756                 printf("ok\n");
17757         return 0;
17758 }
17759 EOCP
17760         set try
17761         if eval $compile; then
17762                 case "`$run ./try`" in
17763                 ok) echo "Your strtoul() seems to be working okay." ;;
17764                 *) cat <<EOM >&4
17765 Your strtoul() doesn't seem to be working okay.
17766 EOM
17767                    d_strtoul="$undef"
17768                    ;;
17769                 esac
17770         else
17771                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17772                 d_strtoul="$undef"
17773         fi
17774         ;;
17775 esac
17776
17777 : see if strtoull exists
17778 set strtoull d_strtoull
17779 eval $inlibc
17780
17781 case "$d_longlong-$d_strtoull" in
17782 "$define-$define")
17783         $cat <<EOM
17784 Checking whether your strtoull() works okay...
17785 EOM
17786         $cat >try.c <<'EOCP'
17787 #include <errno.h>
17788 #ifdef __hpux
17789 #define strtoull __strtoull
17790 #endif
17791 #include <stdio.h>
17792 extern unsigned long long int strtoull(char *s, char **, int);
17793 static int bad = 0;
17794 int check(char *s, long long eull, int een) {
17795         long long gull;
17796         errno = 0;
17797         gull = strtoull(s, 0, 10);
17798         if (!((gull == eull) && (errno == een)))
17799                 bad++;
17800 }
17801 int main() {
17802         check(" 1",                                        1LL, 0);
17803         check(" 0",                                        0LL, 0);
17804         check("18446744073709551615",  18446744073709551615ULL, 0);
17805         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
17806 #if 0 /* strtoull() for /^-/ strings is undefined. */
17807         check("-1",                    18446744073709551615ULL, 0);
17808         check("-18446744073709551614",                     2LL, 0);
17809         check("-18446744073709551615",                     1LL, 0);
17810         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17811         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17812 #endif
17813         if (!bad)
17814                 printf("ok\n");
17815 }
17816 EOCP
17817         set try
17818         if eval $compile; then
17819                 case "`$run ./try`" in
17820                 ok) echo "Your strtoull() seems to be working okay." ;;
17821                 *) cat <<EOM >&4
17822 Your strtoull() doesn't seem to be working okay.
17823 EOM
17824                    d_strtoull="$undef"
17825                    ;;
17826                 esac
17827         else
17828                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17829                 d_strtoull="$undef"
17830         fi
17831         ;;
17832 esac
17833
17834 : see if strtouq exists
17835 set strtouq d_strtouq
17836 eval $inlibc
17837
17838 case "$d_strtouq" in
17839 "$define")
17840         $cat <<EOM
17841 Checking whether your strtouq() works okay...
17842 EOM
17843         $cat >try.c <<'EOCP'
17844 #include <errno.h>
17845 #include <stdio.h>
17846 extern unsigned long long int strtouq(char *s, char **, int);
17847 static int bad = 0;
17848 void check(char *s, unsigned long long eull, int een) {
17849         unsigned long long gull;
17850         errno = 0;
17851         gull = strtouq(s, 0, 10);
17852         if (!((gull == eull) && (errno == een)))
17853                 bad++;
17854 }
17855 int main() {
17856         check(" 1",                                        1LL, 0);
17857         check(" 0",                                        0LL, 0);
17858         check("18446744073709551615",  18446744073709551615ULL, 0);
17859         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
17860 #if 0 /* strtouq() for /^-/ strings is undefined. */
17861         check("-1",                    18446744073709551615ULL, 0);
17862         check("-18446744073709551614",                     2LL, 0);
17863         check("-18446744073709551615",                     1LL, 0);
17864         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17865         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17866 #endif
17867         if (!bad)
17868                 printf("ok\n");
17869         return 0;
17870 }
17871 EOCP
17872         set try
17873         if eval $compile; then
17874                 case "`$run ./try`" in
17875                 ok) echo "Your strtouq() seems to be working okay." ;;
17876                 *) cat <<EOM >&4
17877 Your strtouq() doesn't seem to be working okay.
17878 EOM
17879                    d_strtouq="$undef"
17880                    ;;
17881                 esac
17882         else
17883                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17884                 d_strtouq="$undef"
17885         fi
17886         ;;
17887 esac
17888
17889 : see if strxfrm exists
17890 set strxfrm d_strxfrm
17891 eval $inlibc
17892
17893 : see if symlink exists
17894 set symlink d_symlink
17895 eval $inlibc
17896
17897 : see if syscall exists
17898 set syscall d_syscall
17899 eval $inlibc
17900
17901 : see if prototype for syscall is available
17902 echo " "
17903 set d_syscallproto syscall $i_unistd unistd.h
17904 eval $hasproto
17905
17906 : see if sysconf exists
17907 set sysconf d_sysconf
17908 eval $inlibc
17909
17910 : see if system exists
17911 set system d_system
17912 eval $inlibc
17913
17914 : see if tcgetpgrp exists
17915 set tcgetpgrp d_tcgetpgrp
17916 eval $inlibc
17917
17918 : see if tcsetpgrp exists
17919 set tcsetpgrp d_tcsetpgrp
17920 eval $inlibc
17921
17922 : see if prototype for telldir is available
17923 echo " "
17924 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
17925 eval $hasproto
17926
17927 : see if time exists
17928 echo " "
17929 if test "X$d_time" = X -o X"$timetype" = X; then
17930     if set time val -f d_time; eval $csym; $val; then
17931                 echo 'time() found.' >&4
17932                 val="$define"
17933                 rp="What is the type returned by time() on this system?"
17934                 set time_t timetype long stdio.h sys/types.h
17935                 eval $typedef_ask
17936     else
17937                 echo 'time() not found, hope that will do.' >&4
17938                 val="$undef"
17939                 timetype='int';
17940     fi
17941     set d_time
17942     eval $setvar
17943 fi
17944
17945 : see if this is a sys/times.h system
17946 set sys/times.h i_systimes
17947 eval $inhdr
17948
17949 : see if times exists
17950 echo " "
17951 if set times val -f d_times; eval $csym; $val; then
17952         echo 'times() found.' >&4
17953         d_times="$define"
17954         inc=''
17955         case "$i_systimes" in
17956         "$define") inc='sys/times.h';;
17957         esac
17958         rp="What is the type returned by times() on this system?"
17959         set clock_t clocktype long stdio.h sys/types.h $inc
17960         eval $typedef_ask
17961 else
17962         echo 'times() NOT found, hope that will do.' >&4
17963         d_times="$undef"
17964         clocktype='int'
17965 fi
17966
17967 : see if tmpnam_r exists
17968 set tmpnam_r d_tmpnam_r
17969 eval $inlibc
17970 case "$d_tmpnam_r" in
17971 "$define")
17972         hdrs="$i_systypes sys/types.h define stdio.h "
17973         case "$d_tmpnam_r_proto:$usethreads" in
17974         ":define")      d_tmpnam_r_proto=define
17975                 set d_tmpnam_r_proto tmpnam_r $hdrs
17976                 eval $hasproto ;;
17977         *)      ;;
17978         esac
17979         case "$d_tmpnam_r_proto" in
17980         define)
17981         case "$tmpnam_r_proto" in
17982         ''|0) try='char* tmpnam_r(char*);'
17983         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
17984         esac
17985         case "$tmpnam_r_proto" in
17986         ''|0)   d_tmpnam_r=undef
17987                 tmpnam_r_proto=0
17988                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
17989         * )     case "$tmpnam_r_proto" in
17990                 REENTRANT_PROTO*) ;;
17991                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
17992                 esac
17993                 echo "Prototype: $try" ;;
17994         esac
17995         ;;
17996         *)      case "$usethreads" in
17997                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
17998                 esac
17999                 d_tmpnam_r=undef
18000                 tmpnam_r_proto=0
18001                 ;;
18002         esac
18003         ;;
18004 *)      tmpnam_r_proto=0
18005         ;;
18006 esac
18007
18008 : see if truncate exists
18009 set truncate d_truncate
18010 eval $inlibc
18011
18012 : see if ttyname_r exists
18013 set ttyname_r d_ttyname_r
18014 eval $inlibc
18015 case "$d_ttyname_r" in
18016 "$define")
18017         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
18018         case "$d_ttyname_r_proto:$usethreads" in
18019         ":define")      d_ttyname_r_proto=define
18020                 set d_ttyname_r_proto ttyname_r $hdrs
18021                 eval $hasproto ;;
18022         *)      ;;
18023         esac
18024         case "$d_ttyname_r_proto" in
18025         define)
18026         case "$ttyname_r_proto" in
18027         ''|0) try='int ttyname_r(int, char*, size_t);'
18028         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
18029         esac
18030         case "$ttyname_r_proto" in
18031         ''|0) try='int ttyname_r(int, char*, int);'
18032         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
18033         esac
18034         case "$ttyname_r_proto" in
18035         ''|0) try='char* ttyname_r(int, char*, int);'
18036         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
18037         esac
18038         case "$ttyname_r_proto" in
18039         ''|0)   d_ttyname_r=undef
18040                 ttyname_r_proto=0
18041                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
18042         * )     case "$ttyname_r_proto" in
18043                 REENTRANT_PROTO*) ;;
18044                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
18045                 esac
18046                 echo "Prototype: $try" ;;
18047         esac
18048         ;;
18049         *)      case "$usethreads" in
18050                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
18051                 esac
18052                 d_ttyname_r=undef
18053                 ttyname_r_proto=0
18054                 ;;
18055         esac
18056         ;;
18057 *)      ttyname_r_proto=0
18058         ;;
18059 esac
18060
18061 : see if tzname[] exists
18062 echo " "
18063 if set tzname val -a d_tzname; eval $csym; $val; then
18064         val="$define"
18065         echo 'tzname[] found.' >&4
18066 else
18067         val="$undef"
18068         echo 'tzname[] NOT found.' >&4
18069 fi
18070 set d_tzname
18071 eval $setvar
18072
18073 : Check if is a multiplatform env
18074 case "$osname" in
18075 next|rhapsody|darwin) multiarch="$define" ;;
18076 esac
18077 case "$multiarch" in
18078 ''|[nN]*) multiarch="$undef" ;;
18079 esac
18080
18081 : check for ordering of bytes in a UV
18082 echo " "
18083 case "$usecrosscompile$multiarch" in
18084 *$define*)
18085         $cat <<EOM
18086 You seem to be either cross-compiling or doing a multiarchitecture build,
18087 skipping the byteorder check.
18088
18089 EOM
18090         byteorder='ffff'
18091         ;;
18092 *)
18093         case "$byteorder" in
18094         '')
18095                 $cat <<'EOM'
18096 In the following, larger digits indicate more significance.  A big-endian
18097 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
18098 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
18099 machines may have weird orders like 3412.  A Cray will report 87654321,
18100 an Alpha will report 12345678. If the test program works the default is
18101 probably right.
18102 I'm now running the test program...
18103 EOM
18104                 $cat >try.c <<EOCP
18105 #include <stdio.h>
18106 #$i_stdlib I_STDLIB
18107 #ifdef I_STDLIB
18108 #include <stdlib.h>
18109 #endif
18110 #include <sys/types.h>
18111 typedef $uvtype UV;
18112 int main()
18113 {
18114         int i;
18115         union {
18116                 UV l;
18117                 char c[$uvsize];
18118         } u;
18119
18120         if ($uvsize > 4)
18121                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
18122         else
18123                 u.l = (UV)0x04030201;
18124         for (i = 0; i < $uvsize; i++)
18125                 printf("%c", u.c[i]+'0');
18126         printf("\n");
18127         exit(0);
18128 }
18129 EOCP
18130                 xxx_prompt=y
18131                 set try
18132                 if eval $compile && $run ./try > /dev/null; then
18133                         dflt=`$run ./try`
18134                         case "$dflt" in
18135                         [1-4][1-4][1-4][1-4]|12345678|87654321)
18136                                 echo "(The test program ran ok.)"
18137                                 echo "byteorder=$dflt"
18138                                 xxx_prompt=n
18139                         ;;
18140                         ????|????????) echo "(The test program ran ok.)" ;;
18141                         *) echo "(The test program didn't run right for some reason.)" ;;
18142                         esac
18143                 else
18144                         dflt='4321'
18145                         cat <<'EOM'
18146 (I can't seem to compile the test program.  Guessing big-endian...)
18147 EOM
18148                 fi
18149                 case "$xxx_prompt" in
18150                 y)
18151                         rp="What is the order of bytes in $uvtype?"
18152                         . ./myread
18153                         byteorder="$ans"
18154                         ;;
18155                 *)      byteorder=$dflt
18156                         ;;
18157                 esac
18158                 ;;
18159         esac
18160         $rm_try
18161         ;;
18162 esac
18163
18164 : Checking 32bit aligndness
18165 $cat <<EOM
18166
18167 Checking to see whether you can access character data unalignedly...
18168 EOM
18169 case "$d_u32align" in
18170 '')   $cat >try.c <<EOCP
18171 #include <stdio.h>
18172 #$i_stdlib I_STDLIB
18173 #ifdef I_STDLIB
18174 #include <stdlib.h>
18175 #endif
18176 #define U32 $u32type
18177 #define BYTEORDER 0x$byteorder
18178 #define U8 $u8type
18179 #include <signal.h>
18180 #ifdef SIGBUS
18181 $signal_t bletch(int s) { exit(4); }
18182 #endif
18183 int main() {
18184 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
18185     U8 buf[8];
18186     U32 *up;
18187     int i;
18188
18189     if (sizeof(U32) != 4) {
18190         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
18191         exit(1);
18192     }
18193
18194     fflush(stdout);
18195
18196 #ifdef SIGBUS
18197     signal(SIGBUS, bletch);
18198 #endif
18199
18200     buf[0] = 0;
18201     buf[1] = 0;
18202     buf[2] = 0;
18203     buf[3] = 1;
18204     buf[4] = 0;
18205     buf[5] = 0;
18206     buf[6] = 0;
18207     buf[7] = 1;
18208
18209     for (i = 0; i < 4; i++) {
18210         up = (U32*)(buf + i);
18211         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
18212                (*up == 1 << (8*(3-i)))  /* little-endian */
18213               )
18214            )
18215         {
18216             printf("read failed (%x)\n", *up);
18217             exit(2);
18218         }
18219     }
18220
18221     /* write test */
18222     for (i = 0; i < 4; i++) {
18223         up = (U32*)(buf + i);
18224         *up = 0xBeef;
18225         if (*up != 0xBeef) {
18226             printf("write failed (%x)\n", *up);
18227             exit(3);
18228         }
18229     }
18230
18231     exit(0);
18232 #else
18233     printf("1\n");
18234     exit(1);
18235 #endif
18236     return 0;
18237 }
18238 EOCP
18239 set try
18240 if eval $compile_ok; then
18241         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
18242         $run ./try 2>&1 >/dev/null
18243         case "$?" in
18244         0)      cat >&4 <<EOM
18245 You can access character data pretty unalignedly.
18246 EOM
18247                 d_u32align="$undef"
18248                 ;;
18249         *)      cat >&4 <<EOM
18250 It seems that you must access character data in an aligned manner.
18251 EOM
18252                 d_u32align="$define"
18253                 ;;
18254         esac
18255 else
18256         rp='Can you access character data at unaligned addresses?'
18257         dflt='n'
18258         . ./myread
18259         case "$ans" in
18260         [yY]*)  d_u32align="$undef"  ;;
18261         *)      d_u32align="$define" ;;
18262         esac
18263 fi
18264 $rm_try
18265 ;;
18266 esac
18267
18268 : see if ualarm exists
18269 set ualarm d_ualarm
18270 eval $inlibc
18271
18272 : see if umask exists
18273 set umask d_umask
18274 eval $inlibc
18275
18276 : see if unordered exists
18277 set unordered d_unordered
18278 eval $inlibc
18279
18280 : see if unsetenv exists
18281 set unsetenv d_unsetenv
18282 eval $inlibc
18283
18284 : see if usleep exists
18285 set usleep d_usleep
18286 eval $inlibc
18287
18288 : see if prototype for usleep is available
18289 echo " "
18290 set d_usleepproto usleep $i_unistd unistd.h
18291 eval $hasproto
18292
18293 : see if ustat exists
18294 set ustat d_ustat
18295 eval $inlibc
18296
18297 : see if closedir exists
18298 set closedir d_closedir
18299 eval $inlibc
18300
18301 case "$d_closedir" in
18302 "$define")
18303         echo " "
18304         echo "Checking whether closedir() returns a status..." >&4
18305         cat > try.c <<EOM
18306 #$i_dirent I_DIRENT             /**/
18307 #$i_sysdir I_SYS_DIR            /**/
18308 #$i_sysndir I_SYS_NDIR          /**/
18309 #$i_systypes I_SYS_TYPES        /**/
18310
18311 #if defined(I_SYS_TYPES)
18312 #include <sys/types.h>
18313 #endif
18314 #if defined(I_DIRENT)
18315 #include <dirent.h>
18316 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
18317 #include <sys/dir.h>
18318 #endif
18319 #else
18320 #ifdef I_SYS_NDIR
18321 #include <sys/ndir.h>
18322 #else
18323 #ifdef I_SYS_DIR
18324 #ifdef hp9000s500
18325 #include <ndir.h>       /* may be wrong in the future */
18326 #else
18327 #include <sys/dir.h>
18328 #endif
18329 #endif
18330 #endif
18331 #endif
18332 int main() { return closedir(opendir(".")); }
18333 EOM
18334         set try
18335         if eval $compile_ok; then
18336                 if $run ./try > /dev/null 2>&1 ; then
18337                         echo "Yes, it does."
18338                         val="$undef"
18339                 else
18340                         echo "No, it doesn't."
18341                         val="$define"
18342                 fi
18343         else
18344                 echo "(I can't seem to compile the test program--assuming it doesn't)"
18345                 val="$define"
18346         fi
18347         ;;
18348 *)
18349         val="$undef";
18350         ;;
18351 esac
18352 set d_void_closedir
18353 eval $setvar
18354 $rm_try
18355
18356 : see if there is a wait4
18357 set wait4 d_wait4
18358 eval $inlibc
18359
18360 : see if waitpid exists
18361 set waitpid d_waitpid
18362 eval $inlibc
18363
18364 : see if wcstombs exists
18365 set wcstombs d_wcstombs
18366 eval $inlibc
18367
18368 : see if wctomb exists
18369 set wctomb d_wctomb
18370 eval $inlibc
18371
18372 : see if writev exists
18373 set writev d_writev
18374 eval $inlibc
18375
18376 : preserve RCS keywords in files with variable substitution, grrr
18377 Date='$Date'
18378 Id='$Id'
18379 Log='$Log'
18380 RCSfile='$RCSfile'
18381 Revision='$Revision'
18382
18383 : check for alignment requirements
18384 echo " "
18385 case "$usecrosscompile$multiarch" in
18386 *$define*)
18387         $cat <<EOM
18388 You seem to be either cross-compiling or doing a multiarchitecture build,
18389 skipping the memory alignment check.
18390
18391 EOM
18392         case "$alignbytes" in
18393         '') alignbytes=8 ;;
18394         esac
18395         ;;
18396 *)
18397         case "$alignbytes" in
18398         '') echo "Checking alignment constraints..." >&4
18399                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
18400                         $cat >try.c <<'EOCP'
18401 typedef long double NV;
18402 EOCP
18403                 else
18404                         $cat >try.c <<'EOCP'
18405 typedef double NV;
18406 EOCP
18407                 fi
18408                 $cat >>try.c <<'EOCP'
18409 #include <stdio.h>
18410 struct foobar {
18411         char foo;
18412         NV bar;
18413 } try_algn;
18414 int main()
18415 {
18416     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
18417     return(0);
18418 }
18419 EOCP
18420                 set try
18421                 if eval $compile_ok; then
18422                         dflt=`$run ./try`
18423                 else
18424                         dflt='8'
18425                         echo "(I can't seem to compile the test program...)"
18426                 fi
18427                 ;;
18428         *) dflt="$alignbytes"
18429                 ;;
18430         esac
18431         rp="Doubles must be aligned on a how-many-byte boundary?"
18432         . ./myread
18433         alignbytes="$ans"
18434         $rm_try
18435         ;;
18436 esac
18437
18438
18439 : set the base revision
18440 baserev=5.0
18441
18442 : how do we concatenate cpp tokens here?
18443 echo " "
18444 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
18445 $cat >cpp_stuff.c <<'EOCP'
18446 #define RCAT(a,b)a/**/b
18447 #define ACAT(a,b)a ## b
18448 RCAT(Rei,ser)
18449 ACAT(Cir,cus)
18450 EOCP
18451 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
18452 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
18453         echo "Oh!  Smells like ANSI's been here." >&4
18454         echo "We can catify or stringify, separately or together!"
18455         cpp_stuff=42
18456 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
18457         echo "Ah, yes!  The good old days!" >&4
18458         echo "However, in the good old days we don't know how to stringify and"
18459         echo "catify at the same time."
18460         cpp_stuff=1
18461 else
18462         $cat >&4 <<EOM
18463 Hmm, I don't seem to be able to concatenate tokens with your cpp.
18464 You're going to have to edit the values of CAT[2-5] in config.h...
18465 EOM
18466         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
18467 fi
18468 $rm -f cpp_stuff.*
18469
18470 : see if this is a db.h system
18471 set db.h i_db
18472 eval $inhdr
18473
18474 case "$i_db" in
18475 $define)
18476         : Check db version.
18477         echo " "
18478         echo "Checking Berkeley DB version ..." >&4
18479         $cat >try.c <<EOCP
18480 #$d_const HASCONST
18481 #ifndef HASCONST
18482 #define const
18483 #endif
18484 #include <sys/types.h>
18485 #include <stdio.h>
18486 #$i_stdlib I_STDLIB
18487 #ifdef I_STDLIB
18488 #include <stdlib.h>
18489 #endif
18490 #include <db.h>
18491 int main(int argc, char *argv[])
18492 {
18493 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
18494     int Major, Minor, Patch ;
18495     unsigned long Version ;
18496     (void)db_version(&Major, &Minor, &Patch) ;
18497     if (argc == 2) {
18498         printf("%d %d %d %d %d %d\n",
18499                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
18500                Major, Minor, Patch);
18501         exit(0);
18502     }
18503     printf("You have Berkeley DB Version 2 or greater.\n");
18504
18505     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
18506                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
18507     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
18508                 Major, Minor, Patch) ;
18509
18510     /* check that db.h & libdb are compatible */
18511     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
18512         printf("db.h and libdb are incompatible.\n") ;
18513         exit(3);
18514     }
18515
18516     printf("db.h and libdb are compatible.\n") ;
18517
18518     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
18519                 + DB_VERSION_PATCH ;
18520
18521     /* needs to be >= 2.3.4 */
18522     if (Version < 2003004) {
18523     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
18524         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
18525         exit(2);
18526     }
18527
18528     exit(0);
18529 #else
18530 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
18531     if (argc == 2) {
18532         printf("1 0 0\n");
18533         exit(0);
18534     }
18535     printf("You have Berkeley DB Version 1.\n");
18536     exit(0);    /* DB version < 2: the coast is clear. */
18537 #else
18538     exit(1);    /* <db.h> not Berkeley DB? */
18539 #endif
18540 #endif
18541 }
18542 EOCP
18543         set try
18544         if eval $compile_ok && $run ./try; then
18545                 echo 'Looks OK.' >&4
18546                 set `$run ./try 1`
18547                 db_version_major=$1
18548                 db_version_minor=$2
18549                 db_version_patch=$3
18550         else
18551                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
18552                 i_db=$undef
18553                 case " $libs " in
18554                 *"-ldb "*)
18555                         : Remove db from list of libraries to use
18556                         echo "Removing unusable -ldb from library list" >&4
18557                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
18558                         shift
18559                         libs="$*"
18560                         echo "libs = $libs" >&4
18561                         ;;
18562                 esac
18563         fi
18564         $rm_try
18565         ;;
18566 esac
18567
18568 case "$i_db" in
18569 define)
18570         : Check the return type needed for hash
18571         echo " "
18572         echo "Checking return type needed for hash for Berkeley DB ..." >&4
18573         $cat >try.c <<EOCP
18574 #$d_const HASCONST
18575 #ifndef HASCONST
18576 #define const
18577 #endif
18578 #include <sys/types.h>
18579 #include <db.h>
18580
18581 #ifndef DB_VERSION_MAJOR
18582 u_int32_t hash_cb (ptr, size)
18583 const void *ptr;
18584 size_t size;
18585 {
18586 }
18587 HASHINFO info;
18588 int main()
18589 {
18590         info.hash = hash_cb;
18591 }
18592 #endif
18593 EOCP
18594         if $cc $ccflags -c try.c >try.out 2>&1 ; then
18595                 if $contains warning try.out >>/dev/null 2>&1 ; then
18596                         db_hashtype='int'
18597                 else
18598                         db_hashtype='u_int32_t'
18599                 fi
18600         else
18601                 : XXX Maybe we should just give up here.
18602                 db_hashtype=u_int32_t
18603                 $cat try.out >&4
18604                 echo "Help:  I can't seem to compile the db test program." >&4
18605                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
18606         fi
18607         $rm_try
18608         echo "Your version of Berkeley DB uses $db_hashtype for hash."
18609         ;;
18610 *)      db_hashtype=u_int32_t
18611         ;;
18612 esac
18613 case "$i_db" in
18614 define)
18615         : Check the return type needed for prefix
18616         echo " "
18617         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
18618         cat >try.c <<EOCP
18619 #$d_const HASCONST
18620 #ifndef HASCONST
18621 #define const
18622 #endif
18623 #include <sys/types.h>
18624 #include <db.h>
18625
18626 #ifndef DB_VERSION_MAJOR
18627 size_t prefix_cb (key1, key2)
18628 const DBT *key1;
18629 const DBT *key2;
18630 {
18631 }
18632 BTREEINFO info;
18633 int main()
18634 {
18635         info.prefix = prefix_cb;
18636 }
18637 #endif
18638 EOCP
18639         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
18640                 if $contains warning try.out >>/dev/null 2>&1 ; then
18641                         db_prefixtype='int'
18642                 else
18643                         db_prefixtype='size_t'
18644                 fi
18645         else
18646                 db_prefixtype='size_t'
18647                 : XXX Maybe we should just give up here.
18648                 $cat try.out >&4
18649                 echo "Help:  I can't seem to compile the db test program." >&4
18650                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
18651         fi
18652         $rm_try
18653         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
18654         ;;
18655 *)      db_prefixtype='size_t'
18656         ;;
18657 esac
18658
18659 : How can we generate normalized random numbers ?
18660 echo " "
18661 echo "Looking for a random number function..." >&4
18662 case "$randfunc" in
18663 '')
18664         if set drand48 val -f; eval $csym; $val; then
18665                 dflt="drand48"
18666                 echo "Good, found drand48()." >&4
18667         elif set random val -f; eval $csym; $val; then
18668                 dflt="random"
18669                 echo "OK, found random()." >&4
18670         else
18671                 dflt="rand"
18672                 echo "Yick, looks like I have to use rand()." >&4
18673         fi
18674         echo " "
18675         ;;
18676 *)
18677         dflt="$randfunc"
18678         ;;
18679 esac
18680 cont=true
18681
18682 case "$ccflags" in
18683 *-Dmy_rand=*|*-Dmy_srand=*)
18684         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
18685         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
18686         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
18687         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
18688         ;;
18689 esac
18690
18691 while $test "$cont"; do
18692         rp="Use which function to generate random numbers?"
18693         . ./myread
18694         if $test "$ans" = "$dflt"; then
18695                 : null
18696         else
18697                 randbits=''
18698         fi
18699         randfunc="$ans"
18700         if set $ans val -f; eval $csym; $val; then
18701                 cont=''
18702         else
18703                 dflt=y
18704                 rp="I cannot find function $ans. Use that name anyway?"
18705                 . ./myread
18706                 dflt=rand
18707                 case "$ans" in
18708                         [yY]*) cont='';;
18709                 esac
18710         fi
18711         case "$cont" in
18712         '')
18713                 case "$randfunc" in
18714                 drand48)
18715                         drand01="drand48()"
18716                         seedfunc="srand48"
18717                         randbits=48
18718                         randseedtype=long
18719                         ;;
18720                 rand|random)
18721                         case "$randbits" in
18722                         '')
18723 echo "Checking to see how many bits your $randfunc() function produces..." >&4
18724                                 $cat >try.c <<EOCP
18725 #$i_unistd I_UNISTD
18726 #$i_stdlib I_STDLIB
18727 #include <stdio.h>
18728 #ifdef I_UNISTD
18729 #  include <unistd.h>
18730 #endif
18731 #ifdef I_STDLIB
18732 #  include <stdlib.h>
18733 #endif
18734 int main()
18735 {
18736         register int i;
18737         register unsigned long tmp;
18738         register unsigned long max = 0L;
18739
18740         for (i = 1000; i; i--) {
18741                 tmp = (unsigned long) $randfunc();
18742                 if (tmp > max) max = tmp;
18743         }
18744         for (i = 0; max; i++)
18745                 max /= 2;
18746         printf("%d\n",i);
18747 }
18748 EOCP
18749                                 set try
18750                                 if eval $compile_ok; then
18751                                         dflt=`try`
18752                                 else
18753                                         dflt='?'
18754                                         echo "(I can't seem to compile the test program...)"
18755                                 fi
18756                                 ;;
18757                         *)
18758                                 dflt="$randbits"
18759                                 ;;
18760                         esac
18761                         rp="How many bits does your $randfunc() function produce?"
18762                         . ./myread
18763                         randbits="$ans"
18764                         $rm_try
18765                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18766                         seedfunc="s$randfunc"
18767                         randseedtype=unsigned
18768                         ;;
18769                 *)
18770                         dflt="31"
18771                         rp="How many bits does your $randfunc() function produce?"
18772                         . ./myread
18773                         randbits="$ans"
18774                         seedfunc="s$randfunc"
18775                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18776                         if set $seedfunc val -f; eval $csym; $val; then
18777                                 echo "(Using $seedfunc() to seed random generator)"
18778                         else
18779                                 echo "(Warning: no $seedfunc() to seed random generator)"
18780                                 seedfunc=rand
18781                         fi
18782                         randseedtype=unsigned
18783                         ;;
18784                 esac
18785                 ;;
18786         esac
18787 done
18788
18789 : Determine if this is an EBCDIC system
18790 echo " "
18791 echo "Determining whether or not we are on an EBCDIC system..." >&4
18792 $cat >try.c <<'EOM'
18793 int main()
18794 {
18795   if ('M'==0xd4) return 0;
18796   return 1;
18797 }
18798 EOM
18799
18800 val=$undef
18801 set try
18802 if eval $compile_ok; then
18803         if $run ./try; then
18804                 echo "You seem to speak EBCDIC." >&4
18805                 val="$define"
18806         else
18807                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
18808         fi
18809 else
18810         echo "I'm unable to compile the test program." >&4
18811         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
18812 fi
18813 $rm_try
18814 set ebcdic
18815 eval $setvar
18816
18817 : Check how to flush
18818 echo " "
18819 $cat >&4 <<EOM
18820 Checking how to flush all pending stdio output...
18821 EOM
18822 # I only know how to find the first 32 possibly open files on SunOS.
18823 # See also hints/sunos_4_1.sh and util.c  --AD
18824 case "$osname" in
18825 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
18826 esac
18827 $cat >>try.c <<EOCP
18828 #include <stdio.h>
18829 #$i_stdlib I_STDLIB
18830 #ifdef I_STDLIB
18831 #include <stdlib.h>
18832 #endif
18833 #$i_unistd I_UNISTD
18834 #ifdef I_UNISTD
18835 # include <unistd.h>
18836 #endif
18837 #$d_sysconf HAS_SYSCONF
18838 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
18839 #ifdef HAS_STDIO_STREAM_ARRAY
18840 # define STDIO_STREAM_ARRAY $stdio_stream_array
18841 #endif
18842 int main() {
18843   FILE* p;
18844   unlink("try.out");
18845   p = fopen("try.out", "w");
18846 #ifdef TRY_FPUTC
18847   fputc('x', p);
18848 #else
18849 # ifdef TRY_FPRINTF
18850   fprintf(p, "x");
18851 # endif
18852 #endif
18853 #ifdef TRY_FFLUSH_NULL
18854   fflush(NULL);
18855 #endif
18856 #ifdef TRY_FFLUSH_ALL
18857   {
18858     long open_max = -1;
18859 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
18860     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
18861 # else
18862 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
18863     open_max = sysconf(_SC_OPEN_MAX);
18864 #  else
18865 #   ifdef FOPEN_MAX
18866     open_max = FOPEN_MAX;
18867 #   else
18868 #    ifdef OPEN_MAX
18869     open_max = OPEN_MAX;
18870 #    else
18871 #     ifdef _NFILE
18872     open_max = _NFILE;
18873 #     endif
18874 #    endif
18875 #   endif
18876 #  endif
18877 # endif
18878 # ifdef HAS_STDIO_STREAM_ARRAY
18879     if (open_max > 0) {
18880       long i;
18881       for (i = 0; i < open_max; i++)
18882             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
18883                 STDIO_STREAM_ARRAY[i]._file < open_max &&
18884                 STDIO_STREAM_ARRAY[i]._flag)
18885                 fflush(&STDIO_STREAM_ARRAY[i]);
18886     }
18887   }
18888 # endif
18889 #endif
18890   _exit(42);
18891 }
18892 EOCP
18893 : first we have to find out how _not_ to flush
18894 $to try.c
18895 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
18896     output=''
18897     set try -DTRY_FPUTC
18898     if eval $compile; then
18899             $run ./try 2>/dev/null
18900             code="$?"
18901             $from try.out
18902             if $test ! -s try.out -a "X$code" = X42; then
18903                 output=-DTRY_FPUTC
18904             fi
18905     fi
18906     case "$output" in
18907     '')
18908             set try -DTRY_FPRINTF
18909             if eval $compile; then
18910                     $run ./try 2>/dev/null
18911                     code="$?"
18912                     $from try.out
18913                     if $test ! -s try.out -a "X$code" = X42; then
18914                         output=-DTRY_FPRINTF
18915                     fi
18916             fi
18917         ;;
18918     esac
18919 fi
18920 : check for fflush NULL behaviour
18921 case "$fflushNULL" in
18922 '')     set try -DTRY_FFLUSH_NULL $output
18923         if eval $compile; then
18924                 $run ./try 2>/dev/null
18925                 code="$?"
18926                 $from try.out
18927                 if $test -s try.out -a "X$code" = X42; then
18928                         fflushNULL="`$cat try.out`"
18929                 else
18930                         if $test "X$code" != X42; then
18931                                 $cat >&4 <<EOM
18932 (If this test failed, don't worry, we'll try another method shortly.)
18933 EOM
18934                         fi
18935                 fi
18936         fi
18937         $rm_try
18938         case "$fflushNULL" in
18939         x)      $cat >&4 <<EOM
18940 Your fflush(NULL) works okay for output streams.
18941 Let's see if it clobbers input pipes...
18942 EOM
18943 # As of mid-March 2000 all versions of Solaris appear to have a stdio
18944 # bug that improperly flushes the input end of pipes.  So we avoid the
18945 # autoflush on fork/system/exec support for now. :-(
18946 $cat >tryp.c <<EOCP
18947 #include <stdio.h>
18948 int
18949 main(int argc, char **argv)
18950 {
18951     char buf[1024];
18952     int i;
18953     char *bp = buf;
18954     while (1) {
18955         while ((i = getc(stdin)) != -1
18956                && (*bp++ = i) != '\n'
18957                && bp < &buf[1024])
18958         /* DO NOTHING */ ;
18959         *bp = '\0';
18960         fprintf(stdout, "%s", buf);
18961         fflush(NULL);
18962         if (i == -1)
18963             return 0;
18964         bp = buf;
18965     }
18966 }
18967 EOCP
18968                 fflushNULL="$define"
18969                 set tryp
18970                 if eval $compile; then
18971                     $rm -f tryp.out
18972                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
18973                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
18974                        $cat >&4 <<EOM
18975 fflush(NULL) seems to behave okay with input streams.
18976 EOM
18977                         fflushNULL="$define"
18978                     else
18979                         $cat >&4 <<EOM
18980 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
18981 EOM
18982                         fflushNULL="$undef"
18983                     fi
18984                 fi
18985                 $rm -f core tryp.c tryp.core core.tryp.*
18986                 ;;
18987         '')     $cat >&4 <<EOM
18988 Your fflush(NULL) isn't working (contrary to ANSI C).
18989 EOM
18990                 fflushNULL="$undef"
18991                 ;;
18992         *)      $cat >&4 <<EOM
18993 Cannot figure out whether your fflush(NULL) works or not.
18994 I'm assuming it doesn't (contrary to ANSI C).
18995 EOM
18996                 fflushNULL="$undef"
18997                 ;;
18998         esac
18999         ;;
19000 $define|true|[yY]*)
19001         fflushNULL="$define"
19002         ;;
19003 *)
19004         fflushNULL="$undef"
19005         ;;
19006 esac
19007 : check explicit looping only if NULL did not work, and if the pipe
19008 : bug does not show up on an explicit flush too
19009 case "$fflushNULL" in
19010 "$undef")
19011         $cat >tryp.c <<EOCP
19012 #include <stdio.h>
19013 int
19014 main(int argc, char **argv)
19015 {
19016     char buf[1024];
19017     int i;
19018     char *bp = buf;
19019     while (1) {
19020         while ((i = getc(stdin)) != -1
19021                && (*bp++ = i) != '\n'
19022                && bp < &buf[1024])
19023         /* DO NOTHING */ ;
19024         *bp = '\0';
19025         fprintf(stdout, "%s", buf);
19026         fflush(stdin);
19027         if (i == -1)
19028             return 0;
19029         bp = buf;
19030     }
19031 }
19032 EOCP
19033         set tryp
19034         if eval $compile; then
19035             $rm -f tryp.out
19036             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
19037             if cmp tryp.c tryp.out >/dev/null 2>&1; then
19038                $cat >&4 <<EOM
19039 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
19040 EOM
19041                 : now check for fflushall behaviour
19042                 case "$fflushall" in
19043                 '')     set try -DTRY_FFLUSH_ALL $output
19044                         if eval $compile; then
19045                                 $cat >&4 <<EOM
19046 (Now testing the other method--but note that this also may fail.)
19047 EOM
19048                                 $run ./try 2>/dev/null
19049                                 code=$?
19050                                 $from try.out
19051                                 if $test -s try.out -a "X$code" = X42; then
19052                                         fflushall="`$cat try.out`"
19053                                 fi
19054                         fi
19055                         $rm_try
19056                         case "$fflushall" in
19057                         x)      $cat >&4 <<EOM
19058 Whew. Flushing explicitly all the stdio streams works.
19059 EOM
19060                                 fflushall="$define"
19061                                 ;;
19062                         '')     $cat >&4 <<EOM
19063 Sigh. Flushing explicitly all the stdio streams doesn't work.
19064 EOM
19065                                 fflushall="$undef"
19066                                 ;;
19067                         *)      $cat >&4 <<EOM
19068 Cannot figure out whether flushing stdio streams explicitly works or not.
19069 I'm assuming it doesn't.
19070 EOM
19071                                 fflushall="$undef"
19072                                 ;;
19073                         esac
19074                         ;;
19075                 "$define"|true|[yY]*)
19076                         fflushall="$define"
19077                         ;;
19078                 *)
19079                         fflushall="$undef"
19080                         ;;
19081                 esac
19082             else
19083                 $cat >&4 <<EOM
19084 All is futile.  Even fflush(stdin) clobbers input pipes!
19085 EOM
19086                 fflushall="$undef"
19087             fi
19088         else
19089             fflushall="$undef"
19090         fi
19091         $rm -f core tryp.c tryp.core core.tryp.*
19092         ;;
19093 *)      fflushall="$undef"
19094         ;;
19095 esac
19096
19097 case "$fflushNULL$fflushall" in
19098 undefundef)
19099         $cat <<EOM
19100 OK, I give up.  I cannot figure out how to flush pending stdio output.
19101 We won't be flushing handles at all before fork/exec/popen.
19102 EOM
19103         ;;
19104 esac
19105 $rm_try
19106
19107 : Store the full pathname to the ar program for use in the C program
19108 : Respect a hint or command line value for full_ar.
19109 case "$full_ar" in
19110 '') full_ar=$ar ;;
19111 esac
19112
19113 : Store the full pathname to the sed program for use in the C program
19114 full_sed=$sed
19115
19116 : see what type gids are declared as in the kernel
19117 echo " "
19118 echo "Looking for the type for group ids returned by getgid()."
19119 set gid_t gidtype xxx stdio.h sys/types.h
19120 eval $typedef
19121 case "$gidtype" in
19122 xxx)
19123         xxx=`./findhdr sys/user.h`
19124         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
19125         case $1 in
19126         unsigned) dflt="$1 $2" ;;
19127         *) dflt="$1" ;;
19128         esac
19129         ;;
19130 *) dflt="$gidtype";;
19131 esac
19132 case "$gidtype" in
19133 gid_t) echo "gid_t found." ;;
19134 *)      rp="What is the type for group ids returned by getgid()?"
19135         . ./myread
19136         gidtype="$ans"
19137         ;;
19138 esac
19139
19140 : Check the size of GID
19141 echo " "
19142 case "$gidtype" in
19143 *_t) zzz="$gidtype"     ;;
19144 *)   zzz="gid"          ;;
19145 esac
19146 echo "Checking the size of $zzz..." >&4
19147 cat > try.c <<EOCP
19148 #include <sys/types.h>
19149 #include <stdio.h>
19150 #$i_stdlib I_STDLIB
19151 #ifdef I_STDLIB
19152 #include <stdlib.h>
19153 #endif
19154 int main() {
19155     printf("%d\n", (int)sizeof($gidtype));
19156     exit(0);
19157 }
19158 EOCP
19159 set try
19160 if eval $compile_ok; then
19161         yyy=`$run ./try`
19162         case "$yyy" in
19163         '')     gidsize=4
19164                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
19165                 ;;
19166         *)      gidsize=$yyy
19167                 echo "Your $zzz is $gidsize bytes long."
19168                 ;;
19169         esac
19170 else
19171         gidsize=4
19172         echo "(I can't compile the test program--guessing $gidsize.)" >&4
19173 fi
19174
19175
19176 : Check if GID is signed
19177 echo " "
19178 case "$gidtype" in
19179 *_t) zzz="$gidtype"     ;;
19180 *)   zzz="gid"          ;;
19181 esac
19182 echo "Checking the sign of $zzz..." >&4
19183 cat > try.c <<EOCP
19184 #include <sys/types.h>
19185 #include <stdio.h>
19186 int main() {
19187         $gidtype foo = -1;
19188         if (foo < 0)
19189                 printf("-1\n");
19190         else
19191                 printf("1\n");
19192 }
19193 EOCP
19194 set try
19195 if eval $compile; then
19196         yyy=`$run ./try`
19197         case "$yyy" in
19198         '')     gidsign=1
19199                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19200                 ;;
19201         *)      gidsign=$yyy
19202                 case "$gidsign" in
19203                  1) echo "Your $zzz is unsigned." ;;
19204                 -1) echo "Your $zzz is signed."   ;;
19205                 esac
19206                 ;;
19207         esac
19208 else
19209         gidsign=1
19210         echo "(I can't compile the test program--guessing unsigned.)" >&4
19211 fi
19212
19213
19214 : Check 64bit sizes
19215 echo " "
19216
19217 if $test X"$quadtype" != X; then
19218
19219 echo "Checking how to print 64-bit integers..." >&4
19220
19221 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
19222         $cat >try.c <<'EOCP'
19223 #include <sys/types.h>
19224 #include <stdio.h>
19225 int main() {
19226   int q = 12345678901;
19227   printf("%ld\n", q);
19228 }
19229 EOCP
19230         set try
19231         if eval $compile; then
19232                 yyy=`$run ./try`
19233                 case "$yyy" in
19234                 12345678901)
19235                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
19236                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
19237                         echo "We will use %d."
19238                         ;;
19239                 esac
19240         fi
19241 fi
19242
19243 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
19244         $cat >try.c <<'EOCP'
19245 #include <sys/types.h>
19246 #include <stdio.h>
19247 int main() {
19248   long q = 12345678901;
19249   printf("%ld\n", q);
19250 }
19251 EOCP
19252         set try
19253         if eval $compile; then
19254                 yyy=`$run ./try`
19255                 case "$yyy" in
19256                 12345678901)
19257                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
19258                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
19259                         echo "We will use %ld."
19260                         ;;
19261                 esac
19262         fi
19263 fi
19264
19265 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
19266         $cat >try.c <<'EOCP'
19267 #include <sys/types.h>
19268 #include <inttypes.h>
19269 #include <stdio.h>
19270 int main() {
19271   int64_t q = 12345678901;
19272   printf("%" PRId64 "\n", q);
19273 }
19274 EOCP
19275         set try
19276         if eval $compile; then
19277                 yyy=`$run ./try`
19278                 case "$yyy" in
19279                 12345678901)
19280                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
19281                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
19282                         echo "We will use the C9X style."
19283                         ;;
19284                 esac
19285         fi
19286 fi
19287
19288 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19289         $cat >try.c <<EOCP
19290 #include <sys/types.h>
19291 #include <stdio.h>
19292 int main() {
19293   $quadtype q = 12345678901;
19294   printf("%Ld\n", q);
19295 }
19296 EOCP
19297         set try
19298         if eval $compile; then
19299                 yyy=`$run ./try`
19300                 case "$yyy" in
19301                 12345678901)
19302                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
19303                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
19304                         echo "We will use %Ld."
19305                         ;;
19306                 esac
19307         fi
19308 fi
19309
19310 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
19311         $cat >try.c <<'EOCP'
19312 #include <sys/types.h>
19313 #include <stdio.h>
19314 int main() {
19315   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
19316   printf("%lld\n", q);
19317 }
19318 EOCP
19319         set try
19320         if eval $compile; then
19321                 yyy=`$run ./try`
19322                 case "$yyy" in
19323                 12345678901)
19324                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
19325                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
19326                         echo "We will use the %lld style."
19327                         ;;
19328                 esac
19329         fi
19330 fi
19331
19332 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19333         $cat >try.c <<EOCP
19334 #include <sys/types.h>
19335 #include <stdio.h>
19336 int main() {
19337   $quadtype q = 12345678901;
19338   printf("%qd\n", q);
19339 }
19340 EOCP
19341         set try
19342         if eval $compile; then
19343                 yyy=`$run ./try`
19344                 case "$yyy" in
19345                 12345678901)
19346                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
19347                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
19348                         echo "We will use %qd."
19349                         ;;
19350                 esac
19351         fi
19352 fi
19353
19354 if $test X"$sPRId64" = X; then
19355         echo "Cannot figure out how to print 64-bit integers." >&4
19356 fi
19357 $rm_try
19358
19359 fi
19360
19361 case "$sPRId64" in
19362 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
19363         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
19364         ;;
19365 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
19366         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
19367         ;;
19368 esac
19369
19370
19371 echo " "
19372 $echo "Checking the format strings to be used for Perl's internal types..." >&4
19373
19374 if $test X"$ivsize" = X8; then
19375         ivdformat="$sPRId64"
19376         uvuformat="$sPRIu64"
19377         uvoformat="$sPRIo64"
19378         uvxformat="$sPRIx64"
19379         uvXUformat="$sPRIXU64"
19380 else
19381         if $test X"$ivsize" = X"$longsize"; then
19382                 ivdformat='"ld"'
19383                 uvuformat='"lu"'
19384                 uvoformat='"lo"'
19385                 uvxformat='"lx"'
19386                 uvXUformat='"lX"'
19387         else
19388                 if $test X"$ivsize" = X"$intsize"; then
19389                         ivdformat='"d"'
19390                         uvuformat='"u"'
19391                         uvoformat='"o"'
19392                         uvxformat='"x"'
19393                         uvXUformat='"X"'
19394                 else
19395                         : far out
19396                         if $test X"$ivsize" = X"$shortsize"; then
19397                                 ivdformat='"hd"'
19398                                 uvuformat='"hu"'
19399                                 uvoformat='"ho"'
19400                                 uvxformat='"hx"'
19401                                 uvXUformat='"hX"'
19402                         fi
19403                 fi
19404         fi
19405 fi
19406
19407 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
19408         nveformat="$sPRIeldbl"
19409         nvfformat="$sPRIfldbl"
19410         nvgformat="$sPRIgldbl"
19411         nvEUformat="$sPRIEUldbl"
19412         nvFUformat="$sPRIFUldbl"
19413         nvGUformat="$sPRIGUldbl"
19414 else
19415         nveformat='"e"'
19416         nvfformat='"f"'
19417         nvgformat='"g"'
19418         nvEUformat='"E"'
19419         nvFUformat='"F"'
19420         nvGUformat='"G"'
19421 fi
19422
19423 case "$ivdformat" in
19424 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
19425     exit 1
19426     ;;
19427 esac
19428
19429
19430 echo " "
19431 $echo "Checking the format string to be used for gids..." >&4
19432
19433 case "$gidsign" in
19434 -1)     if $test X"$gidsize" = X"$ivsize"; then
19435                 gidformat="$ivdformat"
19436         else
19437                 if $test X"$gidsize" = X"$longsize"; then
19438                         gidformat='"ld"'
19439                 else
19440                         if $test X"$gidsize" = X"$intsize"; then
19441                                 gidformat='"d"'
19442                         else
19443                                 if $test X"$gidsize" = X"$shortsize"; then
19444                                         gidformat='"hd"'
19445                                 fi
19446                         fi
19447                 fi
19448         fi
19449         ;;
19450 *)      if $test X"$gidsize" = X"$uvsize"; then
19451                 gidformat="$uvuformat"
19452         else
19453                 if $test X"$gidsize" = X"$longsize"; then
19454                         gidformat='"lu"'
19455                 else
19456                         if $test X"$gidsize" = X"$intsize"; then
19457                                 gidformat='"u"'
19458                         else
19459                                 if $test X"$gidsize" = X"$shortsize"; then
19460                                         gidformat='"hu"'
19461                                 fi
19462                         fi
19463                 fi
19464         fi
19465         ;;
19466 esac
19467
19468 : see if getgroups exists
19469 set getgroups d_getgrps
19470 eval $inlibc
19471
19472 : see if setgroups exists
19473 set setgroups d_setgrps
19474 eval $inlibc
19475
19476
19477 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
19478 echo " "
19479 case "$d_getgrps$d_setgrps" in
19480 *define*)
19481         case "$groupstype" in
19482         '') dflt="$gidtype" ;;
19483         *)  dflt="$groupstype" ;;
19484         esac
19485         $cat <<EOM
19486 What type of pointer is the second argument to getgroups() and setgroups()?
19487 Usually this is the same as group ids, $gidtype, but not always.
19488
19489 EOM
19490         rp='What type pointer is the second argument to getgroups() and setgroups()?'
19491         . ./myread
19492         groupstype="$ans"
19493         ;;
19494 *)  groupstype="$gidtype";;
19495 esac
19496
19497 : MAD = Misc Attribute Definition
19498
19499 if $test $patchlevel -lt 9; then
19500 : MAD is not available in 5.8.x or earlier.
19501     ans=n;
19502 else
19503     case "$mad" in
19504     $define|true|[yY]*) dflt='y' ;;
19505     *)                  dflt='n' ;;
19506     esac
19507     cat <<EOM
19508
19509 Would you like to build with Misc Attribute Decoration? This is development
19510 work leading to a Perl 5 to Perl 6 convertor, which imposes a space and speed
19511 overhead on the interpreter.
19512
19513 If this doesn't make any sense to you, just accept the default '$dflt'.
19514 EOM
19515     rp='Build Perl with MAD?'
19516     . ./myread
19517 fi
19518 case "$ans" in
19519 y|Y)    val="$define"
19520         madlyh='madly.h madly.act madly.tab'
19521         madlysrc='madly.c'
19522         madlyobj="madly$_o" ;;
19523 *)      val="$undef"
19524         madlyh=''
19525         madlysrc=''
19526         madlyobj='' ;;
19527 esac
19528 set mad
19529 eval $setvar
19530
19531 echo " "
19532 echo "Checking if your $make program sets \$(MAKE)..." >&4
19533 case "$make_set_make" in
19534 '')
19535         $sed 's/^X //' > testmake.mak << 'EOF'
19536 Xall:
19537 X       @echo 'maketemp="$(MAKE)"'
19538 EOF
19539         case "`$make -f testmake.mak 2>/dev/null`" in
19540         *maketemp=*) make_set_make='#' ;;
19541         *)      make_set_make="MAKE=$make" ;;
19542         esac
19543         $rm -f testmake.mak
19544         ;;
19545 esac
19546 case "$make_set_make" in
19547 '#') echo "Yup, it does.";;
19548 *) echo "Nope, it doesn't.";;
19549 esac
19550
19551 : see what type is used for mode_t
19552 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
19553 set mode_t modetype int stdio.h sys/types.h
19554 eval $typedef_ask
19555
19556 : see if we need va_copy
19557 echo " "
19558 case "$i_stdarg" in
19559 "$define")
19560         $cat >try.c <<EOCP
19561 #include <stdarg.h>
19562 #include <stdio.h>
19563 #$i_stdlib I_STDLIB
19564 #ifdef I_STDLIB
19565 #include <stdlib.h>
19566 #endif
19567 #include <signal.h>
19568
19569 int
19570 ivfprintf(FILE *f, const char *fmt, va_list *valp)
19571 {
19572   return vfprintf(f, fmt, *valp);
19573 }
19574
19575 int
19576 myvfprintf(FILE *f, const  char *fmt, va_list val)
19577 {
19578   return ivfprintf(f, fmt, &val);
19579 }
19580
19581 int
19582 myprintf(char *fmt, ...)
19583 {
19584   va_list val;
19585   va_start(val, fmt);
19586   return myvfprintf(stdout, fmt, val);
19587 }
19588
19589 int
19590 main(int ac, char **av)
19591 {
19592   signal(SIGSEGV, exit);
19593
19594   myprintf("%s%cs all right, then\n", "that", '\'');
19595   exit(0);
19596 }
19597 EOCP
19598         set try
19599         if eval $compile && $run ./try 2>&1 >/dev/null; then
19600                 case "`$run ./try`" in
19601                 "that's all right, then")
19602                         okay=yes
19603                         ;;
19604                 esac
19605         fi
19606         case "$okay" in
19607         yes)    echo "It seems that you don't need va_copy()." >&4
19608                 need_va_copy="$undef"
19609                 ;;
19610         *)      echo "It seems that va_copy() or similar will be needed." >&4
19611                 need_va_copy="$define"
19612                 ;;
19613         esac
19614         $rm_try
19615         ;;
19616 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
19617         ;;
19618 esac
19619
19620 : see what type is used for size_t
19621 rp="What is the type used for the length parameter for string functions?"
19622 set size_t sizetype 'unsigned int' stdio.h sys/types.h
19623 eval $typedef_ask
19624
19625 : check for type of arguments to gethostbyaddr. 
19626 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
19627         case "$d_gethbyaddr" in
19628         $define)
19629                 $cat <<EOM
19630
19631 Checking to see what type of arguments are accepted by gethostbyaddr().
19632 EOM
19633                 hdrs="$define sys/types.h
19634                         $d_socket sys/socket.h 
19635                         $i_niin netinet/in.h 
19636                         $i_netdb netdb.h
19637                         $i_unistd unistd.h"
19638                 : The first arg can 'char *' or 'void *'
19639                 : The second arg is some of integral type
19640                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
19641                         for yyy in size_t long int; do
19642                                 case "$netdb_host_type" in
19643                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
19644                                         if ./protochk "$try" $hdrs; then
19645                                                 echo "Your system accepts $xxx for the first arg."
19646                                                 echo "...and $yyy for the second arg."
19647                                                 netdb_host_type="$xxx"
19648                                                 netdb_hlen_type="$yyy"
19649                                         fi
19650                                         ;;
19651                                 esac
19652                         done
19653                 done
19654                 : In case none of those worked, prompt the user.
19655                 case "$netdb_host_type" in
19656                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
19657                         dflt='char *'
19658                         . ./myread
19659                         netdb_host_type=$ans
19660                         rp='What is the type for the 2nd argument to gethostbyaddr?'
19661                         dflt="$sizetype"
19662                         . ./myread
19663                         netdb_hlen_type=$ans
19664                         ;;
19665                 esac
19666                 ;;
19667         *)      : no gethostbyaddr, so pick harmless defaults
19668                 netdb_host_type='char *'
19669                 netdb_hlen_type="$sizetype"
19670                 ;;
19671         esac
19672         # Remove the "const" if needed. -- but then we'll have a 
19673         # prototype clash!
19674         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
19675 fi
19676
19677 : check for type of argument to gethostbyname. 
19678 if test "X$netdb_name_type" = X ; then
19679         case "$d_gethbyname" in
19680         $define)
19681                 $cat <<EOM
19682
19683 Checking to see what type of argument is accepted by gethostbyname().
19684 EOM
19685                 hdrs="$define sys/types.h
19686                         $d_socket sys/socket.h 
19687                         $i_niin netinet/in.h 
19688                         $i_netdb netdb.h
19689                         $i_unistd unistd.h"
19690                 for xxx in "const char *" "char *"; do
19691                         case "$netdb_name_type" in
19692                         '')     try="extern struct hostent *gethostbyname($xxx);"
19693                                 if ./protochk "$try" $hdrs; then
19694                                         echo "Your system accepts $xxx."
19695                                         netdb_name_type="$xxx"
19696                                 fi
19697                                 ;;
19698                         esac
19699                 done
19700                 : In case none of those worked, prompt the user.
19701                 case "$netdb_name_type" in
19702                 '')     rp='What is the type for the 1st argument to gethostbyname?'
19703                         dflt='char *'
19704                         . ./myread
19705                         netdb_name_type=$ans
19706                         ;;
19707                 esac
19708                 ;;
19709         *)      : no gethostbyname, so pick harmless default
19710                 netdb_name_type='char *'
19711                 ;;
19712         esac
19713 fi
19714
19715 : check for type of 1st argument to getnetbyaddr. 
19716 if test "X$netdb_net_type" = X ; then
19717         case "$d_getnbyaddr" in
19718         $define)
19719                 $cat <<EOM
19720
19721 Checking to see what type of 1st argument is accepted by getnetbyaddr().
19722 EOM
19723                 hdrs="$define sys/types.h
19724                         $d_socket sys/socket.h 
19725                         $i_niin netinet/in.h 
19726                         $i_netdb netdb.h
19727                         $i_unistd unistd.h"
19728                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
19729                         case "$netdb_net_type" in
19730                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
19731                                 if ./protochk "$try" $hdrs; then
19732                                         echo "Your system accepts $xxx."
19733                                         netdb_net_type="$xxx"
19734                                 fi
19735                                 ;;
19736                         esac
19737                 done
19738                 : In case none of those worked, prompt the user.
19739                 case "$netdb_net_type" in
19740                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
19741                         dflt='long'
19742                         . ./myread
19743                         netdb_net_type=$ans
19744                         ;;
19745                 esac
19746                 ;;
19747         *)      : no getnetbyaddr, so pick harmless default
19748                 netdb_net_type='long'
19749                 ;;
19750         esac
19751 fi
19752 : locate the preferred pager for this system
19753 fn=f/
19754 case "$pager" in
19755 '')
19756         dflt=''
19757         case "$pg" in
19758         /*) dflt=$pg;;
19759         [a-zA-Z]:/*) dflt=$pg;;
19760         esac
19761         case "$more" in
19762         /*) dflt=$more;;
19763         [a-zA-Z]:/*) dflt=$more;;
19764         esac
19765         case "$less" in
19766         /*) dflt=$less;;
19767         [a-zA-Z]:/*) dflt=$less;;
19768         esac
19769         case "$dflt" in
19770         '') dflt=/usr/ucb/more;;
19771         esac
19772         ;;
19773 *)      dflt="$pager"
19774         : Instruct ./getfile to trust the hinted or previous pager value,
19775         : even if it does not begin with a slash.  For example, on os2,
19776         : pager might be cmd /c more.  See comments in UU/getfile.
19777         fn="f/($pager)"
19778         ;;
19779 esac
19780 echo " "
19781 rp='What pager is used on your system?'
19782 . ./getfile
19783 pager="$ans"
19784
19785 : see what type pids are declared as in the kernel
19786 rp="What is the type of process ids on this system?"
19787 set pid_t pidtype int stdio.h sys/types.h
19788 eval $typedef_ask
19789
19790 : see if ar generates random libraries by itself
19791 echo " "
19792 echo "Checking how to generate random libraries on your machine..." >&4
19793 echo 'int bar1() { return bar2(); }' > bar1.c
19794 echo 'int bar2() { return 2; }' > bar2.c
19795 $cat > foo.c <<EOP
19796 #$i_stdlib I_STDLIB
19797 #ifdef I_STDLIB
19798 #include <stdlib.h>
19799 #endif
19800 int main() { printf("%d\n", bar1()); exit(0); }
19801 EOP
19802 $cc $ccflags -c bar1.c >/dev/null 2>&1
19803 $cc $ccflags -c bar2.c >/dev/null 2>&1
19804 $cc $ccflags -c foo.c >/dev/null 2>&1
19805 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
19806 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19807         $run ./foobar >/dev/null 2>&1; then
19808         echo "$ar appears to generate random libraries itself."
19809         orderlib=false
19810         if [ "X$ranlib" = "X" ]; then
19811             ranlib=":"
19812         fi
19813 elif $ar s bar$_a >/dev/null 2>&1 &&
19814         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19815         $run ./foobar >/dev/null 2>&1; then
19816                 echo "a table of contents needs to be added with '$ar s'."
19817                 orderlib=false
19818                 ranlib="$ar s"
19819 elif $ar ts bar$_a >/dev/null 2>&1 &&
19820         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19821         $run ./foobar >/dev/null 2>&1; then
19822                 echo "a table of contents needs to be added with '$ar ts'."
19823                 orderlib=false
19824                 ranlib="$ar ts"
19825 else
19826         case "$ranlib" in
19827         :) ranlib='';;
19828         '')
19829                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
19830                 $test -f $ranlib || ranlib=''
19831                 ;;
19832         esac
19833         if $test -n "$ranlib"; then
19834                 echo "your system has '$ranlib'; we'll use that."
19835                 orderlib=false
19836         else
19837                 echo "your system doesn't seem to support random libraries"
19838                 echo "so we'll use lorder and tsort to order the libraries."
19839                 orderlib=true
19840                 ranlib=":"
19841         fi
19842 fi
19843 $rm -f foo* bar*
19844
19845 : check for type of arguments to select.
19846 case "$selecttype" in
19847 '') case "$d_select" in
19848         $define)
19849                 echo " "
19850                 $cat <<EOM
19851 Checking to see what type of arguments are accepted by select().
19852 EOM
19853                 hdrs="$define sys/types.h
19854                         $i_systime sys/time.h
19855                         $i_sysselct sys/select.h
19856                         $d_socket sys/socket.h"
19857                 : The first arg can be int, unsigned, or size_t
19858                 : The last arg may or may not be 'const'
19859                 val=''
19860                 : void pointer has been seen but using that
19861                 : breaks the selectminbits test
19862                 for xxx in 'fd_set *' 'int *'; do
19863                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
19864                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
19865                                         case "$val" in
19866                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
19867                                                 if ./protochk "$try" $hdrs; then
19868                                                         echo "Your system accepts $xxx."
19869                                                         val="$xxx"
19870                                                 fi
19871                                                 ;;
19872                                         esac
19873                                 done
19874                         done
19875                 done
19876                 case "$val" in
19877                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
19878                         case "$d_fd_set" in
19879                                 $define) dflt="fd_set *" ;;
19880                                 *)              dflt="int *" ;;
19881                         esac
19882                         . ./myread
19883                         val=$ans
19884                         ;;
19885                 esac
19886                 selecttype="$val"
19887                 ;;
19888         *)      : no select, so pick a harmless default
19889                 selecttype='int *'
19890                 ;;
19891         esac
19892         ;;
19893 esac
19894
19895 : check for the select 'width'
19896 case "$selectminbits" in
19897 '') safebits=`expr $ptrsize \* 8`
19898     case "$d_select" in
19899         $define)
19900                 $cat <<EOM
19901
19902 Checking to see on how many bits at a time your select() operates...
19903 EOM
19904                 $cat >try.c <<EOCP
19905 #include <sys/types.h>
19906 #$i_time I_TIME
19907 #$i_systime I_SYS_TIME
19908 #$i_systimek I_SYS_TIME_KERNEL
19909 #ifdef I_TIME
19910 #   include <time.h>
19911 #endif
19912 #ifdef I_SYS_TIME
19913 #   ifdef I_SYS_TIME_KERNEL
19914 #       define KERNEL
19915 #   endif
19916 #   include <sys/time.h>
19917 #   ifdef I_SYS_TIME_KERNEL
19918 #       undef KERNEL
19919 #   endif
19920 #endif
19921 #$i_sysselct I_SYS_SELECT
19922 #ifdef I_SYS_SELECT
19923 #include <sys/select.h>
19924 #endif
19925 #$d_socket HAS_SOCKET
19926 #ifdef HAS_SOCKET
19927 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
19928 #endif
19929 #include <stdio.h>
19930 #$i_stdlib I_STDLIB
19931 #ifdef I_STDLIB
19932 #include <stdlib.h>
19933 #endif
19934 $selecttype b;
19935 #define S sizeof(*(b))
19936 #define MINBITS 64
19937 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
19938 #define NBITS  (NBYTES * 8)
19939 int main() {
19940     char *s = (char *)malloc(NBYTES);
19941     struct timeval t;
19942     int i;
19943     FILE* fp;
19944     int fd;
19945
19946     if (!s)
19947         exit(1);
19948     fclose(stdin);
19949     fp = fopen("try.c", "r");
19950     if (fp == 0)
19951       exit(2);
19952     fd = fileno(fp);
19953     if (fd < 0)
19954       exit(3);
19955     b = ($selecttype)s;
19956     for (i = 0; i < NBITS; i++)
19957         FD_SET(i, b);
19958     t.tv_sec  = 0;
19959     t.tv_usec = 0;
19960     select(fd + 1, b, 0, 0, &t);
19961     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
19962     free(s);
19963     printf("%d\n", i + 1);
19964     return 0;
19965 }
19966 EOCP
19967                 set try
19968                 if eval $compile_ok; then
19969                         selectminbits=`$run ./try`
19970                         case "$selectminbits" in
19971                         '')     cat >&4 <<EOM
19972 Cannot figure out on how many bits at a time your select() operates.
19973 I'll play safe and guess it is $safebits bits.
19974 EOM
19975                                 selectminbits=$safebits
19976                                 bits="$safebits bits"
19977                                 ;;
19978                         1)      bits="1 bit" ;;
19979                         *)      bits="$selectminbits bits" ;;
19980                         esac
19981                         echo "Your select() operates on $bits at a time." >&4
19982                 else
19983                         rp='What is the minimum number of bits your select() operates on?'
19984                         case "$byteorder" in
19985                         12345678)       dflt=64 ;;
19986                         1234)           dflt=32 ;;
19987                         *)              dflt=1  ;;
19988                         esac
19989                         . ./myread
19990                         val=$ans
19991                         selectminbits="$val"
19992                 fi
19993                 $rm_try
19994                 ;;
19995         *)      : no select, so pick a harmless default
19996                 selectminbits=$safebits
19997                 ;;
19998         esac
19999         ;;
20000 esac
20001
20002 : Trace out the files included by signal.h, then look for SIGxxx names.
20003 : Remove SIGARRAYSIZE used by HPUX.
20004 : Remove SIGSTKSIZE used by Linux.
20005 : Remove SIGSTKSZ used by Posix.
20006 : Remove SIGTYP void lines used by OS2.
20007 : Some cpps, like os390, dont give the file name anywhere
20008 if [ "X$fieldn" = X ]; then
20009         : Just make some guesses.  We check them later.
20010         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
20011 else
20012         xxx=`echo '#include <signal.h>' |
20013         $cppstdin $cppminus $cppflags 2>/dev/null |
20014         $grep '^[       ]*#.*include' |
20015         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
20016 fi
20017 : Check this list of files to be sure we have parsed the cpp output ok.
20018 : This will also avoid potentially non-existent files, such
20019 : as ../foo/bar.h
20020 xxxfiles=''
20021 for xx in $xxx /dev/null ; do
20022         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
20023 done
20024 : If we have found no files, at least try signal.h
20025 case "$xxxfiles" in
20026 '')     xxxfiles=`./findhdr signal.h` ;;
20027 esac
20028 xxx=`awk '
20029 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
20030         print substr($2, 4, 20)
20031 }
20032 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
20033         print substr($3, 4, 20)
20034 }' $xxxfiles`
20035 : Append some common names just in case the awk scan failed.
20036 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
20037 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
20038 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
20039 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
20040 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
20041
20042 : generate a few handy files for later
20043 $cat > signal.c <<EOCP
20044 #include <sys/types.h>
20045 #include <signal.h>
20046 #$i_stdlib I_STDLIB
20047 #ifdef I_STDLIB
20048 #include <stdlib.h>
20049 #endif
20050 #include <stdio.h>
20051 int main() {
20052
20053 /* Strange style to avoid deeply-nested #if/#else/#endif */
20054 #ifndef NSIG
20055 #  ifdef _NSIG
20056 #    define NSIG (_NSIG)
20057 #  endif
20058 #endif
20059
20060 #ifndef NSIG
20061 #  ifdef SIGMAX
20062 #    define NSIG (SIGMAX+1)
20063 #  endif
20064 #endif
20065
20066 #ifndef NSIG
20067 #  ifdef SIG_MAX
20068 #    define NSIG (SIG_MAX+1)
20069 #  endif
20070 #endif
20071
20072 #ifndef NSIG
20073 #  ifdef _SIG_MAX
20074 #    define NSIG (_SIG_MAX+1)
20075 #  endif
20076 #endif
20077
20078 #ifndef NSIG
20079 #  ifdef MAXSIG
20080 #    define NSIG (MAXSIG+1)
20081 #  endif
20082 #endif
20083
20084 #ifndef NSIG
20085 #  ifdef MAX_SIG
20086 #    define NSIG (MAX_SIG+1)
20087 #  endif
20088 #endif
20089
20090 #ifndef NSIG
20091 #  ifdef SIGARRAYSIZE
20092 #    define NSIG SIGARRAYSIZE /* Assume ary[SIGARRAYSIZE] */
20093 #  endif
20094 #endif
20095
20096 #ifndef NSIG
20097 #  ifdef _sys_nsig
20098 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
20099 #  endif
20100 #endif
20101
20102 /* Default to some arbitrary number that's big enough to get most
20103    of the common signals.
20104 */
20105 #ifndef NSIG
20106 #    define NSIG 50
20107 #endif
20108
20109 printf("NSIG %d\n", NSIG);
20110
20111 #ifndef JUST_NSIG
20112
20113 EOCP
20114
20115 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
20116 {
20117         printf "#ifdef SIG"; printf $1; printf "\n"
20118         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
20119         printf $1; printf ");\n"
20120         printf "#endif\n"
20121 }
20122 END {
20123         printf "#endif /* JUST_NSIG */\n";
20124         printf "exit(0);\n}\n";
20125 }
20126 ' >>signal.c
20127 $cat >signal.awk <<'EOP'
20128 BEGIN { ndups = 0 }
20129 $1 ~ /^NSIG$/ { nsig = $2 }
20130 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
20131     if ($2 > maxsig) { maxsig = $2 }
20132     if (sig_name[$2]) {
20133         dup_name[ndups] = $1
20134         dup_num[ndups] = $2
20135         ndups++
20136     }
20137     else {
20138         sig_name[$2] = $1
20139         sig_num[$2] = $2
20140     }
20141 }
20142 END {
20143     if (nsig == 0) {
20144         nsig = maxsig + 1
20145     }
20146     printf("NSIG %d\n", nsig);
20147     for (n = 1; n < nsig; n++) {
20148         if (sig_name[n]) {
20149             printf("%s %d\n", sig_name[n], sig_num[n])
20150         }
20151         else {
20152             printf("NUM%d %d\n", n, n)
20153         }
20154     }
20155     for (n = 0; n < ndups; n++) {
20156         printf("%s %d\n", dup_name[n], dup_num[n])
20157     }
20158 }
20159 EOP
20160 $cat >signal_cmd <<EOS
20161 $startsh
20162 if $test -s signal.lst; then
20163     echo "Using your existing signal.lst file"
20164         exit 0
20165 fi
20166 xxx="$xxx"
20167 EOS
20168 $cat >>signal_cmd <<'EOS'
20169
20170 set signal
20171 if eval $compile_ok; then
20172         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
20173 else
20174         echo "(I can't seem be able to compile the whole test program)" >&4
20175         echo "(I'll try it in little pieces.)" >&4
20176         set signal -DJUST_NSIG
20177         if eval $compile_ok; then
20178                 $run ./signal$_exe > signal.nsg
20179                 $cat signal.nsg
20180         else
20181                 echo "I can't seem to figure out how many signals you have." >&4
20182                 echo "Guessing 50." >&4
20183                 echo 'NSIG 50' > signal.nsg
20184         fi
20185         : Now look at all the signal names, one at a time.
20186         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
20187                 $cat > signal.c <<EOCP
20188 #include <sys/types.h>
20189 #include <signal.h>
20190 #include <stdio.h>
20191 int main() {
20192 printf("$xx %d\n", SIG${xx});
20193 return 0;
20194 }
20195 EOCP
20196                 set signal
20197                 if eval $compile; then
20198                         echo "SIG${xx} found."
20199                         $run ./signal$_exe  >> signal.ls1
20200                 else
20201                         echo "SIG${xx} NOT found."
20202                 fi
20203         done
20204         if $test -s signal.ls1; then
20205                 $cat signal.nsg signal.ls1 |
20206                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
20207         fi
20208
20209 fi
20210 if $test -s signal.lst; then
20211         :
20212 else
20213         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
20214         echo 'kill -l' >signal
20215         set X `csh -f <signal`
20216         $rm -f signal
20217         shift
20218         case $# in
20219         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
20220         esac
20221         echo $@ | $tr ' ' $trnl | \
20222             $awk '{ printf "%s %d\n", $1, ++s; }
20223                   END { printf "NSIG %d\n", ++s }' >signal.lst
20224 fi
20225 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
20226 EOS
20227 chmod a+x signal_cmd
20228 $eunicefix signal_cmd
20229
20230 : generate list of signal names
20231 echo " "
20232 case "$sig_name_init" in
20233 '') doinit=yes ;;
20234 *)  case "$sig_num_init" in
20235     ''|*,*) doinit=yes ;;
20236     esac ;;
20237 esac
20238 case "$doinit" in
20239 yes)
20240         echo "Generating a list of signal names and numbers..." >&4
20241         . ./signal_cmd
20242         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
20243         sig_name=`$awk 'BEGIN { printf "ZERO " }
20244                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
20245         sig_num=`$awk  'BEGIN { printf "0 " }
20246                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
20247         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
20248                              !/^NSIG/   { printf "\"%s\", ", $1 }
20249                              END        { printf "0\n" }' signal.lst`
20250         sig_num_init=`$awk  'BEGIN      { printf "0, " }
20251                              !/^NSIG/   { printf "%d, ", $2}
20252                              END        { printf "0\n"}' signal.lst`
20253         ;;
20254 esac
20255 echo "The following $sig_count signals are available:"
20256 echo " "
20257 echo $sig_name | $awk \
20258 'BEGIN { linelen = 0 }
20259 {
20260         for (i = 1; i <= NF; i++) {
20261                 name = "SIG" $i " "
20262                 linelen = linelen + length(name)
20263                 if (linelen > 70) {
20264                         printf "\n"
20265                         linelen = length(name)
20266                 }
20267                 printf "%s", name
20268         }
20269         printf "\n"
20270 }'
20271 sig_size=`echo $sig_name | awk '{print NF}'`
20272 $rm -f signal signal.c signal.awk signal.lst signal_cmd
20273
20274 : Check size of size
20275 echo " "
20276 case "$sizetype" in
20277 *_t) zzz="$sizetype"    ;;
20278 *)   zzz="filesize"     ;;
20279 esac
20280 echo "Checking the size of $zzz..." >&4
20281 cat > try.c <<EOCP
20282 #include <sys/types.h>
20283 #include <stdio.h>
20284 #$i_stdlib I_STDLIB
20285 #ifdef I_STDLIB
20286 #include <stdlib.h>
20287 #endif
20288 int main() {
20289     printf("%d\n", (int)sizeof($sizetype));
20290     exit(0);
20291 }
20292 EOCP
20293 set try
20294 if eval $compile_ok; then
20295         yyy=`$run ./try`
20296         case "$yyy" in
20297         '')     sizesize=4
20298                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
20299                 ;;
20300         *)      sizesize=$yyy
20301                 echo "Your $zzz size is $sizesize bytes."
20302                 ;;
20303         esac
20304 else
20305         sizesize=4
20306         echo "(I can't compile the test program--guessing $sizesize.)" >&4
20307 fi
20308
20309
20310 : check for socklen_t
20311 echo " "
20312 echo "Checking to see if you have socklen_t..." >&4
20313 $cat >try.c <<EOCP
20314 #include <sys/types.h>
20315 #$d_socket HAS_SOCKET
20316 #ifdef HAS_SOCKET
20317 #include <sys/socket.h>
20318 #endif
20319 int main() { socklen_t x = 16; }
20320 EOCP
20321 set try
20322 if eval $compile; then
20323         val="$define"
20324         echo "You have socklen_t."
20325 else
20326         val="$undef"
20327         echo "You do not have socklen_t."
20328         case "$sizetype" in
20329         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
20330         esac
20331 fi
20332 $rm_try
20333 set d_socklen_t
20334 eval $setvar
20335
20336 : see if this is a socks.h system
20337 set socks.h i_socks
20338 eval $inhdr
20339
20340 : check for type of the size argument to socket calls
20341 case "$d_socket" in
20342 "$define")
20343         $cat <<EOM
20344
20345 Checking to see what type is the last argument of accept().
20346 EOM
20347         yyy=''
20348         case "$d_socklen_t" in
20349         "$define") yyy="$yyy socklen_t"
20350         esac
20351         yyy="$yyy $sizetype int long unsigned"
20352         for xxx in $yyy; do
20353                 case "$socksizetype" in
20354                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
20355                         case "$usesocks" in
20356                         "$define")
20357                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
20358                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
20359                                         socksizetype="$xxx"
20360                                 fi
20361                                 ;;
20362                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
20363                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
20364                                         socksizetype="$xxx"
20365                                 fi
20366                                 ;;
20367                         esac
20368                         ;;
20369                 esac
20370         done
20371 : In case none of those worked, prompt the user.
20372         case "$socksizetype" in
20373         '')     rp='What is the type for socket address structure sizes?'
20374                 dflt='int'
20375                 . ./myread
20376                 socksizetype=$ans
20377                 ;;
20378         esac
20379         ;;
20380 *)      : no sockets, so pick relatively harmless default
20381         socksizetype='int'
20382         ;;
20383 esac
20384
20385 : see what type is used for signed size_t
20386 set ssize_t ssizetype int stdio.h sys/types.h
20387 eval $typedef
20388 dflt="$ssizetype"
20389 $cat > try.c <<EOM
20390 #include <stdio.h>
20391 #$i_stdlib I_STDLIB
20392 #ifdef I_STDLIB
20393 #include <stdlib.h>
20394 #endif
20395 #include <sys/types.h>
20396 #define Size_t $sizetype
20397 #define SSize_t $dflt
20398 int main()
20399 {
20400         if (sizeof(Size_t) == sizeof(SSize_t))
20401                 printf("$dflt\n");
20402         else if (sizeof(Size_t) == sizeof(int))
20403                 printf("int\n");
20404         else
20405                 printf("long\n");
20406         exit(0);
20407 }
20408 EOM
20409 echo " "
20410 set try
20411 if eval $compile_ok && $run ./try > /dev/null; then
20412         ssizetype=`$run ./try`
20413         echo "I'll be using $ssizetype for functions returning a byte count." >&4
20414 else
20415         $cat >&4 <<EOM
20416 Help! I can't compile and run the ssize_t test program: please enlighten me!
20417 (This is probably a misconfiguration in your system or libraries, and
20418 you really ought to fix it.  Still, I'll try anyway.)
20419
20420 I need a type that is the same size as $sizetype, but is guaranteed to
20421 be signed.  Common values are ssize_t, int and long.
20422
20423 EOM
20424         rp="What signed type is the same size as $sizetype?"
20425         . ./myread
20426         ssizetype="$ans"
20427 fi
20428 $rm_try
20429
20430 : see what type of char stdio uses.
20431 echo " "
20432 echo '#include <stdio.h>' > stdio.c
20433 $cppstdin $cppminus < stdio.c > stdioh
20434 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
20435         echo "Your stdio uses unsigned chars." >&4
20436         stdchar="unsigned char"
20437 else
20438         echo "Your stdio uses signed chars." >&4
20439         stdchar="char"
20440 fi
20441 $rm -f stdio.* stdioh
20442
20443 : see what type uids are declared as in the kernel
20444 echo " "
20445 echo "Looking for the type for user ids returned by getuid()."
20446 set uid_t uidtype xxx stdio.h sys/types.h
20447 eval $typedef
20448 case "$uidtype" in
20449 xxx)
20450         xxx=`./findhdr sys/user.h`
20451         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
20452         case $1 in
20453         unsigned) dflt="$1 $2" ;;
20454         *) dflt="$1" ;;
20455         esac
20456         ;;
20457 *) dflt="$uidtype";;
20458 esac
20459 case "$uidtype" in
20460 uid_t)  echo "uid_t found." ;;
20461 *)      rp="What is the type for user ids returned by getuid()?"
20462         . ./myread
20463         uidtype="$ans"
20464         ;;
20465 esac
20466
20467 : Check size of UID
20468 echo " "
20469 case "$uidtype" in
20470 *_t) zzz="$uidtype"     ;;
20471 *)   zzz="uid"          ;;
20472 esac
20473 echo "Checking the size of $zzz..." >&4
20474 cat > try.c <<EOCP
20475 #include <sys/types.h>
20476 #include <stdio.h>
20477 #$i_stdlib I_STDLIB
20478 #ifdef I_STDLIB
20479 #include <stdlib.h>
20480 #endif
20481 int main() {
20482     printf("%d\n", (int)sizeof($uidtype));
20483     exit(0);
20484 }
20485 EOCP
20486 set try
20487 if eval $compile_ok; then
20488         yyy=`$run ./try`
20489         case "$yyy" in
20490         '')     uidsize=4
20491                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
20492                 ;;
20493         *)      uidsize=$yyy
20494                 echo "Your $zzz is $uidsize bytes long."
20495                 ;;
20496         esac
20497 else
20498         uidsize=4
20499         echo "(I can't compile the test program--guessing $uidsize.)" >&4
20500 fi
20501
20502 : Check if UID is signed
20503 echo " "
20504 case "$uidtype" in
20505 *_t) zzz="$uidtype"     ;;
20506 *)   zzz="uid"          ;;
20507 esac
20508 echo "Checking the sign of $zzz..." >&4
20509 cat > try.c <<EOCP
20510 #include <sys/types.h>
20511 #include <stdio.h>
20512 int main() {
20513         $uidtype foo = -1;
20514         if (foo < 0)
20515                 printf("-1\n");
20516         else
20517                 printf("1\n");
20518 }
20519 EOCP
20520 set try
20521 if eval $compile; then
20522         yyy=`$run ./try`
20523         case "$yyy" in
20524         '')     uidsign=1
20525                 echo "(I can't execute the test program--guessing unsigned.)" >&4
20526                 ;;
20527         *)      uidsign=$yyy
20528                 case "$uidsign" in
20529                  1) echo "Your $zzz is unsigned." ;;
20530                 -1) echo "Your $zzz is signed."   ;;
20531                 esac
20532                 ;;
20533         esac
20534 else
20535         uidsign=1
20536         echo "(I can't compile the test program--guessing unsigned.)" >&4
20537 fi
20538
20539
20540
20541 echo " "
20542 $echo "Checking the format string to be used for uids..." >&4
20543
20544 case "$uidsign" in
20545 -1)     if $test X"$uidsize" = X"$ivsize"; then
20546                 uidformat="$ivdformat"
20547         else
20548                 if $test X"$uidsize" = X"$longsize"; then
20549                         uidformat='"ld"'
20550                 else
20551                         if $test X"$uidsize" = X"$intsize"; then
20552                                 uidformat='"d"'
20553                         else
20554                                 if $test X"$uidsize" = X"$shortsize"; then
20555                                         uidformat='"hd"'
20556                                 fi
20557                         fi
20558                 fi
20559         fi
20560         ;;
20561 *)      if $test X"$uidsize" = X"$uvsize"; then
20562                 uidformat="$uvuformat"
20563         else
20564                 if $test X"$uidsize" = X"$longsize"; then
20565                         uidformat='"lu"'
20566                 else
20567                         if $test X"$uidsize" = X"$intsize"; then
20568                                 uidformat='"u"'
20569                         else
20570                                 if $test X"$uidsize" = X"$shortsize"; then
20571                                         uidformat='"hu"'
20572                                 fi
20573                         fi
20574                 fi
20575         fi
20576         ;;
20577 esac
20578
20579
20580 case "$usesitecustomize" in
20581     $define|true|[Yy]*)
20582         usesitecustomize="$define"
20583         ;;
20584     *)
20585         usesitecustomize="$undef"
20586         ;;
20587     esac
20588
20589 : determine compiler compiler
20590 case "$yacc" in
20591 '')
20592         dflt=yacc;;
20593 *)
20594         dflt="$yacc";;
20595 esac
20596 echo " "
20597 comp='yacc'
20598 if $test -f "$byacc$_exe"; then
20599         dflt="$byacc"
20600         comp="byacc or $comp"
20601 fi
20602 if $test -f "$bison$_exe"; then
20603         comp="$comp or bison -y"
20604 fi
20605 rp="Which compiler compiler ($comp) shall I use?"
20606 . ./myread
20607 yacc="$ans"
20608 case "$yacc" in
20609 *bis*)
20610         case "$yacc" in
20611         *-y*) ;;
20612         *)
20613                 yacc="$yacc -y"
20614                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
20615                 ;;
20616         esac
20617         ;;
20618 esac
20619
20620
20621 : see if this is a assert.h system
20622 set assert.h i_assert
20623 eval $inhdr
20624
20625 : see if this is a fp.h system
20626 set fp.h i_fp
20627 eval $inhdr
20628
20629 : see if this is a fp_class.h system
20630 set fp_class.h i_fp_class
20631 eval $inhdr
20632
20633 : see if gdbm.h is available
20634 set gdbm.h t_gdbm
20635 eval $inhdr
20636 case "$t_gdbm" in
20637 $define)
20638         : see if gdbm_open exists
20639         set gdbm_open d_gdbm_open
20640         eval $inlibc
20641         case "$d_gdbm_open" in
20642         $undef)
20643                 t_gdbm="$undef"
20644                 echo "We won't be including <gdbm.h>"
20645                 ;;
20646         esac
20647         ;;
20648 esac
20649 val="$t_gdbm"
20650 set i_gdbm
20651 eval $setvar
20652
20653 : see if this is a ieeefp.h system
20654 case "$i_ieeefp" in
20655 '' ) set ieeefp.h i_ieeefp
20656      eval $inhdr
20657      ;;
20658 esac
20659
20660 : see if this is a libutil.h system
20661 set libutil.h i_libutil
20662 eval $inhdr
20663
20664 : see if mach cthreads are available
20665 if test "X$usethreads" = "X$define"; then
20666         set mach/cthreads.h i_machcthr
20667         eval $inhdr
20668 else
20669         i_machcthr="$undef"
20670 fi
20671
20672 : see if this is a mntent.h system
20673 set mntent.h i_mntent
20674 eval $inhdr
20675
20676 : see if ndbm.h is available
20677 set ndbm.h t_ndbm
20678 eval $inhdr
20679
20680 case "$t_ndbm" in
20681 $undef)
20682     # Some Linux distributions such as RedHat 7.1 put the
20683     # ndbm.h header in /usr/include/gdbm/ndbm.h.
20684     if $test -f /usr/include/gdbm/ndbm.h; then
20685         echo '<gdbm/ndbm.h> found.'
20686         ccflags="$ccflags -I/usr/include/gdbm"
20687         cppflags="$cppflags -I/usr/include/gdbm"
20688         t_ndbm=$define
20689     fi
20690     ;;
20691 esac
20692
20693 case "$t_ndbm" in
20694 $define)
20695         : see if dbm_open exists
20696         set dbm_open d_dbm_open
20697         eval $inlibc
20698         case "$d_dbm_open" in
20699         $undef)
20700                 t_ndbm="$undef"
20701                 echo "We won't be including <ndbm.h>"
20702                 ;;
20703         esac
20704         ;;
20705 esac
20706 val="$t_ndbm"
20707 set i_ndbm
20708 eval $setvar
20709
20710 : see if net/errno.h is available
20711 val=''
20712 set net/errno.h val
20713 eval $inhdr
20714
20715 : Unfortunately, it causes problems on some systems.  Arrgh.
20716 case "$val" in
20717 $define)
20718         cat > try.c <<'EOM'
20719 #include <stdio.h>
20720 #include <errno.h>
20721 #include <net/errno.h>
20722 int func()
20723 {
20724         return ENOTSOCK;
20725 }
20726 EOM
20727         if $cc $ccflags -c try.c >/dev/null 2>&1; then
20728                 echo "We'll be including <net/errno.h>." >&4
20729         else
20730                 echo "We won't be including <net/errno.h>." >&4
20731                 val="$undef"
20732         fi
20733         $rm_try
20734         ;;
20735 esac
20736 set i_neterrno
20737 eval $setvar
20738
20739 : see if netinet/tcp.h is available
20740 set netinet/tcp.h i_netinettcp
20741 eval $inhdr
20742
20743 : see if this is a poll.h system
20744 set poll.h i_poll
20745 eval $inhdr
20746
20747 : see if this is a prot.h system
20748 set prot.h i_prot
20749 eval $inhdr
20750
20751 : Preprocessor symbols
20752 echo " "
20753 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
20754 $cat <<'EOSH' > Cppsym.know
20755 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
20756 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
20757 alliant alpha am29000 AM29000 AMD64 amd64 amiga AMIGAOS AMIX
20758 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
20759 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
20760 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
20761 bull c cadmus clipper CMU COFF COMPILER_VERSION
20762 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
20763 CYGWIN DECC DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
20764 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
20765 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
20766 GLIBC GLIBC_MINOR
20767 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
20768 H3050R H3050RX hbullx20 hcx host_mips
20769 hp200 hp300 hp700 HP700 hp800 hp9000
20770 hp9000s200 hp9000s300 hp9000s400 hp9000s500
20771 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
20772 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
20773 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
20774 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
20775 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
20776 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
20777 LIBCATAMOUNT Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
20778 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
20779 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
20780 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
20781 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
20782 MATH_HAS_NO_SIDE_EFFECTS
20783 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
20784 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
20785 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
20786 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
20787 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
20788 NetBSD news1500 news1700 news1800 news1900 news3700
20789 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
20790 ns32016 ns32332 ns32k nsc32000
20791 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
20792 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
20793 pc532 pdp11 PGC PIC plexus PORTAR posix
20794 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
20795 POSIX_C_SOURCE POSIX_SOURCE POWER
20796 PROTOTYPES PWB pyr QNX QK_USER R3000 REENTRANT RES Rhapsody RISC6000
20797 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
20798 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
20799 sony sony_news sonyrisc sparc sparclite spectrum
20800 stardent stdc STDC_EXT stratos sun sun3 sun386
20801 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
20802 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
20803 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
20804 sysV68 sysV88 Tek4132 Tek4300 titan
20805 TM3200 TM5400 TM5600
20806 tower tower32 tower32_200 tower32_600 tower32_700
20807 tower32_800 tower32_850 tss
20808 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
20809 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
20810 unix UNIX95 UNIX99 unixpc unos
20811 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
20812 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
20813 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
20814 USGr4 USGr4_2
20815 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms x86_64 xenix Xenix286
20816 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
20817 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
20818 z8000
20819 EOSH
20820 # Maybe put other stuff here too.
20821 cat <<EOSH >>Cppsym.know
20822 $osname
20823 EOSH
20824 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
20825 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
20826 $cat Cppsym.know > Cppsym.c
20827 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
20828 $rm -f Cppsym.a Cppsym.b Cppsym.c
20829 cat <<EOSH > Cppsym
20830 $startsh
20831 if $test \$# -gt 0; then
20832     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
20833     if $test -s Cppsym.got; then
20834         $rm -f Cppsym.got
20835         exit 0
20836     fi
20837     $rm -f Cppsym.got
20838     exit 1
20839 else
20840     $tr " " "$trnl" | ./Cppsym.try
20841     exit 0
20842 fi
20843 EOSH
20844 chmod +x Cppsym
20845 $eunicefix Cppsym
20846 cat <<EOSH > Cppsym.try
20847 $startsh
20848 cat <<'EOCP' > try.c
20849 #include <stdio.h>
20850 #if cpp_stuff == 1
20851 #define STRINGIFY(a)    "a"
20852 #endif
20853 #if cpp_stuff == 42
20854 #define StGiFy(a)  #a
20855 #define STRINGIFY(a)    StGiFy(a)
20856 #endif
20857 #if $cpp_stuff != 1 && $cpp_stuff != 42
20858 #   include "Bletch: How does this C preprocessor stringify macros?"
20859 #endif
20860 int main() {
20861 EOCP
20862 $awk \\
20863 EOSH
20864 cat <<'EOSH' >> Cppsym.try
20865 'length($1) > 0 {
20866     printf "#ifdef %s\nprintf(\"%s=%%s\\n\", STRINGIFY(%s));\n#endif\n", $1, $1, $1
20867     printf "#ifdef _%s\nprintf(\"_%s=%%s\\n\", STRINGIFY(_%s));\n#endif\n", $1, $1, $1
20868     printf "#ifdef __%s\nprintf(\"__%s=%%s\\n\", STRINGIFY(__%s));\n#endif\n", $1, $1, $1
20869     printf "#ifdef __%s__\nprintf(\"__%s__=%%s\\n\", STRINGIFY(__%s__));\n#endif\n", $1, $1, $1
20870 }'       >> try.c
20871 echo 'return 0;}' >> try.c
20872 EOSH
20873 cat <<EOSH >> Cppsym.try
20874 ccflags="$ccflags"
20875 case "$osname-$gccversion" in
20876 irix-) ccflags="\$ccflags -woff 1178" ;;
20877 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
20878 esac
20879 $cc -o try -Dcpp_stuff=$cpp_stuff $optimize \$ccflags $ldflags try.c $libs && $run ./try | $sed 's/ /\\\\ /g'
20880 EOSH
20881 chmod +x Cppsym.try
20882 $eunicefix Cppsym.try
20883 ./Cppsym < Cppsym.know > Cppsym.true
20884 : Add in any linux cpp "predefined macros":
20885 case "$osname::$gccversion" in
20886   *linux*::*.*)
20887     tHdrH=_tmpHdr
20888     rm -f $tHdrH'.h' $tHdrH
20889     touch $tHdrH'.h'
20890     if cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then
20891        sed 's/#define[\ \  ]*//;s/[\ \     ].*$//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real'
20892        if [ -s $tHdrH'_cppsym.real' ]; then
20893           cat $tHdrH'_cppsym.real' Cppsym.know | sort | uniq | ./Cppsym | sort | uniq > Cppsym.true
20894        fi
20895     fi
20896     rm -f $tHdrH'.h' $tHdrH'_cppsym.h' $tHdrH'_cppsym.real'
20897   ;;
20898 esac
20899 : now check the C compiler for additional symbols
20900 postprocess_cc_v=''
20901 case "$osname" in
20902 aix) postprocess_cc_v="|$tr , ' '" ;;
20903 esac
20904 $cat >ccsym <<EOS
20905 $startsh
20906 $cat >tmp.c <<EOF
20907 extern int foo;
20908 EOF
20909 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
20910 do
20911         case "\$i" in
20912         -D*) echo "\$i" | $sed 's/^-D//';;
20913         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
20914         esac
20915 done
20916 $rm_try
20917 EOS
20918 postprocess_cc_v=''
20919 chmod +x ccsym
20920 $eunicefix ccsym
20921 ./ccsym > ccsym1.raw
20922 if $test -s ccsym1.raw; then
20923        $sort ccsym1.raw | $uniq >ccsym.raw
20924 else
20925        mv ccsym1.raw ccsym.raw
20926 fi
20927
20928 $awk '/\=/ { print $0; next }
20929         { print $0"=1" }' ccsym.raw >ccsym.list
20930 $comm -13 Cppsym.true ccsym.list >ccsym.own
20931 $comm -12 Cppsym.true ccsym.list >ccsym.com
20932 $comm -23 Cppsym.true ccsym.list >ccsym.cpp
20933 also=''
20934 if $test -z ccsym.raw; then
20935         echo "Your C compiler doesn't seem to define any symbols!" >&4
20936         echo " "
20937         echo "However, your C preprocessor defines the following symbols:"
20938         $cat Cppsym.true
20939         ccsymbols=''
20940         cppsymbols=`$cat Cppsym.true`
20941         cppsymbols=`echo $cppsymbols`
20942         cppccsymbols="$cppsymbols"
20943 else
20944         if $test -s ccsym.com; then
20945                 echo "Your C compiler and pre-processor define these symbols:"
20946                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
20947                 also='also '
20948                 symbols='ones'
20949                 cppccsymbols=`$cat ccsym.com`
20950                 cppccsymbols=`echo $cppccsymbols`
20951                 $test "$silent" || sleep 1
20952         fi
20953         if $test -s ccsym.cpp; then
20954                 $test "$also" && echo " "
20955                 echo "Your C pre-processor ${also}defines the following symbols:"
20956                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
20957                 also='further '
20958                 cppsymbols=`$cat ccsym.cpp`
20959                 cppsymbols=`echo $cppsymbols`
20960                 $test "$silent" || sleep 1
20961         fi
20962         if $test -s ccsym.own; then
20963                 $test "$also" && echo " "
20964                 echo "Your C compiler ${also}defines the following cpp symbols:"
20965                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
20966                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
20967                 ccsymbols=`$cat ccsym.own`
20968                 ccsymbols=`echo $ccsymbols`
20969                 $test "$silent" || sleep 1
20970         fi
20971 fi
20972
20973 : see if this is a termio system
20974 val="$undef"
20975 val2="$undef"
20976 val3="$undef"
20977 if $test `./findhdr termios.h`; then
20978         set tcsetattr i_termios
20979         eval $inlibc
20980         val3="$i_termios"
20981 fi
20982 echo " "
20983 case "$val3" in
20984 "$define") echo "You have POSIX termios.h... good!" >&4;;
20985 *) if ./Cppsym pyr; then
20986                 case "`/bin/universe`" in
20987                 ucb) if $test `./findhdr sgtty.h`; then
20988                                 val2="$define"
20989                                 echo "<sgtty.h> found." >&4
20990                         else
20991                                 echo "System is pyramid with BSD universe."
20992                                 echo "<sgtty.h> not found--you could have problems." >&4
20993                         fi;;
20994                 *) if $test `./findhdr termio.h`; then
20995                                 val="$define"
20996                                 echo "<termio.h> found." >&4
20997                         else
20998                                 echo "System is pyramid with USG universe."
20999                                 echo "<termio.h> not found--you could have problems." >&4
21000                         fi;;
21001                 esac
21002         elif ./usg; then
21003                 if $test `./findhdr termio.h`; then
21004                         echo "<termio.h> found." >&4
21005                         val="$define"
21006                 elif $test `./findhdr sgtty.h`; then
21007                         echo "<sgtty.h> found." >&4
21008                         val2="$define"
21009                 else
21010 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
21011                 fi
21012         else
21013                 if $test `./findhdr sgtty.h`; then
21014                         echo "<sgtty.h> found." >&4
21015                         val2="$define"
21016                 elif $test `./findhdr termio.h`; then
21017                         echo "<termio.h> found." >&4
21018                         val="$define"
21019                 else
21020 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
21021                 fi
21022         fi;;
21023 esac
21024 set i_termio; eval $setvar
21025 val=$val2; set i_sgtty; eval $setvar
21026 val=$val3; set i_termios; eval $setvar
21027
21028 : see if stddef is available
21029 set stddef.h i_stddef
21030 eval $inhdr
21031
21032 : see if sys/access.h is available
21033 set sys/access.h i_sysaccess
21034 eval $inhdr
21035
21036 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
21037 set sys/filio.h i_sysfilio
21038 eval $inhdr
21039 echo " "
21040 if $test `./findhdr sys/ioctl.h`; then
21041         val="$define"
21042         echo '<sys/ioctl.h> found.' >&4
21043 else
21044         val="$undef"
21045         if $test $i_sysfilio = "$define"; then
21046             echo '<sys/ioctl.h> NOT found.' >&4
21047         else
21048                 $test $i_sgtty = "$define" && xxx="sgtty.h"
21049                 $test $i_termio = "$define" && xxx="termio.h"
21050                 $test $i_termios = "$define" && xxx="termios.h"
21051 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
21052         fi
21053 fi
21054 set i_sysioctl
21055 eval $setvar
21056
21057 : see if socket ioctl defs are in sys/sockio.h
21058 echo " "
21059 xxx=`./findhdr sys/sockio.h`
21060 if $test "$xxx"; then
21061         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
21062                 val="$define"
21063                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
21064         else
21065                 val="$undef"
21066                 echo "No socket ioctls found in <sys/sockio.h>." >&4
21067         fi
21068 else
21069         val="$undef"
21070         $cat <<EOM
21071 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
21072 EOM
21073 fi
21074 set i_syssockio
21075 eval $setvar
21076
21077
21078 : see if this is a syslog.h system
21079 set syslog.h i_syslog
21080 eval $inhdr
21081
21082
21083 : see if this is a sys/mode.h system
21084 set sys/mode.h i_sysmode
21085 eval $inhdr
21086
21087 : see if sys/resource.h has to be included
21088 set sys/resource.h i_sysresrc
21089 eval $inhdr
21090
21091 : see if sys/security.h is available
21092 set sys/security.h i_syssecrt
21093 eval $inhdr
21094
21095 : see if this is a sys/statvfs.h system
21096 set sys/statvfs.h i_sysstatvfs
21097 eval $inhdr
21098
21099 : see if this is a sys/un.h system
21100 set sys/un.h i_sysun
21101 eval $inhdr
21102
21103
21104 : see if this is a sys/utsname.h system
21105 set sys/utsname.h i_sysutsname
21106 eval $inhdr
21107
21108 : see if this is a syswait system
21109 set sys/wait.h i_syswait
21110 eval $inhdr
21111
21112 : see if this is a ustat.h system
21113 set ustat.h i_ustat
21114 eval $inhdr
21115
21116 : see if this is an utime system
21117 set utime.h i_utime
21118 eval $inhdr
21119
21120 : see if this is a values.h system
21121 set values.h i_values
21122 eval $inhdr
21123
21124 : see if this is a vfork system
21125 case "$d_vfork" in
21126 "$define")
21127         set vfork.h i_vfork
21128         eval $inhdr
21129         ;;
21130 *)
21131         i_vfork="$undef"
21132         ;;
21133 esac
21134
21135 : Check extensions
21136 echo " "
21137 echo "Looking for extensions..." >&4
21138 : If we are using the old config.sh, known_extensions may contain
21139 : old or inaccurate or duplicate values.
21140 known_extensions=''
21141 nonxs_extensions=''
21142 : We do not use find because it might not be available.
21143 : We do not just use MANIFEST because the user may have dropped
21144 : some additional extensions into the source tree and expect them
21145 : to be built.
21146
21147 : Function to recursively find available extensions, ignoring DynaLoader
21148 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
21149 find_extensions='
21150     for xxx in *; do
21151         case "$xxx" in
21152             DynaLoader|dynaload) ;;
21153             *)
21154             if $test -f $xxx/$xxx.xs -o -f $xxx/$xxx.c; then
21155                 known_extensions="$known_extensions $1$xxx";
21156             elif $test -f $xxx/Makefile.PL; then
21157                 nonxs_extensions="$nonxs_extensions $1$xxx";
21158             else
21159                 if $test -d $xxx -a $# -lt 10; then
21160                     set $1$xxx/ $*;
21161                     cd "$xxx";
21162                     eval $find_extensions;
21163                     cd ..;
21164                     shift;
21165                 fi;
21166             fi
21167             ;;
21168         esac;
21169     done'
21170 tdir=`pwd`
21171 cd "$rsrc/ext"
21172 set X
21173 shift
21174 eval $find_extensions
21175 # Special case:  Add in modules that nest beyond the first level.
21176 # Currently threads/shared and Hash/Util/FieldHash, since they are
21177 # not picked up by the recursive find above (and adding in general
21178 # recursive finding breaks SDBM_File/sdbm).
21179 # A.D. 20011025 (SDBM), ajgough 20071008 (FieldHash)
21180 known_extensions="$known_extensions threads/shared Hash/Util/FieldHash"
21181 set X $known_extensions
21182 shift
21183 known_extensions="$*"
21184 set X $nonxs_extensions
21185 shift
21186 nonxs_extensions="$*"
21187 cd "$tdir"
21188
21189 : Now see which are supported on this system.
21190 avail_ext=''
21191 for xxx in $known_extensions ; do
21192         case "$xxx" in
21193         DB_File|db_file)
21194                 case "$i_db" in
21195                 $define) avail_ext="$avail_ext $xxx" ;;
21196                 esac
21197                 ;;
21198         GDBM_File|gdbm_fil)
21199                 case "$i_gdbm" in
21200                 $define) avail_ext="$avail_ext $xxx" ;;
21201                 esac
21202                 ;;
21203         I18N/Langinfo|i18n_lan)
21204                 case "$i_langinfo$d_nl_langinfo" in
21205                 $define$define) avail_ext="$avail_ext $xxx" ;;
21206                 esac
21207                 ;;
21208         IPC/SysV|ipc/sysv)
21209                 : XXX Do we need a useipcsysv variable here
21210                 case "${d_msg}${d_sem}${d_shm}" in
21211                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
21212                 esac
21213                 ;;
21214         NDBM_File|ndbm_fil)
21215                 case "$i_ndbm" in
21216                 $define)
21217                     case "$osname-$use64bitint" in
21218                     hpux-define)
21219                         case "$libs" in
21220                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
21221                         esac
21222                         ;;
21223                     *) avail_ext="$avail_ext $xxx" ;;
21224                     esac
21225                     ;;
21226                 esac
21227                 ;;
21228         ODBM_File|odbm_fil)
21229                 case "${i_dbm}${i_rpcsvcdbm}" in
21230                 *"${define}"*)
21231                     case "$d_cplusplus" in
21232                     define) ;; # delete as a function name will not work
21233                     *)  case "$osname-$use64bitint" in
21234                         hpux-define)
21235                             case "$libs" in
21236                             *-ldbm*) avail_ext="$avail_ext $xxx" ;;
21237                             esac
21238                             ;;
21239                         *) avail_ext="$avail_ext $xxx" ;;
21240                         esac
21241                         ;;
21242                     esac
21243                     ;;
21244                 esac
21245                 ;;
21246         Opcode|opcode)
21247                 case "$useopcode" in
21248                 true|define|y) avail_ext="$avail_ext $xxx" ;;
21249                 esac
21250                 ;;
21251         POSIX|posix)
21252                 case "$useposix" in
21253                 true|define|y) avail_ext="$avail_ext $xxx" ;;
21254                 esac
21255                 ;;
21256         Socket|socket)
21257                 case "$d_socket" in
21258                 true|$define|y)
21259                     case "$osname" in
21260                     beos) ;; # not unless BONE
21261                     *) avail_ext="$avail_ext $xxx" ;;
21262                     esac
21263                     ;;
21264                 esac
21265                 ;;
21266         Sys/Syslog|sys/syslog)
21267                 : XXX syslog requires socket
21268                 case "$d_socket" in
21269                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
21270                 esac
21271                 ;;
21272         Thread|thread)
21273                 case "$usethreads" in
21274                 true|$define|y)
21275                         case "$use5005threads" in
21276                         $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
21277                         esac
21278                 esac
21279                 ;;
21280         threads|threads/shared)
21281                 # threads and threads::shared are special cases.
21282                 # To stop people from asking "Perl 5.8.0 was supposed
21283                 # to have this new fancy threads implementation but my
21284                 # perl doesn't have it" and from people trying to
21285                 # (re)install the threads module using CPAN.pm and
21286                 # CPAN.pm then offering to reinstall Perl 5.8.0,
21287                 # the threads.pm and threads/shared.pm will always be
21288                 # there, croaking informatively ("you need to rebuild
21289                 # all of Perl with threads, sorry") when threads haven't
21290                 # been compiled in.
21291                 # --jhi
21292                 avail_ext="$avail_ext $xxx"
21293                 ;;
21294         Win32*)
21295                 case "$osname" in
21296                 cygwin) avail_ext="$avail_ext $xxx" ;;
21297                 esac
21298                 ;;
21299         XS/APItest|xs/apitest)
21300                 # This is just for testing.  Skip it unless we have dynamic loading.
21301
21302                 case "$usedl" in
21303                 $define) avail_ext="$avail_ext $xxx" ;;
21304                 esac
21305                 ;;
21306         XS/Typemap|xs/typemap)
21307                 # This is just for testing.  Skip it unless we have dynamic loading.
21308                 case "$usedl" in
21309                 $define) avail_ext="$avail_ext $xxx" ;;
21310                 esac
21311                 ;;
21312         *)      avail_ext="$avail_ext $xxx"
21313                 ;;
21314         esac
21315 done
21316
21317 set X $avail_ext
21318 shift
21319 avail_ext="$*"
21320
21321 case "$onlyextensions" in
21322 '') ;;
21323 *)  keepextensions=''
21324     echo "You have requested that only certains extensions be included..." >&4
21325     for i in $onlyextensions; do
21326         case " $avail_ext " in
21327         *" $i "*)
21328             echo "Keeping extension $i."
21329             keepextensions="$keepextensions $i"
21330             ;;
21331         *) echo "Ignoring extension $i." ;;
21332         esac
21333     done
21334     avail_ext="$keepextensions"
21335     ;;
21336 esac
21337
21338 case "$noextensions" in
21339 '') ;;
21340 *)  keepextensions=''
21341     echo "You have requested that certain extensions be ignored..." >&4
21342     for i in $avail_ext; do
21343         case " $noextensions " in
21344         *" $i "*) echo "Ignoring extension $i." ;;
21345         *) echo "Keeping extension $i.";
21346            keepextensions="$keepextensions $i"
21347            ;;
21348         esac
21349     done
21350     avail_ext="$keepextensions"
21351     ;;
21352 esac
21353
21354 : Now see which nonxs extensions are supported on this system.
21355 : For now assume all are.
21356 nonxs_ext=''
21357 for xxx in $nonxs_extensions ; do
21358         case "$xxx" in
21359         *)      nonxs_ext="$nonxs_ext $xxx"
21360                 ;;
21361         esac
21362 done
21363
21364 set X $nonxs_ext
21365 shift
21366 nonxs_ext="$*"
21367
21368 case $usedl in
21369 $define)
21370         $cat <<EOM
21371 A number of extensions are supplied with $package.  You may choose to
21372 compile these extensions for dynamic loading (the default), compile
21373 them into the $package executable (static loading), or not include
21374 them at all.  Answer "none" to include no extensions.
21375 Note that DynaLoader is always built and need not be mentioned here.
21376
21377 EOM
21378         case "$dynamic_ext" in
21379         '')
21380                 : Exclude those listed in static_ext
21381                 dflt=''
21382                 for xxx in $avail_ext; do
21383                         case " $static_ext " in
21384                         *" $xxx "*) ;;
21385                         *) dflt="$dflt $xxx" ;;
21386                         esac
21387                 done
21388                 set X $dflt
21389                 shift
21390                 dflt="$*"
21391                 ;;
21392         *)      dflt="$dynamic_ext"
21393                 # Perhaps we are reusing an old out-of-date config.sh.
21394                 case "$hint" in
21395                 previous)
21396                         if test X"$dynamic_ext" != X"$avail_ext"; then
21397                                 $cat <<EOM
21398 NOTICE:  Your previous config.sh list may be incorrect.
21399 The extensions now available to you are
21400         ${avail_ext}
21401 but the default list from your previous config.sh is
21402         ${dynamic_ext}
21403
21404 EOM
21405                         fi
21406                         ;;
21407                 esac
21408                 ;;
21409         esac
21410         case "$dflt" in
21411         '')     dflt=none;;
21412         esac
21413         rp="What extensions do you wish to load dynamically?"
21414         . ./myread
21415         case "$ans" in
21416         none) dynamic_ext=' ' ;;
21417         *) dynamic_ext="$ans" ;;
21418         esac
21419
21420         case "$static_ext" in
21421         '')
21422                 : Exclude those already listed in dynamic linking
21423                 dflt=''
21424                 for xxx in $avail_ext; do
21425                         case " $dynamic_ext " in
21426                         *" $xxx "*) ;;
21427                         *) dflt="$dflt $xxx" ;;
21428                         esac
21429                 done
21430                 set X $dflt
21431                 shift
21432                 dflt="$*"
21433                 ;;
21434         *)  dflt="$static_ext"
21435                 ;;
21436         esac
21437
21438         case "$dflt" in
21439         '')     dflt=none;;
21440         esac
21441         rp="What extensions do you wish to load statically?"
21442         . ./myread
21443         case "$ans" in
21444         none) static_ext=' ' ;;
21445         *) static_ext="$ans" ;;
21446         esac
21447         ;;
21448 *)
21449         $cat <<EOM
21450 A number of extensions are supplied with $package.  Answer "none"
21451 to include no extensions.
21452 Note that DynaLoader is always built and need not be mentioned here.
21453
21454 EOM
21455         case "$static_ext" in
21456         '') dflt="$avail_ext" ;;
21457         *)      dflt="$static_ext"
21458                 # Perhaps we are reusing an old out-of-date config.sh.
21459                 case "$hint" in
21460                 previous)
21461                         if test X"$static_ext" != X"$avail_ext"; then
21462                                 $cat <<EOM
21463 NOTICE:  Your previous config.sh list may be incorrect.
21464 The extensions now available to you are
21465         ${avail_ext}
21466 but the default list from your previous config.sh is
21467         ${static_ext}
21468
21469 EOM
21470                         fi
21471                         ;;
21472                 esac
21473                 ;;
21474         esac
21475         : Exclude those that are not xs extensions
21476         case "$dflt" in
21477         '')     dflt=none;;
21478         esac
21479         rp="What extensions do you wish to include?"
21480         . ./myread
21481         case "$ans" in
21482         none) static_ext=' ' ;;
21483         *) static_ext="$ans" ;;
21484         esac
21485         ;;
21486 esac
21487 #
21488 # Encode is a special case.  If we are building Encode as a static
21489 # extension, we need to explicitly list its subextensions as well.
21490 # For other nested extensions, this is handled automatically by
21491 # the appropriate Makefile.PL.
21492 case " $static_ext " in
21493         *" Encode "*) # Add the subextensions of Encode
21494         cd "$rsrc/ext"
21495         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
21496                 static_ext="$static_ext Encode/$xxx"
21497         done
21498         cd "$tdir"
21499         ;;
21500 esac
21501
21502 set X $dynamic_ext $static_ext $nonxs_ext
21503 shift
21504 extensions="$*"
21505
21506 # Sanity check:  We require an extension suitable for use with
21507 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
21508 # should show up as failures in the test suite, but it's helpful to
21509 # catch them now.) The 'extensions' list is normally sorted
21510 # alphabetically, so we need to accept either
21511 #    DB_File ... Fcntl ... IO  ....
21512 # or something like
21513 #    Fcntl ... NDBM_File ... IO  ....
21514 case " $extensions"  in
21515 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
21516 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
21517 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
21518 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
21519    echo "WARNING: The Perl you are building will be quite crippled." >& 4
21520    ;;
21521 esac
21522
21523 : Remove libraries needed only for extensions
21524 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
21525 : The exception is SunOS 4.x, which needs them.
21526 case "${osname}X${osvers}" in
21527 sunos*X4*)
21528     perllibs="$libs"
21529     ;;
21530 *) case "$usedl" in
21531     $define|true|[yY]*)
21532             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
21533             shift
21534             perllibs="$*"
21535             ;;
21536     *)  perllibs="$libs"
21537             ;;
21538     esac
21539     ;;
21540 esac
21541
21542 : Remove build directory name from cppstdin so it can be used from
21543 : either the present location or the final installed location.
21544 echo " "
21545 : Get out of the UU directory to get correct path name.
21546 cd ..
21547 case "$cppstdin" in
21548 `pwd`/cppstdin)
21549         echo "Stripping down cppstdin path name"
21550         cppstdin=cppstdin
21551         ;;
21552 esac
21553 cd UU
21554
21555 : end of configuration questions
21556 echo " "
21557 echo "End of configuration questions."
21558 echo " "
21559
21560 : back to where it started
21561 if test -d ../UU; then
21562         cd ..
21563 fi
21564
21565 : configuration may be patched via a 'config.arch' file
21566 if $test -f config.arch; then
21567         echo "I see a config.arch file, loading it."
21568         . ./config.arch
21569 fi
21570
21571 : configuration may be patched via a 'config.over' file
21572 if $test -f config.over; then
21573         echo " "
21574         dflt=y
21575         rp='I see a config.over file.  Do you wish to load it?'
21576         . UU/myread
21577         case "$ans" in
21578         n*) echo "OK, I'll ignore it.";;
21579         *)      . ./config.over
21580                 echo "Configuration override changes have been loaded."
21581                 ;;
21582         esac
21583 fi
21584
21585 : in case they want portability, strip down executable paths
21586 case "$d_portable" in
21587 "$define")
21588         echo " "
21589         echo "Stripping down executable paths..." >&4
21590         for file in $loclist $trylist; do
21591                 eval temp=\$$file
21592                 eval $file=`basename $temp`
21593         done
21594         ;;
21595 esac
21596
21597 : create config.sh file
21598 echo " "
21599 echo "Creating config.sh..." >&4
21600 $spitshell <<EOT >config.sh
21601 $startsh
21602 #
21603 # This file was produced by running the Configure script. It holds all the
21604 # definitions figured out by Configure. Should you modify one of these values,
21605 # do not forget to propagate your changes by running "Configure -der". You may
21606 # instead choose to run each of the .SH files by yourself, or "Configure -S".
21607 #
21608
21609 # Package name      : $package
21610 # Source directory  : $src
21611 # Configuration time: $cf_time
21612 # Configured by     : $cf_by
21613 # Target system     : $myuname
21614
21615 Author='$Author'
21616 Date='$Date'
21617 Header='$Header'
21618 Id='$Id'
21619 Locker='$Locker'
21620 Log='$Log'
21621 Mcc='$Mcc'
21622 RCSfile='$RCSfile'
21623 Revision='$Revision'
21624 Source='$Source'
21625 State='$State'
21626 _a='$_a'
21627 _exe='$_exe'
21628 _o='$_o'
21629 afs='$afs'
21630 afsroot='$afsroot'
21631 alignbytes='$alignbytes'
21632 ansi2knr='$ansi2knr'
21633 aphostname='$aphostname'
21634 api_revision='$api_revision'
21635 api_subversion='$api_subversion'
21636 api_version='$api_version'
21637 api_versionstring='$api_versionstring'
21638 ar='$ar'
21639 archlib='$archlib'
21640 archlibexp='$archlibexp'
21641 archname64='$archname64'
21642 archname='$archname'
21643 archobjs='$archobjs'
21644 asctime_r_proto='$asctime_r_proto'
21645 awk='$awk'
21646 baserev='$baserev'
21647 bash='$bash'
21648 bin='$bin'
21649 binexp='$binexp'
21650 bison='$bison'
21651 byacc='$byacc'
21652 byteorder='$byteorder'
21653 c='$c'
21654 castflags='$castflags'
21655 cat='$cat'
21656 cc='$cc'
21657 cccdlflags='$cccdlflags'
21658 ccdlflags='$ccdlflags'
21659 ccflags='$ccflags'
21660 ccflags_uselargefiles='$ccflags_uselargefiles'
21661 ccname='$ccname'
21662 ccsymbols='$ccsymbols'
21663 ccversion='$ccversion'
21664 cf_by='$cf_by'
21665 cf_email='$cf_email'
21666 cf_time='$cf_time'
21667 chgrp='$chgrp'
21668 chmod='$chmod'
21669 chown='$chown'
21670 clocktype='$clocktype'
21671 comm='$comm'
21672 compress='$compress'
21673 contains='$contains'
21674 cp='$cp'
21675 cpio='$cpio'
21676 cpp='$cpp'
21677 cpp_stuff='$cpp_stuff'
21678 cppccsymbols='$cppccsymbols'
21679 cppflags='$cppflags'
21680 cpplast='$cpplast'
21681 cppminus='$cppminus'
21682 cpprun='$cpprun'
21683 cppstdin='$cppstdin'
21684 cppsymbols='$cppsymbols'
21685 crypt_r_proto='$crypt_r_proto'
21686 cryptlib='$cryptlib'
21687 csh='$csh'
21688 ctermid_r_proto='$ctermid_r_proto'
21689 ctime_r_proto='$ctime_r_proto'
21690 d_Gconvert='$d_Gconvert'
21691 d_PRIEUldbl='$d_PRIEUldbl'
21692 d_PRIFUldbl='$d_PRIFUldbl'
21693 d_PRIGUldbl='$d_PRIGUldbl'
21694 d_PRIXU64='$d_PRIXU64'
21695 d_PRId64='$d_PRId64'
21696 d_PRIeldbl='$d_PRIeldbl'
21697 d_PRIfldbl='$d_PRIfldbl'
21698 d_PRIgldbl='$d_PRIgldbl'
21699 d_PRIi64='$d_PRIi64'
21700 d_PRIo64='$d_PRIo64'
21701 d_PRIu64='$d_PRIu64'
21702 d_PRIx64='$d_PRIx64'
21703 d_SCNfldbl='$d_SCNfldbl'
21704 d__fwalk='$d__fwalk'
21705 d_access='$d_access'
21706 d_accessx='$d_accessx'
21707 d_aintl='$d_aintl'
21708 d_alarm='$d_alarm'
21709 d_archlib='$d_archlib'
21710 d_asctime_r='$d_asctime_r'
21711 d_atolf='$d_atolf'
21712 d_atoll='$d_atoll'
21713 d_attribute_format='$d_attribute_format'
21714 d_attribute_malloc='$d_attribute_malloc'
21715 d_attribute_nonnull='$d_attribute_nonnull'
21716 d_attribute_noreturn='$d_attribute_noreturn'
21717 d_attribute_pure='$d_attribute_pure'
21718 d_attribute_unused='$d_attribute_unused'
21719 d_attribute_warn_unused_result='$d_attribute_warn_unused_result'
21720 d_bcmp='$d_bcmp'
21721 d_bcopy='$d_bcopy'
21722 d_bsd='$d_bsd'
21723 d_bsdgetpgrp='$d_bsdgetpgrp'
21724 d_bsdsetpgrp='$d_bsdsetpgrp'
21725 d_builtin_choose_expr='$d_builtin_choose_expr'
21726 d_builtin_expect='$d_builtin_expect'
21727 d_bzero='$d_bzero'
21728 d_c99_variadic_macros='$d_c99_variadic_macros'
21729 d_casti32='$d_casti32'
21730 d_castneg='$d_castneg'
21731 d_charvspr='$d_charvspr'
21732 d_chown='$d_chown'
21733 d_chroot='$d_chroot'
21734 d_chsize='$d_chsize'
21735 d_class='$d_class'
21736 d_clearenv='$d_clearenv'
21737 d_closedir='$d_closedir'
21738 d_cmsghdr_s='$d_cmsghdr_s'
21739 d_const='$d_const'
21740 d_copysignl='$d_copysignl'
21741 d_cplusplus='$d_cplusplus'
21742 d_crypt='$d_crypt'
21743 d_crypt_r='$d_crypt_r'
21744 d_csh='$d_csh'
21745 d_ctermid='$d_ctermid'
21746 d_ctermid_r='$d_ctermid_r'
21747 d_ctime_r='$d_ctime_r'
21748 d_cuserid='$d_cuserid'
21749 d_dbl_dig='$d_dbl_dig'
21750 d_dbminitproto='$d_dbminitproto'
21751 d_difftime='$d_difftime'
21752 d_dir_dd_fd='$d_dir_dd_fd'
21753 d_dirfd='$d_dirfd'
21754 d_dirnamlen='$d_dirnamlen'
21755 d_dlerror='$d_dlerror'
21756 d_dlopen='$d_dlopen'
21757 d_dlsymun='$d_dlsymun'
21758 d_dosuid='$d_dosuid'
21759 d_drand48_r='$d_drand48_r'
21760 d_drand48proto='$d_drand48proto'
21761 d_dup2='$d_dup2'
21762 d_eaccess='$d_eaccess'
21763 d_endgrent='$d_endgrent'
21764 d_endgrent_r='$d_endgrent_r'
21765 d_endhent='$d_endhent'
21766 d_endhostent_r='$d_endhostent_r'
21767 d_endnent='$d_endnent'
21768 d_endnetent_r='$d_endnetent_r'
21769 d_endpent='$d_endpent'
21770 d_endprotoent_r='$d_endprotoent_r'
21771 d_endpwent='$d_endpwent'
21772 d_endpwent_r='$d_endpwent_r'
21773 d_endsent='$d_endsent'
21774 d_endservent_r='$d_endservent_r'
21775 d_eofnblk='$d_eofnblk'
21776 d_eunice='$d_eunice'
21777 d_faststdio='$d_faststdio'
21778 d_fchdir='$d_fchdir'
21779 d_fchmod='$d_fchmod'
21780 d_fchown='$d_fchown'
21781 d_fcntl='$d_fcntl'
21782 d_fcntl_can_lock='$d_fcntl_can_lock'
21783 d_fd_macros='$d_fd_macros'
21784 d_fd_set='$d_fd_set'
21785 d_fds_bits='$d_fds_bits'
21786 d_fgetpos='$d_fgetpos'
21787 d_finite='$d_finite'
21788 d_finitel='$d_finitel'
21789 d_flexfnam='$d_flexfnam'
21790 d_flock='$d_flock'
21791 d_flockproto='$d_flockproto'
21792 d_fork='$d_fork'
21793 d_fp_class='$d_fp_class'
21794 d_fpathconf='$d_fpathconf'
21795 d_fpclass='$d_fpclass'
21796 d_fpclassify='$d_fpclassify'
21797 d_fpclassl='$d_fpclassl'
21798 d_fpos64_t='$d_fpos64_t'
21799 d_frexpl='$d_frexpl'
21800 d_fs_data_s='$d_fs_data_s'
21801 d_fseeko='$d_fseeko'
21802 d_fsetpos='$d_fsetpos'
21803 d_fstatfs='$d_fstatfs'
21804 d_fstatvfs='$d_fstatvfs'
21805 d_fsync='$d_fsync'
21806 d_ftello='$d_ftello'
21807 d_ftime='$d_ftime'
21808 d_futimes='$d_futimes'
21809 d_getcwd='$d_getcwd'
21810 d_getespwnam='$d_getespwnam'
21811 d_getfsstat='$d_getfsstat'
21812 d_getgrent='$d_getgrent'
21813 d_getgrent_r='$d_getgrent_r'
21814 d_getgrgid_r='$d_getgrgid_r'
21815 d_getgrnam_r='$d_getgrnam_r'
21816 d_getgrps='$d_getgrps'
21817 d_gethbyaddr='$d_gethbyaddr'
21818 d_gethbyname='$d_gethbyname'
21819 d_gethent='$d_gethent'
21820 d_gethname='$d_gethname'
21821 d_gethostbyaddr_r='$d_gethostbyaddr_r'
21822 d_gethostbyname_r='$d_gethostbyname_r'
21823 d_gethostent_r='$d_gethostent_r'
21824 d_gethostprotos='$d_gethostprotos'
21825 d_getitimer='$d_getitimer'
21826 d_getlogin='$d_getlogin'
21827 d_getlogin_r='$d_getlogin_r'
21828 d_getmnt='$d_getmnt'
21829 d_getmntent='$d_getmntent'
21830 d_getnbyaddr='$d_getnbyaddr'
21831 d_getnbyname='$d_getnbyname'
21832 d_getnent='$d_getnent'
21833 d_getnetbyaddr_r='$d_getnetbyaddr_r'
21834 d_getnetbyname_r='$d_getnetbyname_r'
21835 d_getnetent_r='$d_getnetent_r'
21836 d_getnetprotos='$d_getnetprotos'
21837 d_getpagsz='$d_getpagsz'
21838 d_getpbyname='$d_getpbyname'
21839 d_getpbynumber='$d_getpbynumber'
21840 d_getpent='$d_getpent'
21841 d_getpgid='$d_getpgid'
21842 d_getpgrp2='$d_getpgrp2'
21843 d_getpgrp='$d_getpgrp'
21844 d_getppid='$d_getppid'
21845 d_getprior='$d_getprior'
21846 d_getprotobyname_r='$d_getprotobyname_r'
21847 d_getprotobynumber_r='$d_getprotobynumber_r'
21848 d_getprotoent_r='$d_getprotoent_r'
21849 d_getprotoprotos='$d_getprotoprotos'
21850 d_getprpwnam='$d_getprpwnam'
21851 d_getpwent='$d_getpwent'
21852 d_getpwent_r='$d_getpwent_r'
21853 d_getpwnam_r='$d_getpwnam_r'
21854 d_getpwuid_r='$d_getpwuid_r'
21855 d_getsbyname='$d_getsbyname'
21856 d_getsbyport='$d_getsbyport'
21857 d_getsent='$d_getsent'
21858 d_getservbyname_r='$d_getservbyname_r'
21859 d_getservbyport_r='$d_getservbyport_r'
21860 d_getservent_r='$d_getservent_r'
21861 d_getservprotos='$d_getservprotos'
21862 d_getspnam='$d_getspnam'
21863 d_getspnam_r='$d_getspnam_r'
21864 d_gettimeod='$d_gettimeod'
21865 d_gmtime_r='$d_gmtime_r'
21866 d_gnulibc='$d_gnulibc'
21867 d_grpasswd='$d_grpasswd'
21868 d_hasmntopt='$d_hasmntopt'
21869 d_htonl='$d_htonl'
21870 d_ilogbl='$d_ilogbl'
21871 d_inc_version_list='$d_inc_version_list'
21872 d_index='$d_index'
21873 d_inetaton='$d_inetaton'
21874 d_int64_t='$d_int64_t'
21875 d_isascii='$d_isascii'
21876 d_isfinite='$d_isfinite'
21877 d_isinf='$d_isinf'
21878 d_isnan='$d_isnan'
21879 d_isnanl='$d_isnanl'
21880 d_killpg='$d_killpg'
21881 d_lchown='$d_lchown'
21882 d_ldbl_dig='$d_ldbl_dig'
21883 d_libm_lib_version='$d_libm_lib_version'
21884 d_link='$d_link'
21885 d_localtime_r='$d_localtime_r'
21886 d_localtime_r_needs_tzset='$d_localtime_r_needs_tzset'
21887 d_locconv='$d_locconv'
21888 d_lockf='$d_lockf'
21889 d_longdbl='$d_longdbl'
21890 d_longlong='$d_longlong'
21891 d_lseekproto='$d_lseekproto'
21892 d_lstat='$d_lstat'
21893 d_madvise='$d_madvise'
21894 d_malloc_good_size='$d_malloc_good_size'
21895 d_malloc_size='$d_malloc_size'
21896 d_mblen='$d_mblen'
21897 d_mbstowcs='$d_mbstowcs'
21898 d_mbtowc='$d_mbtowc'
21899 d_memchr='$d_memchr'
21900 d_memcmp='$d_memcmp'
21901 d_memcpy='$d_memcpy'
21902 d_memmove='$d_memmove'
21903 d_memset='$d_memset'
21904 d_mkdir='$d_mkdir'
21905 d_mkdtemp='$d_mkdtemp'
21906 d_mkfifo='$d_mkfifo'
21907 d_mkstemp='$d_mkstemp'
21908 d_mkstemps='$d_mkstemps'
21909 d_mktime='$d_mktime'
21910 d_mmap='$d_mmap'
21911 d_modfl='$d_modfl'
21912 d_modfl_pow32_bug='$d_modfl_pow32_bug'
21913 d_modflproto='$d_modflproto'
21914 d_mprotect='$d_mprotect'
21915 d_msg='$d_msg'
21916 d_msg_ctrunc='$d_msg_ctrunc'
21917 d_msg_dontroute='$d_msg_dontroute'
21918 d_msg_oob='$d_msg_oob'
21919 d_msg_peek='$d_msg_peek'
21920 d_msg_proxy='$d_msg_proxy'
21921 d_msgctl='$d_msgctl'
21922 d_msgget='$d_msgget'
21923 d_msghdr_s='$d_msghdr_s'
21924 d_msgrcv='$d_msgrcv'
21925 d_msgsnd='$d_msgsnd'
21926 d_msync='$d_msync'
21927 d_munmap='$d_munmap'
21928 d_mymalloc='$d_mymalloc'
21929 d_nice='$d_nice'
21930 d_nl_langinfo='$d_nl_langinfo'
21931 d_nv_preserves_uv='$d_nv_preserves_uv'
21932 d_nv_zero_is_allbits_zero='$d_nv_zero_is_allbits_zero'
21933 d_off64_t='$d_off64_t'
21934 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
21935 d_oldpthreads='$d_oldpthreads'
21936 d_oldsock='$d_oldsock'
21937 d_open3='$d_open3'
21938 d_pathconf='$d_pathconf'
21939 d_pause='$d_pause'
21940 d_perl_otherlibdirs='$d_perl_otherlibdirs'
21941 d_phostname='$d_phostname'
21942 d_pipe='$d_pipe'
21943 d_poll='$d_poll'
21944 d_portable='$d_portable'
21945 d_printf_format_null='$d_printf_format_null'
21946 d_procselfexe='$d_procselfexe'
21947 d_pseudofork='$d_pseudofork'
21948 d_pthread_atfork='$d_pthread_atfork'
21949 d_pthread_attr_setscope='$d_pthread_attr_setscope'
21950 d_pthread_yield='$d_pthread_yield'
21951 d_pwage='$d_pwage'
21952 d_pwchange='$d_pwchange'
21953 d_pwclass='$d_pwclass'
21954 d_pwcomment='$d_pwcomment'
21955 d_pwexpire='$d_pwexpire'
21956 d_pwgecos='$d_pwgecos'
21957 d_pwpasswd='$d_pwpasswd'
21958 d_pwquota='$d_pwquota'
21959 d_qgcvt='$d_qgcvt'
21960 d_quad='$d_quad'
21961 d_random_r='$d_random_r'
21962 d_readdir64_r='$d_readdir64_r'
21963 d_readdir='$d_readdir'
21964 d_readdir_r='$d_readdir_r'
21965 d_readlink='$d_readlink'
21966 d_readv='$d_readv'
21967 d_recvmsg='$d_recvmsg'
21968 d_rename='$d_rename'
21969 d_rewinddir='$d_rewinddir'
21970 d_rmdir='$d_rmdir'
21971 d_safebcpy='$d_safebcpy'
21972 d_safemcpy='$d_safemcpy'
21973 d_sanemcmp='$d_sanemcmp'
21974 d_sbrkproto='$d_sbrkproto'
21975 d_scalbnl='$d_scalbnl'
21976 d_sched_yield='$d_sched_yield'
21977 d_scm_rights='$d_scm_rights'
21978 d_seekdir='$d_seekdir'
21979 d_select='$d_select'
21980 d_sem='$d_sem'
21981 d_semctl='$d_semctl'
21982 d_semctl_semid_ds='$d_semctl_semid_ds'
21983 d_semctl_semun='$d_semctl_semun'
21984 d_semget='$d_semget'
21985 d_semop='$d_semop'
21986 d_sendmsg='$d_sendmsg'
21987 d_setegid='$d_setegid'
21988 d_seteuid='$d_seteuid'
21989 d_setgrent='$d_setgrent'
21990 d_setgrent_r='$d_setgrent_r'
21991 d_setgrps='$d_setgrps'
21992 d_sethent='$d_sethent'
21993 d_sethostent_r='$d_sethostent_r'
21994 d_setitimer='$d_setitimer'
21995 d_setlinebuf='$d_setlinebuf'
21996 d_setlocale='$d_setlocale'
21997 d_setlocale_r='$d_setlocale_r'
21998 d_setnent='$d_setnent'
21999 d_setnetent_r='$d_setnetent_r'
22000 d_setpent='$d_setpent'
22001 d_setpgid='$d_setpgid'
22002 d_setpgrp2='$d_setpgrp2'
22003 d_setpgrp='$d_setpgrp'
22004 d_setprior='$d_setprior'
22005 d_setproctitle='$d_setproctitle'
22006 d_setprotoent_r='$d_setprotoent_r'
22007 d_setpwent='$d_setpwent'
22008 d_setpwent_r='$d_setpwent_r'
22009 d_setregid='$d_setregid'
22010 d_setresgid='$d_setresgid'
22011 d_setresuid='$d_setresuid'
22012 d_setreuid='$d_setreuid'
22013 d_setrgid='$d_setrgid'
22014 d_setruid='$d_setruid'
22015 d_setsent='$d_setsent'
22016 d_setservent_r='$d_setservent_r'
22017 d_setsid='$d_setsid'
22018 d_setvbuf='$d_setvbuf'
22019 d_sfio='$d_sfio'
22020 d_shm='$d_shm'
22021 d_shmat='$d_shmat'
22022 d_shmatprototype='$d_shmatprototype'
22023 d_shmctl='$d_shmctl'
22024 d_shmdt='$d_shmdt'
22025 d_shmget='$d_shmget'
22026 d_sigaction='$d_sigaction'
22027 d_signbit='$d_signbit'
22028 d_sigprocmask='$d_sigprocmask'
22029 d_sigsetjmp='$d_sigsetjmp'
22030 d_sitearch='$d_sitearch'
22031 d_snprintf='$d_snprintf'
22032 d_sockatmark='$d_sockatmark'
22033 d_sockatmarkproto='$d_sockatmarkproto'
22034 d_socket='$d_socket'
22035 d_socklen_t='$d_socklen_t'
22036 d_sockpair='$d_sockpair'
22037 d_socks5_init='$d_socks5_init'
22038 d_sprintf_returns_strlen='$d_sprintf_returns_strlen'
22039 d_sqrtl='$d_sqrtl'
22040 d_srand48_r='$d_srand48_r'
22041 d_srandom_r='$d_srandom_r'
22042 d_sresgproto='$d_sresgproto'
22043 d_sresuproto='$d_sresuproto'
22044 d_statblks='$d_statblks'
22045 d_statfs_f_flags='$d_statfs_f_flags'
22046 d_statfs_s='$d_statfs_s'
22047 d_statvfs='$d_statvfs'
22048 d_stdio_cnt_lval='$d_stdio_cnt_lval'
22049 d_stdio_ptr_lval='$d_stdio_ptr_lval'
22050 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
22051 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
22052 d_stdio_stream_array='$d_stdio_stream_array'
22053 d_stdiobase='$d_stdiobase'
22054 d_stdstdio='$d_stdstdio'
22055 d_strchr='$d_strchr'
22056 d_strcoll='$d_strcoll'
22057 d_strctcpy='$d_strctcpy'
22058 d_strerrm='$d_strerrm'
22059 d_strerror='$d_strerror'
22060 d_strerror_r='$d_strerror_r'
22061 d_strftime='$d_strftime'
22062 d_strlcat='$d_strlcat'
22063 d_strlcpy='$d_strlcpy'
22064 d_strtod='$d_strtod'
22065 d_strtol='$d_strtol'
22066 d_strtold='$d_strtold'
22067 d_strtoll='$d_strtoll'
22068 d_strtoq='$d_strtoq'
22069 d_strtoul='$d_strtoul'
22070 d_strtoull='$d_strtoull'
22071 d_strtouq='$d_strtouq'
22072 d_strxfrm='$d_strxfrm'
22073 d_suidsafe='$d_suidsafe'
22074 d_symlink='$d_symlink'
22075 d_syscall='$d_syscall'
22076 d_syscallproto='$d_syscallproto'
22077 d_sysconf='$d_sysconf'
22078 d_sysernlst='$d_sysernlst'
22079 d_syserrlst='$d_syserrlst'
22080 d_system='$d_system'
22081 d_tcgetpgrp='$d_tcgetpgrp'
22082 d_tcsetpgrp='$d_tcsetpgrp'
22083 d_telldir='$d_telldir'
22084 d_telldirproto='$d_telldirproto'
22085 d_time='$d_time'
22086 d_times='$d_times'
22087 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
22088 d_tm_tm_zone='$d_tm_tm_zone'
22089 d_tmpnam_r='$d_tmpnam_r'
22090 d_truncate='$d_truncate'
22091 d_ttyname_r='$d_ttyname_r'
22092 d_tzname='$d_tzname'
22093 d_u32align='$d_u32align'
22094 d_ualarm='$d_ualarm'
22095 d_umask='$d_umask'
22096 d_uname='$d_uname'
22097 d_union_semun='$d_union_semun'
22098 d_unordered='$d_unordered'
22099 d_unsetenv='$d_unsetenv'
22100 d_usleep='$d_usleep'
22101 d_usleepproto='$d_usleepproto'
22102 d_ustat='$d_ustat'
22103 d_vendorarch='$d_vendorarch'
22104 d_vendorbin='$d_vendorbin'
22105 d_vendorlib='$d_vendorlib'
22106 d_vendorscript='$d_vendorscript'
22107 d_vfork='$d_vfork'
22108 d_void_closedir='$d_void_closedir'
22109 d_voidsig='$d_voidsig'
22110 d_voidtty='$d_voidtty'
22111 d_volatile='$d_volatile'
22112 d_vprintf='$d_vprintf'
22113 d_vsnprintf='$d_vsnprintf'
22114 d_wait4='$d_wait4'
22115 d_waitpid='$d_waitpid'
22116 d_wcstombs='$d_wcstombs'
22117 d_wctomb='$d_wctomb'
22118 d_writev='$d_writev'
22119 d_xenix='$d_xenix'
22120 date='$date'
22121 db_hashtype='$db_hashtype'
22122 db_prefixtype='$db_prefixtype'
22123 db_version_major='$db_version_major'
22124 db_version_minor='$db_version_minor'
22125 db_version_patch='$db_version_patch'
22126 defvoidused='$defvoidused'
22127 direntrytype='$direntrytype'
22128 dlext='$dlext'
22129 dlsrc='$dlsrc'
22130 doublesize='$doublesize'
22131 drand01='$drand01'
22132 drand48_r_proto='$drand48_r_proto'
22133 dtrace='$dtrace'
22134 dynamic_ext='$dynamic_ext'
22135 eagain='$eagain'
22136 ebcdic='$ebcdic'
22137 echo='$echo'
22138 egrep='$egrep'
22139 emacs='$emacs'
22140 endgrent_r_proto='$endgrent_r_proto'
22141 endhostent_r_proto='$endhostent_r_proto'
22142 endnetent_r_proto='$endnetent_r_proto'
22143 endprotoent_r_proto='$endprotoent_r_proto'
22144 endpwent_r_proto='$endpwent_r_proto'
22145 endservent_r_proto='$endservent_r_proto'
22146 eunicefix='$eunicefix'
22147 exe_ext='$exe_ext'
22148 expr='$expr'
22149 extensions='$extensions'
22150 extras='$extras'
22151 fflushNULL='$fflushNULL'
22152 fflushall='$fflushall'
22153 find='$find'
22154 firstmakefile='$firstmakefile'
22155 flex='$flex'
22156 fpossize='$fpossize'
22157 fpostype='$fpostype'
22158 freetype='$freetype'
22159 from='$from'
22160 full_ar='$full_ar'
22161 full_csh='$full_csh'
22162 full_sed='$full_sed'
22163 gccansipedantic='$gccansipedantic'
22164 gccosandvers='$gccosandvers'
22165 gccversion='$gccversion'
22166 getgrent_r_proto='$getgrent_r_proto'
22167 getgrgid_r_proto='$getgrgid_r_proto'
22168 getgrnam_r_proto='$getgrnam_r_proto'
22169 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
22170 gethostbyname_r_proto='$gethostbyname_r_proto'
22171 gethostent_r_proto='$gethostent_r_proto'
22172 getlogin_r_proto='$getlogin_r_proto'
22173 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
22174 getnetbyname_r_proto='$getnetbyname_r_proto'
22175 getnetent_r_proto='$getnetent_r_proto'
22176 getprotobyname_r_proto='$getprotobyname_r_proto'
22177 getprotobynumber_r_proto='$getprotobynumber_r_proto'
22178 getprotoent_r_proto='$getprotoent_r_proto'
22179 getpwent_r_proto='$getpwent_r_proto'
22180 getpwnam_r_proto='$getpwnam_r_proto'
22181 getpwuid_r_proto='$getpwuid_r_proto'
22182 getservbyname_r_proto='$getservbyname_r_proto'
22183 getservbyport_r_proto='$getservbyport_r_proto'
22184 getservent_r_proto='$getservent_r_proto'
22185 getspnam_r_proto='$getspnam_r_proto'
22186 gidformat='$gidformat'
22187 gidsign='$gidsign'
22188 gidsize='$gidsize'
22189 gidtype='$gidtype'
22190 glibpth='$glibpth'
22191 gmake='$gmake'
22192 gmtime_r_proto='$gmtime_r_proto'
22193 gnulibc_version='$gnulibc_version'
22194 grep='$grep'
22195 groupcat='$groupcat'
22196 groupstype='$groupstype'
22197 gzip='$gzip'
22198 h_fcntl='$h_fcntl'
22199 h_sysfile='$h_sysfile'
22200 hint='$hint'
22201 hostcat='$hostcat'
22202 html1dir='$html1dir'
22203 html1direxp='$html1direxp'
22204 html3dir='$html3dir'
22205 html3direxp='$html3direxp'
22206 i16size='$i16size'
22207 i16type='$i16type'
22208 i32size='$i32size'
22209 i32type='$i32type'
22210 i64size='$i64size'
22211 i64type='$i64type'
22212 i8size='$i8size'
22213 i8type='$i8type'
22214 i_arpainet='$i_arpainet'
22215 i_assert='$i_assert'
22216 i_bsdioctl='$i_bsdioctl'
22217 i_crypt='$i_crypt'
22218 i_db='$i_db'
22219 i_dbm='$i_dbm'
22220 i_dirent='$i_dirent'
22221 i_dld='$i_dld'
22222 i_dlfcn='$i_dlfcn'
22223 i_fcntl='$i_fcntl'
22224 i_float='$i_float'
22225 i_fp='$i_fp'
22226 i_fp_class='$i_fp_class'
22227 i_gdbm='$i_gdbm'
22228 i_grp='$i_grp'
22229 i_ieeefp='$i_ieeefp'
22230 i_inttypes='$i_inttypes'
22231 i_langinfo='$i_langinfo'
22232 i_libutil='$i_libutil'
22233 i_limits='$i_limits'
22234 i_locale='$i_locale'
22235 i_machcthr='$i_machcthr'
22236 i_malloc='$i_malloc'
22237 i_math='$i_math'
22238 i_memory='$i_memory'
22239 i_mntent='$i_mntent'
22240 i_ndbm='$i_ndbm'
22241 i_netdb='$i_netdb'
22242 i_neterrno='$i_neterrno'
22243 i_netinettcp='$i_netinettcp'
22244 i_niin='$i_niin'
22245 i_poll='$i_poll'
22246 i_prot='$i_prot'
22247 i_pthread='$i_pthread'
22248 i_pwd='$i_pwd'
22249 i_rpcsvcdbm='$i_rpcsvcdbm'
22250 i_sfio='$i_sfio'
22251 i_sgtty='$i_sgtty'
22252 i_shadow='$i_shadow'
22253 i_socks='$i_socks'
22254 i_stdarg='$i_stdarg'
22255 i_stddef='$i_stddef'
22256 i_stdlib='$i_stdlib'
22257 i_string='$i_string'
22258 i_sunmath='$i_sunmath'
22259 i_sysaccess='$i_sysaccess'
22260 i_sysdir='$i_sysdir'
22261 i_sysfile='$i_sysfile'
22262 i_sysfilio='$i_sysfilio'
22263 i_sysin='$i_sysin'
22264 i_sysioctl='$i_sysioctl'
22265 i_syslog='$i_syslog'
22266 i_sysmman='$i_sysmman'
22267 i_sysmode='$i_sysmode'
22268 i_sysmount='$i_sysmount'
22269 i_sysndir='$i_sysndir'
22270 i_sysparam='$i_sysparam'
22271 i_sysresrc='$i_sysresrc'
22272 i_syssecrt='$i_syssecrt'
22273 i_sysselct='$i_sysselct'
22274 i_syssockio='$i_syssockio'
22275 i_sysstat='$i_sysstat'
22276 i_sysstatfs='$i_sysstatfs'
22277 i_sysstatvfs='$i_sysstatvfs'
22278 i_systime='$i_systime'
22279 i_systimek='$i_systimek'
22280 i_systimes='$i_systimes'
22281 i_systypes='$i_systypes'
22282 i_sysuio='$i_sysuio'
22283 i_sysun='$i_sysun'
22284 i_sysutsname='$i_sysutsname'
22285 i_sysvfs='$i_sysvfs'
22286 i_syswait='$i_syswait'
22287 i_termio='$i_termio'
22288 i_termios='$i_termios'
22289 i_time='$i_time'
22290 i_unistd='$i_unistd'
22291 i_ustat='$i_ustat'
22292 i_utime='$i_utime'
22293 i_values='$i_values'
22294 i_varargs='$i_varargs'
22295 i_varhdr='$i_varhdr'
22296 i_vfork='$i_vfork'
22297 ignore_versioned_solibs='$ignore_versioned_solibs'
22298 inc_version_list='$inc_version_list'
22299 inc_version_list_init='$inc_version_list_init'
22300 incpath='$incpath'
22301 inews='$inews'
22302 initialinstalllocation='$initialinstalllocation'
22303 installarchlib='$installarchlib'
22304 installbin='$installbin'
22305 installhtml1dir='$installhtml1dir'
22306 installhtml3dir='$installhtml3dir'
22307 installman1dir='$installman1dir'
22308 installman3dir='$installman3dir'
22309 installprefix='$installprefix'
22310 installprefixexp='$installprefixexp'
22311 installprivlib='$installprivlib'
22312 installscript='$installscript'
22313 installsitearch='$installsitearch'
22314 installsitebin='$installsitebin'
22315 installsitehtml1dir='$installsitehtml1dir'
22316 installsitehtml3dir='$installsitehtml3dir'
22317 installsitelib='$installsitelib'
22318 installsiteman1dir='$installsiteman1dir'
22319 installsiteman3dir='$installsiteman3dir'
22320 installsitescript='$installsitescript'
22321 installstyle='$installstyle'
22322 installusrbinperl='$installusrbinperl'
22323 installvendorarch='$installvendorarch'
22324 installvendorbin='$installvendorbin'
22325 installvendorhtml1dir='$installvendorhtml1dir'
22326 installvendorhtml3dir='$installvendorhtml3dir'
22327 installvendorlib='$installvendorlib'
22328 installvendorman1dir='$installvendorman1dir'
22329 installvendorman3dir='$installvendorman3dir'
22330 installvendorscript='$installvendorscript'
22331 intsize='$intsize'
22332 issymlink='$issymlink'
22333 ivdformat='$ivdformat'
22334 ivsize='$ivsize'
22335 ivtype='$ivtype'
22336 known_extensions='$known_extensions'
22337 ksh='$ksh'
22338 ld='$ld'
22339 lddlflags='$lddlflags'
22340 ldflags='$ldflags'
22341 ldflags_uselargefiles='$ldflags_uselargefiles'
22342 ldlibpthname='$ldlibpthname'
22343 less='$less'
22344 lib_ext='$lib_ext'
22345 libc='$libc'
22346 libperl='$libperl'
22347 libpth='$libpth'
22348 libs='$libs'
22349 libsdirs='$libsdirs'
22350 libsfiles='$libsfiles'
22351 libsfound='$libsfound'
22352 libspath='$libspath'
22353 libswanted='$libswanted'
22354 libswanted_uselargefiles='$libswanted_uselargefiles'
22355 line='$line'
22356 lint='$lint'
22357 lkflags='$lkflags'
22358 ln='$ln'
22359 lns='$lns'
22360 localtime_r_proto='$localtime_r_proto'
22361 locincpth='$locincpth'
22362 loclibpth='$loclibpth'
22363 longdblsize='$longdblsize'
22364 longlongsize='$longlongsize'
22365 longsize='$longsize'
22366 lp='$lp'
22367 lpr='$lpr'
22368 ls='$ls'
22369 lseeksize='$lseeksize'
22370 lseektype='$lseektype'
22371 mad='$mad'
22372 madlyh='$madlyh'
22373 madlyobj='$madlyobj'
22374 madlysrc='$madlysrc'
22375 mail='$mail'
22376 mailx='$mailx'
22377 make='$make'
22378 make_set_make='$make_set_make'
22379 mallocobj='$mallocobj'
22380 mallocsrc='$mallocsrc'
22381 malloctype='$malloctype'
22382 man1dir='$man1dir'
22383 man1direxp='$man1direxp'
22384 man1ext='$man1ext'
22385 man3dir='$man3dir'
22386 man3direxp='$man3direxp'
22387 man3ext='$man3ext'
22388 mips_type='$mips_type'
22389 mistrustnm='$mistrustnm'
22390 mkdir='$mkdir'
22391 mmaptype='$mmaptype'
22392 modetype='$modetype'
22393 more='$more'
22394 multiarch='$multiarch'
22395 mv='$mv'
22396 myarchname='$myarchname'
22397 mydomain='$mydomain'
22398 myhostname='$myhostname'
22399 myuname='$myuname'
22400 n='$n'
22401 need_va_copy='$need_va_copy'
22402 netdb_hlen_type='$netdb_hlen_type'
22403 netdb_host_type='$netdb_host_type'
22404 netdb_name_type='$netdb_name_type'
22405 netdb_net_type='$netdb_net_type'
22406 nm='$nm'
22407 nm_opt='$nm_opt'
22408 nm_so_opt='$nm_so_opt'
22409 nonxs_ext='$nonxs_ext'
22410 nroff='$nroff'
22411 nvEUformat='$nvEUformat'
22412 nvFUformat='$nvFUformat'
22413 nvGUformat='$nvGUformat'
22414 nv_preserves_uv_bits='$nv_preserves_uv_bits'
22415 nveformat='$nveformat'
22416 nvfformat='$nvfformat'
22417 nvgformat='$nvgformat'
22418 nvsize='$nvsize'
22419 nvtype='$nvtype'
22420 o_nonblock='$o_nonblock'
22421 obj_ext='$obj_ext'
22422 old_pthread_create_joinable='$old_pthread_create_joinable'
22423 optimize='$optimize'
22424 orderlib='$orderlib'
22425 osname='$osname'
22426 osvers='$osvers'
22427 otherlibdirs='$otherlibdirs'
22428 package='$package'
22429 pager='$pager'
22430 passcat='$passcat'
22431 patchlevel='$patchlevel'
22432 path_sep='$path_sep'
22433 perl5='$perl5'
22434 perl='$perl'
22435 perl_patchlevel='$perl_patchlevel'
22436 perladmin='$perladmin'
22437 perllibs='$perllibs'
22438 perlpath='$perlpath'
22439 pg='$pg'
22440 phostname='$phostname'
22441 pidtype='$pidtype'
22442 plibpth='$plibpth'
22443 pmake='$pmake'
22444 pr='$pr'
22445 prefix='$prefix'
22446 prefixexp='$prefixexp'
22447 privlib='$privlib'
22448 privlibexp='$privlibexp'
22449 procselfexe='$procselfexe'
22450 prototype='$prototype'
22451 ptrsize='$ptrsize'
22452 quadkind='$quadkind'
22453 quadtype='$quadtype'
22454 randbits='$randbits'
22455 randfunc='$randfunc'
22456 random_r_proto='$random_r_proto'
22457 randseedtype='$randseedtype'
22458 ranlib='$ranlib'
22459 rd_nodata='$rd_nodata'
22460 readdir64_r_proto='$readdir64_r_proto'
22461 readdir_r_proto='$readdir_r_proto'
22462 revision='$revision'
22463 rm='$rm'
22464 rm_try='$rm_try'
22465 rmail='$rmail'
22466 run='$run'
22467 runnm='$runnm'
22468 sPRIEUldbl='$sPRIEUldbl'
22469 sPRIFUldbl='$sPRIFUldbl'
22470 sPRIGUldbl='$sPRIGUldbl'
22471 sPRIXU64='$sPRIXU64'
22472 sPRId64='$sPRId64'
22473 sPRIeldbl='$sPRIeldbl'
22474 sPRIfldbl='$sPRIfldbl'
22475 sPRIgldbl='$sPRIgldbl'
22476 sPRIi64='$sPRIi64'
22477 sPRIo64='$sPRIo64'
22478 sPRIu64='$sPRIu64'
22479 sPRIx64='$sPRIx64'
22480 sSCNfldbl='$sSCNfldbl'
22481 sched_yield='$sched_yield'
22482 scriptdir='$scriptdir'
22483 scriptdirexp='$scriptdirexp'
22484 sed='$sed'
22485 seedfunc='$seedfunc'
22486 selectminbits='$selectminbits'
22487 selecttype='$selecttype'
22488 sendmail='$sendmail'
22489 setgrent_r_proto='$setgrent_r_proto'
22490 sethostent_r_proto='$sethostent_r_proto'
22491 setlocale_r_proto='$setlocale_r_proto'
22492 setnetent_r_proto='$setnetent_r_proto'
22493 setprotoent_r_proto='$setprotoent_r_proto'
22494 setpwent_r_proto='$setpwent_r_proto'
22495 setservent_r_proto='$setservent_r_proto'
22496 sh='$sh'
22497 shar='$shar'
22498 sharpbang='$sharpbang'
22499 shmattype='$shmattype'
22500 shortsize='$shortsize'
22501 shrpenv='$shrpenv'
22502 shsharp='$shsharp'
22503 sig_count='$sig_count'
22504 sig_name='$sig_name'
22505 sig_name_init='$sig_name_init'
22506 sig_num='$sig_num'
22507 sig_num_init='$sig_num_init'
22508 sig_size='$sig_size'
22509 signal_t='$signal_t'
22510 sitearch='$sitearch'
22511 sitearchexp='$sitearchexp'
22512 sitebin='$sitebin'
22513 sitebinexp='$sitebinexp'
22514 sitehtml1dir='$sitehtml1dir'
22515 sitehtml1direxp='$sitehtml1direxp'
22516 sitehtml3dir='$sitehtml3dir'
22517 sitehtml3direxp='$sitehtml3direxp'
22518 sitelib='$sitelib'
22519 sitelib_stem='$sitelib_stem'
22520 sitelibexp='$sitelibexp'
22521 siteman1dir='$siteman1dir'
22522 siteman1direxp='$siteman1direxp'
22523 siteman3dir='$siteman3dir'
22524 siteman3direxp='$siteman3direxp'
22525 siteprefix='$siteprefix'
22526 siteprefixexp='$siteprefixexp'
22527 sitescript='$sitescript'
22528 sitescriptexp='$sitescriptexp'
22529 sizesize='$sizesize'
22530 sizetype='$sizetype'
22531 sleep='$sleep'
22532 smail='$smail'
22533 so='$so'
22534 sockethdr='$sockethdr'
22535 socketlib='$socketlib'
22536 socksizetype='$socksizetype'
22537 sort='$sort'
22538 spackage='$spackage'
22539 spitshell='$spitshell'
22540 srand48_r_proto='$srand48_r_proto'
22541 srandom_r_proto='$srandom_r_proto'
22542 src='$src'
22543 ssizetype='$ssizetype'
22544 startperl='$startperl'
22545 startsh='$startsh'
22546 static_ext='$static_ext'
22547 stdchar='$stdchar'
22548 stdio_base='$stdio_base'
22549 stdio_bufsiz='$stdio_bufsiz'
22550 stdio_cnt='$stdio_cnt'
22551 stdio_filbuf='$stdio_filbuf'
22552 stdio_ptr='$stdio_ptr'
22553 stdio_stream_array='$stdio_stream_array'
22554 strerror_r_proto='$strerror_r_proto'
22555 strings='$strings'
22556 submit='$submit'
22557 subversion='$subversion'
22558 sysman='$sysman'
22559 tail='$tail'
22560 tar='$tar'
22561 targetarch='$targetarch'
22562 tbl='$tbl'
22563 tee='$tee'
22564 test='$test'
22565 timeincl='$timeincl'
22566 timetype='$timetype'
22567 tmpnam_r_proto='$tmpnam_r_proto'
22568 to='$to'
22569 touch='$touch'
22570 tr='$tr'
22571 trnl='$trnl'
22572 troff='$troff'
22573 ttyname_r_proto='$ttyname_r_proto'
22574 u16size='$u16size'
22575 u16type='$u16type'
22576 u32size='$u32size'
22577 u32type='$u32type'
22578 u64size='$u64size'
22579 u64type='$u64type'
22580 u8size='$u8size'
22581 u8type='$u8type'
22582 uidformat='$uidformat'
22583 uidsign='$uidsign'
22584 uidsize='$uidsize'
22585 uidtype='$uidtype'
22586 uname='$uname'
22587 uniq='$uniq'
22588 uquadtype='$uquadtype'
22589 use5005threads='$use5005threads'
22590 use64bitall='$use64bitall'
22591 use64bitint='$use64bitint'
22592 usecrosscompile='$usecrosscompile'
22593 usedl='$usedl'
22594 usedtrace='$usedtrace'
22595 usefaststdio='$usefaststdio'
22596 useithreads='$useithreads'
22597 uselargefiles='$uselargefiles'
22598 uselongdouble='$uselongdouble'
22599 usemallocwrap='$usemallocwrap'
22600 usemorebits='$usemorebits'
22601 usemultiplicity='$usemultiplicity'
22602 usemymalloc='$usemymalloc'
22603 usenm='$usenm'
22604 useopcode='$useopcode'
22605 useperlio='$useperlio'
22606 useposix='$useposix'
22607 usereentrant='$usereentrant'
22608 userelocatableinc='$userelocatableinc'
22609 usesfio='$usesfio'
22610 useshrplib='$useshrplib'
22611 usesitecustomize='$usesitecustomize'
22612 usesocks='$usesocks'
22613 usethreads='$usethreads'
22614 usevendorprefix='$usevendorprefix'
22615 usevfork='$usevfork'
22616 usrinc='$usrinc'
22617 uuname='$uuname'
22618 uvXUformat='$uvXUformat'
22619 uvoformat='$uvoformat'
22620 uvsize='$uvsize'
22621 uvtype='$uvtype'
22622 uvuformat='$uvuformat'
22623 uvxformat='$uvxformat'
22624 vendorarch='$vendorarch'
22625 vendorarchexp='$vendorarchexp'
22626 vendorbin='$vendorbin'
22627 vendorbinexp='$vendorbinexp'
22628 vendorhtml1dir='$vendorhtml1dir'
22629 vendorhtml1direxp='$vendorhtml1direxp'
22630 vendorhtml3dir='$vendorhtml3dir'
22631 vendorhtml3direxp='$vendorhtml3direxp'
22632 vendorlib='$vendorlib'
22633 vendorlib_stem='$vendorlib_stem'
22634 vendorlibexp='$vendorlibexp'
22635 vendorman1dir='$vendorman1dir'
22636 vendorman1direxp='$vendorman1direxp'
22637 vendorman3dir='$vendorman3dir'
22638 vendorman3direxp='$vendorman3direxp'
22639 vendorprefix='$vendorprefix'
22640 vendorprefixexp='$vendorprefixexp'
22641 vendorscript='$vendorscript'
22642 vendorscriptexp='$vendorscriptexp'
22643 version='$version'
22644 version_patchlevel_string='$version_patchlevel_string'
22645 versiononly='$versiononly'
22646 vi='$vi'
22647 voidflags='$voidflags'
22648 xlibpth='$xlibpth'
22649 yacc='$yacc'
22650 yaccflags='$yaccflags'
22651 zcat='$zcat'
22652 zip='$zip'
22653 EOT
22654
22655 : Add in command line options if available
22656 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
22657
22658 : add special variables
22659 $test -f $src/patchlevel.h && \
22660 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
22661 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
22662 echo "PERL_CONFIG_SH=true" >>config.sh
22663
22664 : propagate old symbols
22665 if $test -f UU/config.sh; then
22666         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
22667         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
22668         $sort | $uniq -u >UU/oldsyms
22669         set X `cat UU/oldsyms`
22670         shift
22671         case $# in
22672         0) ;;
22673         *)
22674                 cat <<EOM
22675 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
22676 EOM
22677                 echo "# Variables propagated from previous config.sh file." >>config.sh
22678                 for sym in `cat UU/oldsyms`; do
22679                         echo "    Propagating $hint variable "'$'"$sym..."
22680                         eval 'tmp="$'"${sym}"'"'
22681                         echo "$tmp" | \
22682                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
22683                 done
22684                 ;;
22685         esac
22686 fi
22687
22688 : Finish up by extracting the .SH files
22689 case "$alldone" in
22690 exit)
22691         $rm -rf UU
22692         echo "Extraction done."
22693         exit 0
22694         ;;
22695 cont)
22696         ;;
22697 '')
22698         dflt=''
22699         nostick=true
22700         $cat <<EOM
22701
22702 If you'd like to make any changes to the config.sh file before I begin
22703 to configure things, do it as a shell escape now (e.g. !vi config.sh).
22704
22705 EOM
22706         rp="Press return or use a shell escape to edit config.sh:"
22707         . UU/myread
22708         nostick=''
22709         case "$ans" in
22710         '') ;;
22711         *) : in case they cannot read
22712                 sh 1>&4 -c "$ans";;
22713         esac
22714         ;;
22715 esac
22716
22717 : if this fails, just run all the .SH files by hand
22718 . ./config.sh
22719
22720 echo " "
22721 exec 1>&4
22722 pwd=`pwd`
22723 . ./UU/extract
22724 cd "$pwd"
22725
22726 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
22727         dflt=y
22728         case "$silent" in
22729         true) ;;
22730         *)
22731                 $cat <<EOM
22732
22733 Now you need to generate make dependencies by running "$make depend".
22734 You might prefer to run it in background: "$make depend > makedepend.out &"
22735 It can take a while, so you might not want to run it right now.
22736
22737 EOM
22738                 ;;
22739         esac
22740         rp="Run $make depend now?"
22741         . UU/myread
22742         case "$ans" in
22743         y*)
22744                 $make depend && echo "Now you must run '$make'."
22745                 ;;
22746         *)
22747                 echo "You must run '$make depend' then '$make'."
22748                 ;;
22749         esac
22750 elif test -f [Mm]akefile; then
22751         echo " "
22752         echo "Now you must run a $make."
22753 else
22754         echo "Configure done."
22755 fi
22756
22757 if $test -f Policy.sh; then
22758     $cat <<EOM
22759
22760 If you compile $package on a different machine or from a different object
22761 directory, copy the Policy.sh file from this object directory to the
22762 new one before you run Configure -- this will help you with most of
22763 the policy defaults.
22764
22765 EOM
22766 fi
22767 if $test -f config.msg; then
22768     echo "Hmm.  I also noted the following information while running:"
22769     echo " "
22770     $cat config.msg >&4
22771     $rm -f config.msg
22772 fi
22773 $rm -f kit*isdone ark*isdone
22774 $rm -rf UU
22775
22776 : End of Configure
22777