extra code in pp_concat, Take 2
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Mon Apr 11 12:33:25 CEST 2005 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ c2$$
49
50 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
51         cat >&4 <<EOF
52 ***
53 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
54 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
55 *** Please read the README.plan9 for further instructions.
56 *** Cannot continue, aborting.
57 ***
58 EOF
59         exit 1
60 fi
61
62 : compute my invocation name
63 me=$0
64 case "$0" in
65 */*)
66         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
67         test "$me" || me=$0
68         ;;
69 esac
70
71 : Proper separator for the PATH environment variable
72 p_=:
73 : On OS/2 this directory should exist if this is not floppy only system :-]
74 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
75     if test -n "$OS2_SHELL"; then
76                 p_=\;
77                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
78                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
79                 is_os2=yes
80         elif test -n "$DJGPP"; then
81                 case "X${MACHTYPE:-nonesuchmach}" in
82                 *cygwin) ;;
83                 *) p_=\; ;;
84                 esac
85         fi
86 fi
87
88 : Proper PATH setting
89 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
90 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
91 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
92 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
93 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
94 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
95 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
96 paths="$paths /sbin /usr/sbin /usr/libexec"
97 paths="$paths /system/gnu_library/bin"
98
99 for p in $paths
100 do
101         case "$p_$PATH$p_" in
102         *$p_$p$p_*) ;;
103         *) test -d $p && PATH=$PATH$p_$p ;;
104         esac
105 done
106
107 PATH=.$p_$PATH
108 export PATH
109
110 : shall we be using ksh?
111 inksh=''
112 needksh=''
113 avoidksh=''
114 newsh=/bin/ksh
115 changesh=''
116 if (PATH=.; alias -x) >/dev/null 2>&1; then
117                 inksh=true
118 fi
119 if test -f /hp-ux -a -f /bin/ksh; then
120         needksh='to avoid sh bug in "here document" expansion'
121 fi
122 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
123         if test X`/usr/bin/uname -v` = X4; then
124                 avoidksh="to avoid AIX 4's /bin/sh"
125                 newsh=/usr/bin/bsh
126         fi
127 fi
128 if test -f /osf_boot -a -f /usr/sbin/setld; then
129         if test X`/usr/bin/uname -s` = XOSF1; then
130                 avoidksh="to avoid Digital UNIX' ksh"
131                 newsh=/bin/sh
132                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
133         fi
134 fi
135 case "$inksh/$needksh" in
136 /[a-z]*)
137                 ENV=''
138                 changesh=true
139                 reason="$needksh"
140         ;;
141 esac
142 case "$inksh/$avoidksh" in
143 true/[a-z]*)
144         changesh=true
145         reason="$avoidksh"
146         ;;
147 esac
148 case "$inksh/$needksh-$avoidksh-" in
149 true/--)
150                 cat <<EOM
151 (I see you are using the Korn shell.  Some ksh's blow up on $me,
152 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
153 EOM
154         ;;
155 esac
156 case "$changesh" in
157 true)
158         export newsh
159         echo "(Feeding myself to $newsh $reason.)"
160         case "$0" in
161         Configure|*/Configure) exec $newsh $0 "$@";;
162         *) exec $newsh Configure "$@";;
163         esac
164         ;;
165 esac
166
167 : if needed set CDPATH to a harmless value that is not chatty
168 : avoid bash 2.02 problems with empty CDPATH.
169 case "$CDPATH" in
170 '')     ;;
171 *)      case "$SHELL" in
172         *bash*) CDPATH='.' ;;
173         *)              CDPATH='' ;;
174         esac
175         ;;
176 esac
177 : Configure runs within the UU subdirectory
178 test -d UU || mkdir UU
179 cd UU && rm -f ./*
180
181 ccname=''
182 ccversion=''
183 ccsymbols=''
184 cppccsymbols=''
185 cppsymbols=''
186 from=''
187 run=''
188 targetarch=''
189 to=''
190 usecrosscompile=''
191 mistrustnm=''
192 perllibs=''
193 dynamic_ext=''
194 extensions=''
195 known_extensions=''
196 nonxs_ext=''
197 static_ext=''
198 useopcode=''
199 useposix=''
200 extras=''
201 d_bsd=''
202 d_eunice=''
203 d_xenix=''
204 eunicefix=''
205 Mcc=''
206 ar=''
207 awk=''
208 bash=''
209 bison=''
210 byacc=''
211 cat=''
212 chgrp=''
213 chmod=''
214 chown=''
215 comm=''
216 compress=''
217 cp=''
218 cpio=''
219 cpp=''
220 csh=''
221 date=''
222 echo=''
223 egrep=''
224 emacs=''
225 expr=''
226 find=''
227 flex=''
228 gmake=''
229 grep=''
230 gzip=''
231 inews=''
232 ksh=''
233 less=''
234 line=''
235 lint=''
236 ln=''
237 lp=''
238 lpr=''
239 ls=''
240 mail=''
241 mailx=''
242 make=''
243 mkdir=''
244 more=''
245 mv=''
246 nm=''
247 nroff=''
248 perl=''
249 pg=''
250 pmake=''
251 pr=''
252 rm=''
253 rmail=''
254 sed=''
255 sendmail=''
256 shar=''
257 sleep=''
258 smail=''
259 sort=''
260 submit=''
261 tail=''
262 tar=''
263 tbl=''
264 tee=''
265 test=''
266 touch=''
267 tr=''
268 troff=''
269 uname=''
270 uniq=''
271 uuname=''
272 vi=''
273 zcat=''
274 zip=''
275 full_ar=''
276 full_sed=''
277 libswanted=''
278 hint=''
279 myuname=''
280 osname=''
281 osvers=''
282 Author=''
283 Date=''
284 Header=''
285 Id=''
286 Locker=''
287 Log=''
288 RCSfile=''
289 Revision=''
290 Source=''
291 State=''
292 _a=''
293 _exe=''
294 _o=''
295 archobjs=''
296 exe_ext=''
297 firstmakefile=''
298 lib_ext=''
299 obj_ext=''
300 path_sep=''
301 afs=''
302 afsroot=''
303 alignbytes=''
304 ansi2knr=''
305 archlib=''
306 archlibexp=''
307 d_archlib=''
308 installarchlib=''
309 archname=''
310 myarchname=''
311 d_atolf=''
312 d_atoll=''
313 baserev=''
314 bin=''
315 binexp=''
316 installbin=''
317 byteorder=''
318 cc=''
319 ccflags=''
320 cppflags=''
321 ldflags=''
322 lkflags=''
323 locincpth=''
324 optimize=''
325 cf_email=''
326 cf_by=''
327 cf_time=''
328 charsize=''
329 contains=''
330 cpp_stuff=''
331 cpplast=''
332 cppminus=''
333 cpprun=''
334 cppstdin=''
335 d__fwalk=''
336 d_access=''
337 d_accessx=''
338 d_aintl=''
339 d_alarm=''
340 asctime_r_proto=''
341 d_asctime_r=''
342 d_attribut=''
343 d_bcmp=''
344 d_bcopy=''
345 d_bzero=''
346 d_casti32=''
347 castflags=''
348 d_castneg=''
349 d_chown=''
350 d_chroot=''
351 d_chsize=''
352 d_class=''
353 d_closedir=''
354 d_void_closedir=''
355 d_cmsghdr_s=''
356 d_const=''
357 d_copysignl=''
358 cryptlib=''
359 d_crypt=''
360 crypt_r_proto=''
361 d_crypt_r=''
362 d_csh=''
363 full_csh=''
364 ctermid_r_proto=''
365 d_ctermid_r=''
366 ctime_r_proto=''
367 d_ctime_r=''
368 d_cuserid=''
369 d_dbl_dig=''
370 d_dbminitproto=''
371 d_difftime=''
372 d_dirfd=''
373 d_dlerror=''
374 d_dlopen=''
375 d_dlsymun=''
376 d_dosuid=''
377 d_suidsafe=''
378 d_drand48_r=''
379 drand48_r_proto=''
380 d_drand48proto=''
381 d_dup2=''
382 d_eaccess=''
383 d_endgrent=''
384 d_endgrent_r=''
385 endgrent_r_proto=''
386 d_endhent=''
387 d_endhostent_r=''
388 endhostent_r_proto=''
389 d_endnent=''
390 d_endnetent_r=''
391 endnetent_r_proto=''
392 d_endpent=''
393 d_endprotoent_r=''
394 endprotoent_r_proto=''
395 d_endpwent=''
396 d_endpwent_r=''
397 endpwent_r_proto=''
398 d_endsent=''
399 d_endservent_r=''
400 endservent_r_proto=''
401 d_faststdio=''
402 d_fchdir=''
403 d_fchmod=''
404 d_fchown=''
405 d_fcntl=''
406 d_fcntl_can_lock=''
407 d_fd_macros=''
408 d_fd_set=''
409 d_fds_bits=''
410 d_fgetpos=''
411 d_finite=''
412 d_finitel=''
413 d_flexfnam=''
414 d_flock=''
415 d_flockproto=''
416 d_fork=''
417 d_fp_class=''
418 d_fpclass=''
419 d_fpclassify=''
420 d_fpclassl=''
421 d_fpos64_t=''
422 d_frexpl=''
423 d_fs_data_s=''
424 d_fseeko=''
425 d_fsetpos=''
426 d_fstatfs=''
427 d_fsync=''
428 d_ftello=''
429 d_ftime=''
430 d_gettimeod=''
431 d_Gconvert=''
432 d_getcwd=''
433 d_getespwnam=''
434 d_getfsstat=''
435 d_getgrent=''
436 d_getgrent_r=''
437 getgrent_r_proto=''
438 d_getgrgid_r=''
439 getgrgid_r_proto=''
440 d_getgrnam_r=''
441 getgrnam_r_proto=''
442 d_getgrps=''
443 d_gethbyaddr=''
444 d_gethbyname=''
445 d_gethent=''
446 aphostname=''
447 d_gethname=''
448 d_phostname=''
449 d_uname=''
450 d_gethostbyaddr_r=''
451 gethostbyaddr_r_proto=''
452 d_gethostbyname_r=''
453 gethostbyname_r_proto=''
454 d_gethostent_r=''
455 gethostent_r_proto=''
456 d_gethostprotos=''
457 d_getitimer=''
458 d_getlogin=''
459 d_getlogin_r=''
460 getlogin_r_proto=''
461 d_getmnt=''
462 d_getmntent=''
463 d_getnbyaddr=''
464 d_getnbyname=''
465 d_getnent=''
466 d_getnetbyaddr_r=''
467 getnetbyaddr_r_proto=''
468 d_getnetbyname_r=''
469 getnetbyname_r_proto=''
470 d_getnetent_r=''
471 getnetent_r_proto=''
472 d_getnetprotos=''
473 d_getpagsz=''
474 d_getpent=''
475 d_getpgid=''
476 d_getpgrp2=''
477 d_bsdgetpgrp=''
478 d_getpgrp=''
479 d_getppid=''
480 d_getprior=''
481 d_getpbyname=''
482 d_getpbynumber=''
483 d_getprotobyname_r=''
484 getprotobyname_r_proto=''
485 d_getprotobynumber_r=''
486 getprotobynumber_r_proto=''
487 d_getprotoent_r=''
488 getprotoent_r_proto=''
489 d_getprotoprotos=''
490 d_getprpwnam=''
491 d_getpwent=''
492 d_getpwent_r=''
493 getpwent_r_proto=''
494 d_getpwnam_r=''
495 getpwnam_r_proto=''
496 d_getpwuid_r=''
497 getpwuid_r_proto=''
498 d_getsent=''
499 d_getservbyname_r=''
500 getservbyname_r_proto=''
501 d_getservbyport_r=''
502 getservbyport_r_proto=''
503 d_getservent_r=''
504 getservent_r_proto=''
505 d_getservprotos=''
506 d_getspnam=''
507 d_getspnam_r=''
508 getspnam_r_proto=''
509 d_getsbyname=''
510 d_getsbyport=''
511 d_gmtime_r=''
512 gmtime_r_proto=''
513 d_gnulibc=''
514 gnulibc_version=''
515 d_hasmntopt=''
516 d_htonl=''
517 d_ilogbl=''
518 d_inetaton=''
519 d_int64_t=''
520 d_isascii=''
521 d_isfinite=''
522 d_isinf=''
523 d_isnan=''
524 d_isnanl=''
525 d_killpg=''
526 d_lchown=''
527 d_ldbl_dig=''
528 d_libm_lib_version=''
529 d_link=''
530 d_localtime_r=''
531 localtime_r_proto=''
532 d_locconv=''
533 d_lockf=''
534 d_longdbl=''
535 longdblsize=''
536 d_longlong=''
537 longlongsize=''
538 d_lseekproto=''
539 d_lstat=''
540 d_madvise=''
541 d_mblen=''
542 d_mbstowcs=''
543 d_mbtowc=''
544 d_memchr=''
545 d_memcmp=''
546 d_memcpy=''
547 d_memmove=''
548 d_memset=''
549 d_mkdir=''
550 d_mkdtemp=''
551 d_mkfifo=''
552 d_mkstemp=''
553 d_mkstemps=''
554 d_mktime=''
555 d_mmap=''
556 mmaptype=''
557 d_modfl=''
558 d_modfl_pow32_bug=''
559 d_modflproto=''
560 d_mprotect=''
561 d_msg=''
562 d_msgctl=''
563 d_msgget=''
564 d_msghdr_s=''
565 d_msgrcv=''
566 d_msgsnd=''
567 d_msync=''
568 d_munmap=''
569 d_nice=''
570 d_nl_langinfo=''
571 d_off64_t=''
572 d_open3=''
573 d_fpathconf=''
574 d_pathconf=''
575 d_pause=''
576 d_pipe=''
577 d_poll=''
578 d_portable=''
579 d_procselfexe=''
580 procselfexe=''
581 d_old_pthread_create_joinable=''
582 old_pthread_create_joinable=''
583 d_pthread_atfork=''
584 d_pthread_attr_setscope=''
585 d_pthread_yield=''
586 d_sched_yield=''
587 sched_yield=''
588 d_qgcvt=''
589 d_random_r=''
590 random_r_proto=''
591 d_readdir64_r=''
592 readdir64_r_proto=''
593 d_readdir=''
594 d_rewinddir=''
595 d_seekdir=''
596 d_telldir=''
597 d_readdir_r=''
598 readdir_r_proto=''
599 d_readlink=''
600 d_readv=''
601 d_recvmsg=''
602 d_rename=''
603 d_rmdir=''
604 d_safebcpy=''
605 d_safemcpy=''
606 d_sanemcmp=''
607 d_sbrkproto=''
608 d_scalbnl=''
609 d_select=''
610 d_sem=''
611 d_semctl=''
612 d_semget=''
613 d_semop=''
614 d_sendmsg=''
615 d_setegid=''
616 d_seteuid=''
617 d_setgrent=''
618 d_setgrent_r=''
619 setgrent_r_proto=''
620 d_setgrps=''
621 d_sethent=''
622 d_sethostent_r=''
623 sethostent_r_proto=''
624 d_setitimer=''
625 d_setlinebuf=''
626 d_setlocale=''
627 d_setlocale_r=''
628 setlocale_r_proto=''
629 d_setnent=''
630 d_setnetent_r=''
631 setnetent_r_proto=''
632 d_setpent=''
633 d_setpgid=''
634 d_setpgrp2=''
635 d_bsdsetpgrp=''
636 d_setpgrp=''
637 d_setprior=''
638 d_setproctitle=''
639 d_setprotoent_r=''
640 setprotoent_r_proto=''
641 d_setpwent=''
642 d_setpwent_r=''
643 setpwent_r_proto=''
644 d_setregid=''
645 d_setresgid=''
646 d_setresuid=''
647 d_setreuid=''
648 d_setrgid=''
649 d_setruid=''
650 d_setsent=''
651 d_setservent_r=''
652 setservent_r_proto=''
653 d_setsid=''
654 d_setvbuf=''
655 d_sfio=''
656 usesfio=''
657 d_shm=''
658 d_shmat=''
659 d_shmatprototype=''
660 shmattype=''
661 d_shmctl=''
662 d_shmdt=''
663 d_shmget=''
664 d_sigaction=''
665 d_sigprocmask=''
666 d_sigsetjmp=''
667 usesitecustomize=''
668 d_sockatmark=''
669 d_sockatmarkproto=''
670 d_msg_ctrunc=''
671 d_msg_dontroute=''
672 d_msg_oob=''
673 d_msg_peek=''
674 d_msg_proxy=''
675 d_oldsock=''
676 d_scm_rights=''
677 d_socket=''
678 d_sockpair=''
679 sockethdr=''
680 socketlib=''
681 d_socklen_t=''
682 d_socks5_init=''
683 d_sqrtl=''
684 d_srand48_r=''
685 srand48_r_proto=''
686 d_srandom_r=''
687 srandom_r_proto=''
688 d_sresgproto=''
689 d_sresuproto=''
690 d_statblks=''
691 d_statfs_f_flags=''
692 d_statfs_s=''
693 d_fstatvfs=''
694 d_statvfs=''
695 d_stdio_cnt_lval=''
696 d_stdio_ptr_lval=''
697 d_stdio_ptr_lval_nochange_cnt=''
698 d_stdio_ptr_lval_sets_cnt=''
699 d_stdiobase=''
700 d_stdstdio=''
701 stdio_base=''
702 stdio_bufsiz=''
703 stdio_cnt=''
704 stdio_filbuf=''
705 stdio_ptr=''
706 d_index=''
707 d_strchr=''
708 d_strcoll=''
709 d_strctcpy=''
710 d_strerrm=''
711 d_strerror=''
712 d_sysernlst=''
713 d_syserrlst=''
714 d_strerror_r=''
715 strerror_r_proto=''
716 d_strftime=''
717 d_strlcat=''
718 d_strlcpy=''
719 d_strtod=''
720 d_strtol=''
721 d_strtold=''
722 d_strtoll=''
723 d_strtoq=''
724 d_strtoul=''
725 d_strtoull=''
726 d_strtouq=''
727 d_strxfrm=''
728 d_symlink=''
729 d_syscall=''
730 d_syscallproto=''
731 d_sysconf=''
732 d_system=''
733 d_tcgetpgrp=''
734 d_tcsetpgrp=''
735 d_telldirproto=''
736 d_time=''
737 timetype=''
738 clocktype=''
739 d_times=''
740 d_tmpnam_r=''
741 tmpnam_r_proto=''
742 d_truncate=''
743 d_ttyname_r=''
744 ttyname_r_proto=''
745 d_tzname=''
746 d_u32align=''
747 d_ualarm=''
748 d_umask=''
749 d_semctl_semid_ds=''
750 d_semctl_semun=''
751 d_union_semun=''
752 d_unordered=''
753 d_usleep=''
754 d_usleepproto=''
755 d_ustat=''
756 d_vfork=''
757 usevfork=''
758 d_voidsig=''
759 signal_t=''
760 d_volatile=''
761 d_charvspr=''
762 d_vprintf=''
763 d_wait4=''
764 d_waitpid=''
765 d_wcstombs=''
766 d_wctomb=''
767 d_writev=''
768 dlext=''
769 cccdlflags=''
770 ccdlflags=''
771 dlsrc=''
772 ld=''
773 lddlflags=''
774 usedl=''
775 doublesize=''
776 ebcdic=''
777 fflushNULL=''
778 fflushall=''
779 fpossize=''
780 fpostype=''
781 gccansipedantic=''
782 gccosandvers=''
783 gccversion=''
784 gidformat=''
785 gidsign=''
786 gidsize=''
787 gidtype=''
788 groupstype=''
789 h_fcntl=''
790 h_sysfile=''
791 html1dir=''
792 html1direxp=''
793 installhtml1dir=''
794 html3dir=''
795 html3direxp=''
796 installhtml3dir=''
797 i_arpainet=''
798 i_crypt=''
799 db_hashtype=''
800 db_prefixtype=''
801 db_version_major=''
802 db_version_minor=''
803 db_version_patch=''
804 i_db=''
805 i_dbm=''
806 i_rpcsvcdbm=''
807 d_dirnamlen=''
808 direntrytype=''
809 i_dirent=''
810 i_dld=''
811 i_dlfcn=''
812 i_fcntl=''
813 i_float=''
814 i_fp=''
815 i_fp_class=''
816 i_gdbm=''
817 d_grpasswd=''
818 i_grp=''
819 i_ieeefp=''
820 i_inttypes=''
821 i_langinfo=''
822 i_libutil=''
823 i_limits=''
824 i_locale=''
825 i_machcthr=''
826 i_malloc=''
827 i_math=''
828 i_memory=''
829 i_mntent=''
830 i_ndbm=''
831 i_netdb=''
832 i_neterrno=''
833 i_netinettcp=''
834 i_niin=''
835 i_sysin=''
836 i_poll=''
837 i_prot=''
838 i_pthread=''
839 d_pwage=''
840 d_pwchange=''
841 d_pwclass=''
842 d_pwcomment=''
843 d_pwexpire=''
844 d_pwgecos=''
845 d_pwpasswd=''
846 d_pwquota=''
847 i_pwd=''
848 i_sfio=''
849 i_shadow=''
850 i_socks=''
851 i_stddef=''
852 i_stdlib=''
853 i_string=''
854 strings=''
855 i_sunmath=''
856 i_sysaccess=''
857 i_sysdir=''
858 i_sysfile=''
859 d_voidtty=''
860 i_bsdioctl=''
861 i_sysfilio=''
862 i_sysioctl=''
863 i_syssockio=''
864 i_syslog=''
865 i_sysmman=''
866 i_sysmode=''
867 i_sysmount=''
868 i_sysndir=''
869 i_sysparam=''
870 i_sysresrc=''
871 i_syssecrt=''
872 i_sysselct=''
873 i_sysstat=''
874 i_sysstatfs=''
875 i_sysstatvfs=''
876 i_systimes=''
877 i_systypes=''
878 i_sysuio=''
879 i_sysun=''
880 i_sysutsname=''
881 i_sysvfs=''
882 i_syswait=''
883 i_sgtty=''
884 i_termio=''
885 i_termios=''
886 d_tm_tm_gmtoff=''
887 d_tm_tm_zone=''
888 i_systime=''
889 i_systimek=''
890 i_time=''
891 timeincl=''
892 i_unistd=''
893 i_ustat=''
894 i_utime=''
895 i_values=''
896 i_stdarg=''
897 i_varargs=''
898 i_varhdr=''
899 i_vfork=''
900 inc_version_list=''
901 inc_version_list_init=''
902 installprefix=''
903 installprefixexp=''
904 installstyle=''
905 installusrbinperl=''
906 intsize=''
907 longsize=''
908 shortsize=''
909 issymlink=''
910 libc=''
911 ldlibpthname=''
912 libperl=''
913 shrpenv=''
914 useshrplib=''
915 glibpth=''
916 libpth=''
917 loclibpth=''
918 plibpth=''
919 xlibpth=''
920 ignore_versioned_solibs=''
921 libs=''
922 libsdirs=''
923 libsfiles=''
924 libsfound=''
925 libspath=''
926 lns=''
927 d_PRIEUldbl=''
928 d_PRIFUldbl=''
929 d_PRIGUldbl=''
930 d_PRIeldbl=''
931 d_PRIfldbl=''
932 d_PRIgldbl=''
933 d_SCNfldbl=''
934 sPRIEUldbl=''
935 sPRIFUldbl=''
936 sPRIGUldbl=''
937 sPRIeldbl=''
938 sPRIfldbl=''
939 sPRIgldbl=''
940 sSCNfldbl=''
941 lseeksize=''
942 lseektype=''
943 make_set_make=''
944 d_mymalloc=''
945 freetype=''
946 mallocobj=''
947 mallocsrc=''
948 malloctype=''
949 usemallocwrap=''
950 usemymalloc=''
951 installman1dir=''
952 man1dir=''
953 man1direxp=''
954 man1ext=''
955 installman3dir=''
956 man3dir=''
957 man3direxp=''
958 man3ext=''
959 modetype=''
960 multiarch=''
961 mydomain=''
962 myhostname=''
963 phostname=''
964 c=''
965 n=''
966 d_eofnblk=''
967 eagain=''
968 o_nonblock=''
969 rd_nodata=''
970 need_va_copy=''
971 netdb_hlen_type=''
972 netdb_host_type=''
973 netdb_name_type=''
974 netdb_net_type=''
975 groupcat=''
976 hostcat=''
977 passcat=''
978 orderlib=''
979 ranlib=''
980 d_perl_otherlibdirs=''
981 otherlibdirs=''
982 package=''
983 spackage=''
984 pager=''
985 api_revision=''
986 api_subversion=''
987 api_version=''
988 api_versionstring=''
989 patchlevel=''
990 perl_patchlevel=''
991 revision=''
992 subversion=''
993 version=''
994 version_patchlevel_string=''
995 perl5=''
996 perladmin=''
997 perlpath=''
998 d_nv_preserves_uv=''
999 i16size=''
1000 i16type=''
1001 i32size=''
1002 i32type=''
1003 i64size=''
1004 i64type=''
1005 i8size=''
1006 i8type=''
1007 ivsize=''
1008 ivtype=''
1009 nv_preserves_uv_bits=''
1010 nvsize=''
1011 nvtype=''
1012 u16size=''
1013 u16type=''
1014 u32size=''
1015 u32type=''
1016 u64size=''
1017 u64type=''
1018 u8size=''
1019 u8type=''
1020 uvsize=''
1021 uvtype=''
1022 ivdformat=''
1023 nvEUformat=''
1024 nvFUformat=''
1025 nvGUformat=''
1026 nveformat=''
1027 nvfformat=''
1028 nvgformat=''
1029 uvXUformat=''
1030 uvoformat=''
1031 uvuformat=''
1032 uvxformat=''
1033 pidtype=''
1034 prefix=''
1035 prefixexp=''
1036 installprivlib=''
1037 privlib=''
1038 privlibexp=''
1039 prototype=''
1040 ptrsize=''
1041 d_PRIXU64=''
1042 d_PRId64=''
1043 d_PRIi64=''
1044 d_PRIo64=''
1045 d_PRIu64=''
1046 d_PRIx64=''
1047 sPRIXU64=''
1048 sPRId64=''
1049 sPRIi64=''
1050 sPRIo64=''
1051 sPRIu64=''
1052 sPRIx64=''
1053 d_quad=''
1054 quadkind=''
1055 quadtype=''
1056 uquadtype=''
1057 drand01=''
1058 randbits=''
1059 randfunc=''
1060 randseedtype=''
1061 seedfunc=''
1062 installscript=''
1063 scriptdir=''
1064 scriptdirexp=''
1065 selectminbits=''
1066 selecttype=''
1067 sh=''
1068 sig_count=''
1069 sig_name=''
1070 sig_name_init=''
1071 sig_num=''
1072 sig_num_init=''
1073 sig_size=''
1074 installsitearch=''
1075 sitearch=''
1076 sitearchexp=''
1077 installsitebin=''
1078 sitebin=''
1079 sitebinexp=''
1080 installsitehtml1dir=''
1081 sitehtml1dir=''
1082 sitehtml1direxp=''
1083 installsitehtml3dir=''
1084 sitehtml3dir=''
1085 sitehtml3direxp=''
1086 installsitelib=''
1087 sitelib=''
1088 sitelib_stem=''
1089 sitelibexp=''
1090 installsiteman1dir=''
1091 siteman1dir=''
1092 siteman1direxp=''
1093 installsiteman3dir=''
1094 siteman3dir=''
1095 siteman3direxp=''
1096 siteprefix=''
1097 siteprefixexp=''
1098 installsitescript=''
1099 sitescript=''
1100 sitescriptexp=''
1101 sizesize=''
1102 sizetype=''
1103 so=''
1104 socksizetype=''
1105 sharpbang=''
1106 shsharp=''
1107 spitshell=''
1108 src=''
1109 ssizetype=''
1110 startperl=''
1111 startsh=''
1112 stdchar=''
1113 d_stdio_stream_array=''
1114 stdio_stream_array=''
1115 sysman=''
1116 trnl=''
1117 uidformat=''
1118 uidsign=''
1119 uidsize=''
1120 uidtype=''
1121 archname64=''
1122 use64bitall=''
1123 use64bitint=''
1124 usefaststdio=''
1125 ccflags_uselargefiles=''
1126 ldflags_uselargefiles=''
1127 libswanted_uselargefiles=''
1128 uselargefiles=''
1129 uselongdouble=''
1130 usemorebits=''
1131 usemultiplicity=''
1132 nm_opt=''
1133 nm_so_opt=''
1134 runnm=''
1135 usenm=''
1136 useperlio=''
1137 userelocatableinc=''
1138 usesocks=''
1139 d_oldpthreads=''
1140 use5005threads=''
1141 useithreads=''
1142 usereentrant=''
1143 usethreads=''
1144 incpath=''
1145 mips_type=''
1146 usrinc=''
1147 d_vendorarch=''
1148 installvendorarch=''
1149 vendorarch=''
1150 vendorarchexp=''
1151 d_vendorbin=''
1152 installvendorbin=''
1153 vendorbin=''
1154 vendorbinexp=''
1155 installvendorhtml1dir=''
1156 vendorhtml1dir=''
1157 vendorhtml1direxp=''
1158 installvendorhtml3dir=''
1159 vendorhtml3dir=''
1160 vendorhtml3direxp=''
1161 d_vendorlib=''
1162 installvendorlib=''
1163 vendorlib=''
1164 vendorlib_stem=''
1165 vendorlibexp=''
1166 installvendorman1dir=''
1167 vendorman1dir=''
1168 vendorman1direxp=''
1169 installvendorman3dir=''
1170 vendorman3dir=''
1171 vendorman3direxp=''
1172 usevendorprefix=''
1173 vendorprefix=''
1174 vendorprefixexp=''
1175 d_vendorscript=''
1176 installvendorscript=''
1177 vendorscript=''
1178 vendorscriptexp=''
1179 versiononly=''
1180 defvoidused=''
1181 voidflags=''
1182 yacc=''
1183 yaccflags=''
1184 CONFIG=''
1185
1186 define='define'
1187 undef='undef'
1188 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1189 rmlist=''
1190
1191 : We must find out about Eunice early
1192 eunicefix=':'
1193 if test -f /etc/unixtovms; then
1194         eunicefix=/etc/unixtovms
1195 fi
1196 if test -f /etc/unixtovms.exe; then
1197         eunicefix=/etc/unixtovms.exe
1198 fi
1199
1200 : Set executable suffix now -- needed before hints available
1201 if test -f "/libs/version.library"; then
1202 : Amiga OS
1203     _exe=""
1204 elif test -f "/system/gnu_library/bin/ar.pm"; then
1205 : Stratus VOS
1206     _exe=".pm"
1207 elif test -n "$DJGPP"; then
1208 : DOS DJGPP
1209     _exe=".exe"
1210 elif test -d c:/. -o -n "$is_os2" ; then
1211 : OS/2 or cygwin
1212     _exe=".exe"
1213 fi
1214
1215 i_whoami=''
1216 ccname=''
1217 ccversion=''
1218 perllibs=''
1219 : set useposix=false in your hint file to disable the POSIX extension.
1220 useposix=true
1221 : set useopcode=false in your hint file to disable the Opcode extension.
1222 useopcode=true
1223 : Trailing extension.  Override this in a hint file, if needed.
1224 : Extra object files, if any, needed on this platform.
1225 archobjs=''
1226 archname=''
1227 : Possible local include directories to search.
1228 : Set locincpth to "" in a hint file to defeat local include searches.
1229 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1230 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1231 :
1232 : no include file wanted by default
1233 inclwanted=''
1234
1235 groupstype=''
1236 libnames=''
1237 : change the next line if compiling for Xenix/286 on Xenix/386
1238 xlibpth='/usr/lib/386 /lib/386'
1239 : Possible local library directories to search.
1240 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1241 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1242
1243 : general looking path for locating libraries
1244 glibpth="/lib /usr/lib $xlibpth"
1245 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1246 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1247 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1248
1249 : Private path used by Configure to find libraries.  Its value
1250 : is prepended to libpth. This variable takes care of special
1251 : machines, like the mips.  Usually, it should be empty.
1252 plibpth=''
1253
1254 : default library list
1255 libswanted=''
1256 : some systems want to use only the non-versioned libso:s
1257 ignore_versioned_solibs=''
1258 siteman1dir=''
1259 siteman3dir=''
1260 sitescript=''
1261 archname64=''
1262 ccflags_uselargefiles=''
1263 ldflags_uselargefiles=''
1264 libswanted_uselargefiles=''
1265 : set usemultiplicity on the Configure command line to enable multiplicity.
1266 : set usesocks on the Configure command line to enable socks.
1267 : set usethreads on the Configure command line to enable threads.
1268 usereentrant='undef'
1269 : full support for void wanted by default
1270 defvoidused=15
1271
1272 : List of libraries we want.
1273 : If anyone needs extra -lxxx, put those in a hint file.
1274 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1275 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1276 : We probably want to search /usr/shlib before most other libraries.
1277 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1278 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1279 glibpth="/usr/shlib $glibpth"
1280 : Do not use vfork unless overridden by a hint file.
1281 usevfork=false
1282
1283 : Find the basic shell for Bourne shell scripts
1284 case "$sh" in
1285 '')
1286         case "$SYSTYPE" in
1287         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1288         *) xxx='/bin/sh';;
1289         esac
1290         if test -f "$xxx"; then
1291                 sh="$xxx"
1292         else
1293                 : Build up a list and do a single loop so we can 'break' out.
1294                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1295                 for xxx in sh bash ksh pdksh ash; do
1296                         for p in $pth; do
1297                                 try="$try ${p}/${xxx}"
1298                         done
1299                 done
1300                 for xxx in $try; do
1301                         if test -f "$xxx"; then
1302                                 sh="$xxx";
1303                                 break
1304                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1305                                 sh="$xxx";
1306                                 break
1307                         elif test -f "$xxx.exe"; then
1308                                 sh="$xxx";
1309                                 break
1310                         fi
1311                 done
1312         fi
1313         ;;
1314 esac
1315
1316 case "$sh" in
1317 '')     cat >&2 <<EOM
1318 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1319
1320 Usually it's in /bin/sh.  How did you even get this far?
1321 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1322 we'll try to straighten this all out.
1323 EOM
1324         exit 1
1325         ;;
1326 esac
1327
1328 : see if sh knows # comments
1329 if `$sh -c '#' >/dev/null 2>&1`; then
1330         shsharp=true
1331         spitshell=cat
1332         xcat=/bin/cat
1333         test -f $xcat$_exe || xcat=/usr/bin/cat
1334         if test ! -f $xcat$_exe; then
1335                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1336                         if test -f $p/cat$_exe; then
1337                                 xcat=$p/cat
1338                                 break
1339                         fi
1340                 done
1341                 if test ! -f $xcat$_exe; then
1342                         echo "Can't find cat anywhere!"
1343                         exit 1
1344                 fi
1345         fi
1346         echo "#!$xcat" >sharp
1347         $eunicefix sharp
1348         chmod +x sharp
1349         ./sharp > today
1350         if test -s today; then
1351                 sharpbang='#!'
1352         else
1353                 echo "#! $xcat" > sharp
1354                 $eunicefix sharp
1355                 chmod +x sharp
1356                 ./sharp > today
1357                 if test -s today; then
1358                         sharpbang='#! '
1359                 else
1360                         sharpbang=': use '
1361                 fi
1362         fi
1363 else
1364         echo " "
1365         echo "Your $sh doesn't grok # comments--I will strip them later on."
1366         shsharp=false
1367         cd ..
1368         echo "exec grep -v '^[  ]*#'" >spitshell
1369         chmod +x spitshell
1370         $eunicefix spitshell
1371         spitshell=`pwd`/spitshell
1372         cd UU
1373         echo "I presume that if # doesn't work, #! won't work either!"
1374         sharpbang=': use '
1375 fi
1376 rm -f sharp today
1377
1378 : figure out how to guarantee sh startup
1379 case "$startsh" in
1380 '') startsh=${sharpbang}${sh} ;;
1381 *)
1382 esac
1383 cat >sharp <<EOSS
1384 $startsh
1385 set abc
1386 test "$?abc" != 1
1387 EOSS
1388
1389 chmod +x sharp
1390 $eunicefix sharp
1391 if ./sharp; then
1392         : echo "Yup, it does."
1393 else
1394         echo "Hmm... '$startsh' does not guarantee sh startup..."
1395         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1396 fi
1397 rm -f sharp
1398
1399
1400 : Save command line options in file UU/cmdline.opt for later use in
1401 : generating config.sh.
1402 cat > cmdline.opt <<EOSH
1403 # Configure command line arguments.
1404 config_arg0='$0'
1405 config_args='$*'
1406 config_argc=$#
1407 EOSH
1408 argn=1
1409 args_exp=''
1410 args_sep=''
1411 for arg in "$@"; do
1412         cat >>cmdline.opt <<EOSH
1413 config_arg$argn='$arg'
1414 EOSH
1415         # Extreme backslashitis: replace each ' by '"'"'
1416         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1417 $arg
1418 EOC
1419         arg_exp=`cat cmdl.opt`
1420         args_exp="$args_exp$args_sep'$arg_exp'"
1421         argn=`expr $argn + 1`
1422         args_sep=' '
1423 done
1424 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1425 # used by ./hints/os2.sh
1426 rm -f cmdl.opt
1427
1428 : produce awk script to parse command line options
1429 cat >options.awk <<'EOF'
1430 BEGIN {
1431         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1432
1433         len = length(optstr);
1434         for (i = 1; i <= len; i++) {
1435                 c = substr(optstr, i, 1);
1436                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1437                 if (a == ":") {
1438                         arg[c] = 1;
1439                         i++;
1440                 }
1441                 opt[c] = 1;
1442         }
1443 }
1444 {
1445         expect = 0;
1446         str = $0;
1447         if (substr(str, 1, 1) != "-") {
1448                 printf("'%s'\n", str);
1449                 next;
1450         }
1451         len = length($0);
1452         for (i = 2; i <= len; i++) {
1453                 c = substr(str, i, 1);
1454                 if (!opt[c]) {
1455                         printf("-%s\n", substr(str, i));
1456                         next;
1457                 }
1458                 printf("-%s\n", c);
1459                 if (arg[c]) {
1460                         if (i < len)
1461                                 printf("'%s'\n", substr(str, i + 1));
1462                         else
1463                                 expect = 1;
1464                         next;
1465                 }
1466         }
1467 }
1468 END {
1469         if (expect)
1470                 print "?";
1471 }
1472 EOF
1473
1474 : process the command line options
1475 set X `for arg in "$@"; do echo "X$arg"; done |
1476         sed -e s/X// | awk -f options.awk`
1477 eval "set $*"
1478 shift
1479 rm -f options.awk
1480
1481 : set up default values
1482 fastread=''
1483 reuseval=false
1484 config_sh=''
1485 alldone=''
1486 error=''
1487 silent=''
1488 extractsh=''
1489 override=''
1490 knowitall=''
1491 rm -f optdef.sh posthint.sh
1492 cat >optdef.sh <<EOS
1493 $startsh
1494 EOS
1495
1496
1497 : option parsing
1498 while test $# -gt 0; do
1499         case "$1" in
1500         -d) shift; fastread=yes;;
1501         -e) shift; alldone=cont;;
1502         -f)
1503                 shift
1504                 cd ..
1505                 if test -r "$1"; then
1506                         config_sh="$1"
1507                 else
1508                         echo "$me: cannot read config file $1." >&2
1509                         error=true
1510                 fi
1511                 cd UU
1512                 shift;;
1513         -h) shift; error=true;;
1514         -r) shift; reuseval=true;;
1515         -s) shift; silent=true; realsilent=true;;
1516         -E) shift; alldone=exit;;
1517         -K) shift; knowitall=true;;
1518         -O) shift; override=true;;
1519         -S) shift; silent=true; extractsh=true;;
1520         -D)
1521                 shift
1522                 case "$1" in
1523                 *=)
1524                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1525                         echo "$me: ignoring -D $1" >&2
1526                         ;;
1527                 *=*) echo "$1" | \
1528                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1529                 *) echo "$1='define'" >> optdef.sh;;
1530                 esac
1531                 shift
1532                 ;;
1533         -U)
1534                 shift
1535                 case "$1" in
1536                 *=) echo "$1" >> optdef.sh;;
1537                 *=*)
1538                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1539                         echo "$me: ignoring -U $1" >&2
1540                         ;;
1541                 *) echo "$1='undef'" >> optdef.sh;;
1542                 esac
1543                 shift
1544                 ;;
1545         -A)
1546             shift
1547             xxx=''
1548             yyy="$1"
1549             zzz=''
1550             uuu=undef
1551             case "$yyy" in
1552             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1553                  case "$zzz" in
1554                  *:*) zzz='' ;;
1555                  *)   xxx=append
1556                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1557                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1558                  esac
1559                  ;;
1560             esac
1561             case "$xxx" in
1562             '')  case "$yyy" in
1563                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1564                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1565                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1566                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1567                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1568                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1569                  esac
1570                  ;;       
1571             esac
1572             case "$xxx" in
1573             append)
1574                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1575             clear)
1576                 echo "$yyy=''"                  >> posthint.sh ;;
1577             define)
1578                 case "$zzz" in
1579                 '') zzz=define ;;
1580                 esac
1581                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1582             eval)
1583                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1584             prepend)
1585                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1586             undef)
1587                 case "$zzz" in
1588                 '') zzz="$uuu" ;;
1589                 esac
1590                 echo "$yyy=$zzz"                >> posthint.sh ;;
1591             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1592             esac
1593             shift
1594             ;;
1595         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1596             exit 0;;
1597         --) break;;
1598         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1599         *) break;;
1600         esac
1601 done
1602
1603 case "$error" in
1604 true)
1605         cat >&2 <<EOM
1606 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1607                  [-U symbol] [-U symbol=] [-A command:symbol...]
1608   -d : use defaults for all answers.
1609   -e : go on without questioning past the production of config.sh.
1610   -f : specify an alternate default configuration file.
1611   -h : print this help message and exit (with an error status).
1612   -r : reuse C symbols value if possible (skips costly nm extraction).
1613   -s : silent mode, only echoes questions and essential information.
1614   -D : define symbol to have some value:
1615          -D symbol         symbol gets the value 'define'
1616          -D symbol=value   symbol gets the value 'value'
1617   -E : stop at the end of questions, after having produced config.sh.
1618   -K : do not use unless you know what you are doing.
1619   -O : let -D and -U override definitions from loaded configuration file.
1620   -S : perform variable substitutions on all .SH files (can mix with -f)
1621   -U : undefine symbol:
1622          -U symbol    symbol gets the value 'undef'
1623          -U symbol=   symbol gets completely empty
1624   -A : manipulate symbol after the platform specific hints have been applied:
1625          -A symbol=value                append " "value to symbol
1626          -A append:symbol=value         append value to symbol
1627          -A define:symbol=value         define symbol to have value
1628          -A clear:symbol                define symbol to be ''
1629          -A define:symbol               define symbol to be 'define'
1630          -A eval:symbol=value           define symbol to be eval of value
1631          -A prepend:symbol=value        prepend value to symbol
1632          -A undef:symbol                define symbol to be 'undef'
1633          -A undef:symbol=               define symbol to be ''
1634   -V : print version number and exit (with a zero status).
1635 EOM
1636         exit 1
1637         ;;
1638 esac
1639
1640 : Sanity checks
1641 case "$fastread$alldone" in
1642 yescont|yesexit) ;;
1643 *)
1644         case "$extractsh" in
1645         true) ;;
1646         *)
1647                 if test ! -t 0; then
1648                         echo "Say 'sh Configure', not 'sh <Configure'"
1649                         exit 1
1650                 fi
1651                 ;;
1652         esac
1653         ;;
1654 esac
1655
1656 exec 4>&1
1657 case "$silent" in
1658 true) exec 1>/dev/null;;
1659 esac
1660
1661 : run the defines and the undefines, if any, but leave the file out there...
1662 touch optdef.sh
1663 . ./optdef.sh
1664 : create the posthint manipulation script and leave the file out there...
1665 touch posthint.sh
1666
1667 : set package name
1668 package=perl5
1669 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1670 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1671 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1672 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1673 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1674 esac
1675
1676 : Some greps do not return status, grrr.
1677 echo "grimblepritz" >grimble
1678 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1679         contains=contains
1680 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1681         contains=grep
1682 else
1683         contains=contains
1684 fi
1685 rm -f grimble
1686 : the following should work in any shell
1687 case "$contains" in
1688 contains*)
1689         echo " "
1690         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1691         cat >contains <<'EOSS'
1692 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1693 EOSS
1694 chmod +x contains
1695 esac
1696
1697 : Find the path to the source tree
1698 case "$src" in
1699 '') case "$0" in
1700     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1701          case "$src" in
1702          /*)    ;;
1703          .)     ;;
1704          *)     src=`cd ../$src && pwd` ;;
1705          esac
1706          ;;
1707     *)   src='.';;
1708     esac;;
1709 esac
1710 case "$src" in
1711 '')     src=/
1712         rsrc=/
1713         ;;
1714 /*) rsrc="$src";;
1715 *) rsrc="../$src";;
1716 esac
1717 if test -f $rsrc/Configure && \
1718         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1719 then
1720    : found it, so we are ok.
1721 else
1722         rsrc=''
1723         for src in . .. ../.. ../../.. ../../../..; do
1724                 if test -f ../$src/Configure && \
1725                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1726                 then
1727                         rsrc=../$src
1728                         break
1729                 fi
1730         done
1731 fi
1732 case "$rsrc" in
1733 '')
1734         cat <<EOM >&4
1735
1736 Sorry, I can't seem to locate the source dir for $package.  Please start
1737 Configure with an explicit path -- i.e. /some/path/Configure.
1738
1739 EOM
1740         exit 1
1741         ;;
1742 ../.)   rsrc='..';;
1743 *)
1744         echo " "
1745         echo "Sources for $package found in \"$src\"." >&4
1746         ;;
1747 esac
1748
1749 : script used to extract .SH files with variable substitutions
1750 cat >extract <<'EOS'
1751 PERL_CONFIG_SH=true
1752 echo "Doing variable substitutions on .SH files..."
1753 if test -f MANIFEST; then
1754         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1755 else
1756         echo "(Looking for .SH files under the source directory.)"
1757         set x `(cd "$src"; find . -name "*.SH" -print)`
1758 fi
1759 shift
1760 case $# in
1761 0) set x `(cd "$src"; echo *.SH)`; shift;;
1762 esac
1763 if test ! -f "$src/$1"; then
1764         shift
1765 fi
1766 mkdir_p='
1767 name=$1;
1768 create="";
1769 while test $name; do
1770         if test ! -d "$name"; then
1771                 create="$name $create";
1772                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1773                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1774         else
1775                 name="";
1776         fi;
1777 done;
1778 for file in $create; do
1779         mkdir $file;
1780 done
1781 '
1782 for file in $*; do
1783         case "$src" in
1784         ".")
1785                 case "$file" in
1786                 */*)
1787                         dir=`expr X$file : 'X\(.*\)/'`
1788                         file=`expr X$file : 'X.*/\(.*\)'`
1789                         (cd "$dir" && . ./$file)
1790                         ;;
1791                 *)
1792                         . ./$file
1793                         ;;
1794                 esac
1795                 ;;
1796         *)
1797                 case "$file" in
1798                 */*)
1799                         dir=`expr X$file : 'X\(.*\)/'`
1800                         file=`expr X$file : 'X.*/\(.*\)'`
1801                         (set x $dir; shift; eval $mkdir_p)
1802                         sh <"$src/$dir/$file"
1803                         ;;
1804                 *)
1805                         sh <"$src/$file"
1806                         ;;
1807                 esac
1808                 ;;
1809         esac
1810 done
1811 if test -f "$src/config_h.SH"; then
1812         if test ! -f config.h; then
1813         : oops, they left it out of MANIFEST, probably, so do it anyway.
1814         . "$src/config_h.SH"
1815         fi
1816 fi
1817 EOS
1818
1819 : extract files and exit if asked to do so
1820 case "$extractsh" in
1821 true)
1822         case "$realsilent" in
1823         true) ;;
1824         *) exec 1>&4;;
1825         esac
1826         case "$config_sh" in
1827         '') config_sh='config.sh';;
1828         esac
1829         echo " "
1830         echo "Fetching answers from $config_sh..."
1831         cd ..
1832         . $config_sh
1833         test "$override" && . ./optdef.sh
1834         echo " "
1835         . UU/extract
1836         rm -rf UU
1837         echo "Extraction done."
1838         exit 0
1839         ;;
1840 esac
1841
1842 : Eunice requires " " instead of "", can you believe it
1843 echo " "
1844 : Here we go...
1845 echo "Beginning of configuration questions for $package."
1846
1847 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1848
1849 : first determine how to suppress newline on echo command
1850 echo " "
1851 echo "Checking echo to see how to suppress newlines..."
1852 (echo "hi there\c" ; echo " ") >.echotmp
1853 if $contains c .echotmp >/dev/null 2>&1 ; then
1854         echo "...using -n."
1855         n='-n'
1856         c=''
1857 else
1858         cat <<'EOM'
1859 ...using \c
1860 EOM
1861         n=''
1862         c='\c'
1863 fi
1864 echo $n "The star should be here-->$c"
1865 echo '*'
1866 rm -f .echotmp
1867
1868 : Now test for existence of everything in MANIFEST
1869 echo " "
1870 if test -f "$rsrc/MANIFEST"; then
1871         echo "First let's make sure your kit is complete.  Checking..." >&4
1872         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1873         rm -f missing
1874         tmppwd=`pwd`
1875         for filelist in x??; do
1876                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1877         done
1878         if test -s missing; then
1879                 cat missing >&4
1880                 cat >&4 <<'EOM'
1881
1882 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1883
1884 You have the option of continuing the configuration process, despite the
1885 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1886 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1887 and contact the author (perlbug@perl.org).
1888
1889 EOM
1890                 echo $n "Continue? [n] $c" >&4
1891                 read ans
1892                 case "$ans" in
1893                 y*)
1894                         echo "Continuing..." >&4
1895                         rm -f missing
1896                         ;;
1897                 *)
1898                         echo "ABORTING..." >&4
1899                         kill $$
1900                         ;;
1901                 esac
1902         else
1903                 echo "Looks good..."
1904         fi
1905 else
1906         echo "There is no MANIFEST file.  I hope your kit is complete !"
1907 fi
1908 rm -f missing x??
1909
1910 echo " "
1911 : Find the appropriate value for a newline for tr
1912 if test -n "$DJGPP"; then
1913        trnl='\012'
1914 fi
1915 if test X"$trnl" = X; then
1916         case "`echo foo|tr '\n' x 2>/dev/null`" in
1917         foox) trnl='\n' ;;
1918         esac
1919 fi
1920 if test X"$trnl" = X; then
1921         case "`echo foo|tr '\012' x 2>/dev/null`" in
1922         foox) trnl='\012' ;;
1923         esac
1924 fi
1925 if test X"$trnl" = X; then
1926        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1927        fooxy) trnl='\n\r' ;;
1928        esac
1929 fi
1930 if test X"$trnl" = X; then
1931         cat <<EOM >&2
1932
1933 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1934
1935 EOM
1936         exit 1
1937 fi
1938
1939 : compute the number of columns on the terminal for proper question formatting
1940 case "$COLUMNS" in
1941 '') COLUMNS='80';;
1942 esac
1943
1944 : set up the echo used in my read
1945 myecho="case \"\$xxxm\" in
1946 '') echo $n \"\$rp $c\" >&4;;
1947 *) case \"\$rp\" in
1948         '') echo $n \"[\$xxxm] $c\";;
1949         *)
1950                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1951                         echo \"\$rp\" >&4
1952                         echo $n \"[\$xxxm] $c\" >&4
1953                 else
1954                         echo $n \"\$rp [\$xxxm] $c\" >&4
1955                 fi
1956                 ;;
1957         esac;;
1958 esac"
1959
1960 : now set up to do reads with possible shell escape and default assignment
1961 cat <<EOSC >myread
1962 $startsh
1963 xxxm=\$dflt
1964 $myecho
1965 ans='!'
1966 case "\$fastread" in
1967 yes) case "\$dflt" in
1968         '') ;;
1969         *) ans='';
1970                 case "\$silent-\$rp" in
1971                 true-) ;;
1972                 *) echo " " >&4;;
1973                 esac;;
1974         esac;;
1975 *) case "\$silent" in
1976         true) case "\$rp" in
1977                 '') ans='';;
1978                 esac;;
1979         esac;;
1980 esac
1981 while expr "X\$ans" : "X!" >/dev/null; do
1982         read answ
1983         set x \$xxxm
1984         shift
1985         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1986         case  "\$answ" in
1987         "!")
1988                 sh 1>&4
1989                 echo " "
1990                 $myecho
1991                 ;;
1992         !*)
1993                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1994                 shift
1995                 sh 1>&4 -c "\$*"
1996                 echo " "
1997                 $myecho
1998                 ;;
1999         "\$ans")
2000                 case "\$ans" in
2001                 \\&*)
2002                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2003                         shift
2004                         case "\$1" in
2005                         -d)
2006                                 fastread=yes
2007                                 echo "(OK, I'll run with -d after this question.)" >&4
2008                                 ;;
2009                         -*)
2010                                 echo "*** Sorry, \$1 not supported yet." >&4
2011                                 ;;
2012                         esac
2013                         $myecho
2014                         ans=!
2015                         ;;
2016                 esac;;
2017         *)
2018                 case "\$aok" in
2019                 y)
2020                         echo "*** Substitution done -- please confirm."
2021                         xxxm="\$ans"
2022                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2023                         xxxm="\$ans"
2024                         ans=!
2025                         ;;
2026                 *)
2027                         echo "*** Error -- try again."
2028                         ans=!
2029                         ;;
2030                 esac
2031                 $myecho
2032                 ;;
2033         esac
2034         case "\$ans\$xxxm\$nostick" in
2035         '')
2036                 ans=!
2037                 $myecho
2038                 ;;
2039         esac
2040 done
2041 case "\$ans" in
2042 '') ans="\$xxxm";;
2043 esac
2044 EOSC
2045
2046 : create .config dir to save info across Configure sessions
2047 test -d ../.config || mkdir ../.config
2048 cat >../.config/README <<EOF
2049 This directory created by Configure to save information that should
2050 persist across sessions for $package.
2051
2052 You may safely delete it if you wish.
2053 EOF
2054
2055 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2056 case "$usedevel" in
2057 $define|true|[yY]*) ;;
2058 *) case "$xversion" in
2059    *[13579])
2060         cat >&4 <<EOH
2061 *** WHOA THERE!!! ***
2062
2063     This is an UNSTABLE DEVELOPMENT release.
2064     The version of this $package distribution is $xversion, that is, odd,
2065     (as opposed to even) and that signifies a development release.
2066     If you want a maintenance release, you want an even-numbered version.
2067
2068     Do ***NOT*** install this into production use.
2069     Data corruption and crashes are possible.
2070
2071     It is most seriously suggested that you do not continue any further
2072     unless you want to help in developing and debugging Perl.
2073
2074     If you *still* want to build perl, you can answer 'y' now,
2075     or pass -Dusedevel to Configure.
2076
2077 EOH
2078         rp='Do you really want to continue?'
2079         dflt='n'
2080         . ./myread
2081         case "$ans" in
2082         [yY]) echo >&4 "Okay, continuing."
2083               usedevel="$define" ;;
2084         *) echo >&4 "Okay, bye."
2085            exit 1
2086            ;;
2087         esac
2088         ;;
2089     esac
2090     ;;
2091 esac
2092 case "$usedevel" in
2093 $define|true|[yY]*)
2094         case "$versiononly" in
2095         '') versiononly="$define" ;;
2096         esac
2097         case "$installusrbinperl" in
2098         '') installusrbinperl="$undef" ;;
2099         esac
2100         ;;
2101 esac
2102
2103 : general instructions
2104 needman=true
2105 firsttime=true
2106 user=`(logname) 2>/dev/null`
2107 case "$user" in
2108 '') user=`whoami 2>&1`;;
2109 esac
2110 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2111         firsttime=false
2112         echo " "
2113         rp='Would you like to see the instructions?'
2114         dflt=n
2115         . ./myread
2116         case "$ans" in
2117         [yY]*) ;;
2118         *) needman=false;;
2119         esac
2120 fi
2121 if $needman; then
2122         cat <<EOH
2123
2124 This installation shell script will examine your system and ask you questions
2125 to determine how the perl5 package should be installed. If you get
2126 stuck on a question, you may use a ! shell escape to start a subshell or
2127 execute a command.  Many of the questions will have default answers in square
2128 brackets; typing carriage return will give you the default.
2129
2130 On some of the questions which ask for file or directory names you are allowed
2131 to use the ~name construct to specify the login directory belonging to "name",
2132 even if you don't have a shell which knows about that.  Questions where this is
2133 allowed will be marked "(~name ok)".
2134
2135 EOH
2136         rp=''
2137         dflt='Type carriage return to continue'
2138         . ./myread
2139         cat <<'EOH'
2140
2141 The prompter used in this script allows you to use shell variables and
2142 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2143 in the default answer, as if the default line was a set of arguments given to a
2144 script shell.  This means you may also use $* to repeat the whole default line,
2145 so you do not have to re-type everything to add something to the default.
2146
2147 Everytime there is a substitution, you will have to confirm.  If there is an
2148 error (e.g. an unmatched backtick), the default answer will remain unchanged
2149 and you will be prompted again.
2150
2151 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2152 the questions and use the computed defaults (or the previous answers if there
2153 was already a config.sh file). Type 'Configure -h' for a list of options.
2154 You may also start interactively and then answer '& -d' at any prompt to turn
2155 on the non-interactive behaviour for the remainder of the execution.
2156
2157 EOH
2158         . ./myread
2159         cat <<EOH
2160
2161 Much effort has been expended to ensure that this shell script will run on any
2162 Unix system.  If despite that it blows up on yours, your best bet is to edit
2163 Configure and run it again.  If you can't run Configure for some reason,
2164 you'll have to generate a config.sh file by hand.  Whatever problems you
2165 have, let me (perlbug@perl.org) know how I blew it.
2166
2167 This installation script affects things in two ways:
2168
2169 1) it may do direct variable substitutions on some of the files included
2170    in this kit.
2171 2) it builds a config.h file for inclusion in C programs.  You may edit
2172    any of these files as the need arises after running this script.
2173
2174 If you make a mistake on a question, there is no easy way to back up to it
2175 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2176 files.  Configure will offer to let you do this before it runs the SH files.
2177
2178 EOH
2179         dflt='Type carriage return to continue'
2180         . ./myread
2181         case "$firsttime" in
2182         true) echo $user >>../.config/instruct;;
2183         esac
2184 fi
2185
2186 : find out where common programs are
2187 echo " "
2188 echo "Locating common programs..." >&4
2189 cat <<EOSC >loc
2190 $startsh
2191 case \$# in
2192 0) exit 1;;
2193 esac
2194 thing=\$1
2195 shift
2196 dflt=\$1
2197 shift
2198 for dir in \$*; do
2199         case "\$thing" in
2200         .)
2201         if test -d \$dir/\$thing; then
2202                 echo \$dir
2203                 exit 0
2204         fi
2205         ;;
2206         *)
2207         for thisthing in \$dir/\$thing; do
2208                 : just loop through to pick last item
2209         done
2210         if test -f \$thisthing; then
2211                 echo \$thisthing
2212                 exit 0
2213         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2214                 echo \$thisthing
2215                 exit 0
2216         elif test -f \$dir/\$thing.exe; then
2217                 if test -n "$DJGPP"; then
2218                         echo \$dir/\$thing.exe
2219                 elif test "$eunicefix" != ":"; then
2220                         : on Eunice apparently
2221                         echo \$dir/\$thing
2222                         exit 0
2223                 fi
2224                 exit 0
2225         fi
2226         ;;
2227         esac
2228 done
2229 echo \$dflt
2230 exit 1
2231 EOSC
2232 chmod +x loc
2233 $eunicefix loc
2234 loclist="
2235 awk
2236 cat
2237 chmod
2238 comm
2239 cp
2240 echo
2241 expr
2242 grep
2243 ls
2244 mkdir
2245 rm
2246 sed
2247 sort
2248 touch
2249 tr
2250 uniq
2251 "
2252 trylist="
2253 Mcc
2254 ar
2255 bison
2256 byacc
2257 cpp
2258 csh
2259 date
2260 egrep
2261 gmake
2262 gzip
2263 less
2264 ln
2265 make
2266 more
2267 nm
2268 nroff
2269 pg
2270 test
2271 uname
2272 zip
2273 "
2274 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2275 pth="$pth /lib /usr/lib"
2276 for file in $loclist; do
2277         eval xxx=\$$file
2278         case "$xxx" in
2279         /*|?:[\\/]*)
2280                 if test -f "$xxx"; then
2281                         : ok
2282                 else
2283                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2284                         xxx=`./loc $file $file $pth`
2285                 fi
2286                 ;;
2287         '') xxx=`./loc $file $file $pth`;;
2288         *) xxx=`./loc $xxx $xxx $pth`;;
2289         esac
2290         eval $file=$xxx$_exe
2291         eval _$file=$xxx
2292         case "$xxx" in
2293         /*)
2294                 echo $file is in $xxx.
2295                 ;;
2296         ?:[\\/]*)
2297                 echo $file is in $xxx.
2298                 ;;
2299         *)
2300                 echo "I don't know where '$file' is, and my life depends on it." >&4
2301                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2302                 exit 1
2303                 ;;
2304         esac
2305 done
2306 echo " "
2307 echo "Don't worry if any of the following aren't found..."
2308 say=offhand
2309 for file in $trylist; do
2310         eval xxx=\$$file
2311         case "$xxx" in
2312         /*|?:[\\/]*)
2313                 if test -f "$xxx"; then
2314                         : ok
2315                 else
2316                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2317                         xxx=`./loc $file $file $pth`
2318                 fi
2319                 ;;
2320         '') xxx=`./loc $file $file $pth`;;
2321         *) xxx=`./loc $xxx $xxx $pth`;;
2322         esac
2323         eval $file=$xxx$_exe
2324         eval _$file=$xxx
2325         case "$xxx" in
2326         /*)
2327                 echo $file is in $xxx.
2328                 ;;
2329         ?:[\\/]*)
2330                 echo $file is in $xxx.
2331                 ;;
2332         *)
2333                 echo "I don't see $file out there, $say."
2334                 say=either
2335                 ;;
2336         esac
2337 done
2338 case "$egrep" in
2339 egrep)
2340         echo "Substituting grep for egrep."
2341         egrep=$grep
2342         _egrep=$grep
2343         ;;
2344 esac
2345 case "$ln" in
2346 ln)
2347         echo "Substituting cp for ln."
2348         ln=$cp
2349         _ln=$cp
2350         ;;
2351 esac
2352 case "$make" in
2353 make)   
2354         case "$gmake" in
2355         gmake)
2356         echo "I can't find make or gmake, and my life depends on it." >&4
2357         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2358         exit 1
2359         ;;
2360         esac
2361         ;;
2362 esac    
2363 case "$gmake" in
2364 gmake)  ;;
2365 *)      # We can't have osname yet.
2366         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2367                 # Assume that gmake, if found, is definitely GNU make
2368                 # and prefer it over the system make.
2369                 echo "Substituting gmake for make."
2370                 make=$gmake
2371                 _make=$gmake
2372         fi
2373         ;;
2374 esac
2375 case "$test" in
2376 test)
2377         echo "Hopefully test is built into your sh."
2378         ;;
2379 *)
2380         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2381                 echo "Using the test built into your sh."
2382                 test=test
2383                 _test=test
2384         fi
2385         ;;
2386 esac
2387 case "$echo" in
2388 echo)
2389         echo "Hopefully echo is built into your sh."
2390         ;;
2391 '') ;;
2392 *)
2393         echo " "
2394 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2395         $echo $n "hi there$c" >foo1
2396         echo $n "hi there$c" >foo2
2397         if cmp foo1 foo2 >/dev/null 2>&1; then
2398                 echo "They are compatible.  In fact, they may be identical."
2399         else
2400                 case "$n" in
2401                 '-n') n='' c='\c';;
2402                 *) n='-n' c='';;
2403                 esac
2404                 cat <<FOO
2405 They are not compatible!  You are probably running ksh on a non-USG system.
2406 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2407 have echo built in and we may have to run some Bourne shell scripts.  That
2408 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2409
2410 FOO
2411                 $echo $n "The star should be here-->$c"
2412                 $echo "*"
2413         fi
2414         $rm -f foo1 foo2
2415         ;;
2416 esac
2417
2418 cat <<EOS >trygcc
2419 $startsh
2420 EOS
2421 cat <<'EOSC' >>trygcc
2422 case "$cc" in
2423 '') ;;
2424 *)  $rm -f try try.*
2425     $cat >try.c <<EOM
2426 int main(int argc, char *argv[]) {
2427   return 0;
2428 }
2429 EOM
2430     if $cc -o try $ccflags $ldflags try.c; then
2431        :
2432     else
2433         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2434         despair=yes
2435         trygcc=yes
2436         case "$cc" in
2437         *gcc*) trygcc=no ;;
2438         esac
2439         case "`$cc -v -c try.c 2>&1`" in
2440         *gcc*) trygcc=no ;;
2441         esac
2442         if $test X"$trygcc" = Xyes; then
2443             if gcc -o try -c try.c; then
2444                 echo " "
2445                 echo "You seem to have a working gcc, though." >&4
2446                 rp="Would you like to use it?"
2447                 dflt=y
2448                 if $test -f myread; then
2449                     . ./myread
2450                 else
2451                     if $test -f UU/myread; then
2452                         . ./UU/myread
2453                     else
2454                         echo "Cannot find myread, sorry.  Aborting." >&2
2455                         exit 1
2456                     fi
2457                 fi  
2458                 case "$ans" in
2459                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2460                        if $test -f usethreads.cbu; then
2461                            $cat >&4 <<EOM 
2462
2463 *** However, any setting of the C compiler flags (e.g. for thread support)
2464 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2465 *** (together with e.g. -Dusethreads).
2466
2467 EOM
2468                        fi;;
2469                 esac
2470             fi
2471         fi
2472     fi
2473     $rm -f try try.*
2474     ;;
2475 esac
2476 EOSC
2477
2478 cat <<EOS >checkcc
2479 $startsh
2480 EOS
2481 cat <<'EOSC' >>checkcc
2482 case "$cc" in        
2483 '') ;;
2484 *)  $rm -f try try.*              
2485     $cat >try.c <<EOM
2486 int main(int argc, char *argv[]) {
2487   return 0;
2488 }
2489 EOM
2490     if $cc -o try $ccflags $ldflags try.c; then
2491        :
2492     else
2493         if $test X"$despair" = Xyes; then
2494            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2495         fi
2496         $cat >&4 <<EOM         
2497 You need to find a working C compiler.
2498 Either (purchase and) install the C compiler supplied by your OS vendor,
2499 or for a free C compiler try http://gcc.gnu.org/
2500 I cannot continue any further, aborting.
2501 EOM
2502         exit 1
2503     fi
2504     $rm -f try try.*
2505     ;;
2506 esac
2507 EOSC
2508
2509 : determine whether symbolic links are supported
2510 echo " "
2511 $touch blurfl
2512 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2513         echo "Symbolic links are supported." >&4
2514         lns="$ln -s"
2515 else
2516         echo "Symbolic links are NOT supported." >&4
2517         lns="$ln"
2518 fi
2519 $rm -f blurfl sym
2520
2521 : determine whether symbolic links are supported
2522 echo " "
2523 case "$lns" in
2524 *"ln"*" -s")
2525         echo "Checking how to test for symbolic links..." >&4
2526         $lns blurfl sym
2527         if $test "X$issymlink" = X; then
2528                 case "$newsh" in
2529                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2530                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2531                 esac
2532                 if test $? = 0; then
2533                         issymlink="test -h"
2534                 else
2535                         echo "Your builtin 'test -h' may be broken." >&4
2536                         case "$test" in
2537                         /*)     ;;
2538                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2539                                 for p in $pth
2540                                 do
2541                                         if test -f "$p/$test"; then
2542                                                 test="$p/$test"
2543                                                 break
2544                                         fi
2545                                 done
2546                                 ;;
2547                         esac
2548                         case "$test" in
2549                         /*)
2550                                 echo "Trying external '$test -h'." >&4
2551                                 issymlink="$test -h"
2552                                 if $test ! -h sym >/dev/null 2>&1; then
2553                                         echo "External '$test -h' is broken, too." >&4
2554                                         issymlink=''
2555                                 fi
2556                                 ;;
2557                         *)      issymlink='' ;;
2558                         esac
2559                 fi              
2560         fi
2561         if $test "X$issymlink" = X; then
2562                 if $test -L sym 2>/dev/null; then
2563                         issymlink="$test -L"
2564                         echo "The builtin '$test -L' worked." >&4
2565                 fi
2566         fi
2567         if $test "X$issymlink" != X; then
2568                 echo "You can test for symbolic links with '$issymlink'." >&4
2569         else
2570                 echo "I do not know how you can test for symbolic links." >&4
2571         fi
2572         $rm -f blurfl sym
2573         ;;
2574 *)      echo "No symbolic links, so not testing for their testing..." >&4
2575         ;;
2576 esac
2577 echo " "
2578
2579
2580 case "$mksymlinks" in
2581 $define|true|[yY]*)
2582         case "$src" in
2583         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2584                 exit 1
2585                 ;;
2586         *)      case "$lns:$issymlink" in
2587                 *"ln"*" -s:"*"test -"?)
2588                         echo "Creating the symbolic links..." >&4
2589                         echo "(First creating the subdirectories...)" >&4
2590                         cd ..
2591                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2592                                 read directory
2593                                 test -z "$directory" && break
2594                                 mkdir -p $directory
2595                         done
2596                         # Sanity check 1.
2597                         if test ! -d t/base; then
2598                                 echo "Failed to create the subdirectories.  Aborting." >&4
2599                                 exit 1
2600                         fi
2601                         echo "(Then creating the symlinks...)" >&4
2602                         awk '{print $1}' $src/MANIFEST | while true; do
2603                                 read filename
2604                                 test -z "$filename" && break
2605                                 if test -f $filename; then
2606                                         if $issymlink $filename; then
2607                                                 rm -f $filename
2608                                         fi
2609                                 fi
2610                                 if test -f $filename; then
2611                                         echo "$filename already exists, not symlinking."
2612                                 else
2613                                         ln -s $src/$filename $filename
2614                                 fi
2615                         done
2616                         # Sanity check 2.
2617                         if test ! -f t/base/lex.t; then
2618                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2619                                 exit 1
2620                         fi
2621                         cd UU
2622                         ;;
2623                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2624                         ;;
2625                 esac
2626                 ;;
2627         esac
2628         ;;
2629 esac
2630
2631
2632 case "$usecrosscompile" in
2633 $define|true|[yY]*)
2634         $echo "Cross-compiling..."
2635         croak=''
2636         case "$cc" in
2637         *-*-gcc) # A cross-compiling gcc, probably.
2638             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2639             ar=$targetarch-ar
2640             # leave out ld, choosing it is more complex
2641             nm=$targetarch-nm
2642             ranlib=$targetarch-ranlib
2643             $echo 'extern int foo;' > try.c
2644             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2645             shift
2646             if $test $# -gt 0; then
2647                 incpth="$incpth $*"
2648                 incpth="`$echo $incpth|$sed 's/^ //'`"
2649                 echo "Guessing incpth '$incpth'." >&4
2650                 for i in $*; do
2651                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2652                     if $test -d $j; then
2653                         libpth="$libpth $j"
2654                     fi
2655                 done   
2656                 libpth="`$echo $libpth|$sed 's/^ //'`"
2657                 echo "Guessing libpth '$libpth'." >&4
2658             fi
2659             $rm -f try.c
2660             ;;
2661         esac
2662         case "$targetarch" in
2663         '') echo "Targetarch not defined." >&4; croak=y ;;
2664         *)  echo "Using targetarch $targetarch." >&4 ;;
2665         esac
2666         case "$incpth" in
2667         '') echo "Incpth not defined." >&4; croak=y ;;
2668         *)  echo "Using incpth '$incpth'." >&4 ;;
2669         esac
2670         case "$libpth" in
2671         '') echo "Libpth not defined." >&4; croak=y ;;
2672         *)  echo "Using libpth '$libpth'." >&4 ;;
2673         esac
2674         case "$usrinc" in
2675         '') for i in $incpth; do
2676                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2677                     usrinc=$i
2678                     echo "Guessing usrinc $usrinc." >&4
2679                     break
2680                 fi
2681             done
2682             case "$usrinc" in
2683             '') echo "Usrinc not defined." >&4; croak=y ;;
2684             esac
2685             ;;
2686         *)  echo "Using usrinc $usrinc." >&4 ;;
2687         esac
2688         case "$targethost" in
2689         '') echo "Targethost not defined." >&4; croak=y ;;
2690         *)  echo "Using targethost $targethost." >&4
2691         esac
2692         locincpth=' '
2693         loclibpth=' '
2694         case "$croak" in
2695         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2696         esac
2697         case "$src" in
2698         /*) run=$src/Cross/run
2699             targetmkdir=$src/Cross/mkdir
2700             to=$src/Cross/to
2701             from=$src/Cross/from
2702             ;;
2703         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2704             run=$pwd/Cross/run
2705             targetmkdir=$pwd/Cross/mkdir
2706             to=$pwd/Cross/to
2707             from=$pwd/Cross/from
2708             ;;
2709         esac
2710         case "$targetrun" in
2711         '') targetrun=ssh ;;
2712         esac
2713         case "$targetto" in
2714         '') targetto=scp ;;
2715         esac
2716         case "$targetfrom" in
2717         '') targetfrom=scp ;;
2718         esac
2719         run=$run-$targetrun
2720         to=$to-$targetto
2721         from=$from-$targetfrom
2722         case "$targetdir" in
2723         '')  targetdir=/tmp
2724              echo "Guessing targetdir $targetdir." >&4
2725              ;;
2726         esac
2727         case "$targetuser" in
2728         '')  targetuser=root
2729              echo "Guessing targetuser $targetuser." >&4
2730              ;;
2731         esac
2732         case "$targetfrom" in
2733         scp)    q=-q ;;
2734         *)      q='' ;;
2735         esac
2736         case "$targetrun" in
2737         ssh|rsh)
2738             cat >$run <<EOF
2739 #!/bin/sh
2740 case "\$1" in
2741 -cwd)
2742   shift
2743   cwd=\$1
2744   shift
2745   ;;
2746 esac
2747 case "\$cwd" in
2748 '') cwd=$targetdir ;;
2749 esac
2750 exe=\$1
2751 shift
2752 if $test ! -f \$exe.xok; then
2753   $to \$exe
2754   $touch \$exe.xok
2755 fi
2756 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2757 EOF
2758             ;;
2759         *)  echo "Unknown targetrun '$targetrun'" >&4
2760             exit 1
2761             ;;
2762         esac
2763         case "$targetmkdir" in
2764         */Cross/mkdir)
2765             cat >$targetmkdir <<EOF
2766 #!/bin/sh
2767 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2768 EOF
2769             $chmod a+rx $targetmkdir
2770             ;;
2771         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2772             exit 1
2773             ;;
2774         esac
2775         case "$targetto" in
2776         scp|rcp)
2777             cat >$to <<EOF
2778 #!/bin/sh
2779 for f in \$@
2780 do
2781   case "\$f" in
2782   /*)
2783     $targetmkdir \`dirname \$f\`
2784     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2785     ;;
2786   *)
2787     $targetmkdir $targetdir/\`dirname \$f\`
2788     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2789     ;;
2790   esac
2791 done
2792 exit 0
2793 EOF
2794             ;;
2795         cp) cat >$to <<EOF
2796 #!/bin/sh
2797 for f in \$@
2798 do
2799   case "\$f" in
2800   /*)
2801     $mkdir -p $targetdir/\`dirname \$f\`
2802     $cp \$f $targetdir/\$f || exit 1
2803     ;;
2804   *)
2805     $targetmkdir $targetdir/\`dirname \$f\`
2806     $cp \$f $targetdir/\$f || exit 1
2807     ;;
2808   esac
2809 done
2810 exit 0
2811 EOF
2812             ;;
2813         *)  echo "Unknown targetto '$targetto'" >&4
2814             exit 1
2815             ;;
2816         esac
2817         case "$targetfrom" in
2818         scp|rcp)
2819           cat >$from <<EOF
2820 #!/bin/sh
2821 for f in \$@
2822 do
2823   $rm -f \$f
2824   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2825 done
2826 exit 0
2827 EOF
2828             ;;
2829         cp) cat >$from <<EOF
2830 #!/bin/sh
2831 for f in \$@
2832 do
2833   $rm -f \$f
2834   cp $targetdir/\$f . || exit 1
2835 done
2836 exit 0
2837 EOF
2838             ;;
2839         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2840             exit 1
2841             ;;
2842         esac
2843         if $test ! -f $run; then
2844             echo "Target 'run' script '$run' not found." >&4
2845         else
2846             $chmod a+rx $run
2847         fi
2848         if $test ! -f $to; then
2849             echo "Target 'to' script '$to' not found." >&4
2850         else
2851             $chmod a+rx $to
2852         fi
2853         if $test ! -f $from; then
2854             echo "Target 'from' script '$from' not found." >&4
2855         else
2856             $chmod a+rx $from
2857         fi
2858         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2859             exit 1
2860         fi
2861         cat >&4 <<EOF
2862 Using '$run' for remote execution,
2863 and '$from' and '$to'
2864 for remote file transfer.
2865 EOF
2866         ;;
2867 *)      run=''
2868         to=:
2869         from=:
2870         usecrosscompile='undef'
2871         targetarch=''
2872         ;;
2873 esac
2874
2875 : see whether [:lower:] and [:upper:] are supported character classes
2876 echo " "
2877 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2878 ABYZ)
2879         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2880         up='[:upper:]'
2881         low='[:lower:]'
2882         ;;
2883 *)      # There is a discontinuity in EBCDIC between 'R' and 'S'
2884         # (0xd9 and 0xe2), therefore that is a nice testing point.
2885         if test "X$up" = X -o "X$low" = X; then
2886             case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2887             rs) up='[A-Z]'
2888                 low='[a-z]'
2889                 ;;
2890             esac
2891         fi
2892         if test "X$up" = X -o "X$low" = X; then
2893             case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2894             rs) up='A-Z'
2895                 low='a-z'
2896                 ;;
2897             esac
2898         fi
2899         if test "X$up" = X -o "X$low" = X; then
2900             case "`echo RS | od -x 2>/dev/null`" in
2901             *D9E2*|*d9e2*)
2902                 echo "Hey, this might be EBCDIC." >&4
2903                 if test "X$up" = X -o "X$low" = X; then
2904                     case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2905                     rs) up='[A-IJ-RS-Z]'
2906                         low='[a-ij-rs-z]'
2907                         ;;
2908                     esac
2909                 fi
2910                 if test "X$up" = X -o "X$low" = X; then
2911                     case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2912                     rs) up='A-IJ-RS-Z'
2913                         low='a-ij-rs-z'
2914                         ;;
2915                     esac
2916                 fi
2917                 ;;
2918             esac
2919         fi
2920 esac
2921 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
2922 rs)
2923     echo "Using $up and $low to convert case." >&4
2924     ;;
2925 *)
2926     echo "I don't know how to translate letters from upper to lower case." >&4
2927     echo "Your tr is not acting any way I know of." >&4
2928     exit 1
2929     ;;
2930 esac
2931 : set up the translation script tr, must be called with ./tr of course
2932 cat >tr <<EOSC
2933 $startsh
2934 case "\$1\$2" in
2935 '[A-Z][a-z]') exec $tr '$up' '$low';;
2936 '[a-z][A-Z]') exec $tr '$low' '$up';;
2937 esac
2938 exec $tr "\$@"
2939 EOSC
2940 chmod +x tr
2941 $eunicefix tr
2942
2943 : Try to determine whether config.sh was made on this system
2944 case "$config_sh" in
2945 '')
2946 myuname=`$uname -a 2>/dev/null`
2947 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2948 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2949 # because the A-Z/a-z are not consecutive.
2950 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2951         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2952 newmyuname="$myuname"
2953 dflt=n
2954 case "$knowitall" in
2955 '')
2956         if test -f ../config.sh; then
2957                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2958                         eval "`grep myuname= ../config.sh`"
2959                 fi
2960                 if test "X$myuname" = "X$newmyuname"; then
2961                         dflt=y
2962                 fi
2963         fi
2964         ;;
2965 *) dflt=y;;
2966 esac
2967
2968 : Get old answers from old config file if Configure was run on the
2969 : same system, otherwise use the hints.
2970 hint=default
2971 cd ..
2972 if test -f config.sh; then
2973         echo " "
2974         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2975         . UU/myread
2976         case "$ans" in
2977         n*|N*) echo "OK, I'll ignore it."
2978                 mv config.sh config.sh.old
2979                 myuname="$newmyuname"
2980                 ;;
2981         *)  echo "Fetching default answers from your old config.sh file..." >&4
2982                 tmp_n="$n"
2983                 tmp_c="$c"
2984                 tmp_sh="$sh"
2985                 . ./config.sh
2986                 cp config.sh UU
2987                 n="$tmp_n"
2988                 c="$tmp_c"
2989                 : Older versions did not always set $sh.  Catch re-use of such
2990                 : an old config.sh.
2991                 case "$sh" in
2992                 '') sh="$tmp_sh" ;;
2993                 esac
2994                 hint=previous
2995                 ;;
2996         esac
2997 fi
2998 . ./UU/checkcc
2999 if test ! -f config.sh; then
3000         $cat <<EOM
3001
3002 First time through, eh?  I have some defaults handy for some systems
3003 that need some extra help getting the Configure answers right:
3004
3005 EOM
3006         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3007         dflt=''
3008         : Half the following guesses are probably wrong... If you have better
3009         : tests or hints, please send them to perlbug@perl.org
3010         : The metaconfig authors would also appreciate a copy...
3011         $test -f /irix && osname=irix
3012         $test -f /xenix && osname=sco_xenix
3013         $test -f /dynix && osname=dynix
3014         $test -f /dnix && osname=dnix
3015         $test -f /lynx.os && osname=lynxos
3016         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3017         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3018         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3019         $test -f /bin/mips && /bin/mips && osname=mips
3020         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3021                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3022         $test -d /usr/apollo/bin && osname=apollo
3023         $test -f /etc/saf/_sactab && osname=svr4
3024         $test -d /usr/include/minix && osname=minix
3025         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3026         if $test -d /MachTen -o -d /MachTen_Folder; then
3027                 osname=machten
3028                 if $test -x /sbin/version; then
3029                         osvers=`/sbin/version | $awk '{print $2}' |
3030                         $sed -e 's/[A-Za-z]$//'`
3031                 elif $test -x /usr/etc/version; then
3032                         osvers=`/usr/etc/version | $awk '{print $2}' |
3033                         $sed -e 's/[A-Za-z]$//'`
3034                 else
3035                         osvers="$2.$3"
3036                 fi
3037         fi
3038
3039         $test -f /sys/posix.dll &&
3040                 $test -f /usr/bin/what &&
3041                 set X `/usr/bin/what /sys/posix.dll` &&
3042                 $test "$3" = UWIN &&
3043                 osname=uwin &&
3044                 osvers="$5"
3045
3046         if $test -f $uname; then
3047                 set X $myuname
3048                 shift
3049
3050                 case "$5" in
3051                 fps*) osname=fps ;;
3052                 mips*)
3053                         case "$4" in
3054                         umips) osname=umips ;;
3055                         *) osname=mips ;;
3056                         esac;;
3057                 [23]100) osname=mips ;;
3058                 next*) osname=next ;;
3059                 i386*)
3060                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3061                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3062                                 osname='sco'
3063                                 osvers=$tmp
3064                         elif $test -f /etc/kconfig; then
3065                                 osname=isc
3066                                 if test "$lns" = "$ln -s"; then
3067                                         osvers=4
3068                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3069                                         osvers=3
3070                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3071                                         osvers=2
3072                                 fi
3073                         fi
3074                         tmp=''
3075                         ;;
3076                 pc*)
3077                         if test -n "$DJGPP"; then
3078                                 osname=dos
3079                                 osvers=djgpp
3080                         fi
3081                         ;;
3082                 esac
3083
3084                 case "$1" in
3085                 aix) osname=aix
3086                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3087                         case "$tmp" in
3088                         # oslevel can fail with:
3089                         # oslevel: Unable to acquire lock.
3090                         *not\ found) osvers="$4"."$3" ;;
3091                         '<3240'|'<>3240') osvers=3.2.0 ;;
3092                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3093                         '=3250'|'>3250') osvers=3.2.5 ;;
3094                         *) osvers=$tmp;;
3095                         esac
3096                         ;;
3097                 bsd386) osname=bsd386
3098                         osvers=`$uname -r`
3099                         ;;
3100                 cygwin*) osname=cygwin
3101                         osvers="$3"
3102                         ;;
3103                 *dc.osx) osname=dcosx
3104                         osvers="$3"
3105                         ;;
3106                 dnix) osname=dnix
3107                         osvers="$3"
3108                         ;;
3109                 domainos) osname=apollo
3110                         osvers="$3"
3111                         ;;
3112                 dgux)   osname=dgux 
3113                         osvers="$3"
3114                         ;;
3115                 dynixptx*) osname=dynixptx
3116                         osvers=`echo "$4"|sed 's/^v//'`
3117                         ;;
3118                 freebsd) osname=freebsd 
3119                         osvers="$3" ;;
3120                 genix)  osname=genix ;;
3121                 gnu)    osname=gnu
3122                         osvers="$3" ;;
3123                 hp*)    osname=hpux 
3124                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3125                         ;;
3126                 irix*)  osname=irix
3127                         case "$3" in
3128                         4*) osvers=4 ;;
3129                         5*) osvers=5 ;;
3130                         *)      osvers="$3" ;;
3131                         esac
3132                         ;;
3133                 linux)  osname=linux
3134                         case "$3" in
3135                         *)      osvers="$3" ;;
3136                         esac
3137                         ;;
3138                 MiNT)   osname=mint
3139                         ;;
3140                 netbsd*) osname=netbsd
3141                         osvers="$3"
3142                         ;;
3143                 news-os) osvers="$3"
3144                         case "$3" in
3145                         4*) osname=newsos4 ;;
3146                         *) osname=newsos ;;
3147                         esac
3148                         ;;
3149                 next*) osname=next ;;
3150                 nonstop-ux) osname=nonstopux ;;
3151                 openbsd) osname=openbsd
3152                         osvers="$3"
3153                         ;;
3154                 os2)    osname=os2
3155                         osvers="$4"
3156                         ;;
3157                 POSIX-BC | posix-bc ) osname=posix-bc
3158                         osvers="$3"
3159                         ;;
3160                 powerux | power_ux | powermax_os | powermaxos | \
3161                 powerunix | power_unix) osname=powerux
3162                         osvers="$3"
3163                         ;;
3164                 qnx) osname=qnx
3165                         osvers="$4"
3166                         ;;
3167                 solaris) osname=solaris
3168                         case "$3" in
3169                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3170                         *)      osvers="$3" ;;
3171                         esac
3172                         ;;
3173                 sunos) osname=sunos
3174                         case "$3" in
3175                         5*) osname=solaris
3176                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3177                         *)      osvers="$3" ;;
3178                         esac
3179                         ;;
3180                 titanos) osname=titanos
3181                         case "$3" in
3182                         1*) osvers=1 ;;
3183                         2*) osvers=2 ;;
3184                         3*) osvers=3 ;;
3185                         4*) osvers=4 ;;
3186                         *)      osvers="$3" ;;
3187                         esac
3188                         ;;
3189                 ultrix) osname=ultrix
3190                         osvers="$3"
3191                         ;;
3192                 osf1|mls+)      case "$5" in
3193                                 alpha)
3194                                         osname=dec_osf
3195                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3196                                         case "$osvers" in
3197                                         [1-9].[0-9]*) ;;
3198                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3199                                         esac
3200                                         ;;
3201                         hp*)    osname=hp_osf1  ;;
3202                         mips)   osname=mips_osf1 ;;
3203                         esac
3204                         ;;
3205                 # UnixWare 7.1.2 is known as Open UNIX 8
3206                 openunix|unixware) osname=svr5
3207                         osvers="$4"
3208                         ;;
3209                 uts)    osname=uts
3210                         osvers="$3"
3211                         ;;
3212                 vos) osvers="$3"
3213                         ;;
3214                 $2) case "$osname" in
3215                         *isc*) ;;
3216                         *freebsd*) ;;
3217                         svr*)
3218                                 : svr4.x or possibly later
3219                                 case "svr$3" in 
3220                                 ${osname}*)
3221                                         osname=svr$3
3222                                         osvers=$4
3223                                         ;;
3224                                 esac
3225                                 case "$osname" in
3226                                 svr4.0)
3227                                         : Check for ESIX
3228                                         if test -f /stand/boot ; then
3229                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3230                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3231                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3232                                                         if test -n "$isesix"; then
3233                                                                 osname=esix4
3234                                                         fi
3235                                                 fi
3236                                         fi
3237                                         ;;
3238                                 esac
3239                                 ;;
3240                         *)      if test -f /etc/systemid; then
3241                                         osname=sco
3242                                         set `echo $3 | $sed 's/\./ /g'` $4
3243                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3244                                                 osvers=$1.$2.$3
3245                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3246                                                 osvers=$1.$2
3247                                         elif $test -f $src/hints/sco_$1.sh; then
3248                                                 osvers=$1
3249                                         fi
3250                                 else
3251                                         case "$osname" in
3252                                         '') : Still unknown.  Probably a generic Sys V.
3253                                                 osname="sysv"
3254                                                 osvers="$3"
3255                                                 ;;
3256                                         esac
3257                                 fi
3258                                 ;;
3259                         esac
3260                         ;;
3261                 *)      case "$osname" in
3262                         '') : Still unknown.  Probably a generic BSD.
3263                                 osname="$1"
3264                                 osvers="$3"
3265                                 ;;
3266                         esac
3267                         ;;
3268                 esac
3269         else
3270                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3271                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3272                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3273                                 osname=news_os
3274                         fi
3275                         $rm -f UU/kernel.what
3276                 elif test -d c:/. -o -n "$is_os2" ; then
3277                         set X $myuname
3278                         osname=os2
3279                         osvers="$5"
3280                 fi
3281         fi
3282         
3283         case "$targetarch" in
3284         '') ;;
3285         *)  hostarch=$osname
3286             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3287             osvers=''
3288             ;;
3289         esac
3290
3291         : Now look for a hint file osname_osvers, unless one has been
3292         : specified already.
3293         case "$hintfile" in
3294         ''|' ')
3295                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3296                 : Also try without trailing minor version numbers.
3297                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3298                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3299                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3300                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3301                 case "$file" in
3302                 '') dflt=none ;;
3303                 *)  case "$osvers" in
3304                         '') dflt=$file
3305                                 ;;
3306                         *)  if $test -f $src/hints/$file.sh ; then
3307                                         dflt=$file
3308                                 elif $test -f $src/hints/$xfile.sh ; then
3309                                         dflt=$xfile
3310                                 elif $test -f $src/hints/$xxfile.sh ; then
3311                                         dflt=$xxfile
3312                                 elif $test -f $src/hints/$xxxfile.sh ; then
3313                                         dflt=$xxxfile
3314                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3315                                         dflt=$xxxxfile
3316                                 elif $test -f "$src/hints/${osname}.sh" ; then
3317                                         dflt="${osname}"
3318                                 else
3319                                         dflt=none
3320                                 fi
3321                                 ;;
3322                         esac
3323                         ;;
3324                 esac
3325                 if $test -f Policy.sh ; then
3326                         case "$dflt" in
3327                         *Policy*) ;;
3328                         none) dflt="Policy" ;;
3329                         *) dflt="Policy $dflt" ;;
3330                         esac
3331                 fi
3332                 ;;
3333         *)
3334                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3335                 ;;
3336         esac
3337
3338         if $test -f Policy.sh ; then
3339                 $cat <<EOM
3340
3341 There's also a Policy hint file available, which should make the
3342 site-specific (policy) questions easier to answer.
3343 EOM
3344
3345         fi
3346
3347         $cat <<EOM
3348
3349 You may give one or more space-separated answers, or "none" if appropriate.
3350 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3351 is a good thing.  DO NOT give a wrong version or a wrong OS.
3352
3353 EOM
3354
3355         rp="Which of these apply, if any?"
3356         . UU/myread
3357         tans=$ans
3358         for file in $tans; do
3359                 if $test X$file = XPolicy -a -f Policy.sh; then
3360                         . Policy.sh
3361                         $cat Policy.sh >> UU/config.sh
3362                 elif $test -f $src/hints/$file.sh; then
3363                         . $src/hints/$file.sh
3364                         $cat $src/hints/$file.sh >> UU/config.sh
3365                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3366                         : nothing
3367                 else
3368                         : Give one chance to correct a possible typo.
3369                         echo "$file.sh does not exist"
3370                         dflt=$file
3371                         rp="hint to use instead?"
3372                         . UU/myread
3373                         for file in $ans; do
3374                                 if $test -f "$src/hints/$file.sh"; then
3375                                         . $src/hints/$file.sh
3376                                         $cat $src/hints/$file.sh >> UU/config.sh
3377                                 elif $test X$ans = X -o X$ans = Xnone ; then
3378                                         : nothing
3379                                 else
3380                                         echo "$file.sh does not exist -- ignored."
3381                                 fi
3382                         done
3383                 fi
3384         done
3385
3386         hint=recommended
3387         : Remember our hint file for later.
3388         if $test -f "$src/hints/$file.sh" ; then
3389                 hintfile="$file"
3390         else
3391                 hintfile=''
3392         fi
3393 fi
3394 cd UU
3395 ;;
3396 *)
3397         echo " "
3398         echo "Fetching default answers from $config_sh..." >&4
3399         tmp_n="$n"
3400         tmp_c="$c"
3401         cd ..
3402         cp $config_sh config.sh 2>/dev/null
3403         chmod +w config.sh
3404         . ./config.sh
3405         cd UU
3406         cp ../config.sh .
3407         n="$tmp_n"
3408         c="$tmp_c"
3409         hint=previous
3410         ;;
3411 esac
3412 test "$override" && . ./optdef.sh
3413
3414 : Restore computed paths
3415 for file in $loclist $trylist; do
3416         eval $file="\$_$file"
3417 done
3418
3419 cat << EOM
3420
3421 Configure uses the operating system name and version to set some defaults.
3422 The default value is probably right if the name rings a bell. Otherwise,
3423 since spelling matters for me, either accept the default or answer "none"
3424 to leave it blank.
3425
3426 EOM
3427 case "$osname" in
3428         ''|' ')
3429                 case "$hintfile" in
3430                 ''|' '|none) dflt=none ;;
3431                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3432                 esac
3433                 ;;
3434         *) dflt="$osname" ;;
3435 esac
3436 rp="Operating system name?"
3437 . ./myread
3438 case "$ans" in
3439 none)  osname='' ;;
3440 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3441 esac
3442 echo " "
3443 case "$osvers" in
3444         ''|' ')
3445                 case "$hintfile" in
3446                 ''|' '|none) dflt=none ;;
3447                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3448                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3449                         case "$dflt" in
3450                         ''|' ') dflt=none ;;
3451                         esac
3452                         ;;
3453                 esac
3454                 ;;
3455         *) dflt="$osvers" ;;
3456 esac
3457 rp="Operating system version?"
3458 . ./myread
3459 case "$ans" in
3460 none)  osvers='' ;;
3461 *) osvers="$ans" ;;
3462 esac
3463
3464
3465 . ./posthint.sh
3466
3467 : who configured the system
3468 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3469 case "$cf_by" in
3470 "")
3471         cf_by=`(logname) 2>/dev/null`
3472         case "$cf_by" in
3473         "")
3474                 cf_by=`(whoami) 2>/dev/null`
3475                 case "$cf_by" in
3476                 "") cf_by=unknown ;;
3477                 esac ;;
3478         esac ;;
3479 esac
3480
3481 : set up the script used to warn in case of inconsistency
3482 cat <<EOS >whoa
3483 $startsh
3484 EOS
3485 cat <<'EOSC' >>whoa
3486 dflt=y
3487 echo " "
3488 echo "*** WHOA THERE!!! ***" >&4
3489 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3490 rp="    Keep the $hint value?"
3491 . ./myread
3492 case "$ans" in
3493 y) td=$was; tu=$was;;
3494 esac
3495 EOSC
3496
3497 : function used to set $1 to $val
3498 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3499 case "$val$was" in
3500 $define$undef) . ./whoa; eval "$var=\$td";;
3501 $undef$define) . ./whoa; eval "$var=\$tu";;
3502 *) eval "$var=$val";;
3503 esac'
3504
3505 case "$usesocks" in
3506 $define|true|[yY]*)     dflt='y';;
3507 *) dflt='n';;
3508 esac
3509 cat <<EOM
3510
3511 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3512 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3513 to use the PerlIO abstraction layer, this will be implicitly selected.
3514
3515 If this doesn't make any sense to you, just accept the default '$dflt'.
3516 EOM
3517 rp='Build Perl for SOCKS?'
3518 . ./myread
3519 case "$ans" in
3520 y|Y)    val="$define" ;;     
3521 *)      val="$undef" ;;
3522 esac
3523 set usesocks
3524 eval $setvar
3525
3526 case "$usesocks" in
3527 $define|true|[yY]*) useperlio="$define";;
3528 esac
3529
3530 case "$useperlio" in
3531 $define|true|[yY]*|'')  dflt='y';;
3532 *) dflt='n';;
3533 esac
3534 cat <<EOM
3535
3536 Previous version of $package used the standard IO mechanisms as
3537 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
3538 alternate IO mechanisms via the PerlIO abstraction layer, but the
3539 stdio mechanism is still available if needed.  The abstraction layer
3540 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3541 Using PerlIO with sfio may cause problems with some extension modules.
3542
3543 If this doesn't make any sense to you, just accept the default '$dflt'.
3544 EOM
3545 rp='Use the PerlIO abstraction layer?'
3546 . ./myread
3547 case "$ans" in
3548 y|Y) 
3549         val="$define"
3550         ;;
3551 *)      
3552         echo "Ok, doing things the stdio way."
3553         val="$undef"
3554         ;;
3555 esac
3556 set useperlio
3557 eval $setvar 
3558
3559 case "$usesocks" in
3560 $define|true|[yY]*)
3561         case "$useperlio" in
3562         $define|true|[yY]*) ;;
3563         *)      cat >&4 <<EOM
3564
3565 You are using the SOCKS proxy protocol library which means that you
3566 should also use the PerlIO layer.  You may be headed for trouble.
3567
3568 EOM
3569                 ;;
3570         esac
3571         ;;
3572 esac
3573
3574         
3575 case "$usethreads" in
3576 $define|true|[yY]*)     dflt='y';;
3577 *)     # Catch case where user specified ithreads or 5005threads but
3578        # forgot -Dusethreads (A.D. 4/2002)
3579        case "$useithreads$use5005threads" in
3580        *$define*)      
3581                 case "$useperlio" in
3582                 "$define")      dflt='y' ;;
3583                 *)              dflt='n' ;;
3584                 esac
3585                 ;;
3586        *)       dflt='n';;
3587        esac
3588        ;;
3589 esac
3590 cat <<EOM
3591
3592 Perl can be built to take advantage of threads on some systems.
3593 To do so, Configure can be run with -Dusethreads.
3594
3595 Note that Perl built with threading support runs slightly slower
3596 and uses more memory than plain Perl. The current implementation
3597 is believed to be stable, but it is fairly new, and so should be
3598 treated with caution.
3599
3600 If this doesn't make any sense to you, just accept the default '$dflt'.
3601 EOM
3602 rp='Build a threading Perl?'
3603 . ./myread
3604 case "$ans" in
3605 y|Y)    val="$define" ;;
3606 *)      val="$undef" ;;
3607 esac
3608 set usethreads
3609 eval $setvar
3610
3611 case "$usethreads" in
3612 $define)
3613         $cat <<EOM
3614
3615 Since release 5.6, Perl has had two different threading implementations,
3616 the newer interpreter-based version (ithreads) with one interpreter per
3617 thread, and the older 5.005 version (5005threads).
3618 The 5005threads version is effectively unmaintained and will probably be
3619 removed in Perl 5.10, so there should be no need to build a Perl using it
3620 unless needed for backwards compatibility with some existing 5.005threads
3621 code.
3622
3623 EOM
3624         : Default to ithreads unless overridden on command line or with
3625         : old config.sh
3626         dflt='y'
3627         case "$use5005threads" in
3628                 $define|true|[yY]*) dflt='n';;
3629         esac
3630         case "$useithreads" in
3631                 $undef|false|[nN]*) dflt='n';;
3632         esac
3633         rp='Use the newer interpreter-based ithreads?'
3634         . ./myread
3635         case "$ans" in
3636         y|Y)    val="$define" ;;
3637         *)      val="$undef" ;;
3638         esac
3639         set useithreads
3640         eval $setvar
3641         : Now set use5005threads to the opposite value.
3642         case "$useithreads" in
3643         $define) val="$undef" ;;
3644         *) val="$define" ;;
3645         esac
3646         set use5005threads
3647         eval $setvar
3648         ;;
3649 *)
3650         useithreads="$undef"
3651         use5005threads="$undef"
3652         ;;
3653 esac
3654
3655 case "$useithreads$use5005threads" in
3656 "$define$define")
3657         $cat >&4 <<EOM
3658
3659 You cannot have both the ithreads and the 5.005 threads enabled
3660 at the same time.  Disabling the 5.005 threads since they are
3661 much less stable than the ithreads.
3662
3663 EOM
3664         use5005threads="$undef"
3665         ;;
3666 esac
3667
3668 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3669         cat >&4 <<EOF
3670 ***
3671 *** To build with ithreads you must also use the PerlIO layer.
3672 *** Cannot continue, aborting.
3673 ***
3674 EOF
3675         exit 1
3676 fi
3677
3678 case "$d_oldpthreads" in
3679 '')     : Configure tests would be welcome here.  For now, assume undef.
3680         val="$undef" ;;
3681 *)      val="$d_oldpthreads" ;;
3682 esac
3683 set d_oldpthreads
3684 eval $setvar
3685
3686
3687 : Look for a hint-file generated 'call-back-unit'.  If the
3688 : user has specified that a threading perl is to be built,
3689 : we may need to set or change some other defaults.
3690 if $test -f usethreads.cbu; then
3691     echo "Your platform has some specific hints regarding threaded builds, using them..."
3692     . ./usethreads.cbu
3693 else
3694     case "$usethreads" in
3695         "$define"|true|[yY]*)
3696                 $cat <<EOM
3697 (Your platform does not have any specific hints for threaded builds.
3698  Assuming POSIX threads, then.)
3699 EOM
3700         ;;
3701     esac
3702 fi
3703
3704 cat <<EOM
3705
3706 Perl can be built so that multiple Perl interpreters can coexist
3707 within the same Perl executable.
3708 EOM
3709
3710 case "$useithreads" in
3711 $define)
3712         cat <<EOM
3713 This multiple interpreter support is required for interpreter-based threads.
3714 EOM
3715         val="$define"
3716         ;;
3717 *)      case "$usemultiplicity" in
3718         $define|true|[yY]*)     dflt='y';;
3719         *) dflt='n';;
3720         esac
3721         echo " "
3722         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3723         rp='Build Perl for multiplicity?'
3724         . ./myread
3725         case "$ans" in
3726         y|Y)    val="$define" ;;
3727         *)      val="$undef" ;;
3728         esac
3729         ;;
3730 esac
3731 set usemultiplicity
3732 eval $setvar
3733
3734
3735 case "$usemorebits" in
3736 "$define"|true|[yY]*)
3737         use64bitint="$define"
3738         uselongdouble="$define"
3739         usemorebits="$define"
3740         ;;
3741 *)      usemorebits="$undef"
3742         ;;
3743 esac
3744
3745 : make some quick guesses about what we are up against
3746 echo " "
3747 $echo $n "Hmm...  $c"
3748 echo exit 1 >bsd
3749 echo exit 1 >usg
3750 echo exit 1 >v7
3751 echo exit 1 >osf1
3752 echo exit 1 >eunice
3753 echo exit 1 >xenix
3754 echo exit 1 >venix
3755 echo exit 1 >os2
3756 d_bsd="$undef"
3757 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3758 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3759 then
3760         echo "Looks kind of like an OSF/1 system, but we'll see..."
3761         echo exit 0 >osf1
3762 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3763         xxx=`./loc addbib blurfl $pth`
3764         if $test -f $xxx; then
3765         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3766                 echo exit 0 >bsd
3767                 echo exit 0 >usg
3768         else
3769                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3770                         echo "Looks kind of like an extended USG system, but we'll see..."
3771                 else
3772                         echo "Looks kind of like a USG system, but we'll see..."
3773                 fi
3774                 echo exit 0 >usg
3775         fi
3776 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3777         echo "Looks kind of like a BSD system, but we'll see..."
3778         d_bsd="$define"
3779         echo exit 0 >bsd
3780 else
3781         echo "Looks kind of like a Version 7 system, but we'll see..."
3782         echo exit 0 >v7
3783 fi
3784 case "$eunicefix" in
3785 *unixtovms*)
3786         $cat <<'EOI'
3787 There is, however, a strange, musty smell in the air that reminds me of
3788 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3789 EOI
3790         echo exit 0 >eunice
3791         d_eunice="$define"
3792 : it so happens the Eunice I know will not run shell scripts in Unix format
3793         ;;
3794 *)
3795         echo " "
3796         echo "Congratulations.  You aren't running Eunice."
3797         d_eunice="$undef"
3798         ;;
3799 esac
3800 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3801 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3802 : semicolon as a patch separator
3803 case "$p_" in
3804 :) ;;
3805 *)
3806         $cat <<'EOI'
3807 I have the feeling something is not exactly right, however...don't tell me...
3808 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3809 (Or you may be running DOS with DJGPP.)
3810 EOI
3811         echo exit 0 >os2
3812         ;;
3813 esac
3814 if test -f /xenix; then
3815         echo "Actually, this looks more like a XENIX system..."
3816         echo exit 0 >xenix
3817         d_xenix="$define"
3818 else
3819         echo " "
3820         echo "It's not Xenix..."
3821         d_xenix="$undef"
3822 fi
3823 chmod +x xenix
3824 $eunicefix xenix
3825 if test -f /venix; then
3826         echo "Actually, this looks more like a VENIX system..."
3827         echo exit 0 >venix
3828 else
3829         echo " "
3830         if ./xenix; then
3831                 : null
3832         else
3833                 echo "Nor is it Venix..."
3834         fi
3835 fi
3836 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3837 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3838 $rm -f foo
3839
3840 case "$cc" in
3841 '') dflt=cc;;
3842 *) dflt="$cc";;
3843 esac
3844 rp="Use which C compiler?"
3845 . ./myread
3846 cc="$ans"
3847
3848 : See if they have not cc but they do have gcc
3849 . ./trygcc
3850 : Look for a hint-file generated 'call-back-unit'.  Now that the
3851 : user has specified the compiler, we may need to set or change some
3852 : other defaults.
3853 if $test -f cc.cbu; then
3854     . ./cc.cbu
3855 fi
3856 . ./checkcc
3857
3858 echo " "
3859 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3860 $cat >try.c <<EOM
3861 #include <stdio.h>
3862 int main() {
3863 #ifdef __GNUC__
3864 #ifdef __VERSION__
3865         printf("%s\n", __VERSION__);
3866 #else
3867         printf("%s\n", "1");
3868 #endif
3869 #endif
3870         return(0);
3871 }
3872 EOM
3873 if $cc -o try $ccflags $ldflags try.c; then
3874         gccversion=`$run ./try`
3875         case "$gccversion" in
3876         '') echo "You are not using GNU cc." ;;
3877         *)  echo "You are using GNU cc $gccversion."
3878             ccname=gcc
3879             ;;
3880         esac
3881 else
3882         echo " "
3883         echo "*** WHOA THERE!!! ***" >&4
3884         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3885         case "$knowitall" in
3886         '')
3887         echo "    You'd better start hunting for one and let me know about it." >&4
3888                 exit 1
3889                 ;;
3890         esac
3891 fi
3892 $rm -f try try.*
3893 case "$gccversion" in
3894 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3895 esac
3896 case "$gccversion" in
3897 '') gccosandvers='' ;;
3898 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3899    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3900    gccshortvers=''
3901    case "$gccosandvers" in
3902    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3903    $osname$osvers) ;; # looking good
3904    $osname*) cat <<EOM >&4
3905
3906 *** WHOA THERE!!! ***
3907
3908     Your gcc has not been compiled for the exact release of
3909     your operating system ($gccosandvers versus $osname$osvers).
3910
3911     In general it is a good idea to keep gcc synchronized with
3912     the operating system because otherwise serious problems
3913     may ensue when trying to compile software, like Perl.
3914
3915     I'm trying to be optimistic here, though, and will continue.
3916     If later during the configuration and build icky compilation
3917     problems appear (headerfile conflicts being the most common
3918     manifestation), I suggest reinstalling the gcc to match
3919     your operating system release.
3920
3921 EOM
3922       ;;
3923    *) gccosandvers='' ;; # failed to parse, better be silent
3924    esac
3925    ;;
3926 esac
3927 case "$ccname" in
3928 '') ccname="$cc" ;;
3929 esac
3930
3931 # gcc 3.* complain about adding -Idirectories that they already know about,
3932 # so we will take those off from locincpth.
3933 case "$gccversion" in
3934 3*)
3935     echo "main(){}">try.c
3936     for incdir in $locincpth; do
3937        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3938              grep '^c[cp]p*[01]: warning: changing search order '`
3939        if test "X$warn" != X; then
3940            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3941        fi
3942     done
3943     $rm -f try try.*
3944 esac
3945
3946 : decide how portable to be.  Allow command line overrides.
3947 case "$d_portable" in
3948 "$undef") ;;
3949 *)      d_portable="$define" ;;
3950 esac
3951
3952 : set up shell script to do ~ expansion
3953 cat >filexp <<EOSS
3954 $startsh
3955 : expand filename
3956 case "\$1" in
3957  ~/*|~)
3958         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3959         ;;
3960  ~*)
3961         if $test -f /bin/csh; then
3962                 /bin/csh -f -c "glob \$1"
3963                 failed=\$?
3964                 echo ""
3965                 exit \$failed
3966         else
3967                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3968                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3969                 if $test ! -d "\$dir"; then
3970                         me=\`basename \$0\`
3971                         echo "\$me: can't locate home directory for: \$name" >&2
3972                         exit 1
3973                 fi
3974                 case "\$1" in
3975                 */*)
3976                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3977                         ;;
3978                 *)
3979                         echo \$dir
3980                         ;;
3981                 esac
3982         fi
3983         ;;
3984 *)
3985         echo \$1
3986         ;;
3987 esac
3988 EOSS
3989 chmod +x filexp
3990 $eunicefix filexp
3991
3992 : now set up to get a file name
3993 cat <<EOS >getfile
3994 $startsh
3995 EOS
3996 cat <<'EOSC' >>getfile
3997 tilde=''
3998 fullpath=''
3999 already=''
4000 skip=''
4001 none_ok=''
4002 exp_file=''
4003 nopath_ok=''
4004 orig_rp="$rp"
4005 orig_dflt="$dflt"
4006 case "$gfpth" in
4007 '') gfpth='.' ;;
4008 esac
4009
4010 case "$fn" in
4011 *\(*)
4012         : getfile will accept an answer from the comma-separated list
4013         : enclosed in parentheses even if it does not meet other criteria.
4014         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
4015         fn=`echo $fn | sed 's/(.*)//'`
4016         ;;
4017 esac
4018
4019 case "$fn" in
4020 *:*)
4021         loc_file=`expr $fn : '.*:\(.*\)'`
4022         fn=`expr $fn : '\(.*\):.*'`
4023         ;;
4024 esac
4025
4026 case "$fn" in
4027 *~*) tilde=true;;
4028 esac
4029 case "$fn" in
4030 */*) fullpath=true;;
4031 esac
4032 case "$fn" in
4033 *+*) skip=true;;
4034 esac
4035 case "$fn" in
4036 *n*) none_ok=true;;
4037 esac
4038 case "$fn" in
4039 *e*) exp_file=true;;
4040 esac
4041 case "$fn" in
4042 *p*) nopath_ok=true;;
4043 esac
4044
4045 case "$fn" in
4046 *f*) type='File';;
4047 *d*) type='Directory';;
4048 *l*) type='Locate';;
4049 esac
4050
4051 what="$type"
4052 case "$what" in
4053 Locate) what='File';;
4054 esac
4055
4056 case "$exp_file" in
4057 '')
4058         case "$d_portable" in
4059         "$define") ;;
4060         *) exp_file=true;;
4061         esac
4062         ;;
4063 esac
4064
4065 cd ..
4066 while test "$type"; do
4067         redo=''
4068         rp="$orig_rp"
4069         dflt="$orig_dflt"
4070         case "$tilde" in
4071         true) rp="$rp (~name ok)";;
4072         esac
4073         . UU/myread
4074         if test -f UU/getfile.ok && \
4075                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4076         then
4077                 value="$ans"
4078                 ansexp="$ans"
4079                 break
4080         fi
4081         case "$ans" in
4082         none)
4083                 value=''
4084                 ansexp=''
4085                 case "$none_ok" in
4086                 true) type='';;
4087                 esac
4088                 ;;
4089         *)
4090                 case "$tilde" in
4091                 '') value="$ans"
4092                         ansexp="$ans";;
4093                 *)
4094                         value=`UU/filexp $ans`
4095                         case $? in
4096                         0)
4097                                 if test "$ans" != "$value"; then
4098                                         echo "(That expands to $value on this system.)"
4099                                 fi
4100                                 ;;
4101                         *) value="$ans";;
4102                         esac
4103                         ansexp="$value"
4104                         case "$exp_file" in
4105                         '') value="$ans";;
4106                         esac
4107                         ;;
4108                 esac
4109                 case "$fullpath" in
4110                 true)
4111                         case "$ansexp" in
4112                         /*) value="$ansexp" ;;
4113                         [a-zA-Z]:/*) value="$ansexp" ;;
4114                         *)
4115                                 redo=true
4116                                 case "$already" in
4117                                 true)
4118                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4119                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4120                                         ;;
4121                                 *)
4122                                 echo "Please give a full path name, starting with slash." >&4
4123                                         case "$tilde" in
4124                                         true)
4125                                 echo "Note that using ~name is ok provided it expands well." >&4
4126                                                 already=true
4127                                                 ;;
4128                                         esac
4129                                 esac
4130                                 ;;
4131                         esac
4132                         ;;
4133                 esac
4134                 case "$redo" in
4135                 '')
4136                         case "$type" in
4137                         File)
4138                                 for fp in $gfpth; do
4139                                         if test "X$fp" = X.; then
4140                                             pf="$ansexp"
4141                                         else    
4142                                             pf="$fp/$ansexp"
4143                                         fi
4144                                         if test -f "$pf"; then
4145                                                 type=''
4146                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4147                                         then
4148                                                 echo "($value is not a plain file, but that's ok.)"
4149                                                 type=''
4150                                         fi
4151                                         if test X"$type" = X; then
4152                                             value="$pf"
4153                                             break
4154                                         fi
4155                                 done
4156                                 ;;
4157                         Directory)
4158                                 for fp in $gfpth; do
4159                                         if test "X$fp" = X.; then
4160                                             dir="$ans"
4161                                             direxp="$ansexp"
4162                                         else    
4163                                             dir="$fp/$ansexp"
4164                                             direxp="$fp/$ansexp"
4165                                         fi
4166                                         if test -d "$direxp"; then
4167                                                 type=''
4168                                                 value="$dir"
4169                                                 break
4170                                         fi
4171                                 done
4172                                 ;;
4173                         Locate)
4174                                 if test -d "$ansexp"; then
4175                                         echo "(Looking for $loc_file in directory $value.)"
4176                                         value="$value/$loc_file"
4177                                         ansexp="$ansexp/$loc_file"
4178                                 fi
4179                                 if test -f "$ansexp"; then
4180                                         type=''
4181                                 fi
4182                                 case "$nopath_ok" in
4183                                 true)   case "$value" in
4184                                         */*) ;;
4185                                         *)      echo "Assuming $value will be in people's path."
4186                                                 type=''
4187                                                 ;;
4188                                         esac
4189                                         ;;
4190                                 esac
4191                                 ;;
4192                         esac
4193
4194                         case "$skip" in
4195                         true) type='';
4196                         esac
4197
4198                         case "$type" in
4199                         '') ;;
4200                         *)
4201                                 if test "$fastread" = yes; then
4202                                         dflt=y
4203                                 else
4204                                         dflt=n
4205                                 fi
4206                                 rp="$what $value doesn't exist.  Use that name anyway?"
4207                                 . UU/myread
4208                                 dflt=''
4209                                 case "$ans" in
4210                                 y*) type='';;
4211                                 *) echo " ";;
4212                                 esac
4213                                 ;;
4214                         esac
4215                         ;;
4216                 esac
4217                 ;;
4218         esac
4219 done
4220 cd UU
4221 ans="$value"
4222 rp="$orig_rp"
4223 dflt="$orig_dflt"
4224 rm -f getfile.ok
4225 test "X$gfpthkeep" != Xy && gfpth=""
4226 EOSC
4227
4228 : What should the include directory be ?
4229 echo " "
4230 $echo $n "Hmm...  $c"
4231 dflt='/usr/include'
4232 incpath=''
4233 mips_type=''
4234 if $test -f /bin/mips && /bin/mips; then
4235         echo "Looks like a MIPS system..."
4236         $cat >usr.c <<'EOCP'
4237 #ifdef SYSTYPE_BSD43
4238 /bsd43
4239 #endif
4240 EOCP
4241         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4242                 dflt='/bsd43/usr/include'
4243                 incpath='/bsd43'
4244                 mips_type='BSD 4.3'
4245         else
4246                 mips_type='System V'
4247         fi
4248         $rm -f usr.c usr.out
4249         echo "and you're compiling with the $mips_type compiler and libraries."
4250         xxx_prompt=y
4251         echo "exit 0" >mips
4252 else
4253         echo "Doesn't look like a MIPS system."
4254         xxx_prompt=n
4255         echo "exit 1" >mips
4256 fi
4257 chmod +x mips
4258 $eunicefix mips
4259 case "$usrinc" in
4260 '') ;;
4261 *) dflt="$usrinc";;
4262 esac
4263 case "$xxx_prompt" in
4264 y)      fn=d/
4265         echo " "
4266         rp='Where are the include files you want to use?'
4267         . ./getfile
4268         usrinc="$ans"
4269         ;;
4270 *)      usrinc="$dflt"
4271         ;;
4272 esac
4273
4274 : see how we invoke the C preprocessor
4275 echo " "
4276 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4277 cat <<'EOT' >testcpp.c
4278 #define ABC abc
4279 #define XYZ xyz
4280 ABC.XYZ
4281 EOT
4282 cd ..
4283 if test ! -f cppstdin; then
4284         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4285                 # AIX cc -E doesn't show the absolute headerfile
4286                 # locations but we'll cheat by using the -M flag.
4287                 echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
4288         else
4289                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4290         fi
4291 else
4292         echo "Keeping your $hint cppstdin wrapper."
4293 fi
4294 chmod 755 cppstdin
4295 wrapper=`pwd`/cppstdin
4296 ok='false'
4297 cd UU
4298
4299 if $test "X$cppstdin" != "X" && \
4300         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4301         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4302 then
4303         echo "You used to use $cppstdin $cppminus so we'll use that again."
4304         case "$cpprun" in
4305         '') echo "But let's see if we can live without a wrapper..." ;;
4306         *)
4307                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4308                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4309                 then
4310                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4311                         ok='true'
4312                 else
4313                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4314                 fi
4315                 ;;
4316         esac
4317 else
4318         case "$cppstdin" in
4319         '') ;;
4320         *)
4321                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4322                 ;;
4323         esac
4324 fi
4325
4326 if $ok; then
4327         : nothing
4328 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4329         $cc -E <testcpp.c >testcpp.out 2>&1; \
4330         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4331         echo "Yup, it does."
4332         x_cpp="$cc -E"
4333         x_minus='';
4334 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4335         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4336         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4337         echo "Yup, it does."
4338         x_cpp="$cc -E"
4339         x_minus='-';
4340 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4341         $cc -P <testcpp.c >testcpp.out 2>&1; \
4342         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4343         echo "Yipee, that works!"
4344         x_cpp="$cc -P"
4345         x_minus='';
4346 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4347         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4348         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4349         echo "At long last!"
4350         x_cpp="$cc -P"
4351         x_minus='-';
4352 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4353         $cpp <testcpp.c >testcpp.out 2>&1; \
4354         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4355         echo "It works!"
4356         x_cpp="$cpp"
4357         x_minus='';
4358 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4359         $cpp - <testcpp.c >testcpp.out 2>&1; \
4360         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4361         echo "Hooray, it works!  I was beginning to wonder."
4362         x_cpp="$cpp"
4363         x_minus='-';
4364 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4365         $wrapper <testcpp.c >testcpp.out 2>&1; \
4366         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4367         x_cpp="$wrapper"
4368         x_minus=''
4369         echo "Eureka!"
4370 else
4371         dflt=''
4372         rp="No dice.  I can't find a C preprocessor.  Name one:"
4373         . ./myread
4374         x_cpp="$ans"
4375         x_minus=''
4376         $x_cpp <testcpp.c >testcpp.out 2>&1
4377         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4378                 echo "OK, that will do." >&4
4379         else
4380 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4381                 exit 1
4382         fi
4383 fi
4384
4385 case "$ok" in
4386 false)
4387         cppstdin="$x_cpp"
4388         cppminus="$x_minus"
4389         cpprun="$x_cpp"
4390         cpplast="$x_minus"
4391         set X $x_cpp
4392         shift
4393         case "$1" in
4394         "$cpp")
4395                 echo "Perhaps can we force $cc -E using a wrapper..."
4396                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4397                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4398                 then
4399                         echo "Yup, we can."
4400                         cppstdin="$wrapper"
4401                         cppminus='';
4402                 else
4403                         echo "Nope, we'll have to live without it..."
4404                 fi
4405                 ;;
4406         esac
4407         case "$cpprun" in
4408         "$wrapper")
4409                 cpprun=''
4410                 cpplast=''
4411                 ;;
4412         esac
4413         ;;
4414 esac
4415
4416 case "$cppstdin" in
4417 "$wrapper"|'cppstdin') ;;
4418 *) $rm -f $wrapper;;
4419 esac
4420 $rm -f testcpp.c testcpp.out
4421
4422 : Set private lib path
4423 case "$plibpth" in
4424 '') if ./mips; then
4425                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4426         fi;;
4427 esac
4428 case "$libpth" in
4429 ' ') dlist='';;
4430 '') dlist="$loclibpth $plibpth $glibpth";;
4431 *) dlist="$libpth";;
4432 esac
4433
4434 : Now check and see which directories actually exist, avoiding duplicates
4435 libpth=''
4436 for xxx in $dlist
4437 do
4438     if $test -d $xxx; then
4439                 case " $libpth " in
4440                 *" $xxx "*) ;;
4441                 *) libpth="$libpth $xxx";;
4442                 esac
4443     fi
4444 done
4445 $cat <<'EOM'
4446
4447 Some systems have incompatible or broken versions of libraries.  Among
4448 the directories listed in the question below, please remove any you
4449 know not to be holding relevant libraries, and add any that are needed.
4450 Say "none" for none.
4451
4452 EOM
4453 case "$libpth" in
4454 '') dflt='none';;
4455 *)
4456         set X $libpth
4457         shift
4458         dflt=${1+"$@"}
4459         ;;
4460 esac
4461 rp="Directories to use for library searches?"
4462 . ./myread
4463 case "$ans" in
4464 none) libpth=' ';;
4465 *) libpth="$ans";;
4466 esac
4467
4468 : compute shared library extension
4469 case "$so" in
4470 '')
4471         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4472                 dflt='sl'
4473         else
4474                 dflt='so'
4475         fi
4476         ;;
4477 *) dflt="$so";;
4478 esac
4479 $cat <<EOM
4480
4481 On some systems, shared libraries may be available.  Answer 'none' if
4482 you want to suppress searching of shared libraries for the remainder
4483 of this configuration.
4484
4485 EOM
4486 rp='What is the file extension used for shared libraries?'
4487 . ./myread
4488 so="$ans"
4489
4490 : Define several unixisms.
4491 : Hints files or command line option can be used to override them.
4492 : The convoluted testing is in case hints files set either the old
4493 : or the new name.
4494 case "$_exe" in
4495 '')     case "$exe_ext" in
4496         '')     ;;
4497         *)      _exe="$exe_ext" ;;
4498         esac
4499         ;;
4500 esac
4501 case "$_a" in
4502 '')     case "$lib_ext" in
4503     '') _a='.a';;
4504         *)      _a="$lib_ext" ;;
4505         esac
4506         ;;
4507 esac
4508 case "$_o" in
4509 '') case "$obj_ext" in
4510         '')     _o='.o';;
4511         *)      _o="$obj_ext";;
4512         esac
4513         ;;
4514 esac
4515 case "$p_" in
4516 '') case "$path_sep" in
4517         '')     p_=':';;
4518         *)      p_="$path_sep";;
4519         esac
4520         ;;
4521 esac
4522 exe_ext=$_exe
4523 lib_ext=$_a
4524 obj_ext=$_o
4525 path_sep=$p_
4526
4527 : Which makefile gets called first.  This is used by make depend.
4528 case "$firstmakefile" in
4529 '') firstmakefile='makefile';;
4530 esac
4531
4532 case "$ccflags" in
4533 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4534 esac
4535
4536 case "$uselongdouble" in
4537 $define|true|[yY]*)     dflt='y';;
4538 *) dflt='n';;
4539 esac
4540 cat <<EOM
4541
4542 Perl can be built to take advantage of long doubles which
4543 (if available) may give more accuracy and range for floating point numbers.
4544
4545 If this doesn't make any sense to you, just accept the default '$dflt'.
4546 EOM
4547 rp='Try to use long doubles if available?'
4548 . ./myread
4549 case "$ans" in
4550 y|Y)    val="$define"   ;;
4551 *)      val="$undef"    ;;
4552 esac
4553 set uselongdouble
4554 eval $setvar
4555
4556 case "$uselongdouble" in
4557 true|[yY]*) uselongdouble="$define" ;;
4558 esac
4559
4560 : Look for a hint-file generated 'call-back-unit'.  If the
4561 : user has specified that long doubles should be used,
4562 : we may need to set or change some other defaults.
4563 if $test -f uselongdouble.cbu; then
4564     echo "Your platform has some specific hints regarding long doubles, using them..."
4565     . ./uselongdouble.cbu
4566 else
4567     case "$uselongdouble" in
4568         $define)
4569                 $cat <<EOM
4570 (Your platform does not have any specific hints for long doubles.)
4571 EOM
4572         ;;
4573     esac
4574 fi
4575
4576 : Looking for optional libraries
4577 echo " "
4578 echo "Checking for optional libraries..." >&4
4579 case "$libs" in
4580 ' '|'') dflt='';;
4581 *) dflt="$libs";;
4582 esac
4583 case "$libswanted" in
4584 '') libswanted='c_s';;
4585 esac
4586 case "$usesocks" in
4587 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4588 esac
4589 libsfound=''
4590 libsfiles=''
4591 libsdirs=''
4592 libspath=''
4593 for thisdir in $libpth $xlibpth; do
4594   test -d $thisdir && libspath="$libspath $thisdir"
4595 done
4596 for thislib in $libswanted; do
4597         for thisdir in $libspath; do
4598             xxx=''
4599             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4600                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4601                 $test -f "$xxx" && eval $libscheck
4602                 $test -f "$xxx" && libstyle=shared
4603             fi
4604             if test ! -f "$xxx"; then
4605                 xxx=$thisdir/lib$thislib.$so
4606                 $test -f "$xxx" && eval $libscheck
4607                 $test -f "$xxx" && libstyle=shared
4608             fi  
4609             if test ! -f "$xxx"; then
4610                 xxx=$thisdir/lib$thislib$_a
4611                 $test -f "$xxx" && eval $libscheck
4612                 $test -f "$xxx" && libstyle=static
4613             fi
4614             if test ! -f "$xxx"; then
4615                 xxx=$thisdir/$thislib$_a
4616                 $test -f "$xxx" && eval $libscheck
4617                 $test -f "$xxx" && libstyle=static
4618             fi
4619             if test ! -f "$xxx"; then
4620                 xxx=$thisdir/lib${thislib}_s$_a
4621                 $test -f "$xxx" && eval $libscheck
4622                 $test -f "$xxx" && libstyle=static
4623                 $test -f "$xxx" && thislib=${thislib}_s
4624             fi
4625             if test ! -f "$xxx"; then
4626                 xxx=$thisdir/Slib$thislib$_a
4627                 $test -f "$xxx" && eval $libscheck
4628                 $test -f "$xxx" && libstyle=static
4629             fi
4630             if $test -f "$xxx"; then
4631                 case "$libstyle" in
4632                 shared) echo "Found -l$thislib (shared)." ;;
4633                 static) echo "Found -l$thislib." ;;
4634                 *)      echo "Found -l$thislib ($libstyle)." ;;
4635                 esac
4636                 case " $dflt " in
4637                 *"-l$thislib "*);;
4638                 *) dflt="$dflt -l$thislib"
4639                    libsfound="$libsfound $xxx"
4640                    yyy=`basename $xxx`
4641                    libsfiles="$libsfiles $yyy"
4642                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4643                    case " $libsdirs " in
4644                    *" $yyy "*) ;;
4645                    *) libsdirs="$libsdirs $yyy" ;;
4646                    esac
4647                    ;;
4648                 esac
4649                 break
4650             fi  
4651         done
4652         if $test ! -f "$xxx"; then
4653             echo "No -l$thislib."
4654         fi
4655 done
4656 set X $dflt
4657 shift
4658 dflt="$*"
4659 case "$libs" in
4660 '') dflt="$dflt";;
4661 *) dflt="$libs";;
4662 esac
4663 case "$dflt" in
4664 ' '|'') dflt='none';;
4665 esac
4666
4667 $cat <<EOM
4668
4669 In order to compile $package on your machine, a number of libraries
4670 are usually needed.  Include any other special libraries here as well.
4671 Say "none" for none.  The default list is almost always right.
4672 EOM
4673
4674 echo " "
4675 rp="What libraries to use?"
4676 . ./myread
4677 case "$ans" in
4678 none) libs=' ';;
4679 *) libs="$ans";;
4680 esac
4681
4682 : determine optimization, if desired, or use for debug flag also
4683 case "$optimize" in
4684 ' '|$undef) dflt='none';;
4685 '') dflt='-O';;
4686 *) dflt="$optimize";;
4687 esac
4688 $cat <<EOH
4689
4690 By default, $package compiles with the -O flag to use the optimizer.
4691 Alternately, you might want to use the symbolic debugger, which uses
4692 the -g flag (on traditional Unix systems).  Either flag can be
4693 specified here.  To use neither flag, specify the word "none".
4694
4695 EOH
4696 rp="What optimizer/debugger flag should be used?"
4697 . ./myread
4698 optimize="$ans"
4699 case "$optimize" in
4700 'none') optimize=" ";;
4701 esac
4702
4703 dflt=''
4704 : We will not override a previous value, but we might want to
4705 : augment a hint file
4706 case "$hint" in
4707 default|recommended)
4708         case "$gccversion" in
4709         1*) dflt='-fpcc-struct-return' ;;
4710         esac
4711         case "$optimize" in
4712         *-g*) dflt="$dflt -DDEBUGGING";;
4713         esac
4714         case "$gccversion" in
4715         2*) if test -d /etc/conf/kconfig.d &&
4716                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4717                 then
4718                         # Interactive Systems (ISC) POSIX mode.
4719                         dflt="$dflt -posix"
4720                 fi
4721                 ;;
4722         esac
4723         case "$gccversion" in
4724         1*) ;;
4725         2.[0-8]*) ;;
4726         ?*)     echo " "
4727                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4728                 echo 'int main(void) { return 0; }' > gcctest.c
4729                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4730                         echo "Yes, it does." 2>&1
4731                         case "$ccflags" in
4732                         *strict-aliasing*)
4733                                 echo "Leaving current flags $ccflags alone." 2>&1
4734                                 ;;
4735                         *) dflt="$dflt -fno-strict-aliasing" ;;
4736                         esac
4737                 else
4738                         echo "Nope, it doesn't, but that's ok." 2>&1
4739                 fi
4740                 ;;
4741         esac
4742         # For gcc, adding -pipe speeds up compilations for some, but apparently
4743         # some assemblers can't read from stdin.  (It also slows down compilations
4744         # in other cases, but those are apparently rarer these days.)  AD 5/2004.
4745         case "$gccversion" in
4746         ?*)     echo " "
4747                 echo "Checking if your compiler accepts -pipe" 2>&1
4748                 echo 'int main(void) { return 0; }' > gcctest.c
4749                 if $cc -O2 -pipe -o gcctest gcctest.c; then
4750                         echo "Yes, it does." 2>&1
4751                         case "$ccflags" in
4752                         *-pipe*)
4753                                 echo "Leaving current flags $ccflags alone." 2>&1
4754                                 ;;
4755                         *) dflt="$dflt -pipe" ;;
4756                         esac
4757                 else
4758                         echo "Nope, it doesn't, but that's ok." 2>&1
4759                 fi
4760                 ;;
4761         esac
4762         ;;
4763 esac
4764
4765 case "$mips_type" in
4766 *BSD*|'') inclwanted="$locincpth $usrinc";;
4767 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4768 esac
4769 for thisincl in $inclwanted; do
4770         if $test -d $thisincl; then
4771                 if $test x$thisincl != x$usrinc; then
4772                         case "$dflt" in
4773                         *" -I$thisincl "*);;
4774                         *) dflt="$dflt -I$thisincl ";;
4775                         esac
4776                 fi
4777         fi
4778 done
4779
4780 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4781         xxx=true;
4782 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4783         xxx=true;
4784 else
4785         xxx=false;
4786 fi;
4787 if $xxx; then
4788         case "$dflt" in
4789         *$2*);;
4790         *) dflt="$dflt -D$2";;
4791         esac;
4792 fi'
4793
4794 set signal.h LANGUAGE_C; eval $inctest
4795
4796 case "$usesocks" in
4797 $define)
4798         ccflags="$ccflags -DSOCKS"
4799         ;;
4800 esac
4801
4802 case "$hint" in
4803 default|recommended) dflt="$ccflags $dflt" ;;
4804 *) dflt="$ccflags";;
4805 esac
4806
4807 case "$dflt" in
4808 ''|' ') dflt=none;;
4809 esac
4810
4811 $cat <<EOH
4812
4813 Your C compiler may want other flags.  For this question you should include
4814 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4815 but you should NOT include libraries or ld flags like -lwhatever.  If you
4816 want $package to honor its debug switch, you should include -DDEBUGGING here.
4817 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4818
4819 To use no flags, specify the word "none".
4820
4821 EOH
4822 set X $dflt
4823 shift
4824 dflt=${1+"$@"}
4825 rp="Any additional cc flags?"
4826 . ./myread
4827 case "$ans" in
4828 none) ccflags='';;
4829 *) ccflags="$ans";;
4830 esac
4831
4832 : the following weeds options from ccflags that are of no interest to cpp
4833 case "$cppflags" in
4834 '') cppflags="$ccflags" ;;
4835 *)  cppflags="$cppflags $ccflags" ;;
4836 esac
4837 case "$gccversion" in
4838 1*) cppflags="$cppflags -D__GNUC__"
4839 esac
4840 case "$mips_type" in
4841 '');;
4842 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4843 esac
4844 case "$cppflags" in
4845 '');;
4846 *)
4847         echo " "
4848         echo "Let me guess what the preprocessor flags are..." >&4
4849         set X $cppflags
4850         shift
4851         cppflags=''
4852         $cat >cpp.c <<'EOM'
4853 #define BLURFL foo
4854
4855 BLURFL xx LFRULB
4856 EOM
4857         previous=''
4858         for flag in $*
4859         do
4860                 case "$flag" in
4861                 -*) ftry="$flag";;
4862                 *) ftry="$previous $flag";;
4863                 esac
4864                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4865                         >cpp1.out 2>/dev/null && \
4866                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4867                         >cpp2.out 2>/dev/null && \
4868                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4869                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4870                 then
4871                         cppflags="$cppflags $ftry"
4872                         previous=''
4873                 else
4874                         previous="$flag"
4875                 fi
4876         done
4877         set X $cppflags
4878         shift
4879         cppflags=${1+"$@"}
4880         case "$cppflags" in
4881         *-*)  echo "They appear to be: $cppflags";;
4882         esac
4883         $rm -f cpp.c cpp?.out
4884         ;;
4885 esac
4886
4887 : flags used in final linking phase
4888 case "$ldflags" in
4889 '') if ./venix; then
4890                 dflt='-i -z'
4891         else
4892                 dflt=''
4893         fi
4894         case "$ccflags" in
4895         *-posix*) dflt="$dflt -posix" ;;
4896         esac
4897         ;;
4898 *) dflt="$ldflags";;
4899 esac
4900
4901 : Try to guess additional flags to pick up local libraries.
4902 for thislibdir in $libpth; do
4903         case " $loclibpth " in
4904         *" $thislibdir "*)
4905                 case "$dflt " in
4906                 *"-L$thislibdir "*) ;;
4907                 *)  dflt="$dflt -L$thislibdir" ;;
4908                 esac
4909                 ;;
4910         esac
4911 done
4912
4913 case "$dflt" in
4914 '') dflt='none' ;;
4915 esac
4916
4917 $cat <<EOH
4918
4919 Your C linker may need flags.  For this question you should
4920 include -L/whatever and any other flags used by the C linker, but you
4921 should NOT include libraries like -lwhatever.
4922
4923 Make sure you include the appropriate -L/path flags if your C linker
4924 does not normally search all of the directories you specified above,
4925 namely
4926         $libpth
4927 To use no flags, specify the word "none".
4928
4929 EOH
4930
4931 rp="Any additional ld flags (NOT including libraries)?"
4932 . ./myread
4933 case "$ans" in
4934 none) ldflags='';;
4935 *) ldflags="$ans";;
4936 esac
4937 rmlist="$rmlist pdp11"
4938
4939 : coherency check
4940 echo " "
4941 echo "Checking your choice of C compiler and flags for coherency..." >&4
4942 $cat > try.c <<'EOF'
4943 #include <stdio.h>
4944 int main() { printf("Ok\n"); return(0); }
4945 EOF
4946 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4947 shift
4948 $cat >try.msg <<'EOM'
4949 I've tried to compile and run the following simple program:
4950
4951 EOM
4952 $cat try.c >> try.msg
4953
4954 $cat >> try.msg <<EOM
4955
4956 I used the command:
4957
4958         $*
4959         $run ./try
4960
4961 and I got the following output:
4962
4963 EOM
4964 dflt=y
4965 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4966         if $sh -c "$run ./try" >>try.msg 2>&1; then
4967                 xxx=`$run ./try`
4968                 case "$xxx" in
4969                 "Ok") dflt=n ;;
4970                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4971                         case " $libs " in
4972                         *" -lsfio "*)
4973                                 cat >> try.msg <<'EOQS'
4974 If $libs contains -lsfio, and sfio is mis-configured, then it
4975 sometimes (apparently) runs and exits with a 0 status, but with no
4976 output!  It may have to do with sfio's use of _exit vs. exit.
4977
4978 EOQS
4979                                 rp="You have a big problem.  Shall I abort Configure"
4980                                 dflt=y
4981                                 ;;
4982                         esac
4983                         ;;
4984                 esac
4985         else
4986                 echo "The program compiled OK, but exited with status $?." >>try.msg
4987                 rp="You have a problem.  Shall I abort Configure"
4988                 dflt=y
4989         fi
4990 else
4991         echo "I can't compile the test program." >>try.msg
4992         rp="You have a BIG problem.  Shall I abort Configure"
4993         dflt=y
4994 fi
4995 case "$dflt" in
4996 y)
4997         $cat try.msg >&4
4998         case "$knowitall" in
4999         '')
5000                 echo "(The supplied flags or libraries might be incorrect.)"
5001                 ;;
5002         *) dflt=n;;
5003         esac
5004         echo " "
5005         . ./myread
5006         case "$ans" in
5007         n*|N*) ;;
5008         *)      echo "Ok.  Stopping Configure." >&4
5009                 exit 1
5010                 ;;
5011         esac
5012         ;;
5013 n) echo "OK, that should do.";;
5014 esac
5015 $rm -f try try.* core
5016
5017 : define a shorthand compile call
5018 compile='
5019 mc_file=$1;
5020 shift;
5021 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5022 : define a shorthand compile call for compilations that should be ok.
5023 compile_ok='
5024 mc_file=$1;
5025 shift;
5026 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5027
5028 : determine filename position in cpp output
5029 echo " "
5030 echo "Computing filename position in cpp output for #include directives..." >&4
5031 case "$osname" in
5032 vos) testaccess=-e ;;
5033 *)   testaccess=-r ;;
5034 esac
5035 echo '#include <stdio.h>' > foo.c
5036 $cat >fieldn <<EOF
5037 $startsh
5038 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5039 $grep '^[       ]*#.*stdio\.h' | \
5040 while read cline; do
5041         pos=1
5042         set \$cline
5043         while $test \$# -gt 0; do
5044                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5045                         echo "\$pos"
5046                         exit 0
5047                 fi
5048                 shift
5049                 pos=\`expr \$pos + 1\`
5050         done
5051 done
5052 EOF
5053 chmod +x fieldn
5054 fieldn=`./fieldn`
5055 $rm -f foo.c fieldn
5056 case $fieldn in
5057 '') pos='???';;
5058 1) pos=first;;
5059 2) pos=second;;
5060 3) pos=third;;
5061 *) pos="${fieldn}th";;
5062 esac
5063 echo "Your cpp writes the filename in the $pos field of the line."
5064
5065 case "$osname" in
5066 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5067 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5068 *)   cppfilter='' ;;
5069 esac
5070 : locate header file
5071 $cat >findhdr <<EOF
5072 $startsh
5073 wanted=\$1
5074 name=''
5075 for usrincdir in $usrinc
5076 do
5077         if test -f \$usrincdir/\$wanted; then
5078                 echo "\$usrincdir/\$wanted"
5079                 exit 0
5080         fi
5081 done
5082 awkprg='{ print \$$fieldn }'
5083 echo "#include <\$wanted>" > foo\$\$.c
5084 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5085 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5086 while read cline; do
5087         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5088         case "\$name" in
5089         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5090         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5091         *) exit 2;;
5092         esac;
5093 done;
5094 #
5095 # status = 0: grep returned 0 lines, case statement not executed
5096 # status = 1: headerfile found
5097 # status = 2: while loop executed, no headerfile found
5098 #
5099 status=\$?
5100 $rm -f foo\$\$.c;
5101 if test \$status -eq 1; then
5102         exit 0;
5103 fi
5104 exit 1
5105 EOF
5106 chmod +x findhdr
5107
5108 : define an alternate in-header-list? function
5109 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5110 cont=true; xxf="echo \"<\$1> found.\" >&4";
5111 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5112 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5113 esac;
5114 case $# in 4) instead=instead;; *) instead="at last";; esac;
5115 while $test "$cont"; do
5116         xxx=`./findhdr $1`
5117         var=$2; eval "was=\$$2";
5118         if $test "$xxx" && $test -r "$xxx";
5119         then eval $xxf;
5120         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5121                 cont="";
5122         else eval $xxnf;
5123         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5124         set $yyy; shift; shift; yyy=$@;
5125         case $# in 0) cont="";;
5126         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5127                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5128         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5129                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5130         esac;
5131 done;
5132 while $test "$yyy";
5133 do set $yyy; var=$2; eval "was=\$$2";
5134         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5135         set $yyy; shift; shift; yyy=$@;
5136 done'
5137
5138 : see if stdlib is available
5139 set stdlib.h i_stdlib
5140 eval $inhdr
5141
5142 : check for lengths of integral types
5143 echo " "
5144 case "$intsize" in
5145 '')
5146         echo "Checking to see how big your integers are..." >&4
5147         $cat >try.c <<EOCP
5148 #include <stdio.h>
5149 #$i_stdlib I_STDLIB
5150 #ifdef I_STDLIB
5151 #include <stdlib.h>
5152 #endif
5153 int main()
5154 {
5155         printf("intsize=%d;\n", (int)sizeof(int));
5156         printf("longsize=%d;\n", (int)sizeof(long));
5157         printf("shortsize=%d;\n", (int)sizeof(short));
5158         exit(0);
5159 }
5160 EOCP
5161         set try
5162         if eval $compile_ok && $run ./try > /dev/null; then
5163                 eval `$run ./try`
5164                 echo "Your integers are $intsize bytes long."
5165                 echo "Your long integers are $longsize bytes long."
5166                 echo "Your short integers are $shortsize bytes long."
5167         else
5168                 $cat >&4 <<EOM
5169 !
5170 Help! I can't compile and run the intsize test program: please enlighten me!
5171 (This is probably a misconfiguration in your system or libraries, and
5172 you really ought to fix it.  Still, I'll try anyway.)
5173 !
5174 EOM
5175                 dflt=4
5176                 rp="What is the size of an integer (in bytes)?"
5177                 . ./myread
5178                 intsize="$ans"
5179                 dflt=$intsize
5180                 rp="What is the size of a long integer (in bytes)?"
5181                 . ./myread
5182                 longsize="$ans"
5183                 dflt=2
5184                 rp="What is the size of a short integer (in bytes)?"
5185                 . ./myread
5186                 shortsize="$ans"
5187         fi
5188         ;;
5189 esac
5190 $rm -f try try.*
5191
5192 : check for long long
5193 echo " "
5194 echo "Checking to see if you have long long..." >&4
5195 echo 'int main() { long long x = 7; return 0; }' > try.c
5196 set try
5197 if eval $compile; then
5198         val="$define"
5199         echo "You have long long."
5200 else
5201         val="$undef"
5202         echo "You do not have long long."
5203 fi
5204 $rm try.*
5205 set d_longlong
5206 eval $setvar
5207
5208 : check for length of long long
5209 case "${d_longlong}${longlongsize}" in
5210 $define)
5211         echo " "
5212         echo "Checking to see how big your long longs are..." >&4
5213         $cat >try.c <<'EOCP'
5214 #include <stdio.h>
5215 int main()
5216 {
5217     printf("%d\n", (int)sizeof(long long));
5218     return(0);
5219 }
5220 EOCP
5221         set try
5222         if eval $compile_ok; then
5223                 longlongsize=`$run ./try`
5224                 echo "Your long longs are $longlongsize bytes long."
5225         else
5226                 dflt='8'
5227                 echo " "
5228                 echo "(I can't seem to compile the test program.  Guessing...)"
5229                 rp="What is the size of a long long (in bytes)?"
5230                 . ./myread
5231                 longlongsize="$ans"
5232         fi
5233         if $test "X$longsize" = "X$longlongsize"; then
5234                 echo "(That isn't any different from an ordinary long.)"
5235         fi      
5236         ;;
5237 esac
5238 $rm -f try.* try
5239
5240 : see if inttypes.h is available
5241 : we want a real compile instead of Inhdr because some systems
5242 : have an inttypes.h which includes non-existent headers
5243 echo " "
5244 $cat >try.c <<EOCP
5245 #include <inttypes.h>
5246 int main() {
5247         static int32_t foo32 = 0x12345678;
5248 }
5249 EOCP
5250 set try
5251 if eval $compile; then
5252         echo "<inttypes.h> found." >&4
5253         val="$define"
5254 else
5255         echo "<inttypes.h> NOT found." >&4
5256         val="$undef"
5257 fi
5258 $rm -f try.c try
5259 set i_inttypes
5260 eval $setvar
5261
5262 : check for int64_t
5263 echo " "
5264 echo "Checking to see if you have int64_t..." >&4
5265 $cat >try.c <<EOCP
5266 #include <sys/types.h>
5267 #$i_inttypes I_INTTYPES
5268 #ifdef I_INTTYPES
5269 #include <inttypes.h>
5270 #endif
5271 int main() { int64_t x = 7; }
5272 EOCP
5273 set try
5274 if eval $compile; then
5275         val="$define"
5276         echo "You have int64_t."
5277 else
5278         val="$undef"
5279         echo "You do not have int64_t."
5280 fi
5281 $rm -f try try.*
5282 set d_int64_t
5283 eval $setvar
5284
5285
5286 echo " "
5287 echo "Checking which 64-bit integer type we could use..." >&4
5288
5289 case "$intsize" in
5290 8) val=int
5291    set quadtype
5292    eval $setvar
5293    val='"unsigned int"'
5294    set uquadtype
5295    eval $setvar
5296    quadkind=1
5297    ;;
5298 *) case "$longsize" in
5299    8) val=long
5300       set quadtype
5301       eval $setvar
5302       val='"unsigned long"'
5303       set uquadtype
5304       eval $setvar
5305       quadkind=2
5306       ;;
5307    *) case "$d_longlong:$longlongsize" in
5308       define:8)
5309         val='"long long"'
5310         set quadtype
5311         eval $setvar
5312         val='"unsigned long long"'
5313         set uquadtype
5314         eval $setvar
5315         quadkind=3
5316         ;;
5317       *) case "$d_int64_t" in
5318          define)
5319            val=int64_t
5320            set quadtype
5321            eval $setvar
5322            val=uint64_t
5323            set uquadtype
5324            eval $setvar
5325            quadkind=4
5326            ;;
5327          esac
5328          ;;
5329       esac
5330       ;;
5331    esac
5332    ;;
5333 esac
5334
5335 case "$quadtype" in
5336 '')     echo "Alas, no 64-bit integer types in sight." >&4
5337         d_quad="$undef"
5338         ;;
5339 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5340         d_quad="$define"
5341         ;;
5342 esac
5343
5344
5345 case "$uselonglong" in
5346 "$define"|true|[yY]*)
5347         cat <<EOM >&4
5348
5349 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5350 EOM
5351         use64bitint="$define"
5352         ;;
5353 esac                          
5354 case "$use64bits" in
5355 "$define"|true|[yY]*)
5356         cat <<EOM >&4
5357
5358 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5359 EOM
5360         use64bitint="$define"
5361         ;;
5362 esac                          
5363 case "$use64bitints" in
5364 "$define"|true|[yY]*)
5365         cat <<EOM >&4
5366
5367 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5368 EOM
5369         use64bitint="$define"
5370         ;;
5371 esac                          
5372 case "$use64bitsint" in
5373 "$define"|true|[yY]*)
5374         cat <<EOM >&4
5375
5376 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5377 EOM
5378         use64bitint="$define"
5379         ;;
5380 esac                          
5381 case "$uselonglongs" in
5382 "$define"|true|[yY]*)
5383         cat <<EOM >&4
5384
5385 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5386 EOM
5387         use64bitint="$define"
5388         ;;
5389 esac                          
5390 case "$use64bitsall" in
5391 "$define"|true|[yY]*)
5392         cat <<EOM >&4
5393
5394 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5395 EOM
5396         use64bitall="$define"
5397         ;;
5398 esac                          
5399
5400 case "$ccflags" in
5401 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5402 esac
5403 case "$use64bitall" in
5404 "$define"|true|[yY]*) use64bitint="$define" ;;
5405 esac
5406
5407 case "$longsize" in
5408 8) cat <<EOM
5409
5410 You have natively 64-bit long integers.
5411 EOM
5412    val="$define"
5413    ;;
5414 *) case "$use64bitint" in
5415    "$define"|true|[yY]*) dflt='y';;
5416    *) dflt='n';;
5417    esac
5418    case "$d_quad" in
5419    "$define") ;;
5420    *) dflt='n' ;;
5421    esac
5422    cat <<EOM
5423
5424 Perl can be built to take advantage of 64-bit integer types
5425 on some systems.  To do so, Configure can be run with -Duse64bitint.
5426 Choosing this option will most probably introduce binary incompatibilities.
5427
5428 If this doesn't make any sense to you, just accept the default '$dflt'.
5429 (The default has been chosen based on your configuration.)
5430 EOM
5431    rp='Try to use 64-bit integers, if available?'
5432    . ./myread
5433    case "$ans" in
5434    [yY]*) val="$define" ;;
5435    *)     val="$undef"  ;;
5436    esac
5437    ;;
5438 esac
5439 set use64bitint
5440 eval $setvar
5441
5442 case "$use64bitall" in
5443 "$define"|true|[yY]*) dflt='y' ;;
5444 *) case "$longsize" in
5445    8) dflt='y' ;;
5446    *) dflt='n' ;;
5447    esac
5448    ;;
5449 esac    
5450 cat <<EOM
5451
5452 You may also choose to try maximal 64-bitness.  It means using as much
5453 64-bitness as possible on the platform.  This in turn means even more
5454 binary incompatibilities.  On the other hand, your platform may not
5455 have any more 64-bitness available than what you already have chosen.
5456
5457 If this doesn't make any sense to you, just accept the default '$dflt'.
5458 (The default has been chosen based on your configuration.)
5459 EOM
5460 rp='Try to use maximal 64-bit support, if available?'
5461 . ./myread
5462 case "$ans" in
5463 [yY]*) val="$define" ;;
5464 *)     val="$undef"  ;;
5465 esac
5466 set use64bitall
5467 eval $setvar
5468 case "$use64bitall" in
5469 "$define")
5470         case "$use64bitint" in
5471         "$undef")
5472                 cat <<EOM
5473
5474 Since you have chosen a maximally 64-bit build, I'm also turning on
5475 the use of 64-bit integers.
5476 EOM
5477                 use64bitint="$define" ;;
5478         esac
5479         ;;
5480 esac
5481
5482 : Look for a hint-file generated 'call-back-unit'.  If the
5483 : user has specified that a 64-bit perl is to be built,
5484 : we may need to set or change some other defaults.
5485 if $test -f use64bitint.cbu; then
5486         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5487         . ./use64bitint.cbu
5488 fi
5489 case "$use64bitint" in
5490 "$define"|true|[yY]*)
5491         case "$longsize" in
5492         4) case "$archname64" in
5493            '') archname64=64int ;;
5494            esac
5495            ;;
5496         esac
5497         ;;
5498 esac
5499
5500 : Look for a hint-file generated 'call-back-unit'.  If the
5501 : user has specified that a maximally 64-bit perl is to be built,
5502 : we may need to set or change some other defaults.
5503 if $test -f use64bitall.cbu; then
5504         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5505         . ./use64bitall.cbu
5506 fi
5507 case "$use64bitall" in
5508 "$define"|true|[yY]*)
5509         case "$longsize" in
5510         4) case "$archname64" in
5511            ''|64int) archname64=64all ;;
5512            esac
5513            ;;
5514         esac
5515         ;;
5516 esac
5517
5518 case "$d_quad:$use64bitint" in
5519 $undef:$define)
5520         cat >&4 <<EOF
5521
5522 *** You have chosen to use 64-bit integers,
5523 *** but none can be found.
5524 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5525 *** Cannot continue, aborting.
5526
5527 EOF
5528         exit 1
5529         ;;
5530 esac
5531
5532 : check for length of double
5533 echo " "
5534 case "$doublesize" in
5535 '')
5536         echo "Checking to see how big your double precision numbers are..." >&4
5537         $cat >try.c <<EOCP
5538 #include <stdio.h>
5539 #$i_stdlib I_STDLIB
5540 #ifdef I_STDLIB
5541 #include <stdlib.h>
5542 #endif
5543 int main()
5544 {
5545     printf("%d\n", (int)sizeof(double));
5546     exit(0);
5547 }
5548 EOCP
5549         set try
5550         if eval $compile_ok; then
5551                 doublesize=`$run ./try`
5552                 echo "Your double is $doublesize bytes long."
5553         else
5554                 dflt='8'
5555                 echo "(I can't seem to compile the test program.  Guessing...)"
5556                 rp="What is the size of a double precision number (in bytes)?"
5557                 . ./myread
5558                 doublesize="$ans"
5559         fi
5560         ;;
5561 esac
5562 $rm -f try.c try
5563
5564 : check for long doubles
5565 echo " "
5566 echo "Checking to see if you have long double..." >&4
5567 echo 'int main() { long double x = 7.0; }' > try.c
5568 set try
5569 if eval $compile; then
5570         val="$define"
5571         echo "You have long double."
5572 else
5573         val="$undef"
5574         echo "You do not have long double."
5575 fi
5576 $rm try.*
5577 set d_longdbl
5578 eval $setvar
5579
5580 : check for length of long double
5581 case "${d_longdbl}${longdblsize}" in
5582 $define)
5583         echo " "
5584         echo "Checking to see how big your long doubles are..." >&4
5585         $cat >try.c <<'EOCP'
5586 #include <stdio.h>
5587 int main()
5588 {
5589         printf("%d\n", sizeof(long double));
5590 }
5591 EOCP
5592         set try
5593         set try
5594         if eval $compile; then
5595                 longdblsize=`$run ./try`
5596                 echo "Your long doubles are $longdblsize bytes long."
5597         else
5598                 dflt='8'
5599                 echo " "
5600                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5601                 rp="What is the size of a long double (in bytes)?"
5602                 . ./myread
5603                 longdblsize="$ans"
5604         fi
5605         if $test "X$doublesize" = "X$longdblsize"; then
5606                 echo "That isn't any different from an ordinary double."
5607                 echo "I'll keep your setting anyway, but you may see some"
5608                 echo "harmless compilation warnings."
5609         fi      
5610         ;;
5611 esac
5612 $rm -f try.* try
5613
5614 : determine the architecture name
5615 echo " "
5616 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5617         tarch=`arch`"-$osname"
5618 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5619         if uname -m > tmparch 2>&1 ; then
5620                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5621                         -e 's/$/'"-$osname/" tmparch`
5622         else
5623                 tarch="$osname"
5624         fi
5625         $rm -f tmparch
5626 else
5627         tarch="$osname"
5628 fi
5629 case "$myarchname" in
5630 ''|"$tarch") ;;
5631 *)
5632         echo "(Your architecture name used to be $myarchname.)"
5633         archname=''
5634         ;;
5635 esac
5636 case "$targetarch" in
5637 '') ;;
5638 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5639 esac
5640 myarchname="$tarch"
5641 case "$archname" in
5642 '') dflt="$tarch";;
5643 *) dflt="$archname";;
5644 esac
5645 rp='What is your architecture name'
5646 . ./myread
5647 archname="$ans"
5648 case "$usethreads" in
5649 $define)
5650         echo "Threads selected." >&4
5651         case "$archname" in
5652         *-thread*) echo "...and architecture name already has -thread." >&4
5653                 ;;
5654         *)      archname="$archname-thread"
5655                 echo "...setting architecture name to $archname." >&4
5656                 ;;
5657         esac
5658         ;;
5659 esac
5660 case "$usemultiplicity" in
5661 $define)
5662         echo "Multiplicity selected." >&4
5663         case "$archname" in
5664         *-multi*) echo "...and architecture name already has -multi." >&4
5665                 ;;
5666         *)      archname="$archname-multi"
5667                 echo "...setting architecture name to $archname." >&4
5668                 ;;
5669         esac
5670         ;;
5671 esac
5672 case "$use64bitint$use64bitall" in
5673 *"$define"*)
5674         case "$archname64" in
5675         '')
5676                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5677                 ;;
5678         *)
5679                 case "$use64bitint" in
5680                 "$define") echo "64 bit integers selected." >&4 ;;
5681                 esac
5682                 case "$use64bitall" in
5683                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5684                 esac
5685                 case "$archname" in
5686                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5687                         ;;
5688                 *)      archname="$archname-$archname64"
5689                         echo "...setting architecture name to $archname." >&4
5690                         ;;
5691                 esac
5692                 ;;
5693         esac
5694 esac
5695 case "$uselongdouble" in
5696 $define)
5697         echo "Long doubles selected." >&4
5698         case "$longdblsize" in
5699         $doublesize)
5700                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5701                 ;;
5702         *)
5703                 case "$archname" in
5704                 *-ld*) echo "...and architecture name already has -ld." >&4
5705                         ;;
5706                 *)      archname="$archname-ld"
5707                         echo "...setting architecture name to $archname." >&4
5708                         ;;
5709                 esac
5710                 ;;
5711         esac
5712         ;;
5713 esac
5714 case "$useperlio" in
5715 $define)
5716         echo "Perlio selected." >&4
5717         ;;
5718 *)
5719         echo "Perlio not selected, using stdio." >&4
5720         case "$archname" in
5721         *-stdio*) echo "...and architecture name already has -stdio." >&4
5722                 ;;
5723         *)      archname="$archname-stdio"
5724                 echo "...setting architecture name to $archname." >&4
5725                 ;;
5726         esac
5727         ;;
5728 esac
5729 if $test -f archname.cbu; then
5730         echo "Your platform has some specific hints for architecture name, using them..."
5731         . ./archname.cbu
5732 fi
5733
5734 : determine root of directory hierarchy where package will be installed.
5735 case "$prefix" in
5736 '')
5737         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5738         ;;
5739 *?/)
5740         dflt=`echo "$prefix" | sed 's/.$//'`
5741         ;;
5742 *)
5743         dflt="$prefix"
5744         ;;
5745 esac
5746 $cat <<EOM
5747
5748 By default, $package will be installed in $dflt/bin, manual pages
5749 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5750 installation directories. Typically this is something like /usr/local.
5751 If you wish to have binaries under /usr/bin but other parts of the
5752 installation under /usr/local, that's ok: you will be prompted
5753 separately for each of the installation directories, the prefix being
5754 only used to set the defaults.
5755
5756 EOM
5757 fn=d~
5758 rp='Installation prefix to use?'
5759 . ./getfile
5760 oldprefix=''
5761 case "$prefix" in
5762 '') ;;
5763 *)
5764         case "$ans" in
5765         "$prefix") ;;
5766         *) oldprefix="$prefix";;
5767         esac
5768         ;;
5769 esac
5770 prefix="$ans"
5771 prefixexp="$ansexp"
5772
5773 case "$afsroot" in
5774 '')     afsroot=/afs ;;
5775 *)      afsroot=$afsroot ;;
5776 esac
5777
5778 : is AFS running?
5779 echo " "
5780 case "$afs" in
5781 $define|true)   afs=true ;;
5782 $undef|false)   afs=false ;;
5783 *)      if test -d $afsroot; then
5784                 afs=true
5785         else
5786                 afs=false
5787         fi
5788         ;;
5789 esac
5790 if $afs; then
5791         echo "AFS may be running... I'll be extra cautious then..." >&4
5792 else
5793         echo "AFS does not seem to be running..." >&4
5794 fi
5795
5796 : determine installation prefix for where package is to be installed.
5797 if $afs; then 
5798 $cat <<EOM
5799
5800 Since you are running AFS, I need to distinguish the directory in which
5801 files will reside from the directory in which they are installed (and from
5802 which they are presumably copied to the former directory by occult means).
5803
5804 EOM
5805         case "$installprefix" in
5806         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5807         *) dflt="$installprefix";;
5808         esac
5809 else
5810 $cat <<EOM
5811
5812 In some special cases, particularly when building $package for distribution,
5813 it is convenient to distinguish the directory in which files should be
5814 installed from the directory ($prefix) in which they will
5815 eventually reside.  For most users, these two directories are the same.
5816
5817 EOM
5818         case "$installprefix" in
5819         '') dflt=$prefix ;;
5820         *) dflt=$installprefix;;
5821         esac
5822 fi
5823 fn=d~
5824 rp='What installation prefix should I use for installing files?'
5825 . ./getfile
5826 installprefix="$ans"
5827 installprefixexp="$ansexp"
5828
5829 : set the prefixit variable, to compute a suitable default value
5830 prefixit='case "$3" in
5831 ""|none)
5832         case "$oldprefix" in
5833         "") eval "$1=\"\$$2\"";;
5834         *)
5835                 case "$3" in
5836                 "") eval "$1=";;
5837                 none)
5838                         eval "tp=\"\$$2\"";
5839                         case "$tp" in
5840                         ""|" ") eval "$1=\"\$$2\"";;
5841                         *) eval "$1=";;
5842                         esac;;
5843                 esac;;
5844         esac;;
5845 *)
5846         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5847         case "$tp" in
5848         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5849         /*-$oldprefix/*|\~*-$oldprefix/*)
5850                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5851         *) eval "$1=\"\$$2\"";;
5852         esac;;
5853 esac'
5854
5855 : get the patchlevel
5856 echo " "
5857 echo "Getting the current patchlevel..." >&4
5858 if $test -r $rsrc/patchlevel.h;then
5859         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5860         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5861         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5862         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5863         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5864         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5865        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5866 else
5867         revision=0
5868         patchlevel=0
5869         subversion=0
5870         api_revision=0
5871         api_version=0
5872         api_subversion=0
5873         perl_patchlevel=0
5874         $echo "(You do not have patchlevel.h.  Eek.)"
5875 fi
5876 if $test -r $rsrc/.patch ; then  
5877         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5878                 perl_patchlevel=`cat $rsrc/.patch`
5879         fi
5880 fi
5881 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5882 version_patchlevel_string="version $patchlevel subversion $subversion"
5883 case "$perl_patchlevel" in
5884 0|'') ;;
5885 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5886 esac
5887
5888 $echo "(You have $package $version_patchlevel_string.)"
5889
5890 case "$osname" in
5891 dos|vms)
5892         : XXX Should be a Configure test for double-dots in filenames.
5893         version=`echo $revision $patchlevel $subversion | \
5894                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5895         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5896                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5897         ;;
5898 *)
5899         version=`echo $revision $patchlevel $subversion | \
5900                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5901         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5902                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5903         ;;
5904 esac
5905 : Special case the 5.005_xx maintenance series, which used 5.005
5906 : without any subversion label as a subdirectory in $sitelib
5907 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5908         api_versionstring='5.005'
5909 fi
5910
5911 : determine installation style
5912 : For now, try to deduce it from prefix unless it is already set.
5913 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5914 case "$installstyle" in
5915 '')     case "$prefix" in
5916                 *perl*) dflt='lib';;
5917                 *) dflt='lib/perl5' ;;
5918         esac
5919         ;;
5920 *)      dflt="$installstyle" ;;
5921 esac
5922 : Probably not worth prompting for this since we prompt for all
5923 : the directories individually, and the prompt would be too long and
5924 : confusing anyway.
5925 installstyle=$dflt
5926
5927 : determine where private library files go
5928 : Usual default is /usr/local/lib/perl5/$version.
5929 : Also allow things like /opt/perl/lib/$version, since 
5930 : /opt/perl/lib/perl5... would be redundant.
5931 : The default "style" setting is made in installstyle.U
5932 case "$installstyle" in
5933 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5934 *)       set dflt privlib lib/$version ;;
5935 esac
5936 eval $prefixit
5937 $cat <<EOM
5938
5939 There are some auxiliary files for $package that need to be put into a
5940 private library directory that is accessible by everyone.
5941
5942 EOM
5943 fn=d~+
5944 rp='Pathname where the private library files will reside?'
5945 . ./getfile
5946 privlib="$ans"
5947 privlibexp="$ansexp"
5948 : Change installation prefix, if necessary.
5949 if $test X"$prefix" != X"$installprefix"; then
5950         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5951 else
5952         installprivlib="$privlibexp"
5953 fi
5954
5955 : set the prefixup variable, to restore leading tilda escape
5956 prefixup='case "$prefixexp" in
5957 "$prefix") ;;
5958 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5959 esac'
5960
5961 : determine where public architecture dependent libraries go
5962 set archlib archlib
5963 eval $prefixit
5964 : privlib default is /usr/local/lib/$package/$version
5965 : archlib default is /usr/local/lib/$package/$version/$archname
5966 : privlib may have an optional trailing /share.
5967 tdflt=`echo $privlib | $sed 's,/share$,,'`
5968 tdflt=$tdflt/$archname
5969 case "$archlib" in
5970 '')     dflt=$tdflt
5971         ;;
5972 *)      dflt="$archlib"
5973     ;;
5974 esac
5975 $cat <<EOM
5976
5977 $spackage contains architecture-dependent library files.  If you are
5978 sharing libraries in a heterogeneous environment, you might store
5979 these files in a separate location.  Otherwise, you can just include
5980 them with the rest of the public library files.
5981
5982 EOM
5983 fn=d+~
5984 rp='Where do you want to put the public architecture-dependent libraries?'
5985 . ./getfile
5986 archlib="$ans"
5987 archlibexp="$ansexp"
5988 if $test X"$archlib" = X"$privlib"; then
5989         d_archlib="$undef"
5990 else
5991         d_archlib="$define"
5992 fi
5993 : Change installation prefix, if necessary.
5994 if $test X"$prefix" != X"$installprefix"; then
5995         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5996 else
5997         installarchlib="$archlibexp"
5998 fi
5999
6000 : see if setuid scripts can be secure
6001 $cat <<EOM
6002
6003 Some kernels have a bug that prevents setuid #! scripts from being
6004 secure.  Some sites have disabled setuid #! scripts because of this.
6005
6006 First let's decide if your kernel supports secure setuid #! scripts.
6007 (If setuid #! scripts would be secure but have been disabled anyway,
6008 don't say that they are secure if asked.)
6009
6010 EOM
6011
6012 val="$undef"
6013 if $test -d /dev/fd; then
6014         echo "#!$ls" >reflect
6015         chmod +x,u+s reflect
6016         ./reflect >flect 2>&1
6017         if $contains "/dev/fd" flect >/dev/null; then
6018                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6019                 val="$define"
6020         else
6021                 $cat <<EOM
6022 If you are not sure if they are secure, I can check but I'll need a
6023 username and password different from the one you are using right now.
6024 If you don't have such a username or don't want me to test, simply
6025 enter 'none'.
6026
6027 EOM
6028                 rp='Other username to test security of setuid scripts with?'
6029                 dflt='none'
6030                 . ./myread
6031                 case "$ans" in
6032                 n|none)
6033                         case "$d_suidsafe" in
6034                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6035                                 dflt=n;;
6036                         "$undef")
6037                                 echo "Well, the $hint value is *not* secure." >&4
6038                                 dflt=n;;
6039                         *)      echo "Well, the $hint value *is* secure." >&4
6040                                 dflt=y;;
6041                         esac
6042                         ;;
6043                 *)
6044                         $rm -f reflect flect
6045                         echo "#!$ls" >reflect
6046                         chmod +x,u+s reflect
6047                         echo >flect
6048                         chmod a+w flect
6049                         echo '"su" will (probably) prompt you for '"$ans's password."
6050                         su $ans -c './reflect >flect'
6051                         if $contains "/dev/fd" flect >/dev/null; then
6052                                 echo "Okay, it looks like setuid scripts are secure." >&4
6053                                 dflt=y
6054                         else
6055                                 echo "I don't think setuid scripts are secure." >&4
6056                                 dflt=n
6057                         fi
6058                         ;;
6059                 esac
6060                 rp='Does your kernel have *secure* setuid scripts?'
6061                 . ./myread
6062                 case "$ans" in
6063                 [yY]*)  val="$define";;
6064                 *)      val="$undef";;
6065                 esac
6066         fi
6067 else
6068         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6069         echo "(That's for file descriptors, not floppy disks.)"
6070         val="$undef"
6071 fi
6072 set d_suidsafe
6073 eval $setvar
6074
6075 $rm -f reflect flect
6076
6077 : now see if they want to do setuid emulation
6078 echo " "
6079 val="$undef"
6080 case "$d_suidsafe" in
6081 "$define")
6082         val="$undef"
6083         echo "No need to emulate SUID scripts since they are secure here." >&4
6084         ;;
6085 *)
6086         $cat <<EOM
6087 Some systems have disabled setuid scripts, especially systems where
6088 setuid scripts cannot be secure.  On systems where setuid scripts have
6089 been disabled, the setuid/setgid bits on scripts are currently
6090 useless.  It is possible for $package to detect those bits and emulate
6091 setuid/setgid in a secure fashion.  This emulation will only work if
6092 setuid scripts have been disabled in your kernel.
6093
6094 EOM
6095         case "$d_dosuid" in
6096         "$define") dflt=y ;;
6097         *) dflt=n ;;
6098         esac
6099         rp="Do you want to do setuid/setgid emulation?"
6100         . ./myread
6101         case "$ans" in
6102         [yY]*)  val="$define";;
6103         *)      val="$undef";;
6104         esac
6105         ;;
6106 esac
6107 set d_dosuid
6108 eval $setvar
6109
6110 : see if this is a malloc.h system
6111 : we want a real compile instead of Inhdr because some systems have a
6112 : malloc.h that just gives a compile error saying to use stdlib.h instead
6113 echo " "
6114 $cat >try.c <<EOCP
6115 #include <stdlib.h>
6116 #include <malloc.h>
6117 int main () { return 0; }
6118 EOCP
6119 set try
6120 if eval $compile; then
6121     echo "<malloc.h> found." >&4
6122     val="$define"
6123 else
6124     echo "<malloc.h> NOT found." >&4
6125     val="$undef"
6126 fi
6127 $rm -f try.c try
6128 set i_malloc
6129 eval $setvar
6130
6131 : check for void type
6132 echo " "
6133 echo "Checking to see how well your C compiler groks the void type..." >&4
6134 case "$voidflags" in
6135 '')
6136         $cat >try.c <<EOCP
6137 #$i_stdlib I_STDLIB
6138 #ifdef I_STDLIB
6139 #include <stdlib.h>
6140 #endif
6141 #if TRY & 1
6142 void sub() {
6143 #else
6144 sub() {
6145 #endif
6146         extern void moo();      /* function returning void */
6147         void (*goo)();          /* ptr to func returning void */
6148 #if TRY & 8
6149         void *hue;              /* generic ptr */
6150 #endif
6151 #if TRY & 2
6152         void (*foo[10])();
6153 #endif
6154
6155 #if TRY & 4
6156         if(goo == moo) {
6157                 exit(0);
6158         }
6159 #endif
6160         exit(0);
6161 }
6162 int main() { sub(); }
6163 EOCP
6164         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6165                 voidflags=$defvoidused
6166         echo "Good.  It appears to support void to the level $package wants.">&4
6167                 if $contains warning .out >/dev/null 2>&1; then
6168                         echo "However, you might get some warnings that look like this:"
6169                         $cat .out
6170                 fi
6171         else
6172 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6173                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6174                         echo "It supports 1..."
6175                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6176                                 echo "It also supports 2..."
6177                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6178                                         voidflags=7
6179                                         echo "And it supports 4 but not 8 definitely."
6180                                 else
6181                                         echo "It doesn't support 4..."
6182                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6183                                                 voidflags=11
6184                                                 echo "But it supports 8."
6185                                         else
6186                                                 voidflags=3
6187                                                 echo "Neither does it support 8."
6188                                         fi
6189                                 fi
6190                         else
6191                                 echo "It does not support 2..."
6192                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6193                                         voidflags=13
6194                                         echo "But it supports 4 and 8."
6195                                 else
6196                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6197                                                 voidflags=5
6198                                                 echo "And it supports 4 but has not heard about 8."
6199                                         else
6200                                                 echo "However it supports 8 but not 4."
6201                                         fi
6202                                 fi
6203                         fi
6204                 else
6205                         echo "There is no support at all for void."
6206                         voidflags=0
6207                 fi
6208         fi
6209 esac
6210 case "$voidflags" in
6211 "$defvoidused") ;;
6212 *)      $cat >&4 <<'EOM'
6213   Support flag bits are:
6214     1: basic void declarations.
6215     2: arrays of pointers to functions returning void.
6216     4: operations between pointers to and addresses of void functions.
6217     8: generic void pointers.
6218 EOM
6219         dflt="$voidflags";
6220         rp="Your void support flags add up to what?"
6221         . ./myread
6222         voidflags="$ans"
6223         ;;
6224 esac
6225 $rm -f try.* .out
6226
6227 : check for length of pointer
6228 echo " "
6229 case "$ptrsize" in
6230 '')
6231         echo "Checking to see how big your pointers are..." >&4
6232         if test "$voidflags" -gt 7; then
6233                 echo '#define VOID_PTR char *' > try.c
6234         else
6235                 echo '#define VOID_PTR void *' > try.c
6236         fi
6237         $cat >>try.c <<EOCP
6238 #include <stdio.h>
6239 #$i_stdlib I_STDLIB
6240 #ifdef I_STDLIB
6241 #include <stdlib.h>
6242 #endif
6243 int main()
6244 {
6245     printf("%d\n", (int)sizeof(VOID_PTR));
6246     exit(0);
6247 }
6248 EOCP
6249         set try
6250         if eval $compile_ok; then
6251                 ptrsize=`$run ./try`
6252                 echo "Your pointers are $ptrsize bytes long."
6253         else
6254                 dflt='4'
6255                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6256                 rp="What is the size of a pointer (in bytes)?"
6257                 . ./myread
6258                 ptrsize="$ans"
6259         fi
6260         ;;
6261 esac
6262 $rm -f try.c try
6263 case "$use64bitall" in
6264 "$define"|true|[yY]*)
6265         case "$ptrsize" in
6266         4)      cat <<EOM >&4
6267
6268 *** You have chosen a maximally 64-bit build,
6269 *** but your pointers are only 4 bytes wide.
6270 *** Please rerun Configure without -Duse64bitall.
6271 EOM
6272                 case "$d_quad" in
6273                 define)
6274                         cat <<EOM >&4
6275 *** Since you have quads, you could possibly try with -Duse64bitint.
6276 EOM
6277                         ;;
6278                 esac
6279                 cat <<EOM >&4
6280 *** Cannot continue, aborting.
6281
6282 EOM
6283
6284                 exit 1
6285                 ;;
6286         esac
6287         ;;
6288 esac
6289
6290
6291 : determine whether to use malloc wrapping
6292 echo " "
6293 case "$usemallocwrap" in
6294 [yY]*|true|$define)     dflt='y' ;;
6295 [nN]*|false|$undef)     dflt='n' ;;
6296 *)      case "$usedevel" in
6297         [yY]*|true|$define)     dflt='y' ;;
6298         *) dflt='n' ;;
6299         esac
6300         ;;
6301 esac
6302 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6303 . ./myread
6304 usemallocwrap="$ans"
6305 case "$ans" in
6306 y*|true)
6307         usemallocwrap="$define" ;;
6308 *)
6309         usemallocwrap="$undef" ;;
6310 esac
6311
6312 : determine which malloc to compile in
6313 echo " "
6314 case "$usemymalloc" in
6315 [yY]*|true|$define)     dflt='y' ;;
6316 [nN]*|false|$undef)     dflt='n' ;;
6317 *)      case "$ptrsize" in
6318         4) dflt='y' ;;
6319         *) dflt='n' ;;
6320         esac
6321         ;;
6322 esac
6323 rp="Do you wish to attempt to use the malloc that comes with $package?"
6324 . ./myread
6325 usemymalloc="$ans"
6326 case "$ans" in
6327 y*|true)
6328         usemymalloc='y'
6329         mallocsrc='malloc.c'
6330         mallocobj="malloc$_o"
6331         d_mymalloc="$define"
6332         case "$libs" in
6333         *-lmalloc*)
6334                 : Remove malloc from list of libraries to use
6335                 echo "Removing unneeded -lmalloc from library list" >&4
6336                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6337                 shift
6338                 libs="$*"
6339                 echo "libs = $libs" >&4
6340                 ;;
6341         esac
6342         ;;
6343 *)
6344         usemymalloc='n'
6345         mallocsrc=''
6346         mallocobj=''
6347         d_mymalloc="$undef"
6348         ;;
6349 esac
6350
6351 : compute the return types of malloc and free
6352 echo " "
6353 $cat >malloc.c <<END
6354 #$i_malloc I_MALLOC
6355 #$i_stdlib I_STDLIB
6356 #include <stdio.h>
6357 #include <sys/types.h>
6358 #ifdef I_MALLOC
6359 #include <malloc.h>
6360 #endif
6361 #ifdef I_STDLIB
6362 #include <stdlib.h>
6363 #endif
6364 #ifdef TRY_MALLOC
6365 void *malloc();
6366 #endif
6367 #ifdef TRY_FREE
6368 void free();
6369 #endif
6370 END
6371 case "$malloctype" in
6372 '')
6373         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6374                 malloctype='void *'
6375         else
6376                 malloctype='char *'
6377         fi
6378         ;;
6379 esac
6380 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6381
6382 case "$freetype" in
6383 '')
6384         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6385                 freetype='void'
6386         else
6387                 freetype='int'
6388         fi
6389         ;;
6390 esac
6391 echo "Your system uses $freetype free(), it would seem." >&4
6392 $rm -f malloc.[co]
6393 $cat <<EOM
6394
6395 After $package is installed, you may wish to install various
6396 add-on modules and utilities.  Typically, these add-ons will
6397 be installed under $prefix with the rest
6398 of this package.  However, you may wish to install such add-ons
6399 elsewhere under a different prefix.
6400
6401 If you do not wish to put everything under a single prefix, that's
6402 ok.  You will be prompted for the individual locations; this siteprefix
6403 is only used to suggest the defaults.
6404
6405 The default should be fine for most people.
6406
6407 EOM
6408 fn=d~+
6409 rp='Installation prefix to use for add-on modules and utilities?'
6410 : XXX Here might be another good place for an installstyle setting.
6411 case "$siteprefix" in
6412 '') dflt=$prefix ;;
6413 *)  dflt=$siteprefix ;;
6414 esac
6415 . ./getfile
6416 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6417 oldsiteprefix=''
6418 case "$siteprefix" in
6419 '') ;;
6420 *)      case "$ans" in
6421         "$prefix") ;;
6422         *) oldsiteprefix="$prefix";;
6423         esac
6424         ;;
6425 esac
6426 siteprefix="$ans"
6427 siteprefixexp="$ansexp"
6428
6429 : determine where site specific libraries go.
6430 : Usual default is /usr/local/lib/perl5/site_perl/$version
6431 : The default "style" setting is made in installstyle.U
6432 : XXX No longer works with Prefixit stuff.
6433 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6434 case "$sitelib" in
6435 '') case "$installstyle" in
6436         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6437         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6438         esac
6439         ;;
6440 *)      dflt="$sitelib"
6441         ;;
6442 esac
6443 $cat <<EOM
6444
6445 The installation process will create a directory for
6446 site-specific extensions and modules.  Most users find it convenient
6447 to place all site-specific files in this directory rather than in the
6448 main distribution directory.
6449
6450 EOM
6451 fn=d~+
6452 rp='Pathname for the site-specific library files?'
6453 . ./getfile
6454 sitelib="$ans"
6455 sitelibexp="$ansexp"
6456 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6457 : Change installation prefix, if necessary.
6458 if $test X"$prefix" != X"$installprefix"; then
6459         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6460 else
6461         installsitelib="$sitelibexp"
6462 fi
6463
6464 : determine where site specific architecture-dependent libraries go.
6465 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6466 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6467 : sitelib may have an optional trailing /share.
6468 case "$sitearch" in
6469 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6470         dflt="$dflt/$archname"
6471         ;;
6472 *)      dflt="$sitearch"
6473         ;;
6474 esac
6475 set sitearch sitearch none
6476 eval $prefixit
6477 $cat <<EOM
6478
6479 The installation process will also create a directory for
6480 architecture-dependent site-specific extensions and modules.
6481
6482 EOM
6483 fn=d~+
6484 rp='Pathname for the site-specific architecture-dependent library files?'
6485 . ./getfile
6486 sitearch="$ans"
6487 sitearchexp="$ansexp"
6488 : Change installation prefix, if necessary.
6489 if $test X"$prefix" != X"$installprefix"; then
6490         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6491 else
6492         installsitearch="$sitearchexp"
6493 fi
6494
6495 $cat <<EOM
6496
6497 The installation process will also create a directory for
6498 vendor-supplied add-ons.  Vendors who supply perl with their system
6499 may find it convenient to place all vendor-supplied files in this
6500 directory rather than in the main distribution directory.  This will
6501 ease upgrades between binary-compatible maintenance versions of perl.
6502
6503 Of course you may also use these directories in whatever way you see
6504 fit.  For example, you might use them to access modules shared over a
6505 company-wide network.
6506
6507 The default answer should be fine for most people.
6508 This causes further questions about vendor add-ons to be skipped
6509 and no vendor-specific directories will be configured for perl.
6510
6511 EOM
6512 rp='Do you want to configure vendor-specific add-on directories?'
6513 case "$usevendorprefix" in
6514 define|true|[yY]*) dflt=y ;;
6515 *)      : User may have set vendorprefix directly on Configure command line.
6516         case "$vendorprefix" in
6517         ''|' ') dflt=n ;;
6518         *)      dflt=y ;;
6519         esac
6520         ;;
6521 esac
6522 . ./myread
6523 case "$ans" in
6524 [yY]*)  fn=d~+
6525         rp='Installation prefix to use for vendor-supplied add-ons?'
6526         case "$vendorprefix" in
6527         '') dflt='' ;;
6528         *)  dflt=$vendorprefix ;;
6529         esac
6530         . ./getfile
6531         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6532         oldvendorprefix=''
6533         case "$vendorprefix" in
6534         '') ;;
6535         *)      case "$ans" in
6536                 "$prefix") ;;
6537                 *) oldvendorprefix="$prefix";;
6538                 esac
6539                 ;;
6540         esac
6541         usevendorprefix="$define"
6542         vendorprefix="$ans"
6543         vendorprefixexp="$ansexp"
6544         ;;
6545 *)      usevendorprefix="$undef"
6546         vendorprefix=''
6547         vendorprefixexp=''
6548         ;;
6549 esac
6550
6551 case "$vendorprefix" in
6552 '')     d_vendorlib="$undef"
6553         vendorlib=''
6554         vendorlibexp=''
6555         ;;
6556 *)      d_vendorlib="$define"
6557         : determine where vendor-supplied modules go.
6558         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6559         case "$vendorlib" in
6560         '')
6561                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6562                 case "$installstyle" in
6563                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6564                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6565                 esac
6566                 ;;
6567         *)      dflt="$vendorlib"
6568                 ;;
6569         esac
6570         fn=d~+
6571         rp='Pathname for the vendor-supplied library files?'
6572         . ./getfile
6573         vendorlib="$ans"
6574         vendorlibexp="$ansexp"
6575         ;;
6576 esac
6577 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6578 : Change installation prefix, if necessary.
6579 if $test X"$prefix" != X"$installprefix"; then
6580         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6581 else
6582         installvendorlib="$vendorlibexp"
6583 fi
6584
6585 case "$vendorprefix" in
6586 '')     d_vendorarch="$undef"
6587         vendorarch=''
6588         vendorarchexp=''
6589         ;;
6590 *)      d_vendorarch="$define"
6591         : determine where vendor-supplied architecture-dependent libraries go.
6592         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6593         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6594         : vendorlib may have an optional trailing /share.
6595         case "$vendorarch" in
6596         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6597                 dflt="$dflt/$archname"
6598                 ;;
6599         *)      dflt="$vendorarch" ;;
6600         esac
6601         fn=d~+
6602         rp='Pathname for vendor-supplied architecture-dependent files?'
6603         . ./getfile
6604         vendorarch="$ans"
6605         vendorarchexp="$ansexp"
6606         ;;
6607 esac
6608 : Change installation prefix, if necessary.
6609 if $test X"$prefix" != X"$installprefix"; then
6610         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6611 else
6612         installvendorarch="$vendorarchexp"
6613 fi
6614
6615 : Final catch-all directories to search
6616 $cat <<EOM
6617
6618 Lastly, you can have perl look in other directories for extensions and
6619 modules in addition to those already specified.
6620 These directories will be searched after 
6621         $sitearch 
6622         $sitelib 
6623 EOM
6624 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6625 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6626 echo ' '
6627 case "$otherlibdirs" in
6628 ''|' ') dflt='none' ;;
6629 *)      dflt="$otherlibdirs" ;;
6630 esac
6631 $cat <<EOM
6632 Enter a colon-separated set of extra paths to include in perl's @INC
6633 search path, or enter 'none' for no extra paths.
6634
6635 EOM
6636
6637 rp='Colon-separated list of additional directories for perl to search?'
6638 . ./myread
6639 case "$ans" in
6640 ' '|''|none)    otherlibdirs=' ' ;;     
6641 *)      otherlibdirs="$ans" ;;
6642 esac
6643 case "$otherlibdirs" in
6644 ' ') val=$undef ;;
6645 *)      val=$define ;;
6646 esac
6647 set d_perl_otherlibdirs
6648 eval $setvar
6649
6650 : Cruising for prototypes
6651 echo " "
6652 echo "Checking out function prototypes..." >&4
6653 $cat >prototype.c <<EOCP
6654 #$i_stdlib I_STDLIB
6655 #ifdef I_STDLIB
6656 #include <stdlib.h>
6657 #endif
6658 int main(int argc, char *argv[]) {
6659         exit(0);}
6660 EOCP
6661 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6662         echo "Your C compiler appears to support function prototypes."
6663         val="$define"
6664 else
6665         echo "Your C compiler doesn't seem to understand function prototypes."
6666         val="$undef"
6667 fi
6668 set prototype
6669 eval $setvar
6670 $rm -f prototype*
6671
6672 case "$prototype" in
6673 "$define") ;;
6674 *)      ansi2knr='ansi2knr'
6675         echo " "
6676         cat <<EOM >&4
6677
6678 $me:  FATAL ERROR:
6679 This version of $package can only be compiled by a compiler that 
6680 understands function prototypes.  Unfortunately, your C compiler 
6681         $cc $ccflags
6682 doesn't seem to understand them.  Sorry about that.
6683
6684 If GNU cc is available for your system, perhaps you could try that instead.  
6685
6686 Eventually, we hope to support building Perl with pre-ANSI compilers.
6687 If you would like to help in that effort, please contact <perlbug@perl.org>.
6688
6689 Aborting Configure now.
6690 EOM
6691         exit 2
6692         ;;
6693 esac
6694
6695 : determine where public executables go
6696 echo " "
6697 set dflt bin bin
6698 eval $prefixit
6699 fn=d~
6700 rp='Pathname where the public executables will reside?'
6701 . ./getfile
6702 if $test "X$ansexp" != "X$binexp"; then
6703         installbin=''
6704 fi
6705 bin="$ans"
6706 binexp="$ansexp"
6707 : Change installation prefix, if necessary.
6708 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6709 if $test X"$prefix" != X"$installprefix"; then
6710         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6711 else
6712         installbin="$binexp"
6713 fi
6714
6715 echo " "
6716 case "$extras" in
6717 '') dflt='n';;
6718 *) dflt='y';;
6719 esac
6720 cat <<EOM
6721 Perl can be built with extra modules or bundles of modules which
6722 will be fetched from the CPAN and installed alongside Perl.
6723
6724 Notice that you will need access to the CPAN; either via the Internet,
6725 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6726 be asked later to configure the CPAN.pm module which will in turn do
6727 the installation of the rest of the extra modules or bundles.)
6728
6729 Notice also that if the modules require any external software such as
6730 libraries and headers (the libz library and the zlib.h header for the
6731 Compress::Zlib module, for example) you MUST have any such software
6732 already installed, this configuration process will NOT install such
6733 things for you.
6734
6735 If this doesn't make any sense to you, just accept the default '$dflt'.
6736 EOM
6737 rp='Install any extra modules (y or n)?'
6738 . ./myread
6739 case "$ans" in
6740 y|Y)
6741         cat <<EOM
6742
6743 Please list any extra modules or bundles to be installed from CPAN,
6744 with spaces between the names.  The names can be in any format the
6745 'install' command of CPAN.pm will understand.  (Answer 'none',
6746 without the quotes, to install no extra modules or bundles.)
6747 EOM
6748         rp='Extras?'
6749         dflt="$extras"
6750         . ./myread
6751         extras="$ans"
6752 esac
6753 case "$extras" in
6754 ''|'none')
6755         val=''
6756         $rm -f ../extras.lst
6757         ;;
6758 *)      echo "(Saving the list of extras for later...)"
6759         echo "$extras" > ../extras.lst
6760         val="'$extras'"
6761         ;;
6762 esac
6763 set extras
6764 eval $setvar
6765 echo " "
6766
6767 : determine where html pages for programs go
6768 set html1dir html1dir none
6769 eval $prefixit
6770 $cat <<EOM
6771
6772 If you wish to install html files for programs in $spackage, indicate 
6773 the appropriate directory here.  To skip installing html files,
6774 answer "none".
6775 EOM
6776 case "$html1dir" in
6777 ''|none|$undef|' ') dflt=none ;;
6778 *) dflt=$html1dir ;;
6779 esac
6780 fn=dn+~
6781 rp="Directory for the main $spackage html pages?"
6782 . ./getfile
6783 html1dir="$ans"
6784 html1direxp="$ansexp"
6785 : Use ' ' for none so value is preserved next time through Configure
6786 $test X"$html1dir" = "X" && html1dir=' '
6787 : Change installation prefix, if necessary.
6788 if $test X"$prefix" != X"$installprefix"; then
6789         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6790 else
6791         installhtml1dir="$html1direxp"
6792 fi
6793
6794 : determine where html pages for libraries and modules go
6795 set html3dir html3dir none
6796 eval $prefixit
6797 $cat <<EOM
6798
6799 If you wish to install html files for modules associated with $spackage,
6800 indicate the appropriate directory here.  To skip installing html files,
6801 answer "none".
6802 EOM
6803 : There is no obvious default.  If they have specified html1dir, then
6804 : try to key off that, possibly changing .../html1 into .../html3.
6805 case "$html3dir" in
6806 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6807 *) dflt=$html3dir ;;
6808 esac
6809 fn=dn+~
6810 rp="Directory for the $spackage module html pages?"
6811 . ./getfile
6812 html3dir="$ans"
6813 html3direxp="$ansexp"
6814 : Use ' ' for none so value is preserved next time through Configure
6815 $test X"$html3dir" = "X" && html3dir=' '
6816 : Change installation prefix, if necessary.
6817 if $test X"$prefix" != X"$installprefix"; then
6818         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6819 else
6820         installhtml3dir="$html3direxp"
6821 fi
6822
6823 : Find perl5.005 or later.
6824 echo "Looking for a previously installed perl5.005 or later... "
6825 case "$perl5" in
6826 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6827                 : Check if this perl is recent and can load a simple module
6828                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6829                         perl5=$tdir/perl
6830                         break;
6831                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6832                         perl5=$tdir/perl5
6833                         break;
6834                 fi
6835         done
6836         ;;
6837 *)      perl5="$perl5"
6838         ;;
6839 esac
6840 case "$perl5" in
6841 '')     echo "None found.  That's ok.";;
6842 *)      echo "Using $perl5." ;;
6843 esac
6844
6845 : Determine list of previous versions to include in @INC
6846 $cat > getverlist <<EOPL
6847 #!$perl5 -w
6848 use File::Basename;
6849 \$api_versionstring = "$api_versionstring";
6850 \$version = "$version";
6851 \$stem = "$sitelib_stem";
6852 \$archname = "$archname";
6853 EOPL
6854         $cat >> getverlist <<'EOPL'
6855 # Can't have leading @ because metaconfig interprets it as a command!
6856 ;@inc_version_list=();
6857 # XXX Redo to do opendir/readdir? 
6858 if (-d $stem) {
6859     chdir($stem);
6860     ;@candidates = glob("5.*");
6861 }
6862 else {
6863     ;@candidates = ();
6864 }
6865
6866 # XXX ToDo:  These comparisons must be reworked when two-digit
6867 # subversions come along, so that 5.7.10 compares as greater than
6868 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6869 # widespread that we can use the built-in version vectors rather
6870 # than reinventing them here.  For 5.6.0, however, we must
6871 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6872 foreach $d (@candidates) {
6873     if ($d lt $version) {
6874         if ($d ge $api_versionstring) {
6875             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6876         }
6877         elsif ($d ge "5.005") {
6878             unshift(@inc_version_list, grep { -d } $d);
6879         }
6880     }
6881     else {
6882         # Skip newer version.  I.e. don't look in
6883         # 5.7.0 if we're installing 5.6.1.
6884     }
6885 }
6886
6887 if (@inc_version_list) {
6888     print join(' ', @inc_version_list);
6889 }
6890 else {
6891     # Blank space to preserve value for next Configure run.
6892     print " ";
6893 }
6894 EOPL
6895 chmod +x getverlist
6896 case "$inc_version_list" in
6897 '')     if test -x "$perl5$exe_ext"; then
6898                 dflt=`$perl5 getverlist`
6899         else
6900                 dflt='none'
6901         fi
6902         ;;
6903 $undef) dflt='none' ;;
6904 *)  eval dflt=\"$inc_version_list\" ;;
6905 esac
6906 case "$dflt" in
6907 ''|' ') dflt=none ;;
6908 esac
6909 case "$dflt" in
6910 5.005) dflt=none ;;
6911 esac
6912 $cat <<EOM
6913
6914 In order to ease the process of upgrading, this version of perl 
6915 can be configured to use modules built and installed with earlier 
6916 versions of perl that were installed under $prefix.  Specify here
6917 the list of earlier versions that this version of perl should check.
6918 If Configure detected no earlier versions of perl installed under
6919 $prefix, then the list will be empty.  Answer 'none' to tell perl
6920 to not search earlier versions.
6921
6922 The default should almost always be sensible, so if you're not sure,
6923 just accept the default.
6924 EOM
6925
6926 rp='List of earlier versions to include in @INC?'
6927 . ./myread
6928 case "$ans" in
6929 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6930 *) inc_version_list="$ans" ;;
6931 esac
6932 case "$inc_version_list" in
6933 ''|' ') 
6934         inc_version_list_init='0';;
6935 *)      inc_version_list_init=`echo $inc_version_list |
6936                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6937         ;;
6938 esac
6939 $rm -f getverlist
6940
6941 : determine whether to install perl also as /usr/bin/perl
6942
6943 echo " "
6944 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6945         $cat <<EOM
6946 Many scripts expect perl to be installed as /usr/bin/perl.
6947
6948 If you want to, I can install the perl you are about to compile
6949 as /usr/bin/perl (in addition to $bin/perl).
6950 EOM
6951         if test -f /usr/bin/perl; then
6952             $cat <<EOM
6953
6954 However, please note that because you already have a /usr/bin/perl,
6955 overwriting that with a new Perl would very probably cause problems.
6956 Therefore I'm assuming you don't want to do that (unless you insist).
6957
6958 EOM
6959             case "$installusrbinperl" in
6960             "$define"|[yY]*)    dflt='y';;
6961             *)                  dflt='n';;
6962             esac
6963         else
6964             $cat <<EOM
6965
6966 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6967
6968 EOM
6969             case "$installusrbinperl" in
6970             "$undef"|[nN]*)     dflt='n';;
6971             *)                  dflt='y';;
6972             esac
6973         fi
6974         rp="Do you want to install perl as /usr/bin/perl?"
6975         . ./myread
6976         case "$ans" in
6977         [yY]*)  val="$define";;
6978         *)      val="$undef" ;;
6979         esac
6980 else
6981         val="$undef"
6982 fi
6983 set installusrbinperl
6984 eval $setvar
6985
6986 echo " "
6987 echo "Checking for GNU C Library..." >&4
6988 cat >try.c <<'EOCP'
6989 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
6990    alone are insufficient to distinguish different versions, such as
6991    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
6992    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
6993 */
6994 #include <stdio.h>
6995 int main(void)
6996 {
6997 #ifdef __GLIBC__
6998 #   ifdef __GLIBC_MINOR__
6999 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
7000 #           include <gnu/libc-version.h>
7001             printf("%s\n",  gnu_get_libc_version());
7002 #       else
7003             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
7004 #       endif
7005 #   else
7006         printf("%d\n",  __GLIBC__);
7007 #   endif
7008     return 0;
7009 #else
7010     return 1;
7011 #endif
7012 }
7013 EOCP
7014 set try
7015 if eval $compile_ok && $run ./try > glibc.ver; then
7016         val="$define"
7017         gnulibc_version=`$cat glibc.ver`
7018         echo "You are using the GNU C Library version $gnulibc_version"
7019 else
7020         val="$undef"
7021         gnulibc_version=''
7022         echo "You are not using the GNU C Library"
7023 fi
7024 $rm -f try try.* glibc.ver
7025 set d_gnulibc
7026 eval $setvar
7027
7028 : see if nm is to be used to determine whether a symbol is defined or not
7029 case "$usenm" in
7030 '')
7031         dflt=''
7032         case "$d_gnulibc" in
7033         "$define")
7034                 echo " "
7035                 echo "nm probably won't work on the GNU C Library." >&4
7036                 dflt=n
7037                 ;;
7038         esac
7039         case "$dflt" in
7040         '') 
7041                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7042                         echo " "
7043                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
7044                         echo "'nm' won't be sufficient on this sytem." >&4
7045                         dflt=n
7046                 fi
7047                 ;;
7048         esac
7049         case "$dflt" in
7050         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7051                 if $test $dflt -gt 20; then
7052                         dflt=y
7053                 else
7054                         dflt=n
7055                 fi
7056                 ;;
7057         esac
7058         ;;
7059 *)
7060         case "$usenm" in
7061         true|$define) dflt=y;;
7062         *) dflt=n;;
7063         esac
7064         ;;
7065 esac
7066 $cat <<EOM
7067
7068 I can use $nm to extract the symbols from your C libraries. This
7069 is a time consuming task which may generate huge output on the disk (up
7070 to 3 megabytes) but that should make the symbols extraction faster. The
7071 alternative is to skip the 'nm' extraction part and to compile a small
7072 test program instead to determine whether each symbol is present. If
7073 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7074 this may be the best solution.
7075
7076 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7077
7078 EOM
7079 rp="Shall I use $nm to extract C symbols from the libraries?"
7080 . ./myread
7081 case "$ans" in
7082 [Nn]*) usenm=false;;
7083 *) usenm=true;;
7084 esac
7085
7086 runnm=$usenm
7087 case "$reuseval" in
7088 true) runnm=false;;
7089 esac
7090
7091 : nm options which may be necessary
7092 case "$nm_opt" in
7093 '') if $test -f /mach_boot; then
7094                 nm_opt=''       # Mach
7095         elif $test -d /usr/ccs/lib; then
7096                 nm_opt='-p'     # Solaris (and SunOS?)
7097         elif $test -f /dgux; then
7098                 nm_opt='-p'     # DG-UX
7099         elif $test -f /lib64/rld; then
7100                 nm_opt='-p'     # 64-bit Irix
7101         else
7102                 nm_opt=''
7103         fi;;
7104 esac
7105
7106 : nm options which may be necessary for shared libraries but illegal
7107 : for archive libraries.  Thank you, Linux.
7108 case "$nm_so_opt" in
7109 '')     case "$myuname" in
7110         *linux*|gnu*)
7111                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7112                         nm_so_opt='--dynamic'
7113                 fi
7114                 ;;
7115         esac
7116         ;;
7117 esac
7118
7119 case "$runnm" in
7120 true)
7121 : get list of predefined functions in a handy place
7122 echo " "
7123 case "$libc" in
7124 '') libc=unknown
7125         case "$libs" in
7126         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7127         esac
7128         ;;
7129 esac
7130 case "$libs" in
7131 '') ;;
7132 *)  for thislib in $libs; do
7133         case "$thislib" in
7134         -lc|-lc_s)
7135                 : Handle C library specially below.
7136                 ;;
7137         -l*)
7138                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7139                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7140                         :
7141                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7142                         :
7143                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7144                         :
7145                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7146                         :
7147                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7148                         :
7149                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7150                         :
7151                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7152                         :
7153                 else
7154                         try=''
7155                 fi
7156                 libnames="$libnames $try"
7157                 ;;
7158         *) libnames="$libnames $thislib" ;;
7159         esac
7160         done
7161         ;;
7162 esac
7163 xxx=normal
7164 case "$libc" in
7165 unknown)
7166         set /lib/libc.$so
7167         for xxx in $libpth; do
7168                 $test -r $1 || set $xxx/libc.$so
7169                 : The messy sed command sorts on library version numbers.
7170                 $test -r $1 || \
7171                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7172                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7173                                 h
7174                                 s/[0-9][0-9]*/0000&/g
7175                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7176                                 G
7177                                 s/\n/ /' | \
7178                          $sort | $sed -e 's/^.* //'`
7179                 eval set \$$#
7180         done
7181         $test -r $1 || set /usr/ccs/lib/libc.$so
7182         $test -r $1 || set /lib/libsys_s$_a
7183         ;;
7184 *)
7185         set blurfl
7186         ;;
7187 esac
7188 if $test -r "$1"; then
7189         echo "Your (shared) C library seems to be in $1."
7190         libc="$1"
7191 elif $test -r /lib/libc && $test -r /lib/clib; then
7192         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7193         xxx=apollo
7194         libc='/lib/clib /lib/libc'
7195         if $test -r /lib/syslib; then
7196                 echo "(Your math library is in /lib/syslib.)"
7197                 libc="$libc /lib/syslib"
7198         fi
7199 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7200         echo "Your C library seems to be in $libc, as you said before."
7201 elif $test -r $incpath/usr/lib/libc$_a; then
7202         libc=$incpath/usr/lib/libc$_a;
7203         echo "Your C library seems to be in $libc.  That's fine."
7204 elif $test -r /lib/libc$_a; then
7205         libc=/lib/libc$_a;
7206         echo "Your C library seems to be in $libc.  You're normal."
7207 else
7208         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7209                 :
7210         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7211                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7212         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7213                 :
7214         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7215                 :
7216         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7217                 :
7218         else
7219                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7220         fi
7221         if $test -r "$tans"; then
7222                 echo "Your C library seems to be in $tans, of all places."
7223                 libc=$tans
7224         else
7225                 libc='blurfl'
7226         fi
7227 fi
7228 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7229         dflt="$libc"
7230         cat <<EOM
7231
7232 If the guess above is wrong (which it might be if you're using a strange
7233 compiler, or your machine supports multiple models), you can override it here.
7234
7235 EOM
7236 else
7237         dflt=''
7238         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7239         cat >&4 <<EOM
7240 I can't seem to find your C library.  I've looked in the following places:
7241
7242 EOM
7243         $sed 's/^/      /' libpath
7244         cat <<EOM
7245
7246 None of these seems to contain your C library. I need to get its name...
7247
7248 EOM
7249 fi
7250 fn=f
7251 rp='Where is your C library?'
7252 . ./getfile
7253 libc="$ans"
7254
7255 echo " "
7256 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7257 set X `cat libnames`
7258 shift
7259 xxx=files
7260 case $# in 1) xxx=file; esac
7261 echo "Extracting names from the following $xxx for later perusal:" >&4
7262 echo " "
7263 $sed 's/^/      /' libnames >&4
7264 echo " "
7265 $echo $n "This may take a while...$c" >&4
7266
7267 for file in $*; do
7268         case $file in
7269         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7270         *) $nm $nm_opt $file 2>/dev/null;;
7271         esac
7272 done >libc.tmp
7273
7274 $echo $n ".$c"
7275 $grep fprintf libc.tmp > libc.ptf
7276 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7277 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7278 xxx='[ADTSIW]'
7279 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7280         eval $xscan;\
7281         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7282                 eval $xrun
7283 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7284         eval $xscan;\
7285         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7286                 eval $xrun
7287 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7288         eval $xscan;\
7289         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7290                 eval $xrun
7291 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7292         eval $xscan;\
7293         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7294                 eval $xrun
7295 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7296         eval $xscan;\
7297         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7298                 eval $xrun
7299 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7300         eval $xscan;\
7301         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7302                 eval $xrun
7303 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7304                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7305         eval $xscan;\
7306         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7307                 eval $xrun
7308 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7309         eval $xscan;\
7310         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7311                 eval $xrun
7312 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7313         eval $xscan;\
7314         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7315                 eval $xrun
7316 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7317         eval $xscan;\
7318         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7319                 eval $xrun
7320 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7321         eval $xscan;\
7322         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7323                 eval $xrun
7324 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7325         eval $xscan;\
7326         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7327                 eval $xrun
7328 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7329         eval $xscan;\
7330         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7331                 eval $xrun
7332 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7333         eval $xscan;\
7334         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7335                 eval $xrun
7336 else
7337         $nm -p $* 2>/dev/null >libc.tmp
7338         $grep fprintf libc.tmp > libc.ptf
7339         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7340                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7341         then
7342                 nm_opt='-p'
7343                 eval $xrun
7344         else
7345                 echo " "
7346                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7347                 com=''
7348                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7349                         for thisname in $libnames $libc; do
7350                                 $ar t $thisname >>libc.tmp
7351                         done
7352                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7353                         echo "Ok." >&4
7354                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7355                         # Repeat libc to extract forwarders to DLL entries too
7356                         for thisname in $libnames $libc; do
7357                                 $ar tv $thisname >>libc.tmp
7358                                 # Revision 50 of EMX has bug in $ar.
7359                                 # it will not extract forwarders to DLL entries
7360                                 # Use emximp which will extract exactly them.
7361                                 emximp -o tmp.imp $thisname \
7362                                     2>/dev/null && \
7363                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7364                                     < tmp.imp >>libc.tmp
7365                                 $rm tmp.imp
7366                         done
7367                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7368                         echo "Ok." >&4
7369                 else
7370                         echo "$ar didn't seem to work right." >&4
7371                         echo "Maybe this is a Cray...trying bld instead..." >&4
7372                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7373                         then
7374                                 for thisname in $libnames; do
7375                                         bld t $libnames | \
7376                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7377                                         $ar t $thisname >>libc.tmp
7378                                 done
7379                                 echo "Ok." >&4
7380                         else
7381                                 echo "That didn't work either.  Giving up." >&4
7382                                 exit 1
7383                         fi
7384                 fi
7385         fi
7386 fi
7387 nm_extract="$com"
7388 case "$PASE" in
7389 define)
7390     echo " "
7391     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7392     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7393     ;;
7394 *)  if $test -f /lib/syscalls.exp; then
7395         echo " "
7396         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7397         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7398     fi
7399     ;;
7400 esac
7401 ;;
7402 esac
7403 $rm -f libnames libpath
7404
7405 : see if dld is available
7406 set dld.h i_dld
7407 eval $inhdr
7408
7409 : is a C symbol defined?
7410 csym='tlook=$1;
7411 case "$3" in
7412 -v) tf=libc.tmp; tdc="";;
7413 -a) tf=libc.tmp; tdc="[]";;
7414 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7415 esac;
7416 tx=yes;
7417 case "$reuseval-$4" in
7418 true-) ;;
7419 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7420 esac;
7421 case "$tx" in
7422 yes)
7423         tval=false;
7424         if $test "$runnm" = true; then
7425                 if $contains $tlook $tf >/dev/null 2>&1; then
7426                         tval=true;
7427                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7428                         echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7429                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7430                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7431                         $rm -f try$_exe try.c core core.* try.core;
7432                 fi;
7433         else
7434                 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7435                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7436                 $rm -f try$_exe try.c;
7437         fi;
7438         ;;
7439 *)
7440         case "$tval" in
7441         $define) tval=true;;
7442         *) tval=false;;
7443         esac;
7444         ;;
7445 esac;
7446 eval "$2=$tval"'
7447
7448 : define an is-in-libc? function
7449 inlibc='echo " "; td=$define; tu=$undef;
7450 sym=$1; var=$2; eval "was=\$$2";
7451 tx=yes;
7452 case "$reuseval$was" in
7453 true) ;;
7454 true*) tx=no;;
7455 esac;
7456 case "$tx" in
7457 yes)
7458         set $sym tres -f;
7459         eval $csym;
7460         case "$tres" in
7461         true)
7462                 echo "$sym() found." >&4;
7463                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7464         *)
7465                 echo "$sym() NOT found." >&4;
7466                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7467         esac;;
7468 *)
7469         case "$was" in
7470         $define) echo "$sym() found." >&4;;
7471         *) echo "$sym() NOT found." >&4;;
7472         esac;;
7473 esac'
7474
7475 : see if dlopen exists
7476 xxx_runnm="$runnm"
7477 runnm=false
7478 set dlopen d_dlopen
7479 eval $inlibc
7480 runnm="$xxx_runnm"
7481
7482 : determine which dynamic loading, if any, to compile in
7483 echo " "
7484 dldir="ext/DynaLoader"
7485 case "$usedl" in
7486 $define|y|true)
7487         dflt='y'
7488         usedl="$define"
7489         ;;
7490 $undef|n|false)
7491         dflt='n'
7492         usedl="$undef"
7493         ;;
7494 *) 
7495         dflt='n'
7496         case "$d_dlopen" in
7497             $define) dflt='y' ;;
7498         esac
7499         case "$i_dld" in
7500             $define) dflt='y' ;;
7501         esac
7502         : Does a dl_xxx.xs file exist for this operating system
7503         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7504         ;;
7505 esac
7506 rp="Do you wish to use dynamic loading?"
7507 . ./myread
7508 usedl="$ans"
7509 case "$ans" in
7510 y*) usedl="$define"
7511         case "$dlsrc" in
7512         '')
7513                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7514                         dflt="$dldir/dl_${osname}.xs"
7515                 elif $test "$d_dlopen" = "$define" ; then
7516                         dflt="$dldir/dl_dlopen.xs"
7517                 elif $test "$i_dld" = "$define" ; then
7518                         dflt="$dldir/dl_dld.xs"
7519                 else
7520                         dflt=''
7521                 fi
7522                 ;;
7523         *)      dflt="$dldir/$dlsrc"
7524                 ;;
7525         esac
7526     echo "The following dynamic loading files are available:"
7527         : Can not go over to $dldir because getfile has path hard-coded in.
7528         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7529         rp="Source file to use for dynamic loading"
7530         fn="fne"
7531         gfpth="$src"
7532         . ./getfile
7533         usedl="$define"
7534         : emulate basename
7535         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7536
7537         $cat << EOM
7538
7539 Some systems may require passing special flags to $cc -c to
7540 compile modules that will be used to create a shared library.
7541 To use no flags, say "none".
7542
7543 EOM
7544     case "$cccdlflags" in
7545     '') case "$gccversion" in
7546                 '') case "$osname" in
7547                         hpux)   dflt='+z' ;;
7548                         next)   dflt='none' ;;
7549                         irix*)  dflt='-KPIC' ;;
7550                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7551                         sunos)  dflt='-pic' ;;
7552                         *)      dflt='none' ;;
7553                     esac
7554                         ;;
7555                 *)  case "$osname" in
7556                         darwin) dflt='none' ;;
7557                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7558                         *)      dflt='-fpic' ;;
7559                     esac ;;
7560             esac ;;
7561         ' ') dflt='none' ;;
7562     *)  dflt="$cccdlflags" ;;
7563     esac
7564     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7565     . ./myread
7566     case "$ans" in
7567     none) cccdlflags=' ' ;;
7568     *) cccdlflags="$ans" ;;
7569     esac
7570
7571     cat << EOM
7572
7573 Some systems use ld to create libraries that can be dynamically loaded,
7574 while other systems (such as those using ELF) use $cc.
7575
7576 EOM
7577         case "$ld" in
7578         '')     $cat >try.c <<EOM
7579 /* Test for whether ELF binaries are produced */
7580 #include <fcntl.h>
7581 #$i_stdlib I_STDLIB
7582 #ifdef I_STDLIB
7583 #include <stdlib.h>
7584 #endif
7585 int main() {
7586         char b[4];
7587         int i = open("a.out",O_RDONLY);
7588         if(i == -1) 
7589                 exit(1); /* fail */
7590         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7591                 exit(0); /* succeed (yes, it's ELF) */
7592         else
7593                 exit(1); /* fail */
7594 }
7595 EOM
7596                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7597                         cat <<EOM
7598 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7599 EOM
7600                         dflt="$cc"
7601                 else
7602                         echo "I'll use ld to build dynamic libraries."
7603                         dflt='ld'
7604                 fi
7605                 rm -f try.c a.out
7606                 ;;
7607         *)      dflt="$ld"
7608                 ;;
7609         esac
7610
7611     rp="What command should be used to create dynamic libraries?"
7612     . ./myread
7613         ld="$ans"
7614
7615     cat << EOM
7616
7617 Some systems may require passing special flags to $ld to create a
7618 library that can be dynamically loaded.  If your ld flags include
7619 -L/other/path options to locate libraries outside your loader's normal
7620 search path, you may need to specify those -L options here as well.  To
7621 use no flags, say "none".
7622
7623 EOM
7624     case "$lddlflags" in
7625     '') case "$osname" in
7626                         beos) dflt='-nostart' ;;
7627                         hpux) dflt='-b';
7628                               case "$gccversion" in
7629                               '') dflt="$dflt +vnocompatwarnings" ;;
7630                               esac
7631                               ;;        
7632                         linux|irix*|gnu*)       dflt='-shared' ;;
7633                         next)  dflt='none' ;;
7634                         solaris) dflt='-G' ;;
7635                         sunos) dflt='-assert nodefinitions' ;;
7636                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7637                 *)     dflt='none' ;;
7638                         esac
7639                         ;;
7640     *) dflt="$lddlflags" ;;
7641     esac
7642
7643         : Try to guess additional flags to pick up local libraries.
7644         : Be careful not to append to a plain 'none'
7645         case "$dflt" in
7646         none) dflt='' ;;
7647         esac
7648         for thisflag in $ldflags; do
7649                 case "$thisflag" in
7650                 -L*|-R*|-Wl,-R*)
7651                         case " $dflt " in
7652                         *" $thisflag "*) ;;
7653                         *) dflt="$dflt $thisflag" ;;
7654                         esac
7655                         ;;
7656                 esac
7657         done
7658
7659         case "$dflt" in
7660         ''|' ') dflt='none' ;;
7661         esac
7662
7663     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7664     . ./myread
7665     case "$ans" in
7666     none) lddlflags=' ' ;;
7667     *) lddlflags="$ans" ;;
7668     esac
7669
7670         cat <<EOM
7671
7672 Some systems may require passing special flags to $cc to indicate that
7673 the resulting executable will use dynamic linking.  To use no flags,
7674 say "none".
7675
7676 EOM
7677     case "$ccdlflags" in
7678     '') case "$osname" in
7679             linux|hpux|gnu*)    dflt='-Wl,-E' ;;
7680             next|sunos) dflt='none' ;;
7681             *)          dflt='none' ;;
7682             esac ;;
7683     ' ')  dflt='none' ;;
7684     *)  dflt="$ccdlflags" ;;
7685     esac
7686     rp="Any special flags to pass to $cc to use dynamic linking?"
7687     . ./myread
7688     case "$ans" in
7689     none) ccdlflags=' ' ;;
7690     *) ccdlflags="$ans" ;;
7691     esac
7692     ;;
7693 *)  usedl="$undef"
7694         ld='ld'
7695     dlsrc='dl_none.xs'
7696     lddlflags=''
7697     ccdlflags=''
7698     ;;
7699 esac
7700
7701 also=''
7702 case "$usedl" in
7703 $undef)
7704         # No dynamic loading being used, so don't bother even to prompt.
7705         useshrplib='false'
7706         ;;
7707 *)      case "$useshrplib" in
7708         '')     case "$osname" in
7709                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7710                         dflt=y
7711                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7712                         ;;
7713                 next*)
7714                         case "$osvers" in
7715                         4*)     dflt=y
7716                                 also='Building a shared libperl is needed for MAB support.'
7717                                 ;;
7718                         *)      dflt=n
7719                                 ;;
7720                         esac
7721                         ;;
7722                 *)      dflt=n
7723                         ;;
7724                 esac
7725                 ;;
7726         $define|true|[Yy]*)
7727                 dflt=y
7728                 ;;
7729         *)      dflt=n
7730                 ;;
7731         esac
7732         $cat << EOM
7733
7734 The perl executable is normally obtained by linking perlmain.c with
7735 libperl${_a}, any static extensions (usually just DynaLoader), and
7736 any other libraries needed on this system (such as -lm, etc.).  Since
7737 your system supports dynamic loading, it is probably possible to build
7738 a shared libperl.$so.  If you will have more than one executable linked
7739 to libperl.$so, this will significantly reduce the size of each
7740 executable, but it may have a noticeable affect on performance.  The
7741 default is probably sensible for your system.
7742 $also
7743
7744 EOM
7745         rp="Build a shared libperl.$so (y/n)"
7746         . ./myread
7747         case "$ans" in
7748         true|$define|[Yy]*)
7749                 useshrplib='true'  ;;
7750         *)      useshrplib='false' ;;
7751         esac
7752         ;;
7753 esac
7754
7755 case "$useshrplib" in
7756 true)
7757         case "$libperl" in
7758         '')
7759                 # Figure out a good name for libperl.so.  Since it gets stored in
7760                 # a version-specific architecture-dependent library, the version
7761                 # number isn't really that important, except for making cc/ld happy.
7762                 #
7763                 # A name such as libperl.so.3.1
7764                 majmin="libperl.$so.$patchlevel.$subversion"
7765                 # A name such as libperl.so.301
7766                 majonly=`echo $patchlevel $subversion |
7767                         $awk '{printf "%d%02d", $1, $2}'`
7768                 majonly=libperl.$so.$majonly
7769                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7770                 # rely on figuring it out from the naming of libc.
7771                 case "${osname}${osvers}" in
7772                 next4*)
7773                         dflt=libperl.5.$so
7774                         # XXX How handle the --version stuff for MAB?
7775                         ;;
7776                 linux*|gnu*)  # ld won't link with a bare -lperl otherwise.
7777                         dflt=libperl.$so
7778                         ;;
7779                 cygwin*) # ld links against an importlib
7780                         dflt=libperl$lib_ext
7781                         ;;
7782                 *)      # Try to guess based on whether libc has major.minor.
7783                         case "$libc" in
7784                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7785                         *libc.$so.[0-9]*) dflt=$majonly ;;
7786                         *)      dflt=libperl.$so ;;
7787                         esac
7788                         ;;
7789                 esac
7790                 ;;
7791         *)      dflt=$libperl
7792                 ;;
7793         esac
7794         cat << EOM
7795
7796 I need to select a good name for the shared libperl.  If your system uses
7797 library names with major and minor numbers, then you might want something
7798 like $majmin.  Alternatively, if your system uses a single version
7799 number for shared libraries, then you might want to use $majonly.
7800 Or, your system might be quite happy with a simple libperl.$so.
7801
7802 Since the shared libperl will get installed into a version-specific
7803 architecture-dependent directory, the version number of the shared perl
7804 library probably isn't important, so the default should be o.k.
7805
7806 EOM
7807         rp='What name do you want to give to the shared libperl?'
7808         . ./myread
7809         libperl=$ans
7810         echo "Ok, I'll use $libperl"
7811         ;;
7812 *)
7813         libperl="libperl${_a}"
7814         ;;
7815 esac
7816
7817 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7818 case "$shrpdir" in
7819 '') ;;
7820 *)      $cat >&4 <<EOM
7821 WARNING:  Use of the shrpdir variable for the installation location of
7822 the shared $libperl is not supported.  It was never documented and
7823 will not work in this version.  Let me (perlbug@perl.org)
7824 know of any problems this may cause.
7825
7826 EOM
7827         case "$shrpdir" in
7828         "$archlibexp/CORE")
7829                 $cat >&4 <<EOM
7830 But your current setting of $shrpdir is
7831 the default anyway, so it's harmless.
7832 EOM
7833                 ;;
7834         *)
7835                 $cat >&4 <<EOM
7836 Further, your current attempted setting of $shrpdir
7837 conflicts with the value of $archlibexp/CORE
7838 that installperl will use.
7839 EOM
7840                 ;;
7841         esac
7842         ;;
7843 esac
7844
7845 # How will the perl executable find the installed shared $libperl?
7846 # Add $xxx to ccdlflags.
7847 # If we can't figure out a command-line option, use $shrpenv to
7848 # set env LD_RUN_PATH.  The main perl makefile uses this.
7849 shrpdir=$archlibexp/CORE
7850 xxx=''
7851 tmp_shrpenv=''
7852 if "$useshrplib"; then
7853     case "$osname" in 
7854         aix)
7855                 # We'll set it in Makefile.SH...
7856                 ;;
7857         solaris)
7858                 xxx="-R $shrpdir"
7859                 ;;
7860         freebsd|netbsd|openbsd|interix)
7861                 xxx="-Wl,-R$shrpdir"
7862                 ;;
7863         bsdos|linux|irix*|dec_osf|gnu*)
7864                 xxx="-Wl,-rpath,$shrpdir"
7865                 ;;
7866         next)
7867                 # next doesn't like the default...
7868                 ;;
7869         beos)
7870                 # beos doesn't like the default, either.
7871                 ;;
7872         hpux*)
7873                 # hpux doesn't like the default, either.
7874                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7875                 ;;
7876         *)
7877                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7878                 ;;
7879         esac
7880         case "$xxx" in
7881         '') ;;
7882         *)      
7883                 # Only add $xxx if it isn't already in ccdlflags.
7884                 case " $ccdlflags " in
7885                 *" $xxx "*)     ;;
7886                 *)      ccdlflags="$ccdlflags $xxx"
7887                         cat <<EOM >&4
7888
7889 Adding $xxx to the flags
7890 passed to $ld so that the perl executable will find the 
7891 installed shared $libperl.
7892
7893 EOM
7894                         ;;
7895                 esac
7896                 ;;
7897         esac
7898 fi
7899 # Fix ccdlflags in AIX for building external extensions.
7900 # (For building Perl itself bare -bE:perl.exp is needed,
7901 #  Makefile.SH takes care of this.)
7902 case "$osname" in
7903 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7904 esac
7905 # Respect a hint or command-line value.
7906 case "$shrpenv" in
7907 '') shrpenv="$tmp_shrpenv" ;;
7908 esac
7909 case "$ldlibpthname" in
7910 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7911 none)   ldlibpthname='' ;;
7912 esac
7913
7914 : determine where manual pages are on this system
7915 echo " "
7916 case "$sysman" in
7917 '') 
7918         syspath='/usr/share/man/man1 /usr/man/man1'
7919         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7920         syspath="$syspath /usr/man/u_man/man1"
7921         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7922         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7923         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7924         sysman=`./loc . /usr/man/man1 $syspath`
7925         ;;
7926 esac
7927 if $test -d "$sysman"; then
7928         echo "System manual is in $sysman." >&4
7929 else
7930         echo "Could not find manual pages in source form." >&4
7931 fi
7932
7933 : determine where manual pages go
7934 set man1dir man1dir none
7935 eval $prefixit
7936 $cat <<EOM
7937
7938 $spackage has manual pages available in source form.
7939 EOM
7940 case "$nroff" in
7941 nroff)
7942         echo "However, you don't have nroff, so they're probably useless to you."
7943         case "$man1dir" in
7944         '') man1dir="none";;
7945         esac;;
7946 esac
7947 echo "If you don't want the manual sources installed, answer 'none'."
7948 case "$man1dir" in
7949 ' ') dflt=none
7950         ;;
7951 '')
7952         lookpath="$prefixexp/share/man/man1"
7953         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7954         lookpath="$lookpath $prefixexp/man/p_man/man1"
7955         lookpath="$lookpath $prefixexp/man/u_man/man1"
7956         lookpath="$lookpath $prefixexp/man/man.1"
7957         case "$sysman" in
7958         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7959         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7960         esac
7961         set dflt
7962         eval $prefixup
7963         ;;
7964 *)  dflt="$man1dir"
7965         ;;
7966 esac
7967 echo " "
7968 fn=dn+~
7969 rp="Where do the main $spackage manual pages (source) go?"
7970 . ./getfile
7971 if $test "X$man1direxp" != "X$ansexp"; then
7972         installman1dir=''
7973 fi
7974 man1dir="$ans"
7975 man1direxp="$ansexp"
7976 case "$man1dir" in
7977 '')     man1dir=' '
7978         installman1dir='';;
7979 esac
7980
7981 : Change installation prefix, if necessary.
7982 if $test X"$prefix" != X"$installprefix"; then
7983         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7984 else
7985         installman1dir="$man1direxp"
7986 fi
7987
7988 : What suffix to use on installed man pages
7989
7990 case "$man1dir" in
7991 ' ')
7992         man1ext='0'
7993         ;;
7994 *)
7995         rp="What suffix should be used for the main $spackage man pages?"
7996         case "$man1ext" in
7997         '')     case "$man1dir" in
7998                 *1)  dflt=1 ;;
7999                 *1p) dflt=1p ;;
8000                 *1pm) dflt=1pm ;;
8001                 *l) dflt=l;;
8002                 *n) dflt=n;;
8003                 *o) dflt=o;;
8004                 *p) dflt=p;;
8005                 *C) dflt=C;;
8006                 *L) dflt=L;;
8007                 *L1) dflt=L1;;
8008                 *) dflt=1;;
8009                 esac
8010                 ;;
8011         *)      dflt="$man1ext";;
8012         esac
8013         . ./myread
8014         man1ext="$ans"
8015         ;;
8016 esac
8017
8018 : see if we can have long filenames
8019 echo " "
8020 first=123456789abcdef
8021 $rm -f $first
8022 if (echo hi >$first) 2>/dev/null; then
8023         if $test -f 123456789abcde; then
8024                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
8025                 val="$undef"
8026         else
8027                 echo 'You can have filenames longer than 14 characters.'>&4
8028                 val="$define"
8029         fi
8030 else
8031         $cat <<'EOM'
8032 You can't have filenames longer than 14 chars.
8033 You can't even think about them!
8034 EOM
8035         val="$undef"
8036 fi 
8037 set d_flexfnam
8038 eval $setvar
8039 $rm -rf 123456789abcde*
8040
8041 : determine where library module manual pages go
8042 set man3dir man3dir none
8043 eval $prefixit
8044 $cat <<EOM
8045
8046 $spackage has manual pages for many of the library modules.
8047 EOM
8048
8049 case "$nroff" in
8050 nroff)
8051         $cat <<'EOM'
8052 However, you don't have nroff, so they're probably useless to you.
8053 EOM
8054         case "$man3dir" in
8055         '') man3dir="none";;
8056         esac;;
8057 esac
8058
8059 case "$d_flexfnam" in
8060 undef)
8061         $cat <<'EOM'
8062 However, your system can't handle the long file names like File::Basename.3. 
8063 EOM
8064         case "$man3dir" in
8065         '') man3dir="none";;
8066         esac;;
8067 esac
8068
8069 echo "If you don't want the manual sources installed, answer 'none'."
8070 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8071 case "$man3dir" in
8072 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8073         if $test -d "$privlib/man/man3"; then
8074                 cat <<EOM >&4
8075
8076 WARNING:  Previous versions of perl installed man3 pages into
8077 $privlib/man/man3.  This version will suggest a 
8078 new default of $dflt.  
8079 EOM
8080                 tdflt=$dflt
8081                 dflt='n'
8082                 rp='Do you wish to preserve the old behavior?(y/n)'
8083                 . ./myread
8084                 case "$ans" in
8085                 y*) dflt="$privlib/man/man3" ;;
8086                 *)  dflt=$tdflt ;;
8087                 esac
8088     fi
8089         ;;
8090 *)      dflt="$man3dir" ;;
8091 esac
8092 case "$dflt" in
8093 ' ') dflt=none ;;
8094 esac
8095 echo " "
8096 fn=dn+~
8097 rp="Where do the $package library man pages (source) go?"
8098 . ./getfile
8099 man3dir="$ans"
8100 man3direxp="$ansexp"
8101 case "$man3dir" in
8102 '')     man3dir=' '
8103         installman3dir='';;
8104 esac
8105
8106 : Change installation prefix, if necessary.
8107 if $test X"$prefix" != X"$installprefix"; then
8108         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8109 else
8110         installman3dir="$man3direxp"
8111 fi
8112
8113 : What suffix to use on installed man pages
8114 case "$man3dir" in
8115 ' ')
8116         man3ext='0'
8117         ;;
8118 *)
8119         rp="What suffix should be used for the $package library man pages?"
8120         case "$man3ext" in
8121         '')     case "$man3dir" in
8122                 *3)  dflt=3 ;;
8123                 *3p) dflt=3p ;;
8124                 *3pm) dflt=3pm ;;
8125                 *l) dflt=l;;
8126                 *n) dflt=n;;
8127                 *o) dflt=o;;
8128                 *p) dflt=p;;
8129                 *C) dflt=C;;
8130                 *L) dflt=L;;
8131                 *L3) dflt=L3;;
8132                 *) dflt=3;;
8133                 esac
8134                 ;;
8135         *)      dflt="$man3ext";;
8136         esac
8137         . ./myread
8138         man3ext="$ans"
8139         ;;
8140 esac
8141
8142 : see if we have to deal with yellow pages, now NIS.
8143 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8144         if $test -f /usr/etc/nibindd; then
8145                 echo " "
8146                 echo "I'm fairly confident you're on a NeXT."
8147                 echo " "
8148                 rp='Do you get the hosts file via NetInfo?'
8149                 dflt=y
8150                 case "$hostcat" in
8151                 nidump*) ;;
8152                 '') ;;
8153                 *) dflt=n;;
8154                 esac
8155                 . ./myread
8156                 case "$ans" in
8157                 y*) hostcat='nidump hosts .';;
8158                 *)      case "$hostcat" in
8159                         nidump*) hostcat='';;
8160                         esac
8161                         ;;
8162                 esac
8163         fi
8164         case "$hostcat" in
8165         nidump*) ;;
8166         *)
8167                 case "$hostcat" in
8168                 *ypcat*) dflt=y;;
8169                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8170                                 dflt=y
8171                         else
8172                                 dflt=n
8173                         fi;;
8174                 *) dflt=n;;
8175                 esac
8176                 echo " "
8177                 rp='Are you getting the hosts file via yellow pages?'
8178                 . ./myread
8179                 case "$ans" in
8180                 y*) hostcat='ypcat hosts';;
8181                 *) hostcat='cat /etc/hosts';;
8182                 esac
8183                 ;;
8184         esac
8185 fi
8186 case "$hostcat" in
8187 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8188 esac
8189 case "$groupcat" in
8190 '') test -f /etc/group && groupcat='cat /etc/group';;
8191 esac
8192 case "$passcat" in
8193 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8194 esac
8195
8196 : now get the host name
8197 echo " "
8198 echo "Figuring out host name..." >&4
8199 case "$myhostname" in
8200 '') cont=true
8201         echo 'Maybe "hostname" will work...'
8202         if tans=`sh -c hostname 2>&1` ; then
8203                 myhostname=$tans
8204                 phostname=hostname
8205                 cont=''
8206         fi
8207         ;;
8208 *) cont='';;
8209 esac
8210 if $test "$cont"; then
8211         if ./xenix; then
8212                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8213                 if tans=`cat /etc/systemid 2>&1` ; then
8214                         myhostname=$tans
8215                         phostname='cat /etc/systemid'
8216                         echo "Whadyaknow.  Xenix always was a bit strange..."
8217                         cont=''
8218                 fi
8219         elif $test -r /etc/systemid; then
8220                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8221         fi
8222 fi
8223 if $test "$cont"; then
8224         echo 'No, maybe "uuname -l" will work...'
8225         if tans=`sh -c 'uuname -l' 2>&1` ; then
8226                 myhostname=$tans
8227                 phostname='uuname -l'
8228         else
8229                 echo 'Strange.  Maybe "uname -n" will work...'
8230                 if tans=`sh -c 'uname -n' 2>&1` ; then
8231                         myhostname=$tans
8232                         phostname='uname -n'
8233                 else
8234                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8235                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8236                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8237                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8238                         else
8239                                 case "$myhostname" in
8240                                 '') echo "Does this machine have an identity crisis or something?"
8241                                         phostname='';;
8242                                 *)
8243                                         echo "Well, you said $myhostname before..."
8244                                         phostname='echo $myhostname';;
8245                                 esac
8246                         fi
8247                 fi
8248         fi
8249 fi
8250 case "$myhostname" in
8251 '') myhostname=noname ;;
8252 esac
8253 : you do not want to know about this
8254 set $myhostname
8255 myhostname=$1
8256
8257 : verify guess
8258 if $test "$myhostname" ; then
8259         dflt=y
8260         rp='Your host name appears to be "'$myhostname'".'" Right?"
8261         . ./myread
8262         case "$ans" in
8263         y*) ;;
8264         *) myhostname='';;
8265         esac
8266 fi
8267
8268 : bad guess or no guess
8269 while $test "X$myhostname" = X ; do
8270         dflt=''
8271         rp="Please type the (one word) name of your host:"
8272         . ./myread
8273         myhostname="$ans"
8274 done
8275
8276 : translate upper to lower if necessary
8277 case "$myhostname" in
8278 *[A-Z]*)
8279         echo "(Normalizing case in your host name)"
8280         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8281         ;;
8282 esac
8283
8284 case "$myhostname" in
8285 *.*)
8286         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8287         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8288         echo "(Trimming domain name from host name--host name is now $myhostname)"
8289         ;;
8290 *) case "$mydomain" in
8291         '')
8292                 {
8293                         test "X$hostcat" = "Xypcat hosts" &&
8294                         ypmatch "$myhostname" hosts 2>/dev/null |\
8295                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8296                         $test -s hosts
8297                 } || {
8298                         test "X$hostcat" != "X" &&
8299                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8300                                         /[       ]$myhostname[  . ]/p" > hosts
8301                 }
8302                 tmp_re="[       . ]"
8303                 if $test -f hosts; then
8304                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8305                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8306                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8307                                 hosts | $sort | $uniq | \
8308                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8309                         case `$echo X$dflt` in
8310                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8311                                 dflt=.
8312                                 ;;
8313                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8314                                 ;;
8315                         esac
8316                 else
8317                         echo "(I cannot locate a hosts database anywhere)"
8318                         dflt=.
8319                 fi
8320                 case "$dflt" in
8321                 .)
8322                         tans=`./loc resolv.conf X /etc /usr/etc`
8323                         if $test -f "$tans"; then
8324                                 echo "(Attempting domain name extraction from $tans)"
8325                                 dflt=.`$sed -n -e 's/   / /g' \
8326                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8327                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8328                                 case "$dflt" in
8329                                 .) dflt=.`$sed -n -e 's/        / /g' \
8330                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8331                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8332                                         ;;
8333                                 esac
8334                         fi
8335                         ;;
8336                 esac
8337                 case "$dflt" in
8338                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8339                         dflt=.`sh -c domainname 2>/dev/null`
8340                         case "$dflt" in
8341                         '') dflt='.';;
8342                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8343                         esac
8344                         ;;
8345                 esac
8346                 case "$dflt$osname" in
8347                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8348                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8349                         ;;
8350                 esac
8351                 case "$dflt" in
8352                 .) echo "(Lost all hope -- silly guess then)"
8353                         dflt='.nonet'
8354                         ;;
8355                 esac
8356                 $rm -f hosts
8357                 ;;
8358         *) dflt="$mydomain";;
8359         esac;;
8360 esac
8361 echo " "
8362 rp="What is your domain name?"
8363 . ./myread
8364 tans="$ans"
8365 case "$ans" in
8366 '') ;;
8367 .*) ;;
8368 *) tans=".$tans";;
8369 esac
8370 mydomain="$tans"
8371
8372 : translate upper to lower if necessary
8373 case "$mydomain" in
8374 *[A-Z]*)
8375         echo "(Normalizing case in your domain name)"
8376         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8377         ;;
8378 esac
8379
8380 : a little sanity check here
8381 case "$phostname" in
8382 '') ;;
8383 *)
8384         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8385         $myhostname$mydomain|$myhostname) ;;
8386         *)
8387                 case "$phostname" in
8388                 sed*)
8389                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8390                         ;;
8391                 *)
8392                         echo "(That doesn't agree with your $phostname command, by the way.)"
8393                         ;;
8394                 esac
8395         ;;
8396         esac
8397         ;;
8398 esac
8399
8400 $cat <<EOM
8401
8402 I need to get your e-mail address in Internet format if possible, i.e.
8403 something like user@host.domain. Please answer accurately since I have
8404 no easy means to double check it. The default value provided below
8405 is most probably close to reality but may not be valid from outside
8406 your organization...
8407
8408 EOM
8409 cont=x
8410 while test "$cont"; do
8411         case "$cf_email" in
8412         '') dflt="$cf_by@$myhostname$mydomain";;
8413         *) dflt="$cf_email";;
8414         esac
8415         rp='What is your e-mail address?'
8416         . ./myread
8417         cf_email="$ans"
8418         case "$cf_email" in
8419         *@*.*) cont='' ;;
8420         *)
8421                 rp='Address does not look like an Internet one.  Use it anyway?'
8422                 case "$fastread" in
8423                 yes) dflt=y ;;
8424                 *) dflt=n ;;
8425                 esac
8426                 . ./myread
8427                 case "$ans" in
8428                 y*) cont='' ;;
8429                 *) echo " " ;;
8430                 esac
8431                 ;;
8432         esac
8433 done
8434
8435 $cat <<EOM
8436
8437 If you or somebody else will be maintaining perl at your site, please
8438 fill in the correct e-mail address here so that they may be contacted
8439 if necessary. Currently, the "perlbug" program included with perl
8440 will send mail to this address in addition to perlbug@perl.org. You may
8441 enter "none" for no administrator.
8442
8443 EOM
8444 case "$perladmin" in
8445 '') dflt="$cf_email";;
8446 *) dflt="$perladmin";;
8447 esac
8448 rp='Perl administrator e-mail address'
8449 . ./myread
8450 perladmin="$ans"
8451
8452 : determine whether to only install version-specific parts.
8453 echo " "
8454 $cat <<EOM
8455 Do you want to install only the version-specific parts of the perl
8456 distribution?  Usually you do *not* want to do this.
8457 EOM
8458 case "$versiononly" in
8459 "$define"|[Yy]*|true) dflt='y' ;;
8460 *) dflt='n';
8461 esac
8462 rp="Do you want to install only the version-specific parts of perl?"
8463 . ./myread
8464 case "$ans" in
8465 [yY]*)  val="$define";;
8466 *)      val="$undef" ;;
8467 esac
8468 set versiononly
8469 eval $setvar
8470
8471 case "$versiononly" in
8472 "$define") inc_version_list=''
8473            inc_version_list_init=0
8474            ;;
8475 esac
8476
8477 : figure out how to guarantee perl startup
8478 case "$startperl" in
8479 '')
8480         case "$sharpbang" in
8481         *!)
8482                 $cat <<EOH
8483
8484 I can use the #! construct to start perl on your system. This will
8485 make startup of perl scripts faster, but may cause problems if you
8486 want to share those scripts and perl is not in a standard place
8487 ($binexp/perl) on all your platforms. The alternative is to force
8488 a shell by starting the script with a single ':' character.
8489
8490 EOH
8491                 case "$versiononly" in
8492                 "$define")      dflt="$binexp/perl$version";;  
8493                 *)              dflt="$binexp/perl";;
8494                 esac
8495                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8496                 . ./myread
8497                 case "$ans" in
8498                 none)   startperl=": # use perl";;
8499                 *)      startperl="#!$ans"
8500                         if $test 30 -lt `echo "$ans" | wc -c`; then
8501                                 $cat >&4 <<EOM
8502
8503 WARNING:  Some systems limit the #! command to 32 characters.
8504 If you experience difficulty running Perl scripts with #!, try
8505 installing Perl in a directory with a shorter pathname.
8506
8507 EOM
8508                         fi ;;
8509                 esac
8510                 ;;
8511         *) startperl=": # use perl"
8512                 ;;
8513         esac
8514         ;;
8515 esac
8516 echo "I'll use $startperl to start perl scripts."
8517
8518 : figure best path for perl in scripts
8519 case "$perlpath" in
8520 '')
8521         case "$versiononly" in
8522         "$define")      perlpath="$binexp/perl$version";;
8523         *)              perlpath="$binexp/perl";;
8524         esac
8525         case "$startperl" in
8526         *!*) ;;
8527         *)
8528                 $cat <<EOH
8529
8530 I will use the "eval 'exec'" idiom to start Perl on your system.
8531 I can use the full path of your Perl binary for this purpose, but
8532 doing so may cause problems if you want to share those scripts and
8533 Perl is not always in a standard place ($binexp/perl).
8534
8535 EOH
8536                 dflt="$binexp/perl"
8537                 rp="What path shall I use in \"eval 'exec'\"?"
8538                 . ./myread
8539                 perlpath="$ans"
8540                 ;;
8541         esac
8542         ;;
8543 esac
8544 case "$startperl" in
8545 *!*)    ;;
8546 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8547 esac
8548
8549 : determine where public executable scripts go
8550 set scriptdir scriptdir
8551 eval $prefixit
8552 case "$scriptdir" in
8553 '')
8554         dflt="$bin"
8555         : guess some guesses
8556         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8557         $test -d /usr/share/bin     && dflt=/usr/share/bin
8558         $test -d /usr/local/script  && dflt=/usr/local/script
8559         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8560         $test -d $prefixexp/script  && dflt=$prefixexp/script
8561         set dflt
8562         eval $prefixup
8563         ;;
8564 *)  dflt="$scriptdir"
8565         ;;
8566 esac
8567 $cat <<EOM
8568  
8569 Some installations have a separate directory just for executable scripts so
8570 that they can mount it across multiple architectures but keep the scripts in
8571 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8572 Or you might just lump your scripts in with all your other executables.
8573  
8574 EOM
8575 fn=d~
8576 rp='Where do you keep publicly executable scripts?'
8577 . ./getfile
8578 if $test "X$ansexp" != "X$scriptdirexp"; then
8579         installscript=''
8580 fi
8581 scriptdir="$ans"
8582 scriptdirexp="$ansexp"
8583 : Change installation prefix, if necessary.
8584 if $test X"$prefix" != X"$installprefix"; then
8585         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8586 else
8587         installscript="$scriptdirexp"
8588 fi
8589
8590 : determine where add-on public executables go
8591 case "$sitebin" in
8592 '')     dflt=$siteprefix/bin ;;
8593 *)      dflt=$sitebin ;;
8594 esac
8595 fn=d~
8596 rp='Pathname where the add-on public executables should be installed?'
8597 . ./getfile
8598 sitebin="$ans"
8599 sitebinexp="$ansexp"
8600 : Change installation prefix, if necessary.
8601 if $test X"$prefix" != X"$installprefix"; then
8602         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8603 else
8604         installsitebin="$sitebinexp"
8605 fi
8606
8607 : determine where add-on html pages go
8608 : There is no standard location, so try to copy the previously-selected
8609 : directory structure for the core html pages.
8610 case "$sitehtml1dir" in
8611 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8612 *)     dflt=$sitehtml1dir ;;
8613 esac
8614 case "$dflt" in
8615 ''|' ') dflt=none ;;
8616 esac
8617 fn=dn+~
8618 rp='Pathname where the site-specific html pages should be installed?'
8619 . ./getfile
8620 sitehtml1dir="$ans"
8621 sitehtml1direxp="$ansexp"
8622 : Change installation prefix, if necessary.
8623 if $test X"$prefix" != X"$installprefix"; then
8624         installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
8625 else
8626         installsitehtml1dir="$sitehtml1direxp"
8627 fi
8628
8629 : determine where add-on library html pages go
8630 : There is no standard location, so try to copy the previously-selected
8631 : directory structure for the core html pages.
8632 case "$sitehtml3dir" in
8633 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8634 *)     dflt=$sitehtml3dir ;;
8635 esac
8636 case "$dflt" in
8637 ''|' ') dflt=none ;;
8638 esac
8639 fn=dn+~
8640 rp='Pathname where the site-specific library html pages should be installed?'
8641 . ./getfile
8642 sitehtml3dir="$ans"
8643 sitehtml3direxp="$ansexp"
8644 : Change installation prefix, if necessary.
8645 if $test X"$prefix" != X"$installprefix"; then
8646         installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
8647 else
8648         installsitehtml3dir="$sitehtml3direxp"
8649 fi
8650
8651 : determine where add-on manual pages go
8652 case "$siteman1dir" in
8653 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8654 *)      dflt=$siteman1dir ;;
8655 esac
8656 case "$dflt" in
8657 ''|' ') dflt=none ;;
8658 esac
8659 fn=dn+~
8660 rp='Pathname where the site-specific manual pages should be installed?'
8661 . ./getfile
8662 siteman1dir="$ans"
8663 siteman1direxp="$ansexp"
8664 : Change installation prefix, if necessary.
8665 if $test X"$prefix" != X"$installprefix"; then
8666         installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
8667 else
8668         installsiteman1dir="$siteman1direxp"
8669 fi
8670
8671 : determine where add-on library man pages go
8672 case "$siteman3dir" in
8673 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8674 *)      dflt=$siteman3dir ;;
8675 esac
8676 case "$dflt" in
8677 ''|' ') dflt=none ;;
8678 esac
8679 fn=dn+~
8680 rp='Pathname where the site-specific library manual pages should be installed?'
8681 . ./getfile
8682 siteman3dir="$ans"
8683 siteman3direxp="$ansexp"
8684 : Change installation prefix, if necessary.
8685 if $test X"$prefix" != X"$installprefix"; then
8686         installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
8687 else
8688         installsiteman3dir="$siteman3direxp"
8689 fi
8690
8691 : determine where add-on public executable scripts go
8692 case "$sitescript" in
8693 '')     dflt=$siteprefix/script
8694         $test -d $dflt || dflt=$sitebin ;;
8695 *)  dflt="$sitescript" ;;
8696 esac
8697 fn=d~+
8698 rp='Pathname where add-on public executable scripts should be installed?'
8699 . ./getfile
8700 sitescript="$ans"
8701 sitescriptexp="$ansexp"
8702 : Change installation prefix, if necessary.
8703 if $test X"$prefix" != X"$installprefix"; then
8704         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8705 else
8706         installsitescript="$sitescriptexp"
8707 fi
8708
8709 case "$usefaststdio" in
8710 $define|true|[yY]*|'')
8711         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8712         case "$xversion" in
8713         [68])   dflt='y' ;;
8714         *)      dflt='n' ;;
8715         esac
8716         ;;
8717 *) dflt='n';;
8718 esac
8719 cat <<EOM
8720
8721 Perl can be built to use 'fast stdio', which means using the stdio
8722 library but also directly manipulating the stdio buffers to enable
8723 faster I/O.  Using stdio is better for backward compatibility (especially
8724 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8725 interface has been preferred instead of stdio.
8726
8727 If this doesn't make any sense to you, just accept the default '$dflt'.
8728 EOM
8729 rp='Use the "fast stdio" if available?'
8730 . ./myread
8731 case "$ans" in
8732 y|Y)    val="$define" ;;     
8733 *)      val="$undef" ;;
8734 esac
8735 set usefaststdio
8736 eval $setvar
8737
8738
8739 : define an is-a-typedef? function
8740 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8741 case "$inclist" in
8742 "") inclist="sys/types.h";;
8743 esac;
8744 eval "varval=\$$var";
8745 case "$varval" in
8746 "")
8747         $rm -f temp.c;
8748         for inc in $inclist; do
8749                 echo "#include <$inc>" >>temp.c;
8750         done;
8751         echo "#ifdef $type" >> temp.c;
8752         echo "printf(\"We have $type\");" >> temp.c;
8753         echo "#endif" >> temp.c;
8754         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8755         if $contains $type temp.E >/dev/null 2>&1; then
8756                 eval "$var=\$type";
8757         else
8758                 eval "$var=\$def";
8759         fi;
8760         $rm -f temp.?;;
8761 *) eval "$var=\$varval";;
8762 esac'
8763
8764 : define an is-a-typedef? function that prompts if the type is not available.
8765 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8766 case "$inclist" in
8767 "") inclist="sys/types.h";;
8768 esac;
8769 eval "varval=\$$var";
8770 case "$varval" in
8771 "")
8772         $rm -f temp.c;
8773         for inc in $inclist; do
8774                 echo "#include <$inc>" >>temp.c;
8775         done;
8776         echo "#ifdef $type" >> temp.c;
8777         echo "printf(\"We have $type\");" >> temp.c;
8778         echo "#endif" >> temp.c;
8779         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8780         echo " " ;
8781         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8782         if $contains $type temp.E >/dev/null 2>&1; then
8783                 echo "$type found." >&4;
8784                 eval "$var=\$type";
8785         else
8786                 echo "$type NOT found." >&4;
8787                 dflt="$def";
8788                 . ./myread ;
8789                 eval "$var=\$ans";
8790         fi;
8791         $rm -f temp.?;;
8792 *) eval "$var=\$varval";;
8793 esac'
8794
8795 : see what type lseek is declared as in the kernel
8796 rp="What is the type used for lseek's offset on this system?"
8797 set off_t lseektype long stdio.h sys/types.h
8798 eval $typedef_ask
8799
8800 echo " "
8801 echo "Checking to see how big your file offsets are..." >&4
8802 $cat >try.c <<EOCP
8803 #include <sys/types.h>
8804 #include <stdio.h>
8805 int main()
8806 {
8807     printf("%d\n", (int)sizeof($lseektype));
8808     return(0); 
8809 }
8810 EOCP
8811 set try
8812 if eval $compile_ok; then
8813         lseeksize=`$run ./try`
8814         echo "Your file offsets are $lseeksize bytes long."
8815 else
8816         dflt=$longsize
8817         echo " "
8818         echo "(I can't seem to compile the test program.  Guessing...)"
8819         rp="What is the size of your file offsets (in bytes)?"
8820         . ./myread
8821         lseeksize="$ans"
8822 fi
8823 $rm -f try.c try
8824
8825 : see what type file positions are declared as in the library
8826 rp="What is the type for file position used by fsetpos()?"
8827 set fpos_t fpostype long stdio.h sys/types.h
8828 eval $typedef_ask
8829
8830 echo " "
8831 case "$fpostype" in
8832 *_t) zzz="$fpostype"    ;;
8833 *)   zzz="fpos_t"       ;;
8834 esac
8835 echo "Checking the size of $zzz..." >&4 
8836 cat > try.c <<EOCP
8837 #include <sys/types.h>
8838 #include <stdio.h>
8839 #$i_stdlib I_STDLIB
8840 #ifdef I_STDLIB
8841 #include <stdlib.h>
8842 #endif
8843 int main() {
8844     printf("%d\n", (int)sizeof($fpostype));
8845     exit(0);
8846 }
8847 EOCP
8848 set try
8849 if eval $compile_ok; then
8850         yyy=`$run ./try`
8851         case "$yyy" in
8852         '')     fpossize=4
8853                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8854                 ;;
8855         *)      fpossize=$yyy
8856                 echo "Your $zzz is $fpossize bytes long."
8857                 ;;
8858         esac
8859 else
8860         dflt="$longsize"
8861         echo " " >&4
8862         echo "(I can't compile the test program.  Guessing...)" >&4
8863         rp="What is the size of your file positions (in bytes)?"
8864         . ./myread
8865         fpossize="$ans"
8866 fi
8867
8868 # Backward compatibility (uselfs is deprecated).
8869 case "$uselfs" in
8870 "$define"|true|[yY]*)
8871         cat <<EOM >&4
8872
8873 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8874 EOM
8875         uselargefiles="$define"
8876         ;;
8877 esac                          
8878
8879 case "$lseeksize:$fpossize" in
8880 8:8) cat <<EOM
8881
8882 You can have files larger than 2 gigabytes.
8883 EOM
8884    val="$define" ;;
8885 *)    case "$uselargefiles" in
8886    "$undef"|false|[nN]*) dflt='n' ;;
8887    *)   dflt='y' ;;
8888    esac
8889    cat <<EOM
8890
8891 Perl can be built to understand large files (files larger than 2 gigabytes)
8892 on some systems.  To do so, Configure can be run with -Duselargefiles.
8893
8894 If this doesn't make any sense to you, just accept the default '$dflt'.
8895 EOM
8896    rp='Try to understand large files, if available?'
8897    . ./myread
8898    case "$ans" in
8899    y|Y)         val="$define" ;;
8900    *)           val="$undef"  ;;
8901    esac
8902    ;;
8903 esac
8904 set uselargefiles
8905 eval $setvar
8906 : Look for a hint-file generated 'call-back-unit'.  If the
8907 : user has specified that a large files perl is to be built,
8908 : we may need to set or change some other defaults.
8909 if $test -f uselargefiles.cbu; then
8910         echo "Your platform has some specific hints regarding large file builds, using them..."
8911         . ./uselargefiles.cbu
8912 fi
8913 case "$uselargefiles" in
8914 "$define")
8915         if $test -f uselargefiles.cbu; then
8916                 echo " "
8917                 echo "Rechecking to see how big your file offsets are..." >&4
8918                 $cat >try.c <<EOCP
8919 #include <sys/types.h>
8920 #include <stdio.h>
8921 int main()
8922 {
8923     printf("%d\n", (int)sizeof($lseektype));
8924     return(0); 
8925 }
8926 EOCP
8927                 set try
8928                 if eval $compile_ok; then
8929                         lseeksize=`$run ./try`
8930                         $echo "Your file offsets are now $lseeksize bytes long."
8931                 else
8932                         dflt="$lseeksize"
8933                         echo " "
8934                         echo "(I can't seem to compile the test program.  Guessing...)"
8935                         rp="What is the size of your file offsets (in bytes)?"
8936                         . ./myread
8937                         lseeksize="$ans"
8938                 fi
8939                 case "$fpostype" in
8940                 *_t) zzz="$fpostype"    ;;
8941                 *)   zzz="fpos_t"       ;;
8942                 esac
8943                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8944                 $cat > try.c <<EOCP
8945 #include <sys/types.h>
8946 #include <stdio.h>
8947 #$i_stdlib I_STDLIB
8948 #ifdef I_STDLIB
8949 #include <stdlib.h>
8950 #endif
8951 int main() {
8952     printf("%d\n", (int)sizeof($fpostype));
8953     return(0);
8954 }
8955 EOCP
8956                 set try
8957                 if eval $compile_ok; then
8958                         yyy=`$run ./try`
8959                         dflt="$lseeksize"
8960                         case "$yyy" in
8961                         '')     echo " "
8962                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8963                                 ;;
8964                         *)      fpossize=$yyy
8965                                 echo " $fpossize bytes." >&4
8966                                 ;;
8967                         esac
8968                 else
8969                         dflt="$fpossize"
8970                         echo " "
8971                         echo "(I can't compile the test program.  Guessing...)" >&4
8972                         rp="What is the size of your file positions (in bytes)?"
8973                         . ./myread
8974                         fpossize="$ans"
8975                 fi
8976                 $rm -f try.c try
8977         fi
8978         ;;
8979 esac
8980
8981 # probably will refer to
8982 #   $archlib $privlib $sitearch $sitelib $vendorarch $vendorlib
8983 need_relocation=0
8984 userelocatableinc=undef
8985
8986 case "$vendorprefix" in
8987 '')     d_vendorbin="$undef"
8988         vendorbin=''
8989         vendorbinexp=''
8990         ;;
8991 *)      d_vendorbin="$define"
8992         : determine where vendor-supplied executables go.
8993         case "$vendorbin" in
8994         '') dflt=$vendorprefix/bin ;;
8995         *)      dflt="$vendorbin" ;;
8996         esac
8997         fn=d~+
8998         rp='Pathname for the vendor-supplied executables directory?'
8999         . ./getfile
9000         vendorbin="$ans"
9001         vendorbinexp="$ansexp"
9002         ;;
9003 esac
9004 : Change installation prefix, if necessary.
9005 if $test X"$prefix" != X"$installprefix"; then
9006         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
9007 else
9008         installvendorbin="$vendorbinexp"
9009 fi
9010
9011 case "$vendorprefix" in
9012 '')     vendorhtml1dir=''
9013         vendorhtml1direxp=''
9014         ;;
9015 *)      : determine where vendor-supplied html pages go.
9016         : There is no standard location, so try to copy the previously-selected
9017         : directory structure for the core html pages.
9018         : XXX Better default suggestions would be welcome.
9019         case "$vendorhtml1dir" in
9020         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9021         *)      dflt=$vendorhtml1dir ;;
9022         esac
9023         case "$dflt" in
9024         ''|' ') dflt=none ;;
9025         esac
9026         fn=dn+~
9027         rp='Pathname for the vendor-supplied html pages?'
9028         . ./getfile
9029         vendorhtml1dir="$ans"
9030         vendorhtml1direxp="$ansexp"
9031         ;;
9032 esac
9033 : Use ' ' for none so value is preserved next time through Configure
9034 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9035 : Change installation prefix, if necessary.
9036 if $test X"$prefix" != X"$installprefix"; then
9037         installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
9038 else
9039         installvendorhtml1dir="$vendorhtml1direxp"
9040 fi
9041
9042 case "$vendorprefix" in
9043 '')     vendorhtml3dir=''
9044         vendorhtml3direxp=''
9045         ;;
9046 *)      : determine where vendor-supplied module html pages go.
9047         : There is no standard location, so try to copy the previously-selected
9048         : directory structure for the core html pages.
9049         : XXX Better default suggestions would be welcome.
9050         case "$vendorhtml3dir" in
9051         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9052         *)      dflt=$vendorhtml3dir ;;
9053         esac
9054         case "$dflt" in
9055         ''|' ') dflt=none ;;
9056         esac
9057         fn=dn+~
9058         rp='Pathname for the vendor-supplied html pages?'
9059         . ./getfile
9060         vendorhtml3dir="$ans"
9061         vendorhtml3direxp="$ansexp"
9062         ;;
9063 esac
9064 : Use ' ' for none so value is preserved next time through Configure
9065 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9066 : Change installation prefix, if necessary.
9067 if $test X"$prefix" != X"$installprefix"; then
9068         installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
9069 else
9070         installvendorhtml3dir="$vendorhtml3direxp"
9071 fi
9072
9073 case "$vendorprefix" in
9074 '')     vendorman1dir=''
9075         vendorman1direxp=''
9076         ;;
9077 *)      : determine where vendor-supplied manual pages go.
9078         case "$vendorman1dir" in
9079         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9080         *)      dflt=$vendorman1dir ;;
9081         esac
9082         case "$dflt" in
9083         ''|' ') dflt=none ;;
9084         esac
9085         fn=nd~+
9086         rp='Pathname for the vendor-supplied manual section 1 pages?'
9087         . ./getfile
9088         vendorman1dir="$ans"
9089         vendorman1direxp="$ansexp"
9090         ;;
9091 esac
9092 : Use ' ' for none so value is preserved next time through Configure
9093 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9094 : Change installation prefix, if necessary.
9095 if $test X"$prefix" != X"$installprefix"; then
9096         installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
9097 else
9098         installvendorman1dir="$vendorman1direxp"
9099 fi
9100
9101 case "$vendorprefix" in
9102 '')     vendorman3dir=''
9103         vendorman3direxp=''
9104         ;;
9105 *)      : determine where vendor-supplied module manual pages go.
9106         case "$vendorman3dir" in
9107         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9108         *)      dflt=$vendorman3dir ;;
9109         esac
9110         case "$dflt" in
9111         ''|' ') dflt=none ;;
9112         esac
9113         fn=nd~+
9114         rp='Pathname for the vendor-supplied manual section 3 pages?'
9115         . ./getfile
9116         vendorman3dir="$ans"
9117         vendorman3direxp="$ansexp"
9118         ;;
9119 esac
9120 : Use ' ' for none so value is preserved next time through Configure
9121 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9122 : Change installation prefix, if necessary.
9123 if $test X"$prefix" != X"$installprefix"; then
9124         installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
9125 else
9126         installvendorman3dir="$vendorman3direxp"
9127 fi
9128
9129 case "$vendorprefix" in
9130 '')     d_vendorscript="$undef"
9131         vendorscript=''
9132         vendorscriptexp=''
9133         ;;
9134 *)      d_vendorscript="$define"
9135         : determine where vendor-supplied scripts go.
9136         case "$vendorscript" in
9137         '')     dflt=$vendorprefix/script
9138                 $test -d $dflt || dflt=$vendorbin ;;
9139         *)  dflt="$vendorscript" ;;
9140         esac
9141         $cat <<EOM
9142
9143 The installation process will create a directory for 
9144 vendor-supplied scripts.
9145
9146 EOM
9147         fn=d~+
9148         rp='Pathname for the vendor-supplied scripts directory?'
9149         . ./getfile
9150         vendorscript="$ans"
9151         vendorscriptexp="$ansexp"
9152         ;;
9153 esac
9154 : Change installation prefix, if necessary.
9155 if $test X"$prefix" != X"$installprefix"; then
9156         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9157 else
9158         installvendorscript="$vendorscriptexp"
9159 fi
9160
9161 : see if qgcvt exists
9162 set qgcvt d_qgcvt
9163 eval $inlibc
9164
9165 echo " "
9166
9167 if $test X"$d_longdbl" = X"$define"; then
9168
9169 echo "Checking how to print long doubles..." >&4
9170
9171 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9172         $cat >try.c <<'EOCP'
9173 #include <sys/types.h>
9174 #include <stdio.h>
9175 int main() {
9176   double d = 123.456;
9177   printf("%.3f\n", d);
9178 }
9179 EOCP
9180         set try
9181         if eval $compile; then
9182                 yyy=`$run ./try`
9183                 case "$yyy" in
9184                 123.456)
9185                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9186                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9187                         echo "We will use %f."
9188                         ;;
9189                 esac
9190         fi
9191 fi
9192
9193 if $test X"$sPRIfldbl" = X; then
9194         $cat >try.c <<'EOCP'
9195 #include <sys/types.h>
9196 #include <stdio.h>
9197 int main() {
9198   long double d = 123.456;
9199   printf("%.3Lf\n", d);
9200 }
9201 EOCP
9202         set try
9203         if eval $compile; then
9204                 yyy=`$run ./try`
9205                 case "$yyy" in
9206                 123.456)
9207                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9208                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9209                         echo "We will use %Lf."
9210                         ;;
9211                 esac
9212         fi
9213 fi
9214
9215 if $test X"$sPRIfldbl" = X; then
9216         $cat >try.c <<'EOCP'
9217 #include <sys/types.h>
9218 #include <stdio.h>
9219 int main() {
9220   long double d = 123.456;
9221   printf("%.3llf\n", d);
9222 }
9223 EOCP
9224         set try
9225         if eval $compile; then
9226                 yyy=`$run ./try`
9227                 case "$yyy" in
9228                 123.456)
9229                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9230                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9231                         echo "We will use %llf."
9232                         ;;
9233                 esac
9234         fi
9235 fi
9236
9237 if $test X"$sPRIfldbl" = X; then
9238         $cat >try.c <<'EOCP'
9239 #include <sys/types.h>
9240 #include <stdio.h>
9241 int main() {
9242   long double d = 123.456;
9243   printf("%.3lf\n", d);
9244 }
9245 EOCP
9246         set try
9247         if eval $compile; then
9248                 yyy=`$run ./try`
9249                 case "$yyy" in
9250                 123.456)
9251                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9252                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9253                         echo "We will use %lf."
9254                         ;;
9255                 esac
9256         fi
9257 fi
9258
9259 if $test X"$sPRIfldbl" = X; then
9260         echo "Cannot figure out how to print long doubles." >&4
9261 else
9262         sSCNfldbl=$sPRIfldbl    # expect consistency
9263 fi
9264
9265 $rm -f try try.*
9266
9267 fi # d_longdbl
9268
9269 case "$sPRIfldbl" in
9270 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9271         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9272         d_SCNfldbl="$undef";
9273         ;;
9274 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9275         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9276         d_SCNfldbl="$define";
9277         ;;
9278 esac
9279
9280 : Check how to convert floats to strings.
9281
9282 if test "X$d_Gconvert" = X; then
9283
9284 echo " "
9285 echo "Checking for an efficient way to convert floats to strings."
9286 echo " " > try.c
9287 case "$uselongdouble" in
9288 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9289 esac
9290 case "$d_longdbl" in
9291 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9292 esac
9293 case "$d_PRIgldbl" in
9294 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9295 esac
9296 $cat >>try.c <<EOP
9297 #ifdef TRY_gconvert
9298 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9299 char *myname = "gconvert";
9300 #endif
9301 #ifdef TRY_gcvt
9302 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9303 char *myname = "gcvt";
9304 #endif
9305 #ifdef TRY_qgcvt
9306 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9307 char *myname = "qgcvt";
9308 #define DOUBLETYPE long double
9309 #endif
9310 #ifdef TRY_sprintf
9311 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9312 #ifdef HAS_PRIgldbl
9313 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9314 #else
9315 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9316 #endif
9317 #else
9318 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9319 #endif
9320 char *myname = "sprintf";
9321 #endif
9322
9323 #ifndef DOUBLETYPE
9324 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9325 #define DOUBLETYPE long double
9326 #else
9327 #define DOUBLETYPE double
9328 #endif
9329 #endif
9330
9331 #include <stdio.h>
9332
9333 #define I_STDLIB $i_stdlib
9334 #ifdef I_STDLIB
9335 #include <stdlib.h>
9336 #endif
9337
9338 int
9339 checkit(expect, got)
9340 char *expect;
9341 char *got;
9342 {
9343     if (strcmp(expect, got)) {
9344                 printf("%s oddity:  Expected %s, got %s\n",
9345                         myname, expect, got);
9346                 exit(1);
9347         }
9348 }
9349
9350 int main()
9351
9352         char buf[64]; 
9353         buf[63] = '\0';
9354
9355         /* This must be 1st test on (which?) platform */
9356         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9357         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9358         checkit("0.1", buf);
9359
9360         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9361         checkit("0.01", buf);
9362
9363         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9364         checkit("0.001", buf);
9365
9366         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9367         checkit("0.0001", buf);
9368
9369         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9370         if (strlen(buf) > 5)
9371             checkit("9e-005", buf); /* for Microsoft ?? */
9372         else
9373             checkit("9e-05", buf);
9374
9375         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9376         checkit("1", buf);
9377
9378         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9379         checkit("1.1", buf);
9380
9381         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9382         checkit("1.01", buf);
9383
9384         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9385         checkit("1.001", buf);
9386
9387         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9388         checkit("1.0001", buf);
9389
9390         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9391         checkit("1.00001", buf);
9392
9393         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9394         checkit("1.000001", buf);
9395
9396         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9397         checkit("0", buf);
9398
9399         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9400         checkit("-1", buf);
9401
9402         /* Some Linux gcvt's give 1.e+5 here. */
9403         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9404         checkit("100000", buf);
9405         
9406         /* Some Linux gcvt's give -1.e+5 here. */
9407         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9408         checkit("-100000", buf);
9409
9410         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9411         checkit("123.456", buf);
9412
9413         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9414         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9415         /* 34 should be enough to scare even long double
9416          * places into using the e notation. */
9417         if (strlen(buf) > 5)
9418             checkit("1e+034", buf); /* for Microsoft */
9419         else
9420             checkit("1e+34", buf);
9421
9422         /* For Perl, if you add additional tests here, also add them to
9423          * t/base/num.t for benefit of platforms not using Configure or
9424          * overriding d_Gconvert */
9425
9426         exit(0);
9427 }
9428 EOP
9429 : first add preferred functions to our list
9430 xxx_list=""
9431 for xxx_convert in $gconvert_preference; do
9432     case $xxx_convert in
9433     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9434     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9435     esac 
9436 done
9437 : then add any others
9438 for xxx_convert in gconvert gcvt sprintf; do
9439     case "$xxx_list" in
9440     *$xxx_convert*) ;;
9441     *) xxx_list="$xxx_list $xxx_convert" ;;
9442     esac 
9443 done
9444
9445 case "$d_longdbl$uselongdouble" in
9446 "$define$define")
9447     : again, add prefered functions to our list first
9448     xxx_ld_list=""
9449     for xxx_convert in $gconvert_ld_preference; do
9450         case $xxx_convert in
9451         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9452         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9453         esac
9454     done
9455     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9456     for xxx_convert in qgcvt sprintf $xxx_list; do
9457         case "$xxx_ld_list" in
9458         $xxx_convert*|*" $xxx_convert"*) ;;
9459         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9460         esac
9461     done
9462     : if sprintf cannot do long doubles, move it to the end
9463     if test "$d_PRIgldbl" != "$define"; then
9464         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9465     fi
9466     : if no qgcvt, remove it
9467     if test "$d_qgcvt" != "$define"; then
9468         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9469     fi
9470     : use the ld_list
9471     xxx_list="$xxx_ld_list"
9472     ;;
9473 esac
9474
9475 for xxx_convert in $xxx_list; do
9476         echo "Trying $xxx_convert..."
9477         $rm -f try try$_o
9478         set try -DTRY_$xxx_convert
9479         if eval $compile; then
9480                 echo "$xxx_convert() found." >&4
9481                 if $run ./try; then
9482                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9483                         break;
9484                 else
9485                         echo "...But $xxx_convert didn't work as I expected."
9486                         xxx_convert=''
9487                 fi
9488         else
9489                 echo "$xxx_convert NOT found." >&4
9490         fi
9491 done
9492
9493 if test X$xxx_convert = X; then
9494     echo "*** WHOA THERE!!! ***" >&4
9495     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9496     xxx_convert=sprintf
9497 fi
9498
9499 case "$xxx_convert" in
9500 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9501 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9502 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9503 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9504    "$define$define$define")
9505       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9506    "$define$define$undef")
9507       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9508    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9509    esac
9510    ;;  
9511 esac
9512
9513 fi
9514
9515 : see if _fwalk exists
9516 set fwalk d__fwalk
9517 eval $inlibc
9518
9519 : Initialize h_fcntl
9520 h_fcntl=false
9521
9522 : Initialize h_sysfile
9523 h_sysfile=false
9524
9525 : access call always available on UNIX
9526 set access d_access
9527 eval $inlibc
9528
9529 : locate the flags for 'access()'
9530 case "$d_access" in
9531 "$define")
9532         echo " "
9533         $cat >access.c <<EOCP
9534 #include <sys/types.h>
9535 #ifdef I_FCNTL
9536 #include <fcntl.h>
9537 #endif
9538 #ifdef I_SYS_FILE
9539 #include <sys/file.h>
9540 #endif
9541 #ifdef I_UNISTD
9542 #include <unistd.h>
9543 #endif
9544 #$i_stdlib I_STDLIB
9545 #ifdef I_STDLIB
9546 #include <stdlib.h>
9547 #endif
9548 int main() {
9549         exit(R_OK);
9550 }
9551 EOCP
9552         : check sys/file.h first, no particular reason here
9553         if $test `./findhdr sys/file.h` && \
9554                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9555                 h_sysfile=true;
9556                 echo "<sys/file.h> defines the *_OK access constants." >&4
9557         elif $test `./findhdr fcntl.h` && \
9558                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9559                 h_fcntl=true;
9560                 echo "<fcntl.h> defines the *_OK access constants." >&4
9561         elif $test `./findhdr unistd.h` && \
9562                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9563                 echo "<unistd.h> defines the *_OK access constants." >&4
9564         else
9565                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9566         fi
9567         ;;
9568 esac
9569 $rm -f access*
9570
9571 : see if accessx exists
9572 set accessx d_accessx
9573 eval $inlibc
9574
9575 : see if aintl exists
9576 set aintl d_aintl
9577 eval $inlibc
9578
9579 : see if alarm exists
9580 set alarm d_alarm
9581 eval $inlibc
9582
9583 : see if POSIX threads are available
9584 set pthread.h i_pthread
9585 eval $inhdr
9586
9587 : define a fucntion to check prototypes
9588 $cat > protochk <<EOSH
9589 $startsh
9590 cc="$cc"
9591 optimize="$optimize"
9592 ccflags="$ccflags"
9593 prototype="$prototype"
9594 define="$define"
9595 rm=$rm
9596 usethreads=$usethreads
9597 i_pthread=$i_pthread
9598 pthread_h_first=$pthread_h_first
9599 EOSH
9600
9601 $cat >> protochk <<'EOSH'
9602
9603 $rm -f try.c
9604 foo="$1"
9605 shift
9606 while test $# -ge 2; do
9607         case "$1" in
9608                 $define) echo "#include <$2>" >> try.c ;;
9609                 literal) echo "$2" >> try.c ;;
9610         esac
9611     # Extra magic for the benefit of systems that need pthread.h
9612     # to be included early to correctly detect threadsafe functions.
9613     # Such functions must guarantee themselves, though, that the usethreads
9614     # and i_pthread have been defined, before calling protochk.
9615     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9616         echo "#include <pthread.h>" >> try.c
9617         pthread_h_done=yes
9618     fi
9619     shift 2
9620 done
9621 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9622 cat >> try.c <<'EOCP'
9623 #ifdef CAN_PROTOTYPE
9624 #define _(args) args
9625 #else
9626 #define _(args) ()
9627 #endif
9628 EOCP
9629 echo "$foo" >> try.c
9630 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9631 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9632 status=$?
9633 $rm -f try.[co]
9634 exit $status
9635 EOSH
9636 chmod +x protochk
9637 $eunicefix protochk
9638
9639 hasproto='varname=$1; func=$2; shift; shift;
9640 while $test $# -ge 2; do
9641         case "$1" in
9642         $define) echo "#include <$2>";;
9643         esac ;
9644     shift 2;
9645 done > try.c;
9646 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9647 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9648         echo "$func() prototype found.";
9649         val="$define";
9650 else
9651         echo "$func() prototype NOT found.";
9652         val="$undef";
9653 fi;
9654 set $varname;
9655 eval $setvar;
9656 $rm -f try.c tryout.c'
9657
9658 : see if sys/types.h has to be included
9659 set sys/types.h i_systypes
9660 eval $inhdr
9661
9662 : see if sys/select.h has to be included
9663 set sys/select.h i_sysselct
9664 eval $inhdr
9665
9666 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9667 while $test $# -ge 2; do
9668         case "$1" in
9669         $define) echo "#include <$2>";;
9670         esac ;
9671     shift 2;
9672 done > try.c;
9673 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9674 set try;
9675 if eval $compile; then
9676         val="$define";
9677 else
9678         val="$undef";
9679 fi;
9680 set $varname;
9681 eval $setvar;
9682 $rm -f try.c try.o'
9683
9684 : see if we should include time.h, sys/time.h, or both
9685 echo " "
9686 if test "X$timeincl" = X; then
9687         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9688         $echo $n "I'm now running the test program...$c"
9689         $cat >try.c <<EOCP
9690 #include <sys/types.h>
9691 #ifdef I_TIME
9692 #include <time.h>
9693 #endif
9694 #ifdef I_SYSTIME
9695 #ifdef SYSTIMEKERNEL
9696 #define KERNEL
9697 #endif
9698 #include <sys/time.h>
9699 #endif
9700 #ifdef I_SYSSELECT
9701 #include <sys/select.h>
9702 #endif
9703 #$i_stdlib I_STDLIB
9704 #ifdef I_STDLIB
9705 #include <stdlib.h>
9706 #endif
9707 int main()
9708 {
9709         struct tm foo;
9710 #ifdef S_TIMEVAL
9711         struct timeval bar;
9712 #endif
9713 #ifdef S_TIMEZONE
9714         struct timezone tzp;
9715 #endif
9716         if (foo.tm_sec == foo.tm_sec)
9717                 exit(0);
9718 #ifdef S_TIMEVAL
9719         if (bar.tv_sec == bar.tv_sec)
9720                 exit(0);
9721 #endif
9722         exit(1);
9723 }
9724 EOCP
9725         flags=''
9726         for s_timezone in '-DS_TIMEZONE' ''; do
9727         sysselect=''
9728         for s_timeval in '-DS_TIMEVAL' ''; do
9729         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9730         for i_time in '' '-DI_TIME'; do
9731         for i_systime in '-DI_SYSTIME' ''; do
9732                 case "$flags" in
9733                 '') $echo $n ".$c"
9734                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9735                         if eval $compile; then
9736                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9737                                 shift
9738                                 flags="$*"
9739                                 echo " "
9740                                 $echo $n "Succeeded with $flags$c"
9741                         fi
9742                         ;;
9743                 esac
9744         done
9745         done
9746         done
9747         done
9748         done
9749         timeincl=''
9750         echo " "
9751         case "$flags" in
9752         *SYSTIMEKERNEL*) i_systimek="$define"
9753                 timeincl=`./findhdr sys/time.h`
9754                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9755         *) i_systimek="$undef";;
9756         esac
9757         case "$flags" in
9758         *I_TIME*) i_time="$define"
9759                 timeincl=`./findhdr time.h`" $timeincl"
9760                 echo "We'll include <time.h>." >&4;;
9761         *) i_time="$undef";;
9762         esac
9763         case "$flags" in
9764         *I_SYSTIME*) i_systime="$define"
9765                 timeincl=`./findhdr sys/time.h`" $timeincl"
9766                 echo "We'll include <sys/time.h>." >&4;;
9767         *) i_systime="$undef";;
9768         esac
9769         $rm -f try.c try
9770 fi
9771 : see if struct tm knows about tm_zone
9772 case "$i_systime$i_time" in
9773 *$define*) 
9774         echo " "
9775         echo "Checking to see if your struct tm has tm_zone field..." >&4
9776         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9777         eval $hasfield
9778         ;;
9779 *)      val="$undef"
9780         set d_tm_tm_zone
9781         eval $setvar
9782         ;;
9783 esac
9784 case "$d_tm_tm_zone" in
9785 "$define")      echo "Yes, it does."   ;;
9786 *)              echo "No, it doesn't." ;;
9787 esac
9788 : see if struct tm knows about tm_gmtoff
9789 case "$i_systime$i_time" in
9790 *$define*) 
9791         echo " "
9792         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9793         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9794         eval $hasfield
9795         ;;
9796 *)      val="$undef"
9797         set d_tm_tm_gmtoff
9798         eval $setvar
9799         ;;
9800 esac
9801 case "$d_tm_tm_gmtoff" in
9802 "$define")      echo "Yes, it does."   ;;
9803 *)              echo "No, it doesn't." ;;
9804 esac
9805
9806 : see if asctime_r exists
9807 set asctime_r d_asctime_r
9808 eval $inlibc
9809 case "$d_asctime_r" in
9810 "$define")
9811         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9812         case "$d_asctime_r_proto:$usethreads" in
9813         ":define")      d_asctime_r_proto=define
9814                 set d_asctime_r_proto asctime_r $hdrs
9815                 eval $hasproto ;;
9816         *)      ;;
9817         esac
9818         case "$d_asctime_r_proto" in
9819         define)
9820         case "$asctime_r_proto" in
9821         ''|0) try='char* asctime_r(const struct tm*, char*);'
9822         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9823         esac
9824         case "$asctime_r_proto" in
9825         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9826         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9827         esac
9828         case "$asctime_r_proto" in
9829         ''|0) try='int asctime_r(const struct tm*, char*);'
9830         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9831         esac
9832         case "$asctime_r_proto" in
9833         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9834         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9835         esac
9836         case "$asctime_r_proto" in
9837         ''|0)   d_asctime_r=undef
9838                 asctime_r_proto=0
9839                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9840         * )     case "$asctime_r_proto" in
9841                 REENTRANT_PROTO*) ;;
9842                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9843                 esac
9844                 echo "Prototype: $try" ;;
9845         esac
9846         ;;
9847         *)      case "$usethreads" in
9848                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9849                 esac
9850                 d_asctime_r=undef
9851                 asctime_r_proto=0
9852                 ;;
9853         esac
9854         ;;
9855 *)      asctime_r_proto=0
9856         ;;
9857 esac
9858
9859 : see if atolf exists
9860 set atolf d_atolf
9861 eval $inlibc
9862
9863 : see if atoll exists
9864 set atoll d_atoll
9865 eval $inlibc
9866
9867 : Look for GNU-cc style attribute checking
9868 case "$d_attribut" in
9869 '')
9870 echo " "
9871 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9872 $cat >attrib.c <<'EOCP'
9873 #include <stdio.h>
9874 void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
9875 EOCP
9876 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9877         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9878                 echo "Your C compiler doesn't fully support __attribute__."
9879                 val="$undef"
9880         else
9881                 echo "Your C compiler supports __attribute__."
9882                 val="$define"
9883         fi
9884 else
9885         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9886         val="$undef"
9887 fi
9888 ;;
9889 *) val="$d_attribut" ;;
9890 esac
9891 set d_attribut
9892 eval $setvar
9893 $rm -f attrib*
9894
9895 : see if bcmp exists
9896 set bcmp d_bcmp
9897 eval $inlibc
9898
9899 : see if bcopy exists
9900 set bcopy d_bcopy
9901 eval $inlibc
9902
9903 : see if this is a unistd.h system
9904 set unistd.h i_unistd
9905 eval $inhdr
9906
9907 : see if getpgrp exists
9908 set getpgrp d_getpgrp
9909 eval $inlibc
9910
9911 case "$d_getpgrp" in
9912 "$define")
9913         echo " "
9914         echo "Checking to see which flavor of getpgrp is in use..."
9915         $cat >try.c <<EOP
9916 #$i_unistd I_UNISTD
9917 #include <sys/types.h>
9918 #ifdef I_UNISTD
9919 #  include <unistd.h>
9920 #endif
9921 #$i_stdlib I_STDLIB
9922 #ifdef I_STDLIB
9923 #include <stdlib.h>
9924 #endif
9925 int main()
9926 {
9927         if (getuid() == 0) {
9928                 printf("(I see you are running Configure as super-user...)\n");
9929                 setuid(1);
9930         }
9931 #ifdef TRY_BSD_PGRP
9932         if (getpgrp(1) == 0)
9933                 exit(0);
9934 #else
9935         if (getpgrp() > 0)
9936                 exit(0);
9937 #endif
9938         exit(1);
9939 }
9940 EOP
9941         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9942                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9943                 val="$define"
9944         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9945                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9946                 val="$undef"
9947         else
9948                 echo "I can't seem to compile and run the test program."
9949                 if ./usg; then
9950                         xxx="a USG one, i.e. you use getpgrp()."
9951                 else
9952                         # SVR4 systems can appear rather BSD-ish.
9953                         case "$i_unistd" in
9954                         $undef)
9955                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9956                                 val="$define"
9957                                 ;;
9958                         $define)
9959                                 xxx="probably a USG one, i.e. you use getpgrp()."
9960                                 val="$undef"
9961                                 ;;
9962                         esac
9963                 fi
9964                 echo "Assuming your getpgrp is $xxx" >&4
9965         fi
9966         ;;
9967 *) val="$undef";;
9968 esac
9969 set d_bsdgetpgrp
9970 eval $setvar
9971 $rm -f try try.*
9972
9973 : see if setpgrp exists
9974 set setpgrp d_setpgrp
9975 eval $inlibc
9976
9977 case "$d_setpgrp" in
9978 "$define")
9979         echo " "
9980         echo "Checking to see which flavor of setpgrp is in use..."
9981         $cat >try.c <<EOP
9982 #$i_unistd I_UNISTD
9983 #include <sys/types.h>
9984 #ifdef I_UNISTD
9985 #  include <unistd.h>
9986 #endif
9987 #$i_stdlib I_STDLIB
9988 #ifdef I_STDLIB
9989 #include <stdlib.h>
9990 #endif
9991 int main()
9992 {
9993         if (getuid() == 0) {
9994                 printf("(I see you are running Configure as super-user...)\n");
9995                 setuid(1);
9996         }
9997 #ifdef TRY_BSD_PGRP
9998         if (-1 == setpgrp(1, 1))
9999                 exit(0);
10000 #else
10001         if (setpgrp() != -1)
10002                 exit(0);
10003 #endif
10004         exit(1);
10005 }
10006 EOP
10007         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10008                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10009                 val="$define"
10010         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10011                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10012                 val="$undef"
10013         else
10014                 echo "(I can't seem to compile and run the test program.)"
10015                 if ./usg; then
10016                         xxx="a USG one, i.e. you use setpgrp()."
10017                 else
10018                         # SVR4 systems can appear rather BSD-ish.
10019                         case "$i_unistd" in
10020                         $undef)
10021                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10022                                 val="$define"
10023                                 ;;
10024                         $define)
10025                                 xxx="probably a USG one, i.e. you use setpgrp()."
10026                                 val="$undef"
10027                                 ;;
10028                         esac
10029                 fi
10030                 echo "Assuming your setpgrp is $xxx" >&4
10031         fi
10032         ;;
10033 *) val="$undef";;
10034 esac
10035 set d_bsdsetpgrp
10036 eval $setvar
10037 $rm -f try try.*
10038 : see if bzero exists
10039 set bzero d_bzero
10040 eval $inlibc
10041
10042 : see if signal is declared as pointer to function returning int or void
10043 echo " "
10044 xxx=`./findhdr signal.h`
10045 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10046 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10047         echo "You have int (*signal())() instead of void." >&4
10048         val="$undef"
10049 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10050         echo "You have void (*signal())()." >&4
10051         val="$define"
10052 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10053         echo "You have int (*signal())() instead of void." >&4
10054         val="$undef"
10055 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10056         echo "You have void (*signal())()." >&4
10057         val="$define"
10058 else
10059         case "$d_voidsig" in
10060         '')
10061         echo "I can't determine whether signal handler returns void or int..." >&4
10062                 dflt=void
10063                 rp="What type does your signal handler return?"
10064                 . ./myread
10065                 case "$ans" in
10066                 v*) val="$define";;
10067                 *) val="$undef";;
10068                 esac;;
10069         "$define")
10070                 echo "As you already told me, signal handler returns void." >&4
10071                 val="$define"
10072                 ;;
10073         *)      echo "As you already told me, signal handler returns int." >&4
10074                 val="$undef"
10075                 ;;
10076         esac
10077 fi
10078 set d_voidsig
10079 eval $setvar
10080 case "$d_voidsig" in
10081 "$define") signal_t="void";;
10082 *) signal_t="int";;
10083 esac
10084 $rm -f $$.tmp
10085
10086 : check for ability to cast large floats to 32-bit ints.
10087 echo " "
10088 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10089 if $test "$intsize" -ge 4; then
10090         xxx=int
10091 else
10092         xxx=long
10093 fi
10094 $cat >try.c <<EOCP
10095 #include <stdio.h>
10096 #$i_stdlib I_STDLIB
10097 #ifdef I_STDLIB
10098 #include <stdlib.h>
10099 #endif
10100 #include <sys/types.h>
10101 #include <signal.h>
10102 $signal_t blech(s) int s; { exit(3); }
10103 int main()
10104 {
10105         $xxx i32;
10106         double f, g;
10107         int result = 0;
10108         char str[16];
10109         signal(SIGFPE, blech);
10110
10111         /* Don't let compiler optimize the test away.  Store the number 
10112            in a writable string for gcc to pass to sscanf under HP/UX.
10113         */
10114         sprintf(str, "2147483647");
10115         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10116         g = 10 * f;
10117         i32  = ($xxx) g;
10118
10119         /* x86 processors will probably give 0x8000 0000, which is a
10120            sign change.  We don't want that.  We want to mimic SPARC
10121            behavior here, which is to preserve the sign and give
10122            back 0x7fff ffff.
10123         */
10124         if (i32 != ($xxx) f)
10125                 result |= 1;
10126         exit(result);
10127 }
10128 EOCP
10129 set try
10130 if eval $compile_ok; then
10131         $run ./try
10132         yyy=$?
10133 else
10134         echo "(I can't seem to compile the test program--assuming it can't)"
10135         yyy=1
10136 fi
10137 case "$yyy" in
10138 0)      val="$define"
10139         echo "Yup, it can."
10140         ;;
10141 *)      val="$undef"
10142         echo "Nope, it can't."
10143         ;;
10144 esac
10145 set d_casti32
10146 eval $setvar
10147 $rm -f try try.*
10148
10149 : check for ability to cast negative floats to unsigned
10150 echo " "
10151 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10152 $cat >try.c <<EOCP
10153 #include <stdio.h>
10154 #$i_stdlib I_STDLIB
10155 #ifdef I_STDLIB
10156 #include <stdlib.h>
10157 #endif
10158 #include <sys/types.h>
10159 #include <signal.h>
10160 $signal_t blech(s) int s; { exit(7); }
10161 $signal_t blech_in_list(s) int s; { exit(4); }
10162 unsigned long dummy_long(p) unsigned long p; { return p; }
10163 unsigned int dummy_int(p) unsigned int p; { return p; }
10164 unsigned short dummy_short(p) unsigned short p; { return p; }
10165 int main()
10166 {
10167         double f;
10168         unsigned long along;
10169         unsigned int aint;
10170         unsigned short ashort;
10171         int result = 0;
10172         char str[16];
10173         
10174         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10175            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10176            optimized the whole file away
10177         */
10178         /* Store the number in a writable string for gcc to pass to 
10179            sscanf under HP/UX.
10180         */
10181         sprintf(str, "-123");
10182         sscanf(str, "%lf", &f);  /* f = -123.; */
10183
10184         signal(SIGFPE, blech);
10185         along = (unsigned long)f;
10186         aint = (unsigned int)f;
10187         ashort = (unsigned short)f;
10188         if (along != (unsigned long)-123)
10189                 result |= 1;
10190         if (aint != (unsigned int)-123)
10191                 result |= 1;
10192         if (ashort != (unsigned short)-123)
10193                 result |= 1;
10194         sprintf(str, "1073741824.");
10195         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10196         f = f + f;
10197         along = 0;
10198         along = (unsigned long)f;
10199         if (along != 0x80000000)
10200                 result |= 2;
10201         f -= 1.;
10202         along = 0;
10203         along = (unsigned long)f;
10204         if (along != 0x7fffffff)
10205                 result |= 1;
10206         f += 2.;
10207         along = 0;
10208         along = (unsigned long)f;
10209         if (along != 0x80000001)
10210                 result |= 2;
10211         if (result)
10212                 exit(result);
10213         signal(SIGFPE, blech_in_list);
10214         sprintf(str, "123.");
10215         sscanf(str, "%lf", &f);  /* f = 123.; */
10216         along = dummy_long((unsigned long)f);
10217         aint = dummy_int((unsigned int)f);
10218         ashort = dummy_short((unsigned short)f);
10219         if (along != (unsigned long)123)
10220                 result |= 4;
10221         if (aint != (unsigned int)123)
10222                 result |= 4;
10223         if (ashort != (unsigned short)123)
10224                 result |= 4;
10225         exit(result);
10226
10227 }
10228 EOCP
10229 set try
10230 if eval $compile_ok; then
10231         $run ./try
10232         castflags=$?
10233 else
10234         echo "(I can't seem to compile the test program--assuming it can't)"
10235         castflags=7
10236 fi
10237 case "$castflags" in
10238 0)      val="$define"
10239         echo "Yup, it can."
10240         ;;
10241 *)      val="$undef"
10242         echo "Nope, it can't."
10243         ;;
10244 esac
10245 set d_castneg
10246 eval $setvar
10247 $rm -f try.*
10248
10249 : see if vprintf exists
10250 echo " "
10251 if set vprintf val -f d_vprintf; eval $csym; $val; then
10252         echo 'vprintf() found.' >&4
10253         val="$define"
10254         $cat >try.c <<EOF
10255 #include <varargs.h>
10256 #$i_stdlib I_STDLIB
10257 #ifdef I_STDLIB
10258 #include <stdlib.h>
10259 #endif
10260
10261 int main() { xxx("foo"); }
10262
10263 xxx(va_alist)
10264 va_dcl
10265 {
10266         va_list args;
10267         char buf[10];
10268
10269         va_start(args);
10270         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10271 }
10272 EOF
10273         set try
10274         if eval $compile && $run ./try; then
10275                 echo "Your vsprintf() returns (int)." >&4
10276                 val2="$undef"
10277         else
10278                 echo "Your vsprintf() returns (char*)." >&4
10279                 val2="$define"
10280         fi
10281 else
10282         echo 'vprintf() NOT found.' >&4
10283                 val="$undef"
10284                 val2="$undef"
10285 fi
10286 $rm -f try try.*
10287 set d_vprintf
10288 eval $setvar
10289 val=$val2
10290 set d_charvspr
10291 eval $setvar
10292
10293 : see if chown exists
10294 set chown d_chown
10295 eval $inlibc
10296
10297 : see if chroot exists
10298 set chroot d_chroot
10299 eval $inlibc
10300
10301 : see if chsize exists
10302 set chsize d_chsize
10303 eval $inlibc
10304
10305 : see if class exists
10306 set class d_class
10307 eval $inlibc
10308
10309 hasstruct='varname=$1; struct=$2; shift; shift;
10310 while $test $# -ge 2; do
10311         case "$1" in
10312         $define) echo "#include <$2>";;
10313         esac ;
10314     shift 2;
10315 done > try.c;
10316 echo "int main () { struct $struct foo; }" >> try.c;
10317 set try;
10318 if eval $compile; then
10319         val="$define";
10320 else
10321         val="$undef";
10322 fi;
10323 set $varname;
10324 eval $setvar;
10325 $rm -f try.c try.o'
10326
10327 socketlib=''
10328 sockethdr=''
10329 : see whether socket exists
10330 echo " "
10331 $echo $n "Hmm... $c" >&4
10332 if set socket val -f d_socket; eval $csym; $val; then
10333         echo "Looks like you have Berkeley networking support." >&4
10334         d_socket="$define"
10335         if set setsockopt val -f; eval $csym; $val; then
10336                 d_oldsock="$undef"
10337         else
10338                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10339                 d_oldsock="$define"
10340         fi
10341 else
10342         if $contains socklib libc.list >/dev/null 2>&1; then
10343                 echo "Looks like you have Berkeley networking support." >&4
10344                 d_socket="$define"
10345                 : we will have to assume that it supports the 4.2 BSD interface
10346                 d_oldsock="$undef"
10347         else
10348                 echo "You don't have Berkeley networking in libc$_a..." >&4
10349                 if test "X$d_socket" = "X$define"; then
10350                    echo "...but you seem to believe that you have sockets." >&4
10351                 else
10352                         for net in net socket
10353                         do
10354                                 if test -f /usr/lib/lib$net$_a; then
10355                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10356                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10357                                         if $contains socket libc.list >/dev/null 2>&1; then
10358                                                 d_socket="$define"
10359                                                 socketlib="-l$net"
10360                                                 case "$net" in
10361                                                 net)
10362                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10363                                                         sockethdr="-I/usr/netinclude"
10364                                                         ;;
10365                                                 esac
10366                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10367                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10368                                                         d_oldsock="$undef"
10369                                                 else
10370                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10371                                                         d_oldsock="$define"
10372                                                 fi
10373                                                 break
10374                                         fi
10375                                 fi
10376                         done
10377                         if test "X$d_socket" != "X$define"; then
10378                            echo "or anywhere else I see." >&4
10379                            d_socket="$undef"
10380                            d_oldsock="$undef"
10381                         fi
10382                 fi
10383         fi
10384 fi
10385
10386 : see if socketpair exists
10387 set socketpair d_sockpair
10388 eval $inlibc
10389
10390
10391 echo " "
10392 echo "Checking the availability of certain socket constants..." >&4
10393 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10394         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10395         $cat >try.c <<EOF
10396 #include <sys/types.h>
10397 #include <sys/socket.h>
10398 int main() {
10399     int i = $ENUM;
10400 }
10401 EOF
10402         val="$undef"
10403         set try; if eval $compile; then
10404                 val="$define"
10405         fi
10406         set d_${enum}; eval $setvar
10407         $rm -f try.c try
10408 done
10409
10410 : see if this is a sys/uio.h system
10411 set sys/uio.h i_sysuio
10412 eval $inhdr
10413
10414
10415 echo " "
10416 echo "Checking to see if your system supports struct cmsghdr..." >&4
10417 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10418 eval $hasstruct
10419 case "$d_cmsghdr_s" in
10420 "$define")      echo "Yes, it does."   ;;
10421 *)              echo "No, it doesn't." ;;
10422 esac
10423
10424
10425 : check for const keyword
10426 echo " "
10427 echo 'Checking to see if your C compiler knows about "const"...' >&4
10428 $cat >const.c <<'EOCP'
10429 typedef struct spug { int drokk; } spug;
10430 int main()
10431 {
10432         const char *foo;
10433         const spug y;
10434 }
10435 EOCP
10436 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10437         val="$define"
10438         echo "Yup, it does."
10439 else
10440         val="$undef"
10441         echo "Nope, it doesn't."
10442 fi
10443 set d_const
10444 eval $setvar
10445
10446 : see if copysignl exists
10447 set copysignl d_copysignl
10448 eval $inlibc
10449
10450 : see if crypt exists
10451 echo " "
10452 set crypt d_crypt
10453 eval $inlibc
10454 case "$d_crypt" in
10455 $define) cryptlib='' ;;
10456 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10457                 echo 'crypt() found.' >&4
10458                 val="$define"
10459                 cryptlib=''
10460         else
10461                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10462                 if $test -z "$cryptlib"; then
10463                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10464                 else
10465                         cryptlib=-lcrypt
10466                 fi
10467                 if $test -z "$cryptlib"; then
10468                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10469                 else
10470                         cryptlib=-lcrypt
10471                 fi
10472                 if $test -z "$cryptlib"; then
10473                         cryptlib=`./loc libcrypt$_a "" $libpth`
10474                 else
10475                         cryptlib=-lcrypt
10476                 fi
10477                 if $test -z "$cryptlib"; then
10478                         echo 'crypt() NOT found.' >&4
10479                         val="$undef"
10480                 else
10481                         val="$define"
10482                 fi
10483         fi
10484         set d_crypt
10485         eval $setvar
10486         ;;
10487 esac
10488
10489 : see if this is a crypt.h system
10490 set crypt.h i_crypt
10491 eval $inhdr
10492
10493 : see if crypt_r exists
10494 set crypt_r d_crypt_r
10495 eval $inlibc
10496 case "$d_crypt_r" in
10497 "$define")
10498         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10499         case "$d_crypt_r_proto:$usethreads" in
10500         ":define")      d_crypt_r_proto=define
10501                 set d_crypt_r_proto crypt_r $hdrs
10502                 eval $hasproto ;;
10503         *)      ;;
10504         esac
10505         case "$d_crypt_r_proto" in
10506         define)
10507         case "$crypt_r_proto" in
10508         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10509         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10510         esac
10511         case "$crypt_r_proto" in
10512         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10513         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10514         esac
10515         case "$crypt_r_proto" in
10516         ''|0)   d_crypt_r=undef
10517                 crypt_r_proto=0
10518                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10519         * )     case "$crypt_r_proto" in
10520                 REENTRANT_PROTO*) ;;
10521                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10522                 esac
10523                 echo "Prototype: $try" ;;
10524         esac
10525         ;;
10526         *)      case "$usethreads" in
10527                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10528                 esac
10529                 d_crypt_r=undef
10530                 crypt_r_proto=0
10531                 ;;
10532         esac
10533         ;;
10534 *)      crypt_r_proto=0
10535         ;;
10536 esac
10537
10538 : get csh whereabouts
10539 case "$csh" in
10540 'csh') val="$undef" ;;
10541 *) val="$define" ;;
10542 esac
10543 set d_csh
10544 eval $setvar
10545 : Respect a hint or command line value for full_csh.
10546 case "$full_csh" in
10547 '') full_csh=$csh ;;
10548 esac
10549
10550 : see if ctermid_r exists
10551 set ctermid_r d_ctermid_r
10552 eval $inlibc
10553 case "$d_ctermid_r" in
10554 "$define")
10555         hdrs="$i_systypes sys/types.h define stdio.h "
10556         case "$d_ctermid_r_proto:$usethreads" in
10557         ":define")      d_ctermid_r_proto=define
10558                 set d_ctermid_r_proto ctermid_r $hdrs
10559                 eval $hasproto ;;
10560         *)      ;;
10561         esac
10562         case "$d_ctermid_r_proto" in
10563         define)
10564         case "$ctermid_r_proto" in
10565         ''|0) try='char* ctermid_r(char*);'
10566         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10567         esac
10568         case "$ctermid_r_proto" in
10569         ''|0)   d_ctermid_r=undef
10570                 ctermid_r_proto=0
10571                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10572         * )     case "$ctermid_r_proto" in
10573                 REENTRANT_PROTO*) ;;
10574                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10575                 esac
10576                 echo "Prototype: $try" ;;
10577         esac
10578         ;;
10579         *)      case "$usethreads" in
10580                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10581                 esac
10582                 d_ctermid_r=undef
10583                 ctermid_r_proto=0
10584                 ;;
10585         esac
10586         ;;
10587 *)      ctermid_r_proto=0
10588         ;;
10589 esac
10590
10591 : see if ctime_r exists
10592 set ctime_r d_ctime_r
10593 eval $inlibc
10594 case "$d_ctime_r" in
10595 "$define")
10596         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10597         case "$d_ctime_r_proto:$usethreads" in
10598         ":define")      d_ctime_r_proto=define
10599                 set d_ctime_r_proto ctime_r $hdrs
10600                 eval $hasproto ;;
10601         *)      ;;
10602         esac
10603         case "$d_ctime_r_proto" in
10604         define)
10605         case "$ctime_r_proto" in
10606         ''|0) try='char* ctime_r(const time_t*, char*);'
10607         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10608         esac
10609         case "$ctime_r_proto" in
10610         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10611         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10612         esac
10613         case "$ctime_r_proto" in
10614         ''|0) try='int ctime_r(const time_t*, char*);'
10615         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10616         esac
10617         case "$ctime_r_proto" in
10618         ''|0) try='int ctime_r(const time_t*, char*, int);'
10619         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10620         esac
10621         case "$ctime_r_proto" in
10622         ''|0)   d_ctime_r=undef
10623                 ctime_r_proto=0
10624                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10625         * )     case "$ctime_r_proto" in
10626                 REENTRANT_PROTO*) ;;
10627                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10628                 esac
10629                 echo "Prototype: $try" ;;
10630         esac
10631         ;;
10632         *)      case "$usethreads" in
10633                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10634                 esac
10635                 d_ctime_r=undef
10636                 ctime_r_proto=0
10637                 ;;
10638         esac
10639         ;;
10640 *)      ctime_r_proto=0
10641         ;;
10642 esac
10643
10644 : see if cuserid exists
10645 set cuserid d_cuserid
10646 eval $inlibc
10647
10648 : see if this is a limits.h system
10649 set limits.h i_limits
10650 eval $inhdr
10651
10652 : see if this is a float.h system
10653 set float.h i_float
10654 eval $inhdr
10655
10656 : See if number of significant digits in a double precision number is known
10657 echo " "
10658 $cat >dbl_dig.c <<EOM
10659 #$i_limits I_LIMITS
10660 #$i_float I_FLOAT
10661 #ifdef I_LIMITS
10662 #include <limits.h>
10663 #endif
10664 #ifdef I_FLOAT
10665 #include <float.h>
10666 #endif
10667 #ifdef DBL_DIG
10668 printf("Contains DBL_DIG");
10669 #endif
10670 EOM
10671 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10672 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10673         echo "DBL_DIG found." >&4
10674         val="$define"
10675 else
10676         echo "DBL_DIG NOT found." >&4
10677         val="$undef"
10678 fi
10679 $rm -f dbl_dig.?
10680 set d_dbl_dig
10681 eval $setvar
10682
10683 : see if dbm.h is available
10684 : see if dbmclose exists
10685 set dbmclose d_dbmclose
10686 eval $inlibc
10687
10688 case "$d_dbmclose" in
10689 $define)
10690         set dbm.h i_dbm
10691         eval $inhdr
10692         case "$i_dbm" in
10693         $define)
10694                 val="$undef"
10695                 set i_rpcsvcdbm
10696                 eval $setvar
10697                 ;;
10698         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10699                 eval $inhdr
10700                 ;;
10701         esac
10702         ;;
10703 *)      echo "We won't be including <dbm.h>"
10704         val="$undef"
10705         set i_dbm
10706         eval $setvar
10707         val="$undef"
10708         set i_rpcsvcdbm
10709         eval $setvar
10710         ;;
10711 esac
10712
10713 : see if prototype for dbminit is available
10714 echo " "
10715 set d_dbminitproto dbminit $i_dbm dbm.h
10716 eval $hasproto
10717
10718 : see if difftime exists
10719 set difftime d_difftime
10720 eval $inlibc
10721
10722 : see if this is a dirent system
10723 echo " "
10724 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10725         val="$define"
10726         echo "<dirent.h> found." >&4
10727 else
10728         val="$undef"
10729         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10730                 echo "<sys/dir.h> found." >&4
10731                 echo " "
10732         else
10733                 xinc=`./findhdr sys/ndir.h`
10734         fi
10735         echo "<dirent.h> NOT found." >&4
10736 fi
10737 set i_dirent
10738 eval $setvar
10739
10740 : Look for type of directory structure.
10741 echo " "
10742 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10743
10744 case "$direntrytype" in
10745 ''|' ')
10746         case "$i_dirent" in
10747         $define) guess1='struct dirent' ;;
10748         *) guess1='struct direct'  ;;
10749         esac
10750         ;;
10751 *)      guess1="$direntrytype"
10752         ;;
10753 esac
10754
10755 case "$guess1" in
10756 'struct dirent') guess2='struct direct' ;;
10757 *) guess2='struct dirent' ;;
10758 esac
10759                 
10760 if $contains "$guess1" try.c >/dev/null 2>&1; then
10761         direntrytype="$guess1"
10762         echo "Your directory entries are $direntrytype." >&4
10763 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10764         direntrytype="$guess2"
10765         echo "Your directory entries seem to be $direntrytype." >&4
10766 else
10767         echo "I don't recognize your system's directory entries." >&4
10768         rp="What type is used for directory entries on this system?"
10769         dflt="$guess1"
10770         . ./myread
10771         direntrytype="$ans"
10772 fi
10773 $rm -f try.c
10774
10775
10776 : see if the directory entry stores field length
10777 echo " "
10778 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10779 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10780         echo "Good, your directory entry keeps length information in d_namlen." >&4
10781         val="$define"
10782 else
10783         echo "Your directory entry does not know about the d_namlen field." >&4
10784         val="$undef"
10785 fi
10786 set d_dirnamlen
10787 eval $setvar
10788 $rm -f try.c
10789
10790 : see if this is an sysdir system
10791 set sys/dir.h i_sysdir
10792 eval $inhdr
10793
10794 : see if this is an sysndir system
10795 set sys/ndir.h i_sysndir
10796 eval $inhdr
10797
10798 : Look for dirfd
10799 echo " "
10800 $cat >dirfd.c <<EOM
10801 #include <stdio.h>
10802 #$i_stdlib I_STDLIB
10803 #ifdef I_STDLIB
10804 #include <stdlib.h>
10805 #endif
10806 #$i_dirent I_DIRENT             /**/
10807 #$i_sysdir I_SYS_DIR            /**/
10808 #$i_sysndir I_SYS_NDIR          /**/
10809 #$i_systypes I_SYS_TYPES        /**/
10810 #if defined(I_SYS_TYPES)
10811 #include <sys/types.h>
10812 #endif
10813 #if defined(I_DIRENT)
10814 #include <dirent.h>
10815 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10816 #include <sys/dir.h>
10817 #endif
10818 #else
10819 #ifdef I_SYS_NDIR
10820 #include <sys/ndir.h>
10821 #else
10822 #ifdef I_SYS_DIR
10823 #ifdef hp9000s500
10824 #include <ndir.h>       /* may be wrong in the future */
10825 #else
10826 #include <sys/dir.h>
10827 #endif
10828 #endif
10829 #endif
10830 #endif 
10831 int main() {
10832         DIR *dirp = opendir(".");
10833         if (dirfd(dirp) >= 0)
10834                 exit(0);
10835         else
10836                 exit(1);
10837 }
10838 EOM
10839 set dirfd
10840 if eval $compile; then
10841         val="$define"
10842 fi
10843 case "$val" in
10844 $define)        echo "dirfd() found." >&4       ;;
10845 *)              echo "dirfd() NOT found." >&4   ;;
10846 esac
10847 set d_dirfd
10848 eval $setvar
10849 $rm -f dirfd*
10850
10851 : see if dlerror exists
10852 xxx_runnm="$runnm"
10853 runnm=false
10854 set dlerror d_dlerror
10855 eval $inlibc
10856 runnm="$xxx_runnm"
10857
10858 : see if dlfcn is available
10859 set dlfcn.h i_dlfcn
10860 eval $inhdr
10861
10862 case "$usedl" in
10863 $define|y|true)
10864         $cat << EOM
10865
10866 On a few systems, the dynamically loaded modules that perl generates and uses
10867 will need a different extension than shared libs. The default will probably
10868 be appropriate.
10869
10870 EOM
10871         case "$dlext" in
10872         '')     dflt="$so" ;;
10873         *)      dflt="$dlext" ;;
10874         esac
10875         rp='What is the extension of dynamically loaded modules'
10876         . ./myread
10877         dlext="$ans"
10878         ;;
10879 *)
10880         dlext="none"
10881         ;;
10882 esac
10883
10884 : Check if dlsym need a leading underscore
10885 echo " "
10886 val="$undef"
10887
10888 case "$dlsrc" in
10889 dl_dlopen.xs)
10890         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10891         $cat >dyna.c <<'EOM'
10892 fred () { }
10893 EOM
10894
10895 $cat >fred.c<<EOM
10896
10897 #include <stdio.h>
10898 #$i_stdlib I_STDLIB
10899 #ifdef I_STDLIB
10900 #include <stdlib.h>
10901 #endif
10902 #$i_dlfcn I_DLFCN
10903 #ifdef I_DLFCN
10904 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10905 #else
10906 #include <sys/types.h>
10907 #include <nlist.h>
10908 #include <link.h>
10909 #endif
10910
10911 extern int fred() ;
10912
10913 int main()
10914 {
10915     void * handle ;
10916     void * symbol ;
10917 #ifndef RTLD_LAZY
10918     int mode = 1 ;
10919 #else
10920     int mode = RTLD_LAZY ;
10921 #endif
10922     handle = dlopen("./dyna.$dlext", mode) ;
10923     if (handle == NULL) {
10924         printf ("1\n") ;
10925         fflush (stdout) ;
10926         exit(0);
10927     }
10928     symbol = dlsym(handle, "fred") ;
10929     if (symbol == NULL) {
10930         /* try putting a leading underscore */
10931         symbol = dlsym(handle, "_fred") ;
10932         if (symbol == NULL) {
10933             printf ("2\n") ;
10934             fflush (stdout) ;
10935             exit(0);
10936         }
10937         printf ("3\n") ;
10938     }
10939     else
10940         printf ("4\n") ;
10941     fflush (stdout) ;
10942     exit(0);
10943 }
10944 EOM
10945         : Call the object file tmp-dyna.o in case dlext=o.
10946         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10947                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10948                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10949                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10950                 xxx=`$run ./fred`
10951                 case $xxx in
10952                 1)      echo "Test program failed using dlopen." >&4
10953                         echo "Perhaps you should not use dynamic loading." >&4;;
10954                 2)      echo "Test program failed using dlsym." >&4
10955                         echo "Perhaps you should not use dynamic loading." >&4;;
10956                 3)      echo "dlsym needs a leading underscore" >&4
10957                         val="$define" ;;
10958                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10959                 esac
10960         else
10961                 echo "I can't compile and run the test program." >&4
10962                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10963         fi
10964         ;;
10965 esac
10966                 
10967 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10968
10969 set d_dlsymun
10970 eval $setvar
10971
10972 : see if drand48_r exists
10973 set drand48_r d_drand48_r
10974 eval $inlibc
10975 case "$d_drand48_r" in
10976 "$define")
10977         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10978         case "$d_drand48_r_proto:$usethreads" in
10979         ":define")      d_drand48_r_proto=define
10980                 set d_drand48_r_proto drand48_r $hdrs
10981                 eval $hasproto ;;
10982         *)      ;;
10983         esac
10984         case "$d_drand48_r_proto" in
10985         define)
10986         case "$drand48_r_proto" in
10987         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10988         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10989         esac
10990         case "$drand48_r_proto" in
10991         ''|0)   d_drand48_r=undef
10992                 drand48_r_proto=0
10993                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10994         * )     case "$drand48_r_proto" in
10995                 REENTRANT_PROTO*) ;;
10996                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10997                 esac
10998                 echo "Prototype: $try" ;;
10999         esac
11000         ;;
11001         *)      case "$usethreads" in
11002                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11003                 esac
11004                 d_drand48_r=undef
11005                 drand48_r_proto=0
11006                 ;;
11007         esac
11008         ;;
11009 *)      drand48_r_proto=0
11010         ;;
11011 esac
11012
11013 : see if prototype for drand48 is available
11014 echo " "
11015 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11016 eval $hasproto
11017
11018 : see if dup2 exists
11019 set dup2 d_dup2
11020 eval $inlibc
11021
11022 : see if eaccess exists
11023 set eaccess d_eaccess
11024 eval $inlibc
11025
11026 : see if endgrent exists
11027 set endgrent d_endgrent
11028 eval $inlibc
11029
11030 : see if this is an grp system
11031 set grp.h i_grp
11032 eval $inhdr
11033
11034 case "$i_grp" in
11035 $define)
11036         xxx=`./findhdr grp.h`
11037         $cppstdin $cppflags $cppminus < $xxx >$$.h
11038
11039         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11040                 val="$define"
11041         else
11042                 val="$undef"
11043         fi
11044         set d_grpasswd
11045         eval $setvar
11046
11047         $rm -f $$.h
11048         ;;
11049 *)
11050         val="$undef";
11051         set d_grpasswd; eval $setvar
11052         ;;
11053 esac
11054
11055 : see if endgrent_r exists
11056 set endgrent_r d_endgrent_r
11057 eval $inlibc
11058 case "$d_endgrent_r" in
11059 "$define")
11060         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11061         case "$d_endgrent_r_proto:$usethreads" in
11062         ":define")      d_endgrent_r_proto=define
11063                 set d_endgrent_r_proto endgrent_r $hdrs
11064                 eval $hasproto ;;
11065         *)      ;;
11066         esac
11067         case "$d_endgrent_r_proto" in
11068         define)
11069         case "$endgrent_r_proto" in
11070         ''|0) try='int endgrent_r(FILE**);'
11071         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11072         esac
11073         case "$endgrent_r_proto" in
11074         ''|0) try='void endgrent_r(FILE**);'
11075         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11076         esac
11077         case "$endgrent_r_proto" in
11078         ''|0)   d_endgrent_r=undef
11079                 endgrent_r_proto=0
11080                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11081         * )     case "$endgrent_r_proto" in
11082                 REENTRANT_PROTO*) ;;
11083                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11084                 esac
11085                 echo "Prototype: $try" ;;
11086         esac
11087         ;;
11088         *)      case "$usethreads" in
11089                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11090                 esac
11091                 d_endgrent_r=undef
11092                 endgrent_r_proto=0
11093                 ;;
11094         esac
11095         ;;
11096 *)      endgrent_r_proto=0
11097         ;;
11098 esac
11099
11100 : see if endhostent exists
11101 set endhostent d_endhent
11102 eval $inlibc
11103
11104 : see if this is a netdb.h system
11105 set netdb.h i_netdb
11106 eval $inhdr
11107
11108 : see if endhostent_r exists
11109 set endhostent_r d_endhostent_r
11110 eval $inlibc
11111 case "$d_endhostent_r" in
11112 "$define")
11113         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11114         case "$d_endhostent_r_proto:$usethreads" in
11115         ":define")      d_endhostent_r_proto=define
11116                 set d_endhostent_r_proto endhostent_r $hdrs
11117                 eval $hasproto ;;
11118         *)      ;;
11119         esac
11120         case "$d_endhostent_r_proto" in
11121         define)
11122         case "$endhostent_r_proto" in
11123         ''|0) try='int endhostent_r(struct hostent_data*);'
11124         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11125         esac
11126         case "$endhostent_r_proto" in
11127         ''|0) try='void endhostent_r(struct hostent_data*);'
11128         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11129         esac
11130         case "$endhostent_r_proto" in
11131         ''|0)   d_endhostent_r=undef
11132                 endhostent_r_proto=0
11133                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11134         * )     case "$endhostent_r_proto" in
11135                 REENTRANT_PROTO*) ;;
11136                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11137                 esac
11138                 echo "Prototype: $try" ;;
11139         esac
11140         ;;
11141         *)      case "$usethreads" in
11142                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11143                 esac
11144                 d_endhostent_r=undef
11145                 endhostent_r_proto=0
11146                 ;;
11147         esac
11148         ;;
11149 *)      endhostent_r_proto=0
11150         ;;
11151 esac
11152
11153 : see if endnetent exists
11154 set endnetent d_endnent
11155 eval $inlibc
11156
11157 : see if endnetent_r exists
11158 set endnetent_r d_endnetent_r
11159 eval $inlibc
11160 case "$d_endnetent_r" in
11161 "$define")
11162         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11163         case "$d_endnetent_r_proto:$usethreads" in
11164         ":define")      d_endnetent_r_proto=define
11165                 set d_endnetent_r_proto endnetent_r $hdrs
11166                 eval $hasproto ;;
11167         *)      ;;
11168         esac
11169         case "$d_endnetent_r_proto" in
11170         define)
11171         case "$endnetent_r_proto" in
11172         ''|0) try='int endnetent_r(struct netent_data*);'
11173         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11174         esac
11175         case "$endnetent_r_proto" in
11176         ''|0) try='void endnetent_r(struct netent_data*);'
11177         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11178         esac
11179         case "$endnetent_r_proto" in
11180         ''|0)   d_endnetent_r=undef
11181                 endnetent_r_proto=0
11182                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11183         * )     case "$endnetent_r_proto" in
11184                 REENTRANT_PROTO*) ;;
11185                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11186                 esac
11187                 echo "Prototype: $try" ;;
11188         esac
11189         ;;
11190         *)      case "$usethreads" in
11191                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11192                 esac
11193                 d_endnetent_r=undef
11194                 endnetent_r_proto=0
11195                 ;;
11196         esac
11197         ;;
11198 *)      endnetent_r_proto=0
11199         ;;
11200 esac
11201
11202 : see if endprotoent exists
11203 set endprotoent d_endpent
11204 eval $inlibc
11205
11206 : see if endprotoent_r exists
11207 set endprotoent_r d_endprotoent_r
11208 eval $inlibc
11209 case "$d_endprotoent_r" in
11210 "$define")
11211         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11212         case "$d_endprotoent_r_proto:$usethreads" in
11213         ":define")      d_endprotoent_r_proto=define
11214                 set d_endprotoent_r_proto endprotoent_r $hdrs
11215                 eval $hasproto ;;
11216         *)      ;;
11217         esac
11218         case "$d_endprotoent_r_proto" in
11219         define)
11220         case "$endprotoent_r_proto" in
11221         ''|0) try='int endprotoent_r(struct protoent_data*);'
11222         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11223         esac
11224         case "$endprotoent_r_proto" in
11225         ''|0) try='void endprotoent_r(struct protoent_data*);'
11226         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11227         esac
11228         case "$endprotoent_r_proto" in
11229         ''|0)   d_endprotoent_r=undef
11230                 endprotoent_r_proto=0
11231                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11232         * )     case "$endprotoent_r_proto" in
11233                 REENTRANT_PROTO*) ;;
11234                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11235                 esac
11236                 echo "Prototype: $try" ;;
11237         esac
11238         ;;
11239         *)      case "$usethreads" in
11240                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11241                 esac
11242                 d_endprotoent_r=undef
11243                 endprotoent_r_proto=0
11244                 ;;
11245         esac
11246         ;;
11247 *)      endprotoent_r_proto=0
11248         ;;
11249 esac
11250
11251 : see if endpwent exists
11252 set endpwent d_endpwent
11253 eval $inlibc
11254
11255 : see if this is a pwd.h system
11256 set pwd.h i_pwd
11257 eval $inhdr
11258
11259 case "$i_pwd" in
11260 $define)
11261         xxx=`./findhdr pwd.h`
11262         $cppstdin $cppflags $cppminus < $xxx >$$.h
11263
11264         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11265                 val="$define"
11266         else
11267                 val="$undef"
11268         fi
11269         set d_pwquota
11270         eval $setvar
11271
11272         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11273                 val="$define"
11274         else
11275                 val="$undef"
11276         fi
11277         set d_pwage
11278         eval $setvar
11279
11280         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11281                 val="$define"
11282         else
11283                 val="$undef"
11284         fi
11285         set d_pwchange
11286         eval $setvar
11287
11288         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11289                 val="$define"
11290         else
11291                 val="$undef"
11292         fi
11293         set d_pwclass
11294         eval $setvar
11295
11296         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11297                 val="$define"
11298         else
11299                 val="$undef"
11300         fi
11301         set d_pwexpire
11302         eval $setvar
11303
11304         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11305                 val="$define"
11306         else
11307                 val="$undef"
11308         fi
11309         set d_pwcomment
11310         eval $setvar
11311
11312         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11313                 val="$define"
11314         else
11315                 val="$undef"
11316         fi
11317         set d_pwgecos
11318         eval $setvar
11319
11320         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11321                 val="$define"
11322         else
11323                 val="$undef"
11324         fi
11325         set d_pwpasswd
11326         eval $setvar
11327
11328         $rm -f $$.h
11329         ;;
11330 *)
11331         val="$undef"; 
11332         set d_pwquota; eval $setvar
11333         set d_pwage; eval $setvar
11334         set d_pwchange; eval $setvar
11335         set d_pwclass; eval $setvar
11336         set d_pwexpire; eval $setvar
11337         set d_pwcomment; eval $setvar
11338         set d_pwgecos; eval $setvar
11339         set d_pwpasswd; eval $setvar
11340         ;;
11341 esac
11342
11343 : see if endpwent_r exists
11344 set endpwent_r d_endpwent_r
11345 eval $inlibc
11346 case "$d_endpwent_r" in
11347 "$define")
11348         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11349         case "$d_endpwent_r_proto:$usethreads" in
11350         ":define")      d_endpwent_r_proto=define
11351                 set d_endpwent_r_proto endpwent_r $hdrs
11352                 eval $hasproto ;;
11353         *)      ;;
11354         esac
11355         case "$d_endpwent_r_proto" in
11356         define)
11357         case "$endpwent_r_proto" in
11358         ''|0) try='int endpwent_r(FILE**);'
11359         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11360         esac
11361         case "$endpwent_r_proto" in
11362         ''|0) try='void endpwent_r(FILE**);'
11363         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11364         esac
11365         case "$endpwent_r_proto" in
11366         ''|0)   d_endpwent_r=undef
11367                 endpwent_r_proto=0
11368                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11369         * )     case "$endpwent_r_proto" in
11370                 REENTRANT_PROTO*) ;;
11371                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11372                 esac
11373                 echo "Prototype: $try" ;;
11374         esac
11375         ;;
11376         *)      case "$usethreads" in
11377                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11378                 esac
11379                 d_endpwent_r=undef
11380                 endpwent_r_proto=0
11381                 ;;
11382         esac
11383         ;;
11384 *)      endpwent_r_proto=0
11385         ;;
11386 esac
11387
11388 : see if endservent exists
11389 set endservent d_endsent
11390 eval $inlibc
11391
11392 : see if endservent_r exists
11393 set endservent_r d_endservent_r
11394 eval $inlibc
11395 case "$d_endservent_r" in
11396 "$define")
11397         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11398         case "$d_endservent_r_proto:$usethreads" in
11399         ":define")      d_endservent_r_proto=define
11400                 set d_endservent_r_proto endservent_r $hdrs
11401                 eval $hasproto ;;
11402         *)      ;;
11403         esac
11404         case "$d_endservent_r_proto" in
11405         define)
11406         case "$endservent_r_proto" in
11407         ''|0) try='int endservent_r(struct servent_data*);'
11408         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11409         esac
11410         case "$endservent_r_proto" in
11411         ''|0) try='void endservent_r(struct servent_data*);'
11412         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11413         esac
11414         case "$endservent_r_proto" in
11415         ''|0)   d_endservent_r=undef
11416                 endservent_r_proto=0
11417                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11418         * )     case "$endservent_r_proto" in
11419                 REENTRANT_PROTO*) ;;
11420                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11421                 esac
11422                 echo "Prototype: $try" ;;
11423         esac
11424         ;;
11425         *)      case "$usethreads" in
11426                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11427                 esac
11428                 d_endservent_r=undef
11429                 endservent_r_proto=0
11430                 ;;
11431         esac
11432         ;;
11433 *)      endservent_r_proto=0
11434         ;;
11435 esac
11436
11437 : Locate the flags for 'open()'
11438 echo " "
11439 $cat >try.c <<EOCP
11440 #include <sys/types.h>
11441 #ifdef I_FCNTL
11442 #include <fcntl.h>
11443 #endif
11444 #ifdef I_SYS_FILE
11445 #include <sys/file.h>
11446 #endif
11447 #$i_stdlib I_STDLIB
11448 #ifdef I_STDLIB
11449 #include <stdlib.h>
11450 #endif
11451 int main() {
11452         if(O_RDONLY);
11453 #ifdef O_TRUNC
11454         exit(0);
11455 #else
11456         exit(1);
11457 #endif
11458 }
11459 EOCP
11460 : check sys/file.h first to get FREAD on Sun
11461 if $test `./findhdr sys/file.h` && \
11462                 set try -DI_SYS_FILE && eval $compile; then
11463         h_sysfile=true;
11464         echo "<sys/file.h> defines the O_* constants..." >&4
11465         if $run ./try; then
11466                 echo "and you have the 3 argument form of open()." >&4
11467                 val="$define"
11468         else
11469                 echo "but not the 3 argument form of open().  Oh, well." >&4
11470                 val="$undef"
11471         fi
11472 elif $test `./findhdr fcntl.h` && \
11473                 set try -DI_FCNTL && eval $compile; then
11474         h_fcntl=true;
11475         echo "<fcntl.h> defines the O_* constants..." >&4
11476         if $run ./try; then
11477                 echo "and you have the 3 argument form of open()." >&4
11478                 val="$define"
11479         else
11480                 echo "but not the 3 argument form of open().  Oh, well." >&4
11481                 val="$undef"
11482         fi
11483 else
11484         val="$undef"
11485         echo "I can't find the O_* constant definitions!  You got problems." >&4
11486 fi
11487 set d_open3
11488 eval $setvar
11489 $rm -f try try.*
11490
11491 : see which of string.h or strings.h is needed
11492 echo " "
11493 strings=`./findhdr string.h`
11494 if $test "$strings" && $test -r "$strings"; then
11495         echo "Using <string.h> instead of <strings.h>." >&4
11496         val="$define"
11497 else
11498         val="$undef"
11499         strings=`./findhdr strings.h`
11500         if $test "$strings" && $test -r "$strings"; then
11501                 echo "Using <strings.h> instead of <string.h>." >&4
11502         else
11503                 echo "No string header found -- You'll surely have problems." >&4
11504         fi
11505 fi
11506 set i_string
11507 eval $setvar
11508 case "$i_string" in
11509 "$undef") strings=`./findhdr strings.h`;;
11510 *)        strings=`./findhdr string.h`;;
11511 esac
11512
11513 : see if this is a sys/file.h system
11514 val=''
11515 set sys/file.h val
11516 eval $inhdr
11517
11518 : do we need to include sys/file.h ?
11519 case "$val" in
11520 "$define")
11521         echo " "
11522         if $h_sysfile; then
11523                 val="$define"
11524                 echo "We'll be including <sys/file.h>." >&4
11525         else
11526                 val="$undef"
11527                 echo "We won't be including <sys/file.h>." >&4
11528         fi
11529         ;;
11530 *)
11531         h_sysfile=false
11532         ;;
11533 esac
11534 set i_sysfile
11535 eval $setvar
11536
11537 : see if fcntl.h is there
11538 val=''
11539 set fcntl.h val
11540 eval $inhdr
11541
11542 : see if we can include fcntl.h
11543 case "$val" in
11544 "$define")
11545         echo " "
11546         if $h_fcntl; then
11547                 val="$define"
11548                 echo "We'll be including <fcntl.h>." >&4
11549         else
11550                 val="$undef"
11551                 if $h_sysfile; then
11552         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11553                 else
11554                         echo "We won't be including <fcntl.h>." >&4
11555                 fi
11556         fi
11557         ;;
11558 *)
11559         h_fcntl=false
11560         val="$undef"
11561         ;;
11562 esac
11563 set i_fcntl
11564 eval $setvar
11565
11566 : check for non-blocking I/O stuff
11567 case "$h_sysfile" in
11568 true) echo "#include <sys/file.h>" > head.c;;
11569 *)
11570        case "$h_fcntl" in
11571        true) echo "#include <fcntl.h>" > head.c;;
11572        *) echo "#include <sys/fcntl.h>" > head.c;;
11573        esac
11574        ;;
11575 esac
11576 echo " "
11577 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11578 case "$o_nonblock" in
11579 '')
11580         $cat head.c > try.c
11581         $cat >>try.c <<EOCP
11582 #include <stdio.h>
11583 #$i_stdlib I_STDLIB
11584 #ifdef I_STDLIB
11585 #include <stdlib.h>
11586 #endif
11587 #$i_fcntl I_FCNTL
11588 #ifdef I_FCNTL
11589 #include <fcntl.h>
11590 #endif
11591 int main() {
11592 #ifdef O_NONBLOCK
11593         printf("O_NONBLOCK\n");
11594         exit(0);
11595 #endif
11596 #ifdef O_NDELAY
11597         printf("O_NDELAY\n");
11598         exit(0);
11599 #endif
11600 #ifdef FNDELAY
11601         printf("FNDELAY\n");
11602         exit(0);
11603 #endif
11604         exit(0);
11605 }
11606 EOCP
11607         set try
11608         if eval $compile_ok; then
11609                 o_nonblock=`$run ./try`
11610                 case "$o_nonblock" in
11611                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11612                 *) echo "Seems like we can use $o_nonblock.";;
11613                 esac
11614         else
11615                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11616         fi
11617         ;;
11618 *) echo "Using $hint value $o_nonblock.";;
11619 esac
11620 $rm -f try try.* .out core
11621
11622 echo " "
11623 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11624 case "$eagain" in
11625 '')
11626         $cat head.c > try.c
11627         $cat >>try.c <<EOCP
11628 #include <errno.h>
11629 #include <sys/types.h>
11630 #include <signal.h>
11631 #include <stdio.h> 
11632 #$i_stdlib I_STDLIB
11633 #ifdef I_STDLIB
11634 #include <stdlib.h>
11635 #endif
11636 #$i_fcntl I_FCNTL
11637 #ifdef I_FCNTL
11638 #include <fcntl.h>
11639 #endif
11640 #define MY_O_NONBLOCK $o_nonblock
11641 #ifndef errno  /* XXX need better Configure test */
11642 extern int errno;
11643 #endif
11644 #$i_unistd I_UNISTD
11645 #ifdef I_UNISTD
11646 #include <unistd.h>
11647 #endif
11648 #$i_string I_STRING
11649 #ifdef I_STRING
11650 #include <string.h>
11651 #else
11652 #include <strings.h>
11653 #endif
11654 $signal_t blech(x) int x; { exit(3); }
11655 EOCP
11656         $cat >> try.c <<'EOCP'
11657 int main()
11658 {
11659         int pd[2];
11660         int pu[2];
11661         char buf[1];
11662         char string[100];
11663
11664         pipe(pd);       /* Down: child -> parent */
11665         pipe(pu);       /* Up: parent -> child */
11666         if (0 != fork()) {
11667                 int ret;
11668                 close(pd[1]);   /* Parent reads from pd[0] */
11669                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11670 #ifdef F_SETFL
11671                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11672                         exit(1);
11673 #else
11674                 exit(4);
11675 #endif
11676                 signal(SIGALRM, blech);
11677                 alarm(5);
11678                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11679                         exit(2);
11680                 sprintf(string, "%d\n", ret);
11681                 write(2, string, strlen(string));
11682                 alarm(0);
11683 #ifdef EAGAIN
11684                 if (errno == EAGAIN) {
11685                         printf("EAGAIN\n");
11686                         goto ok;
11687                 }
11688 #endif
11689 #ifdef EWOULDBLOCK
11690                 if (errno == EWOULDBLOCK)
11691                         printf("EWOULDBLOCK\n");
11692 #endif
11693         ok:
11694                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11695                 sleep(2);                               /* Give it time to close our pipe */
11696                 alarm(5);
11697                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11698                 alarm(0);
11699                 sprintf(string, "%d\n", ret);
11700                 write(4, string, strlen(string));
11701                 exit(0);
11702         }
11703
11704         close(pd[0]);                   /* We write to pd[1] */
11705         close(pu[1]);                   /* We read from pu[0] */
11706         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11707         close(pd[1]);                   /* Pipe pd is now fully closed! */
11708         exit(0);                                /* Bye bye, thank you for playing! */
11709 }
11710 EOCP
11711         set try
11712         if eval $compile_ok; then
11713                 echo "$startsh" >mtry
11714                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11715                 chmod +x mtry
11716                 ./mtry >/dev/null 2>&1
11717                 case $? in
11718                 0) eagain=`$cat try.out`;;
11719                 1) echo "Could not perform non-blocking setting!";;
11720                 2) echo "I did a successful read() for something that was not there!";;
11721                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11722                 4) echo "Could not find F_SETFL!";;
11723                 *) echo "Something terribly wrong happened during testing.";;
11724                 esac
11725                 rd_nodata=`$cat try.ret`
11726                 echo "A read() system call with no data present returns $rd_nodata."
11727                 case "$rd_nodata" in
11728                 0|-1) ;;
11729                 *)
11730                         echo "(That's peculiar, fixing that to be -1.)"
11731                         rd_nodata=-1
11732                         ;;
11733                 esac
11734                 case "$eagain" in
11735                 '')
11736                         echo "Forcing errno EAGAIN on read() with no data available."
11737                         eagain=EAGAIN
11738                         ;;
11739                 *)
11740                         echo "Your read() sets errno to $eagain when no data is available."
11741                         ;;
11742                 esac
11743                 status=`$cat try.err`
11744                 case "$status" in
11745                 0) echo "And it correctly returns 0 to signal EOF.";;
11746                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11747                 *) echo "However, your read() returns '$status' on EOF??";;
11748                 esac
11749                 val="$define"
11750                 if test "$status" = "$rd_nodata"; then
11751                         echo "WARNING: you can't distinguish between EOF and no data!"
11752                         val="$undef"
11753                 fi
11754         else
11755                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11756                 eagain=EAGAIN
11757         fi
11758         set d_eofnblk
11759         eval $setvar
11760         ;;
11761 *)
11762         echo "Using $hint value $eagain."
11763         echo "Your read() returns $rd_nodata when no data is present."
11764         case "$d_eofnblk" in
11765         "$define") echo "And you can see EOF because read() returns 0.";;
11766         "$undef") echo "But you can't see EOF status from read() returned value.";;
11767         *)
11768                 echo "(Assuming you can't see EOF status from read anyway.)"
11769                 d_eofnblk=$undef
11770                 ;;
11771         esac
11772         ;;
11773 esac
11774 $rm -f try try.* .out core head.c mtry
11775
11776 : see if _ptr and _cnt from stdio act std
11777 echo " "
11778
11779 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11780         echo "(Looks like you have stdio.h from BSD.)"
11781         case "$stdio_ptr" in
11782         '') stdio_ptr='((fp)->_p)'
11783                 ptr_lval=$define
11784                 ;;
11785         *)      ptr_lval=$d_stdio_ptr_lval;;
11786         esac
11787         case "$stdio_cnt" in
11788         '') stdio_cnt='((fp)->_r)'
11789                 cnt_lval=$define
11790                 ;;
11791         *)      cnt_lval=$d_stdio_cnt_lval;;
11792         esac
11793         case "$stdio_base" in
11794         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11795         esac
11796         case "$stdio_bufsiz" in
11797         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11798         esac
11799 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11800         echo "(Looks like you have stdio.h from Linux.)"
11801         case "$stdio_ptr" in
11802         '') stdio_ptr='((fp)->_IO_read_ptr)'
11803                 ptr_lval=$define
11804                 ;;
11805         *)      ptr_lval=$d_stdio_ptr_lval;;
11806         esac
11807         case "$stdio_cnt" in
11808         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11809                 cnt_lval=$undef
11810                 ;;
11811         *)      cnt_lval=$d_stdio_cnt_lval;;
11812         esac
11813         case "$stdio_base" in
11814         '') stdio_base='((fp)->_IO_read_base)';;
11815         esac
11816         case "$stdio_bufsiz" in
11817         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11818         esac
11819 else
11820         case "$stdio_ptr" in
11821         '') stdio_ptr='((fp)->_ptr)'
11822                 ptr_lval=$define
11823                 ;;
11824         *)      ptr_lval=$d_stdio_ptr_lval;;
11825         esac
11826         case "$stdio_cnt" in
11827         '') stdio_cnt='((fp)->_cnt)'
11828                 cnt_lval=$define
11829                 ;;
11830         *)      cnt_lval=$d_stdio_cnt_lval;;
11831         esac
11832         case "$stdio_base" in
11833         '') stdio_base='((fp)->_base)';;
11834         esac
11835         case "$stdio_bufsiz" in
11836         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11837         esac
11838 fi
11839
11840 : test whether _ptr and _cnt really work
11841 echo "Checking how std your stdio is..." >&4
11842 $cat >try.c <<EOP
11843 #include <stdio.h>
11844 #$i_stdlib I_STDLIB
11845 #ifdef I_STDLIB
11846 #include <stdlib.h>
11847 #endif
11848 #define FILE_ptr(fp)    $stdio_ptr
11849 #define FILE_cnt(fp)    $stdio_cnt
11850 int main() {
11851         FILE *fp = fopen("try.c", "r");
11852         char c = getc(fp);
11853         if (
11854                 18 <= FILE_cnt(fp) &&
11855                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11856         )
11857                 exit(0);
11858         exit(1);
11859 }
11860 EOP
11861 val="$undef"
11862 set try
11863 if eval $compile && $to try.c; then
11864         if $run ./try; then
11865                 echo "Your stdio acts pretty std."
11866                 val="$define"
11867         else
11868                 echo "Your stdio isn't very std."
11869         fi
11870 else
11871         echo "Your stdio doesn't appear very std."
11872 fi
11873 $rm -f try.c try
11874
11875 # glibc 2.2.90 and above apparently change stdio streams so Perl's
11876 # direct buffer manipulation no longer works.  The Configure tests
11877 # should be changed to correctly detect this, but until then,
11878 # the following check should at least let perl compile and run.
11879 # (This quick fix should be updated before 5.8.1.)
11880 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
11881 # A. Dougherty, June 3, 2002.
11882 case "$d_gnulibc" in
11883 $define)
11884         case "$gnulibc_version" in
11885         2.[01]*)  ;;
11886         2.2) ;;
11887         2.2.[0-9]) ;;
11888         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11889                 val="$undef"
11890                 ;;
11891         esac
11892         ;;
11893 esac
11894 set d_stdstdio
11895 eval $setvar
11896
11897 : Can _ptr be used as an lvalue?
11898 case "$d_stdstdio$ptr_lval" in
11899 $define$define) val=$define ;;
11900 *) val=$undef ;;
11901 esac
11902 set d_stdio_ptr_lval
11903 eval $setvar
11904
11905 : Can _cnt be used as an lvalue?
11906 case "$d_stdstdio$cnt_lval" in
11907 $define$define) val=$define ;;
11908 *) val=$undef ;;
11909 esac
11910 set d_stdio_cnt_lval
11911 eval $setvar
11912
11913
11914 : test whether setting _ptr sets _cnt as a side effect
11915 d_stdio_ptr_lval_sets_cnt="$undef"
11916 d_stdio_ptr_lval_nochange_cnt="$undef"
11917 case "$d_stdio_ptr_lval$d_stdstdio" in
11918 $define$define)
11919         echo "Checking to see what happens if we set the stdio ptr..." >&4
11920 $cat >try.c <<EOP
11921 #include <stdio.h>
11922 /* Can we scream? */
11923 /* Eat dust sed :-) */
11924 /* In the buffer space, no one can hear you scream. */
11925 #$i_stdlib I_STDLIB
11926 #ifdef I_STDLIB
11927 #include <stdlib.h>
11928 #endif
11929 #define FILE_ptr(fp)    $stdio_ptr
11930 #define FILE_cnt(fp)    $stdio_cnt
11931 #include <sys/types.h>
11932 int main() {
11933         FILE *fp = fopen("try.c", "r");
11934         int c;
11935         char *ptr;
11936         size_t cnt;
11937         if (!fp) {
11938             puts("Fail even to read");
11939             exit(1);
11940         }
11941         c = getc(fp); /* Read away the first # */
11942         if (c == EOF) {
11943             puts("Fail even to read");
11944             exit(1);
11945         }
11946         if (!(
11947                 18 <= FILE_cnt(fp) &&
11948                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11949         )) {
11950                 puts("Fail even to read");
11951                 exit (1);
11952         }
11953         ptr = (char*) FILE_ptr(fp);
11954         cnt = (size_t)FILE_cnt(fp);
11955
11956         FILE_ptr(fp) += 42;
11957
11958         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11959                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11960                 exit (1);
11961         }
11962         if (FILE_cnt(fp) <= 20) {
11963                 printf ("Fail (<20 chars to test)");
11964                 exit (1);
11965         }
11966         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11967                 puts("Fail compare");
11968                 exit (1);
11969         }
11970         if (cnt == FILE_cnt(fp)) {
11971                 puts("Pass_unchanged");
11972                 exit (0);
11973         }       
11974         if (FILE_cnt(fp) == (cnt - 42)) {
11975                 puts("Pass_changed");
11976                 exit (0);
11977         }
11978         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11979         return 1;
11980
11981 }
11982 EOP
11983         set try
11984         if eval $compile && $to try.c; then
11985                 case `$run ./try` in
11986                 Pass_changed)
11987                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11988                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11989                 Pass_unchanged)
11990                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11991                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11992                 Fail*)
11993                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11994                 *)
11995                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11996         esac
11997         else
11998                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11999         fi
12000         $rm -f try.c try
12001         ;;
12002 esac
12003
12004 : see if _base is also standard
12005 val="$undef"
12006 case "$d_stdstdio" in
12007 $define)
12008         $cat >try.c <<EOP
12009 #include <stdio.h>
12010 #$i_stdlib I_STDLIB
12011 #ifdef I_STDLIB
12012 #include <stdlib.h>
12013 #endif
12014 #define FILE_base(fp)   $stdio_base
12015 #define FILE_bufsiz(fp) $stdio_bufsiz
12016 int main() {
12017         FILE *fp = fopen("try.c", "r");
12018         char c = getc(fp);
12019         if (
12020                 19 <= FILE_bufsiz(fp) &&
12021                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12022         )
12023                 exit(0);
12024         exit(1);
12025 }
12026 EOP
12027         set try
12028         if eval $compile && $to try.c; then
12029                 if $run ./try; then
12030                         echo "And its _base field acts std."
12031                         val="$define"
12032                 else
12033                         echo "But its _base field isn't std."
12034                 fi
12035         else
12036                 echo "However, it seems to be lacking the _base field."
12037         fi
12038         $rm -f try.c try
12039         ;;
12040 esac
12041 set d_stdiobase
12042 eval $setvar
12043
12044 : see if fast_stdio exists
12045 val="$undef"
12046 case "$d_stdstdio:$d_stdio_ptr_lval" in
12047 "$define:$define")
12048         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12049         *$define*)
12050                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12051                 val="$define"
12052                 ;;
12053         esac
12054         ;;
12055 esac
12056 set d_faststdio
12057 eval $setvar
12058
12059
12060
12061 : see if fchdir exists
12062 set fchdir d_fchdir
12063 eval $inlibc
12064
12065 : see if fchmod exists
12066 set fchmod d_fchmod
12067 eval $inlibc
12068
12069 : see if fchown exists
12070 set fchown d_fchown
12071 eval $inlibc
12072
12073 : see if this is an fcntl system
12074 set fcntl d_fcntl
12075 eval $inlibc
12076
12077 echo " "
12078 : See if fcntl-based locking works.
12079 $cat >try.c <<EOCP
12080 #$i_stdlib I_STDLIB
12081 #ifdef I_STDLIB
12082 #include <stdlib.h>
12083 #endif
12084 #include <unistd.h>
12085 #include <fcntl.h>
12086 #include <signal.h>
12087 $signal_t blech(x) int x; { exit(3); }
12088 int main() {
12089 #if defined(F_SETLK) && defined(F_SETLKW)
12090      struct flock flock;
12091      int retval, fd;
12092      fd = open("try.c", O_RDONLY);
12093      flock.l_type = F_RDLCK;
12094      flock.l_whence = SEEK_SET;
12095      flock.l_start = flock.l_len = 0;
12096      signal(SIGALRM, blech);
12097      alarm(10);
12098      retval = fcntl(fd, F_SETLK, &flock);
12099      close(fd);
12100      (retval < 0 ? exit(2) : exit(0));
12101 #else
12102      exit(2);
12103 #endif
12104 }
12105 EOCP
12106 echo "Checking if fcntl-based file locking works... "
12107 case "$d_fcntl" in
12108 "$define")
12109         set try
12110         if eval $compile_ok; then
12111                 if $run ./try; then
12112                         echo "Yes, it seems to work."
12113                         val="$define"
12114                 else
12115                         echo "Nope, it didn't work."
12116                         val="$undef"
12117                         case "$?" in
12118                         3) $cat >&4 <<EOM
12119 ***
12120 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12121 *** This is (almost) impossible.
12122 *** If your NFS lock daemons are not feeling well, something like
12123 *** this may happen, please investigate.  Cannot continue, aborting.
12124 ***
12125 EOM
12126                                 exit 1
12127                                 ;;
12128                         esac
12129                 fi
12130         else
12131                 echo "I'm unable to compile the test program, so I'll assume not."
12132                 val="$undef"
12133         fi
12134         ;;
12135 *) val="$undef";
12136         echo "Nope, since you don't even have fcntl()."
12137         ;;
12138 esac
12139 set d_fcntl_can_lock
12140 eval $setvar
12141 $rm -f try*
12142
12143
12144 : check for fd_set items
12145 $cat <<EOM
12146
12147 Checking to see how well your C compiler handles fd_set and friends ...
12148 EOM
12149 $cat >try.c <<EOCP
12150 #$i_stdlib I_STDLIB
12151 #ifdef I_STDLIB
12152 #include <stdlib.h>
12153 #endif
12154 #$i_systime I_SYS_TIME
12155 #$i_sysselct I_SYS_SELECT
12156 #$d_socket HAS_SOCKET
12157 #include <sys/types.h>
12158 #ifdef HAS_SOCKET
12159 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12160 #endif
12161 #ifdef I_SYS_TIME
12162 #include <sys/time.h>
12163 #endif
12164 #ifdef I_SYS_SELECT
12165 #include <sys/select.h>
12166 #endif
12167 int main() {
12168         fd_set fds;
12169
12170 #ifdef TRYBITS
12171         if(fds.fds_bits);
12172 #endif
12173
12174 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12175         exit(0);
12176 #else
12177         exit(1);
12178 #endif
12179 }
12180 EOCP
12181 set try -DTRYBITS
12182 if eval $compile; then
12183         d_fds_bits="$define"
12184         d_fd_set="$define"
12185         echo "Well, your system knows about the normal fd_set typedef..." >&4
12186         if $run ./try; then
12187                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12188                 d_fd_macros="$define"
12189         else
12190                 $cat >&4 <<'EOM'
12191 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12192 EOM
12193                 d_fd_macros="$undef"
12194         fi
12195 else
12196         $cat <<'EOM'
12197 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12198 EOM
12199         set try
12200         if eval $compile; then
12201                 d_fds_bits="$undef"
12202                 d_fd_set="$define"
12203                 echo "Well, your system has some sort of fd_set available..." >&4
12204                 if $run ./try; then
12205                         echo "and you have the normal fd_set macros." >&4
12206                         d_fd_macros="$define"
12207                 else
12208                         $cat <<'EOM'
12209 but not the normal fd_set macros!  Gross!  More work for me...
12210 EOM
12211                         d_fd_macros="$undef"
12212                 fi
12213         else
12214         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12215                 d_fd_set="$undef"
12216                 d_fds_bits="$undef"
12217                 d_fd_macros="$undef"
12218         fi
12219 fi
12220 $rm -f try try.*
12221
12222 : see if fgetpos exists
12223 set fgetpos d_fgetpos
12224 eval $inlibc
12225
12226 : see if finite exists
12227 set finite d_finite
12228 eval $inlibc
12229
12230 : see if finitel exists
12231 set finitel d_finitel
12232 eval $inlibc
12233
12234 : see if flock exists
12235 set flock d_flock
12236 eval $inlibc
12237
12238 : see if prototype for flock is available
12239 echo " "
12240 set d_flockproto flock $i_sysfile sys/file.h
12241 eval $hasproto
12242
12243 : see if fork exists
12244 set fork d_fork
12245 eval $inlibc
12246
12247 : see if fp_class exists
12248 set fp_class d_fp_class
12249 eval $inlibc
12250
12251 : see if pathconf exists
12252 set pathconf d_pathconf
12253 eval $inlibc
12254
12255 : see if fpathconf exists
12256 set fpathconf d_fpathconf
12257 eval $inlibc
12258
12259 : see if fpclass exists
12260 set fpclass d_fpclass
12261 eval $inlibc
12262
12263 : see if fpclassify exists
12264 set fpclassify d_fpclassify
12265 eval $inlibc
12266
12267 : see if fpclassl exists
12268 set fpclassl d_fpclassl
12269 eval $inlibc
12270
12271
12272 : check for fpos64_t
12273 echo " "
12274 echo "Checking to see if you have fpos64_t..." >&4
12275 $cat >try.c <<EOCP
12276 #include <stdio.h>
12277 int main() { fpos64_t x = 7; }
12278 EOCP
12279 set try
12280 if eval $compile; then
12281         val="$define"
12282         echo "You have fpos64_t."
12283 else
12284         val="$undef"
12285         echo "You do not have fpos64_t."
12286         case "$fpossize" in
12287         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12288         esac
12289 fi
12290 $rm -f try.* try
12291 set d_fpos64_t
12292 eval $setvar
12293
12294 : see if frexpl exists
12295 set frexpl d_frexpl
12296 eval $inlibc
12297
12298 : see if this is a sys/param system
12299 set sys/param.h i_sysparam
12300 eval $inhdr
12301
12302 : see if this is a sys/mount.h system
12303 set sys/mount.h i_sysmount
12304 eval $inhdr
12305
12306
12307 echo " "
12308 echo "Checking to see if your system supports struct fs_data..." >&4
12309 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12310 eval $hasstruct
12311 case "$d_fs_data_s" in
12312 "$define")      echo "Yes, it does."   ;;
12313 *)              echo "No, it doesn't." ;;
12314 esac
12315
12316 : see if fseeko exists
12317 set fseeko d_fseeko
12318 eval $inlibc
12319 case "$longsize" in
12320 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12321 esac
12322
12323 : see if fsetpos exists
12324 set fsetpos d_fsetpos
12325 eval $inlibc
12326
12327
12328 : see if fstatfs exists
12329 set fstatfs d_fstatfs
12330 eval $inlibc
12331
12332
12333 : see if statvfs exists
12334 set statvfs d_statvfs
12335 eval $inlibc
12336
12337 : see if fstatvfs exists
12338 set fstatvfs d_fstatvfs
12339 eval $inlibc
12340
12341
12342 : see if fsync exists
12343 set fsync d_fsync
12344 eval $inlibc
12345
12346 : see if ftello exists
12347 set ftello d_ftello
12348 eval $inlibc
12349 case "$longsize" in
12350 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12351 esac
12352
12353 : see if getcwd exists
12354 set getcwd d_getcwd
12355 eval $inlibc
12356
12357 : see if getespwnam exists
12358 set getespwnam d_getespwnam
12359 eval $inlibc
12360
12361
12362 : see if getfsstat exists
12363 set getfsstat d_getfsstat
12364 eval $inlibc
12365
12366 : see if getgrent exists
12367 set getgrent d_getgrent
12368 eval $inlibc
12369
12370 : see if getgrent_r exists
12371 set getgrent_r d_getgrent_r
12372 eval $inlibc
12373 case "$d_getgrent_r" in
12374 "$define")
12375         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12376         case "$d_getgrent_r_proto:$usethreads" in
12377         ":define")      d_getgrent_r_proto=define
12378                 set d_getgrent_r_proto getgrent_r $hdrs
12379                 eval $hasproto ;;
12380         *)      ;;
12381         esac
12382         case "$d_getgrent_r_proto" in
12383         define)
12384         case "$getgrent_r_proto" in
12385         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12386         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12387         esac
12388         case "$getgrent_r_proto" in
12389         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12390         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12391         esac
12392         case "$getgrent_r_proto" in
12393         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12394         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12395         esac
12396         case "$getgrent_r_proto" in
12397         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12398         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12399         esac
12400         case "$getgrent_r_proto" in
12401         ''|0) try='int getgrent_r(struct group*, char*, int);'
12402         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12403         esac
12404         case "$getgrent_r_proto" in
12405         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12406         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12407         esac
12408         case "$getgrent_r_proto" in
12409         ''|0)   d_getgrent_r=undef
12410                 getgrent_r_proto=0
12411                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12412         * )     case "$getgrent_r_proto" in
12413                 REENTRANT_PROTO*) ;;
12414                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12415                 esac
12416                 echo "Prototype: $try" ;;
12417         esac
12418         ;;
12419         *)      case "$usethreads" in
12420                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12421                 esac
12422                 d_getgrent_r=undef
12423                 getgrent_r_proto=0
12424                 ;;
12425         esac
12426         ;;
12427 *)      getgrent_r_proto=0
12428         ;;
12429 esac
12430
12431 : see if getgrgid_r exists
12432 set getgrgid_r d_getgrgid_r
12433 eval $inlibc
12434 case "$d_getgrgid_r" in
12435 "$define")
12436         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12437         case "$d_getgrgid_r_proto:$usethreads" in
12438         ":define")      d_getgrgid_r_proto=define
12439                 set d_getgrgid_r_proto getgrgid_r $hdrs
12440                 eval $hasproto ;;
12441         *)      ;;
12442         esac
12443         case "$d_getgrgid_r_proto" in
12444         define)
12445         case "$getgrgid_r_proto" in
12446         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12447         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12448         esac
12449         case "$getgrgid_r_proto" in
12450         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12451         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12452         esac
12453         case "$getgrgid_r_proto" in
12454         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12455         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12456         esac
12457         case "$getgrgid_r_proto" in
12458         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12459         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12460         esac
12461         case "$getgrgid_r_proto" in
12462         ''|0)   d_getgrgid_r=undef
12463                 getgrgid_r_proto=0
12464                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12465         * )     case "$getgrgid_r_proto" in
12466                 REENTRANT_PROTO*) ;;
12467                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12468                 esac
12469                 echo "Prototype: $try" ;;
12470         esac
12471         ;;
12472         *)      case "$usethreads" in
12473                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12474                 esac
12475                 d_getgrgid_r=undef
12476                 getgrgid_r_proto=0
12477                 ;;
12478         esac
12479         ;;
12480 *)      getgrgid_r_proto=0
12481         ;;
12482 esac
12483
12484 : see if getgrnam_r exists
12485 set getgrnam_r d_getgrnam_r
12486 eval $inlibc
12487 case "$d_getgrnam_r" in
12488 "$define")
12489         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12490         case "$d_getgrnam_r_proto:$usethreads" in
12491         ":define")      d_getgrnam_r_proto=define
12492                 set d_getgrnam_r_proto getgrnam_r $hdrs
12493                 eval $hasproto ;;
12494         *)      ;;
12495         esac
12496         case "$d_getgrnam_r_proto" in
12497         define)
12498         case "$getgrnam_r_proto" in
12499         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12500         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12501         esac
12502         case "$getgrnam_r_proto" in
12503         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12504         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12505         esac
12506         case "$getgrnam_r_proto" in
12507         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12508         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12509         esac
12510         case "$getgrnam_r_proto" in
12511         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12512         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12513         esac
12514         case "$getgrnam_r_proto" in
12515         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12516         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12517         esac
12518         case "$getgrnam_r_proto" in
12519         ''|0)   d_getgrnam_r=undef
12520                 getgrnam_r_proto=0
12521                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12522         * )     case "$getgrnam_r_proto" in
12523                 REENTRANT_PROTO*) ;;
12524                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12525                 esac
12526                 echo "Prototype: $try" ;;
12527         esac
12528         ;;
12529         *)      case "$usethreads" in
12530                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12531                 esac
12532                 d_getgrnam_r=undef
12533                 getgrnam_r_proto=0
12534                 ;;
12535         esac
12536         ;;
12537 *)      getgrnam_r_proto=0
12538         ;;
12539 esac
12540
12541 : see if gethostbyaddr exists
12542 set gethostbyaddr d_gethbyaddr
12543 eval $inlibc
12544
12545 : see if gethostbyname exists
12546 set gethostbyname d_gethbyname
12547 eval $inlibc
12548
12549 : see if gethostent exists
12550 set gethostent d_gethent
12551 eval $inlibc
12552
12553 : see how we will look up host name
12554 echo " "
12555 call=''
12556 if set gethostname val -f d_gethname; eval $csym; $val; then
12557         echo 'gethostname() found.' >&4
12558         d_gethname="$define"
12559         call=gethostname
12560 fi
12561 if set uname val -f d_uname; eval $csym; $val; then
12562         if ./xenix; then
12563                 $cat <<'EOM'
12564 uname() was found, but you're running xenix, and older versions of xenix
12565 have a broken uname(). If you don't really know whether your xenix is old
12566 enough to have a broken system call, use the default answer.
12567
12568 EOM
12569                 dflt=y
12570                 case "$d_uname" in
12571                 "$define") dflt=n;;
12572                 esac
12573                 rp='Is your uname() broken?'
12574                 . ./myread
12575                 case "$ans" in
12576                 n*) d_uname="$define"; call=uname;;
12577                 esac
12578         else
12579                 echo 'uname() found.' >&4
12580                 d_uname="$define"
12581                 case "$call" in
12582                 '') call=uname ;;
12583                 esac
12584         fi
12585 fi
12586 case "$d_gethname" in
12587 '') d_gethname="$undef";;
12588 esac
12589 case "$d_uname" in
12590 '') d_uname="$undef";;
12591 esac
12592 case "$d_uname$d_gethname" in
12593 *define*)
12594         dflt=n
12595         cat <<EOM
12596  
12597 Every now and then someone has a $call() that lies about the hostname
12598 but can't be fixed for political or economic reasons.  If you wish, I can
12599 pretend $call() isn't there and maybe compute hostname at run-time
12600 thanks to the '$phostname' command.
12601
12602 EOM
12603         rp="Shall I ignore $call() from now on?"
12604         . ./myread
12605         case "$ans" in
12606         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12607         esac;;
12608 esac
12609 case "$phostname" in
12610 '') aphostname='';;
12611 *) case "$aphostname" in
12612         /*) ;;
12613         *) set X $phostname
12614                 shift
12615                 file=$1
12616                 shift
12617                 file=`./loc $file $file $pth`
12618                 aphostname=`echo $file $*`
12619                 ;;
12620         esac
12621         ;;
12622 esac
12623 case "$d_uname$d_gethname" in
12624 *define*) ;;
12625 *)
12626         case "$phostname" in
12627         '')
12628                 echo "There will be no way for $package to get your hostname." >&4;;
12629         *)
12630         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12631                 ;;
12632         esac;;
12633 esac
12634 case "$d_phostname" in
12635 '') d_phostname="$undef";;
12636 esac
12637
12638 : see if gethostbyaddr_r exists
12639 set gethostbyaddr_r d_gethostbyaddr_r
12640 eval $inlibc
12641 case "$d_gethostbyaddr_r" in
12642 "$define")
12643         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12644         case "$d_gethostbyaddr_r_proto:$usethreads" in
12645         ":define")      d_gethostbyaddr_r_proto=define
12646                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12647                 eval $hasproto ;;
12648         *)      ;;
12649         esac
12650         case "$d_gethostbyaddr_r_proto" in
12651         define)
12652         case "$gethostbyaddr_r_proto" in
12653         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12654         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12655         esac
12656         case "$gethostbyaddr_r_proto" in
12657         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12658         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12659         esac
12660         case "$gethostbyaddr_r_proto" in
12661         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12662         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12663         esac
12664         case "$gethostbyaddr_r_proto" in
12665         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12666         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12667         esac
12668         case "$gethostbyaddr_r_proto" in
12669         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12670         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12671         esac
12672         case "$gethostbyaddr_r_proto" in
12673         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12674         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12675         esac
12676         case "$gethostbyaddr_r_proto" in
12677         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12678         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12679         esac
12680         case "$gethostbyaddr_r_proto" in
12681         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12682         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12683         esac
12684         case "$gethostbyaddr_r_proto" in
12685         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12686         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12687         esac
12688         case "$gethostbyaddr_r_proto" in
12689         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12690         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12691         esac
12692         case "$gethostbyaddr_r_proto" in
12693         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12694         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12695         esac
12696         case "$gethostbyaddr_r_proto" in
12697         ''|0)   d_gethostbyaddr_r=undef
12698                 gethostbyaddr_r_proto=0
12699                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12700         * )     case "$gethostbyaddr_r_proto" in
12701                 REENTRANT_PROTO*) ;;
12702                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12703                 esac
12704                 echo "Prototype: $try" ;;
12705         esac
12706         ;;
12707         *)      case "$usethreads" in
12708                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12709                 esac
12710                 d_gethostbyaddr_r=undef
12711                 gethostbyaddr_r_proto=0
12712                 ;;
12713         esac
12714         ;;
12715 *)      gethostbyaddr_r_proto=0
12716         ;;
12717 esac
12718
12719 : see if gethostbyname_r exists
12720 set gethostbyname_r d_gethostbyname_r
12721 eval $inlibc
12722 case "$d_gethostbyname_r" in
12723 "$define")
12724         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12725         case "$d_gethostbyname_r_proto:$usethreads" in
12726         ":define")      d_gethostbyname_r_proto=define
12727                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12728                 eval $hasproto ;;
12729         *)      ;;
12730         esac
12731         case "$d_gethostbyname_r_proto" in
12732         define)
12733         case "$gethostbyname_r_proto" in
12734         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12735         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12736         esac
12737         case "$gethostbyname_r_proto" in
12738         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12739         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12740         esac
12741         case "$gethostbyname_r_proto" in
12742         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12743         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12744         esac
12745         case "$gethostbyname_r_proto" in
12746         ''|0)   d_gethostbyname_r=undef
12747                 gethostbyname_r_proto=0
12748                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12749         * )     case "$gethostbyname_r_proto" in
12750                 REENTRANT_PROTO*) ;;
12751                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12752                 esac
12753                 echo "Prototype: $try" ;;
12754         esac
12755         ;;
12756         *)      case "$usethreads" in
12757                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12758                 esac
12759                 d_gethostbyname_r=undef
12760                 gethostbyname_r_proto=0
12761                 ;;
12762         esac
12763         ;;
12764 *)      gethostbyname_r_proto=0
12765         ;;
12766 esac
12767
12768 : see if gethostent_r exists
12769 set gethostent_r d_gethostent_r
12770 eval $inlibc
12771 case "$d_gethostent_r" in
12772 "$define")
12773         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12774         case "$d_gethostent_r_proto:$usethreads" in
12775         ":define")      d_gethostent_r_proto=define
12776                 set d_gethostent_r_proto gethostent_r $hdrs
12777                 eval $hasproto ;;
12778         *)      ;;
12779         esac
12780         case "$d_gethostent_r_proto" in
12781         define)
12782         case "$gethostent_r_proto" in
12783         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12784         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12785         esac
12786         case "$gethostent_r_proto" in
12787         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12788         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12789         esac
12790         case "$gethostent_r_proto" in
12791         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12792         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12793         esac
12794         case "$gethostent_r_proto" in
12795         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12796         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12797         esac
12798         case "$gethostent_r_proto" in
12799         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12800         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12801         esac
12802         case "$gethostent_r_proto" in
12803         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12804         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12805         esac
12806         case "$gethostent_r_proto" in
12807         ''|0)   d_gethostent_r=undef
12808                 gethostent_r_proto=0
12809                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12810         * )     case "$gethostent_r_proto" in
12811                 REENTRANT_PROTO*) ;;
12812                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12813                 esac
12814                 echo "Prototype: $try" ;;
12815         esac
12816         ;;
12817         *)      case "$usethreads" in
12818                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12819                 esac
12820                 d_gethostent_r=undef
12821                 gethostent_r_proto=0
12822                 ;;
12823         esac
12824         ;;
12825 *)      gethostent_r_proto=0
12826         ;;
12827 esac
12828
12829 : see if prototypes for various gethostxxx netdb.h functions are available
12830 echo " "
12831 set d_gethostprotos gethostent $i_netdb netdb.h
12832 eval $hasproto
12833
12834 : see if getitimer exists
12835 set getitimer d_getitimer
12836 eval $inlibc
12837
12838 : see if getlogin exists
12839 set getlogin d_getlogin
12840 eval $inlibc
12841
12842 : see if getlogin_r exists
12843 set getlogin_r d_getlogin_r
12844 eval $inlibc
12845 case "$d_getlogin_r" in
12846 "$define")
12847         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12848         case "$d_getlogin_r_proto:$usethreads" in
12849         ":define")      d_getlogin_r_proto=define
12850                 set d_getlogin_r_proto getlogin_r $hdrs
12851                 eval $hasproto ;;
12852         *)      ;;
12853         esac
12854         case "$d_getlogin_r_proto" in
12855         define)
12856         case "$getlogin_r_proto" in
12857         ''|0) try='int getlogin_r(char*, size_t);'
12858         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12859         esac
12860         case "$getlogin_r_proto" in
12861         ''|0) try='int getlogin_r(char*, int);'
12862         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12863         esac
12864         case "$getlogin_r_proto" in
12865         ''|0) try='char* getlogin_r(char*, size_t);'
12866         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12867         esac
12868         case "$getlogin_r_proto" in
12869         ''|0) try='char* getlogin_r(char*, int);'
12870         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12871         esac
12872         case "$getlogin_r_proto" in
12873         ''|0)   d_getlogin_r=undef
12874                 getlogin_r_proto=0
12875                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12876         * )     case "$getlogin_r_proto" in
12877                 REENTRANT_PROTO*) ;;
12878                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12879                 esac
12880                 echo "Prototype: $try" ;;
12881         esac
12882         ;;
12883         *)      case "$usethreads" in
12884                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12885                 esac
12886                 d_getlogin_r=undef
12887                 getlogin_r_proto=0
12888                 ;;
12889         esac
12890         ;;
12891 *)      getlogin_r_proto=0
12892         ;;
12893 esac
12894
12895 : see if getmnt exists
12896 set getmnt d_getmnt
12897 eval $inlibc
12898
12899 : see if getmntent exists
12900 set getmntent d_getmntent
12901 eval $inlibc
12902
12903 : see if getnetbyaddr exists
12904 set getnetbyaddr d_getnbyaddr
12905 eval $inlibc
12906
12907 : see if getnetbyname exists
12908 set getnetbyname d_getnbyname
12909 eval $inlibc
12910
12911 : see if getnetent exists
12912 set getnetent d_getnent
12913 eval $inlibc
12914
12915 : see if getnetbyaddr_r exists
12916 set getnetbyaddr_r d_getnetbyaddr_r
12917 eval $inlibc
12918 case "$d_getnetbyaddr_r" in
12919 "$define")
12920         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12921         case "$d_getnetbyaddr_r_proto:$usethreads" in
12922         ":define")      d_getnetbyaddr_r_proto=define
12923                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12924                 eval $hasproto ;;
12925         *)      ;;
12926         esac
12927         case "$d_getnetbyaddr_r_proto" in
12928         define)
12929         case "$getnetbyaddr_r_proto" in
12930         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12931         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12932         esac
12933         case "$getnetbyaddr_r_proto" in
12934         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12935         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12936         esac
12937         case "$getnetbyaddr_r_proto" in
12938         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12939         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12940         esac
12941         case "$getnetbyaddr_r_proto" in
12942         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12943         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12944         esac
12945         case "$getnetbyaddr_r_proto" in
12946         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12947         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12948         esac
12949         case "$getnetbyaddr_r_proto" in
12950         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12951         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12952         esac
12953         case "$getnetbyaddr_r_proto" in
12954         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12955         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12956         esac
12957         case "$getnetbyaddr_r_proto" in
12958         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12959         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12960         esac
12961         case "$getnetbyaddr_r_proto" in
12962         ''|0)   d_getnetbyaddr_r=undef
12963                 getnetbyaddr_r_proto=0
12964                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12965         * )     case "$getnetbyaddr_r_proto" in
12966                 REENTRANT_PROTO*) ;;
12967                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12968                 esac
12969                 echo "Prototype: $try" ;;
12970         esac
12971         ;;
12972         *)      case "$usethreads" in
12973                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12974                 esac
12975                 d_getnetbyaddr_r=undef
12976                 getnetbyaddr_r_proto=0
12977                 ;;
12978         esac
12979         ;;
12980 *)      getnetbyaddr_r_proto=0
12981         ;;
12982 esac
12983
12984 : see if getnetbyname_r exists
12985 set getnetbyname_r d_getnetbyname_r
12986 eval $inlibc
12987 case "$d_getnetbyname_r" in
12988 "$define")
12989         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12990         case "$d_getnetbyname_r_proto:$usethreads" in
12991         ":define")      d_getnetbyname_r_proto=define
12992                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12993                 eval $hasproto ;;
12994         *)      ;;
12995         esac
12996         case "$d_getnetbyname_r_proto" in
12997         define)
12998         case "$getnetbyname_r_proto" in
12999         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
13000         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
13001         esac
13002         case "$getnetbyname_r_proto" in
13003         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13004         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13005         esac
13006         case "$getnetbyname_r_proto" in
13007         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13008         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13009         esac
13010         case "$getnetbyname_r_proto" in
13011         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13012         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13013         esac
13014         case "$getnetbyname_r_proto" in
13015         ''|0)   d_getnetbyname_r=undef
13016                 getnetbyname_r_proto=0
13017                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13018         * )     case "$getnetbyname_r_proto" in
13019                 REENTRANT_PROTO*) ;;
13020                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13021                 esac
13022                 echo "Prototype: $try" ;;
13023         esac
13024         ;;
13025         *)      case "$usethreads" in
13026                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13027                 esac
13028                 d_getnetbyname_r=undef
13029                 getnetbyname_r_proto=0
13030                 ;;
13031         esac
13032         ;;
13033 *)      getnetbyname_r_proto=0
13034         ;;
13035 esac
13036
13037 : see if getnetent_r exists
13038 set getnetent_r d_getnetent_r
13039 eval $inlibc
13040 case "$d_getnetent_r" in
13041 "$define")
13042         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13043         case "$d_getnetent_r_proto:$usethreads" in
13044         ":define")      d_getnetent_r_proto=define
13045                 set d_getnetent_r_proto getnetent_r $hdrs
13046                 eval $hasproto ;;
13047         *)      ;;
13048         esac
13049         case "$d_getnetent_r_proto" in
13050         define)
13051         case "$getnetent_r_proto" in
13052         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13053         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13054         esac
13055         case "$getnetent_r_proto" in
13056         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13057         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13058         esac
13059         case "$getnetent_r_proto" in
13060         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13061         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13062         esac
13063         case "$getnetent_r_proto" in
13064         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13065         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13066         esac
13067         case "$getnetent_r_proto" in
13068         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13069         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13070         esac
13071         case "$getnetent_r_proto" in
13072         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13073         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13074         esac
13075         case "$getnetent_r_proto" in
13076         ''|0)   d_getnetent_r=undef
13077                 getnetent_r_proto=0
13078                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13079         * )     case "$getnetent_r_proto" in
13080                 REENTRANT_PROTO*) ;;
13081                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13082                 esac
13083                 echo "Prototype: $try" ;;
13084         esac
13085         ;;
13086         *)      case "$usethreads" in
13087                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13088                 esac
13089                 d_getnetent_r=undef
13090                 getnetent_r_proto=0
13091                 ;;
13092         esac
13093         ;;
13094 *)      getnetent_r_proto=0
13095         ;;
13096 esac
13097
13098 : see if prototypes for various getnetxxx netdb.h functions are available
13099 echo " "
13100 set d_getnetprotos getnetent $i_netdb netdb.h
13101 eval $hasproto
13102
13103 : see if getpagesize exists
13104 set getpagesize d_getpagsz
13105 eval $inlibc
13106
13107
13108 : see if getprotobyname exists
13109 set getprotobyname d_getpbyname
13110 eval $inlibc
13111
13112 : see if getprotobynumber exists
13113 set getprotobynumber d_getpbynumber
13114 eval $inlibc
13115
13116 : see if getprotoent exists
13117 set getprotoent d_getpent
13118 eval $inlibc
13119
13120 : see if getpgid exists
13121 set getpgid d_getpgid
13122 eval $inlibc
13123
13124 : see if getpgrp2 exists
13125 set getpgrp2 d_getpgrp2
13126 eval $inlibc
13127
13128 : see if getppid exists
13129 set getppid d_getppid
13130 eval $inlibc
13131
13132 : see if getpriority exists
13133 set getpriority d_getprior
13134 eval $inlibc
13135
13136 : see if getprotobyname_r exists
13137 set getprotobyname_r d_getprotobyname_r
13138 eval $inlibc
13139 case "$d_getprotobyname_r" in
13140 "$define")
13141         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13142         case "$d_getprotobyname_r_proto:$usethreads" in
13143         ":define")      d_getprotobyname_r_proto=define
13144                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13145                 eval $hasproto ;;
13146         *)      ;;
13147         esac
13148         case "$d_getprotobyname_r_proto" in
13149         define)
13150         case "$getprotobyname_r_proto" in
13151         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13152         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13153         esac
13154         case "$getprotobyname_r_proto" in
13155         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13156         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13157         esac
13158         case "$getprotobyname_r_proto" in
13159         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13160         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13161         esac
13162         case "$getprotobyname_r_proto" in
13163         ''|0)   d_getprotobyname_r=undef
13164                 getprotobyname_r_proto=0
13165                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13166         * )     case "$getprotobyname_r_proto" in
13167                 REENTRANT_PROTO*) ;;
13168                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13169                 esac
13170                 echo "Prototype: $try" ;;
13171         esac
13172         ;;
13173         *)      case "$usethreads" in
13174                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13175                 esac
13176                 d_getprotobyname_r=undef
13177                 getprotobyname_r_proto=0
13178                 ;;
13179         esac
13180         ;;
13181 *)      getprotobyname_r_proto=0
13182         ;;
13183 esac
13184
13185 : see if getprotobynumber_r exists
13186 set getprotobynumber_r d_getprotobynumber_r
13187 eval $inlibc
13188 case "$d_getprotobynumber_r" in
13189 "$define")
13190         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13191         case "$d_getprotobynumber_r_proto:$usethreads" in
13192         ":define")      d_getprotobynumber_r_proto=define
13193                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13194                 eval $hasproto ;;
13195         *)      ;;
13196         esac
13197         case "$d_getprotobynumber_r_proto" in
13198         define)
13199         case "$getprotobynumber_r_proto" in
13200         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13201         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13202         esac
13203         case "$getprotobynumber_r_proto" in
13204         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13205         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13206         esac
13207         case "$getprotobynumber_r_proto" in
13208         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13209         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13210         esac
13211         case "$getprotobynumber_r_proto" in
13212         ''|0)   d_getprotobynumber_r=undef
13213                 getprotobynumber_r_proto=0
13214                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13215         * )     case "$getprotobynumber_r_proto" in
13216                 REENTRANT_PROTO*) ;;
13217                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13218                 esac
13219                 echo "Prototype: $try" ;;
13220         esac
13221         ;;
13222         *)      case "$usethreads" in
13223                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13224                 esac
13225                 d_getprotobynumber_r=undef
13226                 getprotobynumber_r_proto=0
13227                 ;;
13228         esac
13229         ;;
13230 *)      getprotobynumber_r_proto=0
13231         ;;
13232 esac
13233
13234 : see if getprotoent_r exists
13235 set getprotoent_r d_getprotoent_r
13236 eval $inlibc
13237 case "$d_getprotoent_r" in
13238 "$define")
13239         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13240         case "$d_getprotoent_r_proto:$usethreads" in
13241         ":define")      d_getprotoent_r_proto=define
13242                 set d_getprotoent_r_proto getprotoent_r $hdrs
13243                 eval $hasproto ;;
13244         *)      ;;
13245         esac
13246         case "$d_getprotoent_r_proto" in
13247         define)
13248         case "$getprotoent_r_proto" in
13249         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13250         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13251         esac
13252         case "$getprotoent_r_proto" in
13253         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13254         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13255         esac
13256         case "$getprotoent_r_proto" in
13257         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13258         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13259         esac
13260         case "$getprotoent_r_proto" in
13261         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13262         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13263         esac
13264         case "$getprotoent_r_proto" in
13265         ''|0)   d_getprotoent_r=undef
13266                 getprotoent_r_proto=0
13267                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13268         * )     case "$getprotoent_r_proto" in
13269                 REENTRANT_PROTO*) ;;
13270                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13271                 esac
13272                 echo "Prototype: $try" ;;
13273         esac
13274         ;;
13275         *)      case "$usethreads" in
13276                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13277                 esac
13278                 d_getprotoent_r=undef
13279                 getprotoent_r_proto=0
13280                 ;;
13281         esac
13282         ;;
13283 *)      getprotoent_r_proto=0
13284         ;;
13285 esac
13286
13287 : see if prototypes for various getprotoxxx netdb.h functions are available
13288 echo " "
13289 set d_getprotoprotos getprotoent $i_netdb netdb.h
13290 eval $hasproto
13291
13292 : see if getprpwnam exists
13293 set getprpwnam d_getprpwnam
13294 eval $inlibc
13295
13296 : see if getpwent exists
13297 set getpwent d_getpwent
13298 eval $inlibc
13299
13300 : see if getpwent_r exists
13301 set getpwent_r d_getpwent_r
13302 eval $inlibc
13303 case "$d_getpwent_r" in
13304 "$define")
13305         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13306         case "$d_getpwent_r_proto:$usethreads" in
13307         ":define")      d_getpwent_r_proto=define
13308                 set d_getpwent_r_proto getpwent_r $hdrs
13309                 eval $hasproto ;;
13310         *)      ;;
13311         esac
13312         case "$d_getpwent_r_proto" in
13313         define)
13314         case "$getpwent_r_proto" in
13315         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13316         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13317         esac
13318         case "$getpwent_r_proto" in
13319         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13320         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13321         esac
13322         case "$getpwent_r_proto" in
13323         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13324         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13325         esac
13326         case "$getpwent_r_proto" in
13327         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13328         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13329         esac
13330         case "$getpwent_r_proto" in
13331         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13332         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13333         esac
13334         case "$getpwent_r_proto" in
13335         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13336         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13337         esac
13338         case "$getpwent_r_proto" in
13339         ''|0)   d_getpwent_r=undef
13340                 getpwent_r_proto=0
13341                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13342         * )     case "$getpwent_r_proto" in
13343                 REENTRANT_PROTO*) ;;
13344                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13345                 esac
13346                 echo "Prototype: $try" ;;
13347         esac
13348         ;;
13349         *)      case "$usethreads" in
13350                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13351                 esac
13352                 d_getpwent_r=undef
13353                 getpwent_r_proto=0
13354                 ;;
13355         esac
13356         ;;
13357 *)      getpwent_r_proto=0
13358         ;;
13359 esac
13360
13361 : see if getpwnam_r exists
13362 set getpwnam_r d_getpwnam_r
13363 eval $inlibc
13364 case "$d_getpwnam_r" in
13365 "$define")
13366         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13367         case "$d_getpwnam_r_proto:$usethreads" in
13368         ":define")      d_getpwnam_r_proto=define
13369                 set d_getpwnam_r_proto getpwnam_r $hdrs
13370                 eval $hasproto ;;
13371         *)      ;;
13372         esac
13373         case "$d_getpwnam_r_proto" in
13374         define)
13375         case "$getpwnam_r_proto" in
13376         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13377         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13378         esac
13379         case "$getpwnam_r_proto" in
13380         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13381         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13382         esac
13383         case "$getpwnam_r_proto" in
13384         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13385         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13386         esac
13387         case "$getpwnam_r_proto" in
13388         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13389         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13390         esac
13391         case "$getpwnam_r_proto" in
13392         ''|0)   d_getpwnam_r=undef
13393                 getpwnam_r_proto=0
13394                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13395         * )     case "$getpwnam_r_proto" in
13396                 REENTRANT_PROTO*) ;;
13397                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13398                 esac
13399                 echo "Prototype: $try" ;;
13400         esac
13401         ;;
13402         *)      case "$usethreads" in
13403                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13404                 esac
13405                 d_getpwnam_r=undef
13406                 getpwnam_r_proto=0
13407                 ;;
13408         esac
13409         ;;
13410 *)      getpwnam_r_proto=0
13411         ;;
13412 esac
13413
13414 : see if getpwuid_r exists
13415 set getpwuid_r d_getpwuid_r
13416 eval $inlibc
13417 case "$d_getpwuid_r" in
13418 "$define")
13419         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13420         case "$d_getpwuid_r_proto:$usethreads" in
13421         ":define")      d_getpwuid_r_proto=define
13422                 set d_getpwuid_r_proto getpwuid_r $hdrs
13423                 eval $hasproto ;;
13424         *)      ;;
13425         esac
13426         case "$d_getpwuid_r_proto" in
13427         define)
13428         case "$getpwuid_r_proto" in
13429         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13430         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13431         esac
13432         case "$getpwuid_r_proto" in
13433         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13434         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13435         esac
13436         case "$getpwuid_r_proto" in
13437         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13438         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13439         esac
13440         case "$getpwuid_r_proto" in
13441         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13442         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13443         esac
13444         case "$getpwuid_r_proto" in
13445         ''|0)   d_getpwuid_r=undef
13446                 getpwuid_r_proto=0
13447                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13448         * )     case "$getpwuid_r_proto" in
13449                 REENTRANT_PROTO*) ;;
13450                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13451                 esac
13452                 echo "Prototype: $try" ;;
13453         esac
13454         ;;
13455         *)      case "$usethreads" in
13456                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13457                 esac
13458                 d_getpwuid_r=undef
13459                 getpwuid_r_proto=0
13460                 ;;
13461         esac
13462         ;;
13463 *)      getpwuid_r_proto=0
13464         ;;
13465 esac
13466
13467
13468 : see if getservbyname exists
13469 set getservbyname d_getsbyname
13470 eval $inlibc
13471
13472 : see if getservbyport exists
13473 set getservbyport d_getsbyport
13474 eval $inlibc
13475
13476 : see if getservent exists
13477 set getservent d_getsent
13478 eval $inlibc
13479
13480 : see if getservbyname_r exists
13481 set getservbyname_r d_getservbyname_r
13482 eval $inlibc
13483 case "$d_getservbyname_r" in
13484 "$define")
13485         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13486         case "$d_getservbyname_r_proto:$usethreads" in
13487         ":define")      d_getservbyname_r_proto=define
13488                 set d_getservbyname_r_proto getservbyname_r $hdrs
13489                 eval $hasproto ;;
13490         *)      ;;
13491         esac
13492         case "$d_getservbyname_r_proto" in
13493         define)
13494         case "$getservbyname_r_proto" in
13495         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13496         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13497         esac
13498         case "$getservbyname_r_proto" in
13499         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13500         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13501         esac
13502         case "$getservbyname_r_proto" in
13503         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13504         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13505         esac
13506         case "$getservbyname_r_proto" in
13507         ''|0)   d_getservbyname_r=undef
13508                 getservbyname_r_proto=0
13509                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13510         * )     case "$getservbyname_r_proto" in
13511                 REENTRANT_PROTO*) ;;
13512                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13513                 esac
13514                 echo "Prototype: $try" ;;
13515         esac
13516         ;;
13517         *)      case "$usethreads" in
13518                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13519                 esac
13520                 d_getservbyname_r=undef
13521                 getservbyname_r_proto=0
13522                 ;;
13523         esac
13524         ;;
13525 *)      getservbyname_r_proto=0
13526         ;;
13527 esac
13528
13529 : see if getservbyport_r exists
13530 set getservbyport_r d_getservbyport_r
13531 eval $inlibc
13532 case "$d_getservbyport_r" in
13533 "$define")
13534         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13535         case "$d_getservbyport_r_proto:$usethreads" in
13536         ":define")      d_getservbyport_r_proto=define
13537                 set d_getservbyport_r_proto getservbyport_r $hdrs
13538                 eval $hasproto ;;
13539         *)      ;;
13540         esac
13541         case "$d_getservbyport_r_proto" in
13542         define)
13543         case "$getservbyport_r_proto" in
13544         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13545         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13546         esac
13547         case "$getservbyport_r_proto" in
13548         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13549         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13550         esac
13551         case "$getservbyport_r_proto" in
13552         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13553         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13554         esac
13555         case "$getservbyport_r_proto" in
13556         ''|0)   d_getservbyport_r=undef
13557                 getservbyport_r_proto=0
13558                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13559         * )     case "$getservbyport_r_proto" in
13560                 REENTRANT_PROTO*) ;;
13561                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13562                 esac
13563                 echo "Prototype: $try" ;;
13564         esac
13565         ;;
13566         *)      case "$usethreads" in
13567                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13568                 esac
13569                 d_getservbyport_r=undef
13570                 getservbyport_r_proto=0
13571                 ;;
13572         esac
13573         ;;
13574 *)      getservbyport_r_proto=0
13575         ;;
13576 esac
13577
13578 : see if getservent_r exists
13579 set getservent_r d_getservent_r
13580 eval $inlibc
13581 case "$d_getservent_r" in
13582 "$define")
13583         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13584         case "$d_getservent_r_proto:$usethreads" in
13585         ":define")      d_getservent_r_proto=define
13586                 set d_getservent_r_proto getservent_r $hdrs
13587                 eval $hasproto ;;
13588         *)      ;;
13589         esac
13590         case "$d_getservent_r_proto" in
13591         define)
13592         case "$getservent_r_proto" in
13593         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13594         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13595         esac
13596         case "$getservent_r_proto" in
13597         ''|0) try='int getservent_r(struct servent*, char*, int);'
13598         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13599         esac
13600         case "$getservent_r_proto" in
13601         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13602         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13603         esac
13604         case "$getservent_r_proto" in
13605         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13606         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13607         esac
13608         case "$getservent_r_proto" in
13609         ''|0)   d_getservent_r=undef
13610                 getservent_r_proto=0
13611                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13612         * )     case "$getservent_r_proto" in
13613                 REENTRANT_PROTO*) ;;
13614                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13615                 esac
13616                 echo "Prototype: $try" ;;
13617         esac
13618         ;;
13619         *)      case "$usethreads" in
13620                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13621                 esac
13622                 d_getservent_r=undef
13623                 getservent_r_proto=0
13624                 ;;
13625         esac
13626         ;;
13627 *)      getservent_r_proto=0
13628         ;;
13629 esac
13630
13631 : see if prototypes for various getservxxx netdb.h functions are available
13632 echo " "
13633 set d_getservprotos getservent $i_netdb netdb.h
13634 eval $hasproto
13635
13636 : see if getspnam exists
13637 set getspnam d_getspnam
13638 eval $inlibc
13639
13640 : see if this is a shadow.h system
13641 set shadow.h i_shadow
13642 eval $inhdr
13643
13644 : see if getspnam_r exists
13645 set getspnam_r d_getspnam_r
13646 eval $inlibc
13647 case "$d_getspnam_r" in
13648 "$define")
13649         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13650         case "$d_getspnam_r_proto:$usethreads" in
13651         ":define")      d_getspnam_r_proto=define
13652                 set d_getspnam_r_proto getspnam_r $hdrs
13653                 eval $hasproto ;;
13654         *)      ;;
13655         esac
13656         case "$d_getspnam_r_proto" in
13657         define)
13658         case "$getspnam_r_proto" in
13659         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13660         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13661         esac
13662         case "$getspnam_r_proto" in
13663         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13664         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13665         esac
13666         case "$getspnam_r_proto" in
13667         ''|0)   d_getspnam_r=undef
13668                 getspnam_r_proto=0
13669                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13670         * )     case "$getspnam_r_proto" in
13671                 REENTRANT_PROTO*) ;;
13672                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13673                 esac
13674                 echo "Prototype: $try" ;;
13675         esac
13676         ;;
13677         *)      case "$usethreads" in
13678                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13679                 esac
13680                 d_getspnam_r=undef
13681                 getspnam_r_proto=0
13682                 ;;
13683         esac
13684         ;;
13685 *)      getspnam_r_proto=0
13686         ;;
13687 esac
13688
13689 : see if gettimeofday or ftime exists
13690 set gettimeofday d_gettimeod
13691 eval $inlibc
13692 case "$d_gettimeod" in
13693 "$undef")
13694         set ftime d_ftime 
13695         eval $inlibc
13696         ;;
13697 *)
13698         val="$undef"; set d_ftime; eval $setvar
13699         ;;
13700 esac
13701 case "$d_gettimeod$d_ftime" in
13702 "$undef$undef")
13703         echo " "
13704         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13705         ;;
13706 esac
13707
13708 : see if gmtime_r exists
13709 set gmtime_r d_gmtime_r
13710 eval $inlibc
13711 case "$d_gmtime_r" in
13712 "$define")
13713         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13714         case "$d_gmtime_r_proto:$usethreads" in
13715         ":define")      d_gmtime_r_proto=define
13716                 set d_gmtime_r_proto gmtime_r $hdrs
13717                 eval $hasproto ;;
13718         *)      ;;
13719         esac
13720         case "$d_gmtime_r_proto" in
13721         define)
13722         case "$gmtime_r_proto" in
13723         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13724         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13725         esac
13726         case "$gmtime_r_proto" in
13727         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13728         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13729         esac
13730         case "$gmtime_r_proto" in
13731         ''|0)   d_gmtime_r=undef
13732                 gmtime_r_proto=0
13733                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13734         * )     case "$gmtime_r_proto" in
13735                 REENTRANT_PROTO*) ;;
13736                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13737                 esac
13738                 echo "Prototype: $try" ;;
13739         esac
13740         ;;
13741         *)      case "$usethreads" in
13742                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13743                 esac
13744                 d_gmtime_r=undef
13745                 gmtime_r_proto=0
13746                 ;;
13747         esac
13748         ;;
13749 *)      gmtime_r_proto=0
13750         ;;
13751 esac
13752
13753 : see if hasmntopt exists
13754 set hasmntopt d_hasmntopt
13755 eval $inlibc
13756
13757 : see if this is a netinet/in.h or sys/in.h system
13758 set netinet/in.h i_niin sys/in.h i_sysin
13759 eval $inhdr
13760
13761 : see if arpa/inet.h has to be included
13762 set arpa/inet.h i_arpainet
13763 eval $inhdr
13764
13765 : see if htonl --and friends-- exists
13766 val=''
13767 set htonl val
13768 eval $inlibc
13769
13770 : Maybe they are macros.
13771 case "$val" in
13772 $undef)
13773         $cat >htonl.c <<EOM
13774 #include <stdio.h>
13775 #include <sys/types.h>
13776 #$i_niin I_NETINET_IN
13777 #$i_sysin I_SYS_IN
13778 #$i_arpainet I_ARPA_INET
13779 #ifdef I_NETINET_IN
13780 #include <netinet/in.h>
13781 #endif
13782 #ifdef I_SYS_IN
13783 #include <sys/in.h>
13784 #endif
13785 #ifdef I_ARPA_INET
13786 #include <arpa/inet.h>
13787 #endif
13788 #ifdef htonl
13789 printf("Defined as a macro.");
13790 #endif
13791 EOM
13792         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13793         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13794                 val="$define"
13795                 echo "But it seems to be defined as a macro." >&4
13796         fi
13797         $rm -f htonl.?
13798         ;;
13799 esac
13800 set d_htonl
13801 eval $setvar
13802
13803 : see if ilogbl exists
13804 set ilogbl d_ilogbl
13805 eval $inlibc
13806
13807 : index or strchr
13808 echo " "
13809 if set index val -f; eval $csym; $val; then
13810         if set strchr val -f d_strchr; eval $csym; $val; then
13811                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13812                         val="$define"
13813                         vali="$undef"
13814                         echo "strchr() found." >&4
13815                 else
13816                         val="$undef"
13817                         vali="$define"
13818                         echo "index() found." >&4
13819                 fi
13820         else
13821                 val="$undef"
13822                 vali="$define"
13823                 echo "index() found." >&4
13824         fi
13825 else
13826         if set strchr val -f d_strchr; eval $csym; $val; then
13827                 val="$define"
13828                 vali="$undef"
13829                 echo "strchr() found." >&4
13830         else
13831                 echo "No index() or strchr() found!" >&4
13832                 val="$undef"
13833                 vali="$undef"
13834         fi
13835 fi
13836 set d_strchr; eval $setvar
13837 val="$vali"
13838 set d_index; eval $setvar
13839
13840 : check whether inet_aton exists
13841 set inet_aton d_inetaton
13842 eval $inlibc
13843
13844 : Look for isascii
13845 echo " "
13846 $cat >isascii.c <<EOCP
13847 #include <stdio.h>
13848 #include <ctype.h>
13849 #$i_stdlib I_STDLIB
13850 #ifdef I_STDLIB
13851 #include <stdlib.h>
13852 #endif
13853 int main() {
13854         int c = 'A';
13855         if (isascii(c))
13856                 exit(0);
13857         else
13858                 exit(1);
13859 }
13860 EOCP
13861 set isascii
13862 if eval $compile; then
13863         echo "isascii() found." >&4
13864         val="$define"
13865 else
13866         echo "isascii() NOT found." >&4
13867         val="$undef"
13868 fi
13869 set d_isascii
13870 eval $setvar
13871 $rm -f isascii*
13872
13873 : see if isfinite exists
13874 set isfinite d_isfinite
13875 eval $inlibc
13876
13877 : see if isinf exists
13878 set isinf d_isinf
13879 eval $inlibc
13880
13881 : see if isnan exists
13882 set isnan d_isnan
13883 eval $inlibc
13884
13885 : see if isnanl exists
13886 set isnanl d_isnanl
13887 eval $inlibc
13888
13889 : see if killpg exists
13890 set killpg d_killpg
13891 eval $inlibc
13892
13893 : see if lchown exists
13894 echo " "
13895 $cat > try.c <<'EOCP'
13896 /* System header to define __stub macros and hopefully few prototypes,
13897     which can conflict with char lchown(); below.  */
13898 #include <assert.h>
13899 /* Override any gcc2 internal prototype to avoid an error.  */
13900 /* We use char because int might match the return type of a gcc2
13901    builtin and then its argument prototype would still apply.  */
13902 char lchown();
13903 int main() {
13904     /*  The GNU C library defines this for functions which it implements
13905         to always fail with ENOSYS.  Some functions are actually named
13906         something starting with __ and the normal name is an alias.  */
13907 #if defined (__stub_lchown) || defined (__stub___lchown)
13908 choke me
13909 #else
13910 lchown();
13911 #endif
13912 ; return 0; }
13913 EOCP
13914 set try
13915 if eval $compile; then
13916     $echo "lchown() found." >&4
13917     val="$define"
13918 else
13919     $echo "lchown() NOT found." >&4
13920     val="$undef"
13921 fi
13922 set d_lchown
13923 eval $setvar
13924
13925 : See if number of significant digits in a double precision number is known
13926 echo " "
13927 $cat >ldbl_dig.c <<EOM
13928 #$i_limits I_LIMITS
13929 #$i_float I_FLOAT
13930 #ifdef I_LIMITS
13931 #include <limits.h>
13932 #endif
13933 #ifdef I_FLOAT
13934 #include <float.h>
13935 #endif
13936 #ifdef LDBL_DIG
13937 printf("Contains LDBL_DIG");
13938 #endif
13939 EOM
13940 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13941 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13942         echo "LDBL_DIG found." >&4
13943         val="$define"
13944 else
13945         echo "LDBL_DIG NOT found." >&4
13946         val="$undef"
13947 fi
13948 $rm -f ldbl_dig.?
13949 set d_ldbl_dig
13950 eval $setvar
13951
13952 : see if this is a math.h system
13953 set math.h i_math
13954 eval $inhdr
13955
13956 d_libm_lib_version="$undef"
13957 case $i_math in
13958     $define)
13959         : check to see if math.h defines _LIB_VERSION
13960         echo " "
13961         echo "Checking to see if your libm supports _LIB_VERSION..." >&4
13962         $cat >try.c <<EOCP
13963 #include <unistd.h>
13964 #include <math.h>
13965 int main (int argc, char *argv[])
13966 {
13967     printf ("%d\n", _LIB_VERSION);
13968     return (0);
13969     } /* main */
13970 EOCP
13971         set try
13972         if eval $compile; then
13973             foo=`$run ./try`
13974             echo "Yes, it does ($foo)" >&4
13975             d_libm_lib_version="$define"
13976         else
13977             echo "No, it does not (probably harmless)\n" >&4
13978             fi
13979         $rm -f try.* try core core.try.*
13980         ;;
13981
13982     esac
13983
13984 : see if link exists
13985 set link d_link
13986 eval $inlibc
13987
13988 : see if localtime_r exists
13989 set localtime_r d_localtime_r
13990 eval $inlibc
13991 case "$d_localtime_r" in
13992 "$define")
13993         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13994         case "$d_localtime_r_proto:$usethreads" in
13995         ":define")      d_localtime_r_proto=define
13996                 set d_localtime_r_proto localtime_r $hdrs
13997                 eval $hasproto ;;
13998         *)      ;;
13999         esac
14000         case "$d_localtime_r_proto" in
14001         define)
14002         case "$localtime_r_proto" in
14003         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
14004         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
14005         esac
14006         case "$localtime_r_proto" in
14007         ''|0) try='int localtime_r(const time_t*, struct tm*);'
14008         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
14009         esac
14010         case "$localtime_r_proto" in
14011         ''|0)   d_localtime_r=undef
14012                 localtime_r_proto=0
14013                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
14014         * )     case "$localtime_r_proto" in
14015                 REENTRANT_PROTO*) ;;
14016                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
14017                 esac
14018                 echo "Prototype: $try" ;;
14019         esac
14020         ;;
14021         *)      case "$usethreads" in
14022                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
14023                 esac
14024                 d_localtime_r=undef
14025                 localtime_r_proto=0
14026                 ;;
14027         esac
14028         ;;
14029 *)      localtime_r_proto=0
14030         ;;
14031 esac
14032
14033 : see if localeconv exists
14034 set localeconv d_locconv
14035 eval $inlibc
14036
14037 : see if lockf exists
14038 set lockf d_lockf
14039 eval $inlibc
14040
14041 : see if prototype for lseek is available
14042 echo " "
14043 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
14044 eval $hasproto
14045
14046 : see if lstat exists
14047 set lstat d_lstat
14048 eval $inlibc
14049
14050 : see if madvise exists
14051 set madvise d_madvise
14052 eval $inlibc
14053
14054 : see if mblen exists
14055 set mblen d_mblen
14056 eval $inlibc
14057
14058 : see if mbstowcs exists
14059 set mbstowcs d_mbstowcs
14060 eval $inlibc
14061
14062 : see if mbtowc exists
14063 set mbtowc d_mbtowc
14064 eval $inlibc
14065
14066 : see if memchr exists
14067 set memchr d_memchr
14068 eval $inlibc
14069
14070 : see if memcmp exists
14071 set memcmp d_memcmp
14072 eval $inlibc
14073
14074 : see if memcpy exists
14075 set memcpy d_memcpy
14076 eval $inlibc
14077
14078 : see if memmove exists
14079 set memmove d_memmove
14080 eval $inlibc
14081
14082 : see if memset exists
14083 set memset d_memset
14084 eval $inlibc
14085
14086 : see if mkdir exists
14087 set mkdir d_mkdir
14088 eval $inlibc
14089
14090 : see if mkdtemp exists
14091 set mkdtemp d_mkdtemp
14092 eval $inlibc
14093
14094 : see if mkfifo exists
14095 set mkfifo d_mkfifo
14096 eval $inlibc
14097
14098 : see if mkstemp exists
14099 set mkstemp d_mkstemp
14100 eval $inlibc
14101
14102 : see if mkstemps exists
14103 set mkstemps d_mkstemps
14104 eval $inlibc
14105
14106 : see if mktime exists
14107 set mktime d_mktime
14108 eval $inlibc
14109
14110 : see if this is a sys/mman.h system
14111 set sys/mman.h i_sysmman
14112 eval $inhdr
14113
14114 : see if mmap exists
14115 set mmap d_mmap
14116 eval $inlibc
14117 : see what shmat returns
14118 : default to something harmless
14119 mmaptype='void *'
14120 case "$i_sysmman$d_mmap" in
14121 "$define$define")
14122         $cat >mmap.c <<'END'
14123 #include <sys/mman.h>
14124 void *mmap();
14125 END
14126         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14127                 mmaptype='void *'
14128         else
14129                 mmaptype='caddr_t'
14130         fi
14131         echo "and it returns ($mmaptype)." >&4
14132         ;;
14133 esac
14134
14135
14136
14137 : see if sqrtl exists
14138 set sqrtl d_sqrtl
14139 eval $inlibc
14140
14141 : see if scalbnl exists
14142 set scalbnl d_scalbnl
14143 eval $inlibc
14144
14145 : see if modfl exists
14146 set modfl d_modfl
14147 eval $inlibc
14148
14149 : see if prototype for modfl is available
14150 echo " "
14151 set d_modflproto modfl $i_math math.h
14152 eval $hasproto
14153
14154 d_modfl_pow32_bug="$undef"
14155
14156 case "$d_longdbl$d_modfl" in
14157 $define$define)
14158         $cat <<EOM
14159 Checking to see whether your modfl() is okay for large values...
14160 EOM
14161 $cat >try.c <<EOCP
14162 #include <math.h> 
14163 #include <stdio.h>
14164 EOCP
14165 if $test "X$d_modflproto" != "X$define"; then
14166         $cat >>try.c <<EOCP
14167 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
14168 long double modfl (long double, long double *);
14169 EOCP
14170 fi
14171 $cat >>try.c <<EOCP
14172 int main() {
14173     long double nv = 4294967303.15;
14174     long double v, w;
14175     v = modfl(nv, &w);         
14176 #ifdef __GLIBC__
14177     printf("glibc");
14178 #endif
14179     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14180     return 0;
14181 }
14182 EOCP
14183         case "$osname:$gccversion" in
14184         aix:)   saveccflags="$ccflags"
14185                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14186         esac
14187         set try
14188         if eval $compile; then
14189                 foo=`$run ./try`
14190                 case "$foo" in
14191                 *" 4294967303.150000 1.150000 4294967302.000000")
14192                         echo >&4 "Your modfl() is broken for large values."
14193                         d_modfl_pow32_bug="$define"
14194                         case "$foo" in
14195                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14196                         ;;
14197                         esac
14198                         ;;
14199                 *" 4294967303.150000 0.150000 4294967303.000000")
14200                         echo >&4 "Your modfl() seems okay for large values."
14201                         ;;
14202                 *)      echo >&4 "I don't understand your modfl() at all."
14203                         d_modfl="$undef"
14204                         ;;
14205                 esac
14206                 $rm -f try.* try core core.try.*
14207         else
14208                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14209                 d_modfl="$undef"
14210         fi
14211         case "$osname:$gccversion" in
14212         aix:)   ccflags="$saveccflags" ;; # restore
14213         esac
14214         ;;
14215 esac
14216
14217 if $test "$uselongdouble" = "$define"; then
14218     message=""
14219     if $test "$d_sqrtl" != "$define"; then
14220         message="$message sqrtl"
14221     fi
14222     if $test "$d_modfl" != "$define"; then
14223         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14224             echo "You have both aintl and copysignl, so I can emulate modfl."
14225         else
14226             message="$message modfl"
14227         fi
14228     fi
14229     if $test "$d_frexpl" != "$define"; then
14230         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14231             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14232         else
14233             message="$message frexpl"
14234         fi
14235     fi
14236
14237     if $test "$message" != ""; then
14238         $cat <<EOM >&4
14239
14240 *** You requested the use of long doubles but you do not seem to have
14241 *** the following mathematical functions needed for long double support:
14242 ***    $message
14243 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14244 *** Cannot continue, aborting.
14245
14246 EOM
14247
14248         exit 1
14249     fi
14250 fi
14251
14252 : see if mprotect exists
14253 set mprotect d_mprotect
14254 eval $inlibc
14255
14256 : see if msgctl exists
14257 set msgctl d_msgctl
14258 eval $inlibc
14259
14260 : see if msgget exists
14261 set msgget d_msgget
14262 eval $inlibc
14263
14264 : see if msgsnd exists
14265 set msgsnd d_msgsnd
14266 eval $inlibc
14267
14268 : see if msgrcv exists
14269 set msgrcv d_msgrcv
14270 eval $inlibc
14271
14272 : see how much of the 'msg*(2)' library is present.
14273 h_msg=true
14274 echo " "
14275 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14276 *"$undef"*) h_msg=false;;
14277 esac
14278 case "$osname" in
14279 freebsd)
14280     case "`ipcs 2>&1`" in
14281     "SVID messages"*"not configured"*)
14282         echo "Your $osname does not have the msg*(2) configured." >&4
14283         h_msg=false
14284         val="$undef"
14285         set msgctl d_msgctl
14286         eval $setvar
14287         set msgget d_msgget
14288         eval $setvar
14289         set msgsnd d_msgsnd
14290         eval $setvar
14291         set msgrcv d_msgrcv
14292         eval $setvar
14293         ;;
14294     esac
14295     ;;
14296 esac
14297 : we could also check for sys/ipc.h ...
14298 if $h_msg && $test `./findhdr sys/msg.h`; then
14299         echo "You have the full msg*(2) library." >&4
14300         val="$define"
14301 else
14302         echo "You don't have the full msg*(2) library." >&4
14303         val="$undef"
14304 fi
14305 set d_msg
14306 eval $setvar
14307
14308
14309 echo " "
14310 echo "Checking to see if your system supports struct msghdr..." >&4
14311 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14312 eval $hasstruct
14313 case "$d_msghdr_s" in
14314 "$define")      echo "Yes, it does."   ;;
14315 *)              echo "No, it doesn't." ;;
14316 esac
14317
14318
14319 : see if msync exists
14320 set msync d_msync
14321 eval $inlibc
14322
14323 : see if munmap exists
14324 set munmap d_munmap
14325 eval $inlibc
14326
14327 : see if nice exists
14328 set nice d_nice
14329 eval $inlibc
14330
14331 : see if this is a langinfo.h system
14332 set langinfo.h i_langinfo
14333 eval $inhdr
14334
14335 : see if nl_langinfo exists
14336 set nl_langinfo d_nl_langinfo
14337 eval $inlibc
14338
14339 : check for length of character
14340 echo " "
14341 case "$charsize" in
14342 '')
14343         echo "Checking to see how big your characters are (hey, you never know)..." >&4
14344         $cat >try.c <<EOCP
14345 #include <stdio.h>
14346 #$i_stdlib I_STDLIB
14347 #ifdef I_STDLIB
14348 #include <stdlib.h>
14349 #endif
14350 int main()
14351 {
14352     printf("%d\n", (int)sizeof(char));
14353     exit(0);
14354 }
14355 EOCP
14356         set try
14357         if eval $compile_ok; then
14358                 dflt=`$run ./try`
14359         else
14360                 dflt='1'
14361                 echo "(I can't seem to compile the test program.  Guessing...)"
14362         fi
14363         ;;
14364 *)
14365         dflt="$charsize"
14366         ;;
14367 esac
14368 rp="What is the size of a character (in bytes)?"
14369 . ./myread
14370 charsize="$ans"
14371 $rm -f try.c try
14372
14373 : check for volatile keyword
14374 echo " "
14375 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14376 $cat >try.c <<'EOCP'
14377 int main()
14378 {
14379         typedef struct _goo_struct goo_struct;
14380         goo_struct * volatile goo = ((goo_struct *)0);
14381         struct _goo_struct {
14382                 long long_int;
14383                 int reg_int;
14384                 char char_var;
14385         };
14386         typedef unsigned short foo_t;
14387         char *volatile foo;
14388         volatile int bar;
14389         volatile foo_t blech;
14390         foo = foo;
14391 }
14392 EOCP
14393 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14394         val="$define"
14395         echo "Yup, it does."
14396 else
14397         val="$undef"
14398         echo "Nope, it doesn't."
14399 fi
14400 set d_volatile
14401 eval $setvar
14402 $rm -f try.*
14403
14404
14405 echo " "
14406 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14407
14408 case "$use64bitint:$d_quad:$quadtype" in
14409 define:define:?*)
14410         ivtype="$quadtype"
14411         uvtype="$uquadtype"
14412         ivsize=8
14413         uvsize=8
14414         ;;
14415 *)      ivtype="long"
14416         uvtype="unsigned long"
14417         ivsize=$longsize
14418         uvsize=$longsize
14419         ;;
14420 esac
14421
14422 case "$uselongdouble:$d_longdbl" in
14423 define:define)
14424         nvtype="long double"
14425         nvsize=$longdblsize
14426         ;;
14427 *)      nvtype=double
14428         nvsize=$doublesize
14429         ;;
14430 esac
14431
14432 $echo "(IV will be "$ivtype", $ivsize bytes)"
14433 $echo "(UV will be "$uvtype", $uvsize bytes)"
14434 $echo "(NV will be "$nvtype", $nvsize bytes)"
14435
14436 $cat >try.c <<EOCP
14437 #$i_inttypes I_INTTYPES
14438 #ifdef I_INTTYPES
14439 #include <inttypes.h>
14440 #endif
14441 #include <stdio.h>
14442 int main() {
14443 #ifdef INT8
14444    int8_t i =  INT8_MAX;
14445   uint8_t u = UINT8_MAX;
14446   printf("int8_t\n");
14447 #endif
14448 #ifdef INT16
14449    int16_t i =  INT16_MAX;
14450   uint16_t i = UINT16_MAX;
14451   printf("int16_t\n");
14452 #endif
14453 #ifdef INT32
14454    int32_t i =  INT32_MAX;
14455   uint32_t u = UINT32_MAX;
14456   printf("int32_t\n");
14457 #endif
14458 }
14459 EOCP
14460
14461 case "$i8type" in
14462 '')     case "$charsize" in
14463         1)      i8type=char
14464                 u8type="unsigned char"
14465                 i8size=$charsize
14466                 u8size=$charsize
14467                 ;;
14468         esac
14469         ;;
14470 esac
14471 case "$i8type" in
14472 '')     set try -DINT8
14473         if eval $compile; then
14474                 case "`$run ./try`" in
14475                 int8_t) i8type=int8_t
14476                         u8type=uint8_t
14477                         i8size=1
14478                         u8size=1
14479                         ;;
14480                 esac
14481         fi
14482         ;;
14483 esac
14484 case "$i8type" in
14485 '')     if $test $charsize -ge 1; then
14486                 i8type=char
14487                 u8type="unsigned char"
14488                 i8size=$charsize
14489                 u8size=$charsize
14490         fi
14491         ;;
14492 esac
14493
14494 case "$i16type" in
14495 '')     case "$shortsize" in
14496         2)      i16type=short
14497                 u16type="unsigned short"
14498                 i16size=$shortsize
14499                 u16size=$shortsize
14500                 ;;
14501         esac
14502         ;;
14503 esac
14504 case "$i16type" in
14505 '')     set try -DINT16
14506         if eval $compile; then
14507                 case "`$run ./try`" in
14508                 int16_t)
14509                         i16type=int16_t
14510                         u16type=uint16_t
14511                         i16size=2
14512                         u16size=2
14513                         ;;
14514                 esac
14515         fi
14516         ;;
14517 esac
14518 case "$i16type" in
14519 '')     if $test $shortsize -ge 2; then
14520                 i16type=short
14521                 u16type="unsigned short"
14522                 i16size=$shortsize
14523                 u16size=$shortsize
14524         fi
14525         ;;
14526 esac
14527
14528 case "$i32type" in
14529 '')     case "$longsize" in
14530         4)      i32type=long
14531                 u32type="unsigned long"
14532                 i32size=$longsize
14533                 u32size=$longsize
14534                 ;;
14535         *)      case "$intsize" in
14536                 4)      i32type=int
14537                         u32type="unsigned int"
14538                         i32size=$intsize
14539                         u32size=$intsize
14540                         ;;
14541                 esac
14542                 ;;
14543         esac
14544         ;;
14545 esac
14546 case "$i32type" in
14547 '')     set try -DINT32
14548         if eval $compile; then
14549                 case "`$run ./try`" in
14550                 int32_t)
14551                         i32type=int32_t
14552                         u32type=uint32_t
14553                         i32size=4
14554                         u32size=4
14555                         ;;
14556                 esac
14557         fi
14558         ;;
14559 esac
14560 case "$i32type" in
14561 '')     if $test $intsize -ge 4; then
14562                 i32type=int
14563                 u32type="unsigned int"
14564                 i32size=$intsize
14565                 u32size=$intsize
14566         fi
14567         ;;
14568 esac
14569
14570 case "$i64type" in
14571 '')     case "$d_quad:$quadtype" in
14572         define:?*)
14573                 i64type="$quadtype"
14574                 u64type="$uquadtype"
14575                 i64size=8
14576                 u64size=8
14577                 ;;
14578         esac
14579         ;;
14580 esac
14581
14582 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14583 : volatile so that the compiler has to store it out to memory.
14584 if test X"$d_volatile" = X"$define"; then
14585         volatile=volatile
14586 fi
14587 $cat <<EOP >try.c
14588 #include <stdio.h>
14589 #$i_stdlib I_STDLIB
14590 #ifdef I_STDLIB
14591 #include <stdlib.h>
14592 #endif
14593 #include <sys/types.h>
14594 #include <signal.h>
14595 #ifdef SIGFPE
14596 $volatile int bletched = 0;
14597 $signal_t blech(s) int s; { bletched = 1; }
14598 #endif
14599 int main() {
14600     $uvtype u = 0;
14601     $nvtype d;
14602     int     n = 8 * $uvsize;
14603     int     i;
14604 #ifdef SIGFPE
14605     signal(SIGFPE, blech);
14606 #endif
14607
14608     for (i = 0; i < n; i++) {
14609       u = u << 1 | ($uvtype)1;
14610       d = ($nvtype)u;
14611       if (($uvtype)d != u)
14612         break;
14613       if (d <= 0)
14614         break;
14615       d = ($nvtype)(u - 1);
14616       if (($uvtype)d != (u - 1))
14617         break;
14618 #ifdef SIGFPE
14619       if (bletched) {
14620         break;
14621 #endif
14622       } 
14623     }
14624     printf("%d\n", ((i == n) ? -n : i));
14625     exit(0);
14626 }
14627 EOP
14628 set try
14629
14630 d_nv_preserves_uv="$undef"
14631 if eval $compile; then
14632         nv_preserves_uv_bits="`$run ./try`"
14633 fi
14634 case "$nv_preserves_uv_bits" in
14635 \-[1-9]*)       
14636         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14637         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14638         d_nv_preserves_uv="$define"
14639         ;;
14640 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14641         d_nv_preserves_uv="$undef" ;;
14642 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14643         nv_preserves_uv_bits="$undef" ;;
14644 esac
14645
14646 $rm -f try.* try
14647
14648
14649 : check for off64_t
14650 echo " "
14651 echo "Checking to see if you have off64_t..." >&4
14652 $cat >try.c <<EOCP
14653 #include <sys/types.h>
14654 #include <unistd.h>
14655 int main() { off64_t x = 7; }
14656 EOCP
14657 set try
14658 if eval $compile; then
14659         val="$define"
14660         echo "You have off64_t."
14661 else
14662         val="$undef"
14663         echo "You do not have off64_t."
14664         case "$lseeksize" in
14665         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14666         esac
14667 fi
14668 $rm -f try.* try
14669 set d_off64_t
14670 eval $setvar
14671
14672 : how to create joinable pthreads
14673 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14674         echo " "
14675         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14676         $cat >try.c <<'EOCP'
14677 #include <pthread.h>
14678 int main() {
14679     int detachstate = JOINABLE;
14680 }
14681 EOCP
14682         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14683         if eval $compile; then
14684                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14685                 val="$undef" # Yes, undef.
14686                 set d_old_pthread_create_joinable
14687                 eval $setvar
14688                 val=""
14689                 set old_pthread_create_joinable
14690                 eval $setvar
14691         else
14692                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14693                 if eval $compile; then
14694                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14695                         val="$define"
14696                         set d_old_pthread_create_joinable
14697                         eval $setvar
14698                         val=PTHREAD_CREATE_UNDETACHED
14699                         set old_pthread_create_joinable
14700                         eval $setvar
14701                 else            
14702                         set try -DJOINABLE=__UNDETACHED
14703                         if eval $compile; then
14704                                 echo "You seem to use __UNDETACHED." >&4
14705                                 val="$define"
14706                                 set d_old_pthread_create_joinable
14707                                 eval $setvar
14708                                 val=__UNDETACHED
14709                                 set old_pthread_create_joinable
14710                                 eval $setvar
14711                         else
14712                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14713                                 val="$define"
14714                                 set d_old_pthread_create_joinable
14715                                 eval $setvar
14716                                 val=0
14717                                 set old_pthread_create_joinable
14718                                 eval $setvar
14719                         fi
14720                 fi
14721         fi
14722         $rm -f try try.*
14723 else
14724     d_old_pthread_create_joinable="$undef"
14725     old_pthread_create_joinable=""
14726 fi
14727
14728 : see if pause exists
14729 set pause d_pause
14730 eval $inlibc
14731
14732 : see if pipe exists
14733 set pipe d_pipe
14734 eval $inlibc
14735
14736 : see if poll exists
14737 set poll d_poll
14738 eval $inlibc
14739
14740 : see if readlink exists
14741 set readlink d_readlink
14742 eval $inlibc
14743
14744 echo " "
14745 procselfexe=''
14746 val="$undef"
14747 case "$d_readlink" in
14748 "$define")
14749         if $issymlink /proc/self/exe ; then
14750                 $ls -l /proc/self/exe > reflect
14751                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14752                         echo "You have Linux-like /proc/self/exe."
14753                         procselfexe='"/proc/self/exe"'
14754                         val="$define"
14755                 fi
14756         fi
14757         if $issymlink /proc/curproc/file ; then
14758                 $ls -l /proc/curproc/file > reflect
14759                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14760                         echo "You have BSD-like /proc/curproc/file."
14761                         procselfexe='"/proc/curproc/file"'
14762                         val="$define"
14763                 fi
14764         fi
14765         ;;
14766 esac
14767 $rm -f reflect
14768 set d_procselfexe
14769 eval $setvar
14770
14771 : see whether the pthread_atfork exists
14772 $cat >try.c <<EOP
14773 #include <pthread.h>
14774 #include <stdio.h>
14775 int main() {
14776 #ifdef  PTHREAD_ATFORK
14777         pthread_atfork(NULL,NULL,NULL);
14778 #endif
14779 }
14780 EOP
14781
14782 : see if pthread_atfork exists
14783 set try -DPTHREAD_ATFORK
14784 if eval $compile; then
14785     val="$define"
14786 else
14787     val="$undef"
14788 fi
14789 case "$usethreads" in
14790 $define)
14791         case "$val" in
14792         $define) echo 'pthread_atfork found.' >&4        ;;
14793         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14794         esac
14795 esac
14796 set d_pthread_atfork
14797 eval $setvar
14798
14799 : see if pthread_attr_setscope exists
14800 set pthread_attr_setscope d_pthread_attr_setscope
14801 eval $inlibc
14802
14803
14804 : see whether the various POSIXish _yields exist
14805 $cat >try.c <<EOP
14806 #include <pthread.h>
14807 #include <stdio.h>
14808 int main() {
14809 #ifdef SCHED_YIELD
14810         sched_yield();
14811 #else
14812 #ifdef PTHREAD_YIELD
14813         pthread_yield();
14814 #else
14815 #ifdef PTHREAD_YIELD_NULL
14816         pthread_yield(NULL);
14817 #endif
14818 #endif
14819 #endif
14820 }
14821 EOP
14822 : see if sched_yield exists
14823 set try -DSCHED_YIELD
14824 if eval $compile; then
14825     val="$define"
14826     sched_yield='sched_yield()'
14827 else
14828     val="$undef"
14829 fi
14830 case "$usethreads" in
14831 $define)
14832         case "$val" in
14833         $define) echo 'sched_yield() found.' >&4        ;;
14834         *)       echo 'sched_yield() NOT found.' >&4    ;;
14835         esac
14836 esac
14837 set d_sched_yield
14838 eval $setvar
14839
14840 : see if pthread_yield exists
14841 set try -DPTHREAD_YIELD
14842 if eval $compile; then
14843     val="$define"
14844     case "$sched_yield" in
14845     '') sched_yield='pthread_yield()' ;;
14846     esac
14847 else
14848     set try -DPTHREAD_YIELD_NULL
14849     if eval $compile; then
14850         val="$define"
14851         case "$sched_yield" in
14852         '') sched_yield='pthread_yield(NULL)' ;;
14853         esac
14854     else
14855         val="$undef"
14856     fi
14857 fi
14858 case "$usethreads" in
14859 $define)
14860         case "$val" in
14861         $define) echo 'pthread_yield() found.' >&4      ;;
14862         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14863         esac
14864         ;;
14865 esac
14866 set d_pthread_yield
14867 eval $setvar
14868
14869 case "$sched_yield" in
14870 '') sched_yield=undef ;;
14871 esac
14872
14873 $rm -f try try.*
14874
14875 : see if random_r exists
14876 set random_r d_random_r
14877 eval $inlibc
14878 case "$d_random_r" in
14879 "$define")
14880         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14881         case "$d_random_r_proto:$usethreads" in
14882         ":define")      d_random_r_proto=define
14883                 set d_random_r_proto random_r $hdrs
14884                 eval $hasproto ;;
14885         *)      ;;
14886         esac
14887         case "$d_random_r_proto" in
14888         define)
14889         case "$random_r_proto" in
14890         ''|0) try='int random_r(int*, struct random_data*);'
14891         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14892         esac
14893         case "$random_r_proto" in
14894         ''|0) try='int random_r(long*, struct random_data*);'
14895         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14896         esac
14897         case "$random_r_proto" in
14898         ''|0) try='int random_r(struct random_data*, int32_t*);'
14899         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14900         esac
14901         case "$random_r_proto" in
14902         ''|0)   d_random_r=undef
14903                 random_r_proto=0
14904                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14905         * )     case "$random_r_proto" in
14906                 REENTRANT_PROTO*) ;;
14907                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14908                 esac
14909                 echo "Prototype: $try" ;;
14910         esac
14911         ;;
14912         *)      case "$usethreads" in
14913                 define) echo "random_r has no prototype, not using it." >&4 ;;
14914                 esac
14915                 d_random_r=undef
14916                 random_r_proto=0
14917                 ;;
14918         esac
14919         ;;
14920 *)      random_r_proto=0
14921         ;;
14922 esac
14923
14924 : see if readdir and friends exist
14925 set readdir d_readdir
14926 eval $inlibc
14927 set seekdir d_seekdir
14928 eval $inlibc
14929 set telldir d_telldir
14930 eval $inlibc
14931 set rewinddir d_rewinddir
14932 eval $inlibc
14933
14934 : see if readdir64_r exists
14935 set readdir64_r d_readdir64_r
14936 eval $inlibc
14937 case "$d_readdir64_r" in
14938 "$define")
14939         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14940         case "$d_readdir64_r_proto:$usethreads" in
14941         ":define")      d_readdir64_r_proto=define
14942                 set d_readdir64_r_proto readdir64_r $hdrs
14943                 eval $hasproto ;;
14944         *)      ;;
14945         esac
14946         case "$d_readdir64_r_proto" in
14947         define)
14948         case "$readdir64_r_proto" in
14949         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14950         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14951         esac
14952         case "$readdir64_r_proto" in
14953         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14954         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14955         esac
14956         case "$readdir64_r_proto" in
14957         ''|0)   d_readdir64_r=undef
14958                 readdir64_r_proto=0
14959                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14960         * )     case "$readdir64_r_proto" in
14961                 REENTRANT_PROTO*) ;;
14962                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14963                 esac
14964                 echo "Prototype: $try" ;;
14965         esac
14966         ;;
14967         *)      case "$usethreads" in
14968                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14969                 esac
14970                 d_readdir64_r=undef
14971                 readdir64_r_proto=0
14972                 ;;
14973         esac
14974         ;;
14975 *)      readdir64_r_proto=0
14976         ;;
14977 esac
14978
14979 : see if readdir_r exists
14980 set readdir_r d_readdir_r
14981 eval $inlibc
14982 case "$d_readdir_r" in
14983 "$define")
14984         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14985         case "$d_readdir_r_proto:$usethreads" in
14986         ":define")      d_readdir_r_proto=define
14987                 set d_readdir_r_proto readdir_r $hdrs
14988                 eval $hasproto ;;
14989         *)      ;;
14990         esac
14991         case "$d_readdir_r_proto" in
14992         define)
14993         case "$readdir_r_proto" in
14994         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14995         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14996         esac
14997         case "$readdir_r_proto" in
14998         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14999         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
15000         esac
15001         case "$readdir_r_proto" in
15002         ''|0)   d_readdir_r=undef
15003                 readdir_r_proto=0
15004                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
15005         * )     case "$readdir_r_proto" in
15006                 REENTRANT_PROTO*) ;;
15007                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
15008                 esac
15009                 echo "Prototype: $try" ;;
15010         esac
15011         ;;
15012         *)      case "$usethreads" in
15013                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
15014                 esac
15015                 d_readdir_r=undef
15016                 readdir_r_proto=0
15017                 ;;
15018         esac
15019         ;;
15020 *)      readdir_r_proto=0
15021         ;;
15022 esac
15023
15024 : see if readv exists
15025 set readv d_readv
15026 eval $inlibc
15027
15028 : see if recvmsg exists
15029 set recvmsg d_recvmsg
15030 eval $inlibc
15031
15032 : see if rename exists
15033 set rename d_rename
15034 eval $inlibc
15035
15036 : see if rmdir exists
15037 set rmdir d_rmdir
15038 eval $inlibc
15039
15040 : see if memory.h is available.
15041 val=''
15042 set memory.h val
15043 eval $inhdr
15044
15045 : See if it conflicts with string.h
15046 case "$val" in
15047 $define)
15048         case "$strings" in
15049         '') ;;
15050         *)
15051                 $cppstdin $cppflags $cppminus < $strings > mem.h
15052                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
15053                         echo " "
15054                         echo "We won't be including <memory.h>."
15055                         val="$undef"
15056                 fi
15057                 $rm -f mem.h
15058                 ;;
15059         esac
15060 esac
15061 set i_memory
15062 eval $setvar
15063
15064 : can bcopy handle overlapping blocks?
15065 echo " "
15066 val="$undef"
15067 case "$d_memmove" in
15068 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
15069 *)      case "$d_bcopy" in
15070         "$define")
15071                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15072                 $cat >try.c <<EOCP
15073 #$i_memory I_MEMORY
15074 #$i_stdlib I_STDLIB
15075 #$i_string I_STRING
15076 #$i_unistd I_UNISTD
15077 EOCP
15078         $cat >>try.c <<'EOCP'
15079 #include <stdio.h>
15080 #ifdef I_MEMORY
15081 #  include <memory.h>
15082 #endif
15083 #ifdef I_STDLIB
15084 #  include <stdlib.h>
15085 #endif
15086 #ifdef I_STRING
15087 #  include <string.h>
15088 #else
15089 #  include <strings.h>
15090 #endif
15091 #ifdef I_UNISTD
15092 #  include <unistd.h>  /* Needed for NetBSD */
15093 #endif
15094 int main()
15095 {
15096 char buf[128], abc[128];
15097 char *b;
15098 int len;
15099 int off;
15100 int align;
15101
15102 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15103    try to store the string in read-only memory. */
15104 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15105
15106 for (align = 7; align >= 0; align--) {
15107         for (len = 36; len; len--) {
15108                 b = buf+align;
15109                 bcopy(abc, b, len);
15110                 for (off = 1; off <= len; off++) {
15111                         bcopy(b, b+off, len);
15112                         bcopy(b+off, b, len);
15113                         if (bcmp(b, abc, len))
15114                                 exit(1);
15115                 }
15116         }
15117 }
15118 exit(0);
15119 }
15120 EOCP
15121                 set try
15122                 if eval $compile_ok; then
15123                         if ./try 2>/dev/null; then
15124                                 echo "Yes, it can."
15125                                 val="$define"
15126                         else
15127                                 echo "It can't, sorry."
15128                         fi
15129                 else
15130                         echo "(I can't compile the test program, so we'll assume not...)"
15131                 fi
15132                 ;;
15133         esac
15134         $rm -f try.* try core
15135         ;;
15136 esac
15137 set d_safebcpy
15138 eval $setvar
15139
15140 : can memcpy handle overlapping blocks?
15141 echo " "
15142 val="$undef"
15143 case "$d_memmove" in
15144 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15145 *)      case "$d_memcpy" in
15146         "$define")
15147                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15148                 $cat >try.c <<EOCP
15149 #$i_memory I_MEMORY
15150 #$i_stdlib I_STDLIB
15151 #$i_string I_STRING
15152 #$i_unistd I_UNISTD
15153 EOCP
15154         $cat >>try.c <<'EOCP'
15155 #include <stdio.h>
15156 #ifdef I_MEMORY
15157 #  include <memory.h>
15158 #endif
15159 #ifdef I_STDLIB
15160 #  include <stdlib.h>
15161 #endif
15162 #ifdef I_STRING
15163 #  include <string.h>
15164 #else
15165 #  include <strings.h>
15166 #endif
15167 #ifdef I_UNISTD
15168 #  include <unistd.h>  /* Needed for NetBSD */
15169 #endif
15170 int main()
15171 {
15172 char buf[128], abc[128];
15173 char *b;
15174 int len;
15175 int off;
15176 int align;
15177
15178 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15179    try to store the string in read-only memory. */
15180 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15181
15182 for (align = 7; align >= 0; align--) {
15183         for (len = 36; len; len--) {
15184                 b = buf+align;
15185                 memcpy(b, abc, len);
15186                 for (off = 1; off <= len; off++) {
15187                         memcpy(b+off, b, len);
15188                         memcpy(b, b+off, len);
15189                         if (memcmp(b, abc, len))
15190                                 exit(1);
15191                 }
15192         }
15193 }
15194 exit(0);
15195 }
15196 EOCP
15197                 set try
15198                 if eval $compile_ok; then
15199                         if ./try 2>/dev/null; then
15200                                 echo "Yes, it can."
15201                                 val="$define"
15202                         else
15203                                 echo "It can't, sorry."
15204                         fi
15205                 else
15206                         echo "(I can't compile the test program, so we'll assume not...)"
15207                 fi
15208                 ;;
15209         esac
15210         $rm -f try.* try core
15211         ;;
15212 esac
15213 set d_safemcpy
15214 eval $setvar
15215
15216 : can memcmp be trusted to compare relative magnitude?
15217 val="$undef"
15218 case "$d_memcmp" in
15219 "$define")
15220         echo " "
15221         echo "Checking if your memcmp() can compare relative magnitude..." >&4
15222         $cat >try.c <<EOCP
15223 #$i_memory I_MEMORY
15224 #$i_stdlib I_STDLIB
15225 #$i_string I_STRING
15226 #$i_unistd I_UNISTD
15227 EOCP
15228         $cat >>try.c <<'EOCP'
15229 #include <stdio.h>
15230 #ifdef I_MEMORY
15231 #  include <memory.h>
15232 #endif
15233 #ifdef I_STDLIB
15234 #  include <stdlib.h>
15235 #endif
15236 #ifdef I_STRING
15237 #  include <string.h>
15238 #else
15239 #  include <strings.h>
15240 #endif
15241 #ifdef I_UNISTD
15242 #  include <unistd.h>  /* Needed for NetBSD */
15243 #endif
15244 int main()
15245 {
15246 char a = -1;
15247 char b = 0;
15248 if ((a < b) && memcmp(&a, &b, 1) < 0)
15249         exit(1);
15250 exit(0);
15251 }
15252 EOCP
15253         set try
15254         if eval $compile_ok; then
15255                 if $run ./try 2>/dev/null; then
15256                         echo "Yes, it can."
15257                         val="$define"
15258                 else
15259                         echo "No, it can't (it uses signed chars)."
15260                 fi
15261         else
15262                 echo "(I can't compile the test program, so we'll assume not...)"
15263         fi
15264         ;;
15265 esac
15266 $rm -f try.* try core
15267 set d_sanemcmp
15268 eval $setvar
15269
15270 : see if prototype for sbrk is available
15271 echo " "
15272 set d_sbrkproto sbrk $i_unistd unistd.h
15273 eval $hasproto
15274
15275 : see if select exists
15276 set select d_select
15277 eval $inlibc
15278
15279 : see if semctl exists
15280 set semctl d_semctl
15281 eval $inlibc
15282
15283 : see if semget exists
15284 set semget d_semget
15285 eval $inlibc
15286
15287 : see if semop exists
15288 set semop d_semop
15289 eval $inlibc
15290
15291 : see how much of the 'sem*(2)' library is present.
15292 h_sem=true
15293 echo " "
15294 case "$d_semctl$d_semget$d_semop" in
15295 *"$undef"*) h_sem=false;;
15296 esac
15297 case "$osname" in
15298 freebsd)
15299     case "`ipcs 2>&1`" in
15300     "SVID messages"*"not configured"*)
15301         echo "Your $osname does not have the sem*(2) configured." >&4
15302         h_sem=false
15303         val="$undef"
15304         set semctl d_semctl
15305         eval $setvar
15306         set semget d_semget
15307         eval $setvar
15308         set semop d_semop
15309         eval $setvar
15310         ;;
15311     esac
15312     ;;
15313 esac
15314 : we could also check for sys/ipc.h ...
15315 if $h_sem && $test `./findhdr sys/sem.h`; then
15316         echo "You have the full sem*(2) library." >&4
15317         val="$define"
15318 else
15319         echo "You don't have the full sem*(2) library." >&4
15320         val="$undef"
15321 fi
15322 set d_sem
15323 eval $setvar
15324
15325 : see whether sys/sem.h defines union semun
15326 echo " "
15327 $cat > try.c <<'END'
15328 #include <sys/types.h>
15329 #include <sys/ipc.h>
15330 #include <sys/sem.h>
15331 int main () { union semun semun; semun.buf = 0; }
15332 END
15333 set try
15334 if eval $compile; then
15335     echo "You have union semun in <sys/sem.h>." >&4
15336     val="$define"
15337 else
15338     echo "You do not have union semun in <sys/sem.h>." >&4
15339     val="$undef"
15340 fi
15341 $rm -f try try.c
15342 set d_union_semun
15343 eval $setvar
15344
15345 : see how to do semctl IPC_STAT
15346 case "$d_sem" in
15347 $define)
15348     echo " "
15349     $cat > try.h <<END
15350 #ifndef S_IRUSR
15351 #   ifdef S_IREAD
15352 #       define S_IRUSR S_IREAD
15353 #       define S_IWUSR S_IWRITE
15354 #       define S_IXUSR S_IEXEC
15355 #   else
15356 #       define S_IRUSR 0400
15357 #       define S_IWUSR 0200
15358 #       define S_IXUSR 0100
15359 #   endif
15360 #   define S_IRGRP (S_IRUSR>>3)
15361 #   define S_IWGRP (S_IWUSR>>3)
15362 #   define S_IXGRP (S_IXUSR>>3)
15363 #   define S_IROTH (S_IRUSR>>6)
15364 #   define S_IWOTH (S_IWUSR>>6)
15365 #   define S_IXOTH (S_IXUSR>>6)
15366 #endif
15367 #ifndef S_IRWXU
15368 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15369 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15370 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15371 #endif
15372 END
15373     : see whether semctl IPC_STAT can use union semun
15374     val="$undef"
15375     case "$d_semctl_semun" in
15376     '')
15377       $cat > try.c <<END
15378 #include <sys/types.h>
15379 #include <sys/ipc.h>
15380 #include <sys/sem.h>
15381 #include <sys/stat.h>
15382 #include <stdio.h>
15383 #include <errno.h>
15384 #include "try.h"
15385 #ifndef errno
15386 extern int errno;
15387 #endif
15388 #$d_union_semun HAS_UNION_SEMUN
15389 int main() {
15390     union semun
15391 #ifndef HAS_UNION_SEMUN
15392     {
15393         int val;
15394         struct semid_ds *buf;
15395         unsigned short *array;
15396     }
15397 #endif
15398     arg;
15399     int sem, st;
15400
15401 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15402     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15403     if (sem > -1) {
15404         struct semid_ds argbuf;
15405         arg.buf = &argbuf;
15406 #       ifdef IPC_STAT
15407         st = semctl(sem, 0, IPC_STAT, arg);
15408         if (st == 0)
15409             printf("semun\n");
15410         else
15411 #       endif /* IPC_STAT */
15412             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15413 #       ifdef IPC_RMID
15414         if (semctl(sem, 0, IPC_RMID, arg) != 0)
15415 #       endif /* IPC_RMID */
15416             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15417     } else
15418 #endif /* IPC_PRIVATE && ... */
15419         printf("semget failed: errno = %d\n", errno);
15420   return 0;
15421 }
15422 END
15423       set try
15424       if eval $compile; then
15425           xxx=`$run ./try`
15426           case "$xxx" in
15427           semun) val="$define" ;;
15428           esac
15429       fi
15430       $rm -f try try.c
15431       ;;
15432     esac
15433     set d_semctl_semun
15434     eval $setvar
15435     case "$d_semctl_semun" in
15436     $define)
15437         echo "You can use union semun for semctl IPC_STAT." >&4
15438         also='also'
15439         ;;
15440     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15441         also=''
15442         ;;
15443     esac
15444
15445     : see whether semctl IPC_STAT can use struct semid_ds pointer
15446     val="$undef"
15447     case "$d_semctl_semid_ds" in
15448     '')
15449       $cat > try.c <<'END'
15450 #include <sys/types.h>
15451 #include <sys/ipc.h>
15452 #include <sys/sem.h>
15453 #include <sys/stat.h>
15454 #include "try.h"
15455 #include <stdio.h>
15456 #include <errno.h>
15457 #ifndef errno
15458 extern int errno;
15459 #endif
15460 int main() {
15461     struct semid_ds arg;
15462     int sem, st;
15463
15464 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15465     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15466     if (sem > -1) {
15467 #       ifdef IPC_STAT
15468         st = semctl(sem, 0, IPC_STAT, &arg);
15469         if (st == 0)
15470             printf("semid_ds\n");
15471         else
15472 #       endif /* IPC_STAT */
15473             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15474 #       ifdef IPC_RMID
15475         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15476 #       endif /* IPC_RMID */
15477             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15478     } else
15479 #endif /* IPC_PRIVATE && ... */
15480         printf("semget failed: errno = %d\n", errno);
15481
15482     return 0;
15483 }
15484 END
15485       set try
15486       if eval $compile; then
15487           xxx=`$run ./try`
15488           case "$xxx" in
15489           semid_ds) val="$define" ;;
15490           esac
15491       fi
15492       $rm -f try try.c
15493       ;;
15494     esac
15495     set d_semctl_semid_ds
15496     eval $setvar
15497     case "$d_semctl_semid_ds" in
15498     $define)
15499         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15500         ;;
15501     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15502         ;;
15503     esac
15504     $rm -f try.h
15505     ;;
15506 *)  val="$undef"
15507
15508     # We do not have the full sem*(2) library, so assume we can not
15509     # use either.
15510
15511     set d_semctl_semun
15512     eval $setvar
15513
15514     set d_semctl_semid_ds
15515     eval $setvar
15516     ;;
15517 esac
15518
15519 : see if sendmsg exists
15520 set sendmsg d_sendmsg
15521 eval $inlibc
15522
15523 : see if setegid exists
15524 set setegid d_setegid
15525 eval $inlibc
15526
15527 : see if seteuid exists
15528 set seteuid d_seteuid
15529 eval $inlibc
15530
15531 : see if setgrent exists
15532 set setgrent d_setgrent
15533 eval $inlibc
15534
15535 : see if setgrent_r exists
15536 set setgrent_r d_setgrent_r
15537 eval $inlibc
15538 case "$d_setgrent_r" in
15539 "$define")
15540         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15541         case "$d_setgrent_r_proto:$usethreads" in
15542         ":define")      d_setgrent_r_proto=define
15543                 set d_setgrent_r_proto setgrent_r $hdrs
15544                 eval $hasproto ;;
15545         *)      ;;
15546         esac
15547         case "$d_setgrent_r_proto" in
15548         define)
15549         case "$setgrent_r_proto" in
15550         ''|0) try='int setgrent_r(FILE**);'
15551         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15552         esac
15553         case "$setgrent_r_proto" in
15554         ''|0) try='void setgrent_r(FILE**);'
15555         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15556         esac
15557         case "$setgrent_r_proto" in
15558         ''|0)   d_setgrent_r=undef
15559                 setgrent_r_proto=0
15560                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15561         * )     case "$setgrent_r_proto" in
15562                 REENTRANT_PROTO*) ;;
15563                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15564                 esac
15565                 echo "Prototype: $try" ;;
15566         esac
15567         ;;
15568         *)      case "$usethreads" in
15569                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15570                 esac
15571                 d_setgrent_r=undef
15572                 setgrent_r_proto=0
15573                 ;;
15574         esac
15575         ;;
15576 *)      setgrent_r_proto=0
15577         ;;
15578 esac
15579
15580 : see if sethostent exists
15581 set sethostent d_sethent
15582 eval $inlibc
15583
15584 : see if sethostent_r exists
15585 set sethostent_r d_sethostent_r
15586 eval $inlibc
15587 case "$d_sethostent_r" in
15588 "$define")
15589         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15590         case "$d_sethostent_r_proto:$usethreads" in
15591         ":define")      d_sethostent_r_proto=define
15592                 set d_sethostent_r_proto sethostent_r $hdrs
15593                 eval $hasproto ;;
15594         *)      ;;
15595         esac
15596         case "$d_sethostent_r_proto" in
15597         define)
15598         case "$sethostent_r_proto" in
15599         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15600         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15601         esac
15602         case "$sethostent_r_proto" in
15603         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15604         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15605         esac
15606         case "$sethostent_r_proto" in
15607         ''|0)   d_sethostent_r=undef
15608                 sethostent_r_proto=0
15609                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15610         * )     case "$sethostent_r_proto" in
15611                 REENTRANT_PROTO*) ;;
15612                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15613                 esac
15614                 echo "Prototype: $try" ;;
15615         esac
15616         ;;
15617         *)      case "$usethreads" in
15618                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15619                 esac
15620                 d_sethostent_r=undef
15621                 sethostent_r_proto=0
15622                 ;;
15623         esac
15624         ;;
15625 *)      sethostent_r_proto=0
15626         ;;
15627 esac
15628
15629 : see if setitimer exists
15630 set setitimer d_setitimer
15631 eval $inlibc
15632
15633 : see if setlinebuf exists
15634 set setlinebuf d_setlinebuf
15635 eval $inlibc
15636
15637 : see if setlocale exists
15638 set setlocale d_setlocale
15639 eval $inlibc
15640
15641 : see if locale.h is available
15642 set locale.h i_locale
15643 eval $inhdr
15644
15645 : see if setlocale_r exists
15646 set setlocale_r d_setlocale_r
15647 eval $inlibc
15648 case "$d_setlocale_r" in
15649 "$define")
15650         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15651         case "$d_setlocale_r_proto:$usethreads" in
15652         ":define")      d_setlocale_r_proto=define
15653                 set d_setlocale_r_proto setlocale_r $hdrs
15654                 eval $hasproto ;;
15655         *)      ;;
15656         esac
15657         case "$d_setlocale_r_proto" in
15658         define)
15659         case "$setlocale_r_proto" in
15660         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15661         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15662         esac
15663         case "$setlocale_r_proto" in
15664         ''|0)   d_setlocale_r=undef
15665                 setlocale_r_proto=0
15666                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15667         * )     case "$setlocale_r_proto" in
15668                 REENTRANT_PROTO*) ;;
15669                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15670                 esac
15671                 echo "Prototype: $try" ;;
15672         esac
15673         ;;
15674         *)      case "$usethreads" in
15675                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15676                 esac
15677                 d_setlocale_r=undef
15678                 setlocale_r_proto=0
15679                 ;;
15680         esac
15681         ;;
15682 *)      setlocale_r_proto=0
15683         ;;
15684 esac
15685
15686 : see if setnetent exists
15687 set setnetent d_setnent
15688 eval $inlibc
15689
15690 : see if setnetent_r exists
15691 set setnetent_r d_setnetent_r
15692 eval $inlibc
15693 case "$d_setnetent_r" in
15694 "$define")
15695         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15696         case "$d_setnetent_r_proto:$usethreads" in
15697         ":define")      d_setnetent_r_proto=define
15698                 set d_setnetent_r_proto setnetent_r $hdrs
15699                 eval $hasproto ;;
15700         *)      ;;
15701         esac
15702         case "$d_setnetent_r_proto" in
15703         define)
15704         case "$setnetent_r_proto" in
15705         ''|0) try='int setnetent_r(int, struct netent_data*);'
15706         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15707         esac
15708         case "$setnetent_r_proto" in
15709         ''|0) try='void setnetent_r(int, struct netent_data*);'
15710         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15711         esac
15712         case "$setnetent_r_proto" in
15713         ''|0)   d_setnetent_r=undef
15714                 setnetent_r_proto=0
15715                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15716         * )     case "$setnetent_r_proto" in
15717                 REENTRANT_PROTO*) ;;
15718                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15719                 esac
15720                 echo "Prototype: $try" ;;
15721         esac
15722         ;;
15723         *)      case "$usethreads" in
15724                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15725                 esac
15726                 d_setnetent_r=undef
15727                 setnetent_r_proto=0
15728                 ;;
15729         esac
15730         ;;
15731 *)      setnetent_r_proto=0
15732         ;;
15733 esac
15734
15735 : see if setprotoent exists
15736 set setprotoent d_setpent
15737 eval $inlibc
15738
15739 : see if setpgid exists
15740 set setpgid d_setpgid
15741 eval $inlibc
15742
15743 : see if setpgrp2 exists
15744 set setpgrp2 d_setpgrp2
15745 eval $inlibc
15746
15747 : see if setpriority exists
15748 set setpriority d_setprior
15749 eval $inlibc
15750
15751 : see if setproctitle exists
15752 set setproctitle d_setproctitle
15753 eval $inlibc
15754
15755 : see if setprotoent_r exists
15756 set setprotoent_r d_setprotoent_r
15757 eval $inlibc
15758 case "$d_setprotoent_r" in
15759 "$define")
15760         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15761         case "$d_setprotoent_r_proto:$usethreads" in
15762         ":define")      d_setprotoent_r_proto=define
15763                 set d_setprotoent_r_proto setprotoent_r $hdrs
15764                 eval $hasproto ;;
15765         *)      ;;
15766         esac
15767         case "$d_setprotoent_r_proto" in
15768         define)
15769         case "$setprotoent_r_proto" in
15770         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15771         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15772         esac
15773         case "$setprotoent_r_proto" in
15774         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15775         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15776         esac
15777         case "$setprotoent_r_proto" in
15778         ''|0)   d_setprotoent_r=undef
15779                 setprotoent_r_proto=0
15780                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15781         * )     case "$setprotoent_r_proto" in
15782                 REENTRANT_PROTO*) ;;
15783                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15784                 esac
15785                 echo "Prototype: $try" ;;
15786         esac
15787         ;;
15788         *)      case "$usethreads" in
15789                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15790                 esac
15791                 d_setprotoent_r=undef
15792                 setprotoent_r_proto=0
15793                 ;;
15794         esac
15795         ;;
15796 *)      setprotoent_r_proto=0
15797         ;;
15798 esac
15799
15800 : see if setpwent exists
15801 set setpwent d_setpwent
15802 eval $inlibc
15803
15804 : see if setpwent_r exists
15805 set setpwent_r d_setpwent_r
15806 eval $inlibc
15807 case "$d_setpwent_r" in
15808 "$define")
15809         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15810         case "$d_setpwent_r_proto:$usethreads" in
15811         ":define")      d_setpwent_r_proto=define
15812                 set d_setpwent_r_proto setpwent_r $hdrs
15813                 eval $hasproto ;;
15814         *)      ;;
15815         esac
15816         case "$d_setpwent_r_proto" in
15817         define)
15818         case "$setpwent_r_proto" in
15819         ''|0) try='int setpwent_r(FILE**);'
15820         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15821         esac
15822         case "$setpwent_r_proto" in
15823         ''|0) try='void setpwent_r(FILE**);'
15824         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15825         esac
15826         case "$setpwent_r_proto" in
15827         ''|0)   d_setpwent_r=undef
15828                 setpwent_r_proto=0
15829                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15830         * )     case "$setpwent_r_proto" in
15831                 REENTRANT_PROTO*) ;;
15832                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15833                 esac
15834                 echo "Prototype: $try" ;;
15835         esac
15836         ;;
15837         *)      case "$usethreads" in
15838                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15839                 esac
15840                 d_setpwent_r=undef
15841                 setpwent_r_proto=0
15842                 ;;
15843         esac
15844         ;;
15845 *)      setpwent_r_proto=0
15846         ;;
15847 esac
15848
15849 : see if setregid exists
15850 set setregid d_setregid
15851 eval $inlibc
15852 set setresgid d_setresgid
15853 eval $inlibc
15854
15855 : see if setreuid exists
15856 set setreuid d_setreuid
15857 eval $inlibc
15858 set setresuid d_setresuid
15859 eval $inlibc
15860
15861 : see if setrgid exists
15862 set setrgid d_setrgid
15863 eval $inlibc
15864
15865 : see if setruid exists
15866 set setruid d_setruid
15867 eval $inlibc
15868
15869 : see if setservent exists
15870 set setservent d_setsent
15871 eval $inlibc
15872
15873 : see if setservent_r exists
15874 set setservent_r d_setservent_r
15875 eval $inlibc
15876 case "$d_setservent_r" in
15877 "$define")
15878         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15879         case "$d_setservent_r_proto:$usethreads" in
15880         ":define")      d_setservent_r_proto=define
15881                 set d_setservent_r_proto setservent_r $hdrs
15882                 eval $hasproto ;;
15883         *)      ;;
15884         esac
15885         case "$d_setservent_r_proto" in
15886         define)
15887         case "$setservent_r_proto" in
15888         ''|0) try='int setservent_r(int, struct servent_data*);'
15889         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15890         esac
15891         case "$setservent_r_proto" in
15892         ''|0) try='void setservent_r(int, struct servent_data*);'
15893         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15894         esac
15895         case "$setservent_r_proto" in
15896         ''|0)   d_setservent_r=undef
15897                 setservent_r_proto=0
15898                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15899         * )     case "$setservent_r_proto" in
15900                 REENTRANT_PROTO*) ;;
15901                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15902                 esac
15903                 echo "Prototype: $try" ;;
15904         esac
15905         ;;
15906         *)      case "$usethreads" in
15907                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15908                 esac
15909                 d_setservent_r=undef
15910                 setservent_r_proto=0
15911                 ;;
15912         esac
15913         ;;
15914 *)      setservent_r_proto=0
15915         ;;
15916 esac
15917
15918 : see if setsid exists
15919 set setsid d_setsid
15920 eval $inlibc
15921
15922 : see if setvbuf exists
15923 set setvbuf d_setvbuf
15924 eval $inlibc
15925
15926 : see if sfio.h is available
15927 set sfio.h i_sfio
15928 eval $inhdr
15929
15930
15931 : see if sfio library is available
15932 case "$i_sfio" in
15933 $define)
15934         val=''
15935         set sfreserve val
15936         eval $inlibc
15937         ;;
15938 *)
15939         val="$undef"
15940         ;;
15941 esac
15942 : Ok, but do we want to use it.
15943 case "$val" in
15944 $define)
15945         case "$usesfio" in
15946         true|$define|[yY]*) dflt='y';;
15947         *) dflt='n';;
15948         esac
15949         echo "$package can use the sfio library, but it is experimental."
15950         case "$useperlio" in
15951         "$undef")
15952             echo "For sfio also the PerlIO abstraction layer is needed."
15953             echo "Earlier you said you wouldn't want that."
15954             ;;
15955         esac
15956         rp="You seem to have sfio available, do you want to try using it?"
15957         . ./myread
15958         case "$ans" in
15959         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15960                 useperlio="$define"
15961                 val="$define"
15962                 ;;
15963         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15964                 val="$undef"
15965                 ;;
15966         esac
15967         ;;
15968 *)      case "$usesfio" in
15969         true|$define|[yY]*)
15970                 echo "Sorry, cannot find sfio on this machine." >&4
15971                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15972                 val="$undef"
15973                 ;;
15974         esac
15975         ;;
15976 esac
15977 set d_sfio
15978 eval $setvar
15979 case "$d_sfio" in
15980 $define) usesfio='true';;
15981 *) usesfio='false';;
15982 esac
15983 case "$d_sfio" in
15984 $define) ;;
15985 *)      : Remove sfio from list of libraries to use
15986         case "$libs" in
15987         *-lsfio*)
15988                 echo "Removing unneeded -lsfio from library list" >&4
15989                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15990                 shift
15991                 libs="$*"
15992                 echo "libs = $libs" >&4
15993                 ;;
15994         esac
15995 ;;
15996 esac
15997
15998
15999 : see if shmctl exists
16000 set shmctl d_shmctl
16001 eval $inlibc
16002
16003 : see if shmget exists
16004 set shmget d_shmget
16005 eval $inlibc
16006
16007 : see if shmat exists
16008 set shmat d_shmat
16009 eval $inlibc
16010 : see what shmat returns
16011 case "$d_shmat" in
16012 "$define")
16013         $cat >shmat.c <<'END'
16014 #include <sys/shm.h>
16015 void *shmat();
16016 END
16017         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
16018                 shmattype='void *'
16019         else
16020                 shmattype='char *'
16021         fi
16022         echo "and it returns ($shmattype)." >&4
16023         : see if a prototype for shmat is available
16024         xxx=`./findhdr sys/shm.h`
16025         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
16026         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
16027                 val="$define"
16028         else
16029                 val="$undef"
16030         fi
16031         $rm -f shmat.[co]
16032         ;;
16033 *)
16034         val="$undef"
16035         ;;
16036 esac
16037 set d_shmatprototype
16038 eval $setvar
16039
16040 : see if shmdt exists
16041 set shmdt d_shmdt
16042 eval $inlibc
16043
16044 : see how much of the 'shm*(2)' library is present.
16045 h_shm=true
16046 echo " "
16047 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
16048 *"$undef"*) h_shm=false;;
16049 esac
16050 case "$osname" in
16051 freebsd)
16052     case "`ipcs 2>&1`" in
16053     "SVID shared memory"*"not configured"*)
16054         echo "Your $osname does not have the shm*(2) configured." >&4
16055         h_shm=false
16056         val="$undef"
16057         set shmctl d_shmctl
16058         evat $setvar
16059         set shmget d_shmget
16060         evat $setvar
16061         set shmat d_shmat
16062         evat $setvar
16063         set shmdt d_shmdt
16064         evat $setvar
16065         ;;
16066     esac
16067     ;;
16068 esac
16069 : we could also check for sys/ipc.h ...
16070 if $h_shm && $test `./findhdr sys/shm.h`; then
16071         echo "You have the full shm*(2) library." >&4
16072         val="$define"
16073 else
16074         echo "You don't have the full shm*(2) library." >&4
16075         val="$undef"
16076 fi
16077 set d_shm
16078 eval $setvar
16079
16080 echo " "
16081 : see if we have sigaction
16082 if set sigaction val -f d_sigaction; eval $csym; $val; then
16083         echo 'sigaction() found.' >&4
16084         $cat > try.c <<EOP
16085 #include <stdio.h>
16086 #include <sys/types.h>
16087 #include <signal.h>
16088 #$i_stdlib I_STDLIB
16089 #ifdef I_STDLIB
16090 #include <stdlib.h>
16091 #endif
16092 int main()
16093 {
16094     struct sigaction act, oact;
16095     act.sa_flags = 0;
16096     oact.sa_handler = 0;
16097     /* so that act and oact are used */
16098     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16099 }
16100 EOP
16101         set try
16102         if eval $compile_ok; then
16103                 val="$define"
16104         else
16105                 echo "But you don't seem to have a useable struct sigaction." >&4
16106                 val="$undef"
16107         fi
16108 else
16109         echo 'sigaction NOT found.' >&4
16110         val="$undef"
16111 fi
16112 set d_sigaction; eval $setvar
16113 $rm -f try try$_o try.c
16114
16115 : see if sigprocmask exists
16116 set sigprocmask d_sigprocmask
16117 eval $inlibc
16118
16119 : see if sigsetjmp exists
16120 echo " "
16121 case "$d_sigsetjmp" in
16122 '')
16123         $cat >try.c <<EOP
16124 #include <setjmp.h>
16125 #$i_stdlib I_STDLIB
16126 #ifdef I_STDLIB
16127 #include <stdlib.h>
16128 #endif
16129 sigjmp_buf env;
16130 int set = 1;
16131 int main()
16132 {
16133         if (sigsetjmp(env,1))
16134                 exit(set);
16135         set = 0;
16136         siglongjmp(env, 1);
16137         exit(1);
16138 }
16139 EOP
16140         set try
16141         if eval $compile; then
16142                 if $run ./try >/dev/null 2>&1; then
16143                         echo "POSIX sigsetjmp found." >&4
16144                         val="$define"
16145                 else
16146                         $cat >&4 <<EOM
16147 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16148 I'll ignore them.
16149 EOM
16150                         val="$undef"
16151                 fi
16152         else
16153                 echo "sigsetjmp not found." >&4
16154                 val="$undef"
16155         fi
16156         ;;
16157 *) val="$d_sigsetjmp"
16158         case "$d_sigsetjmp" in
16159         $define) echo "POSIX sigsetjmp found." >&4;;
16160         $undef) echo "sigsetjmp not found." >&4;;
16161         esac
16162         ;;
16163 esac
16164 set d_sigsetjmp
16165 eval $setvar
16166 $rm -f try.c try
16167
16168 : see if sockatmark exists
16169 set sockatmark d_sockatmark
16170 eval $inlibc
16171
16172 : see if prototype for sockatmark is available
16173 echo " "
16174 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16175 eval $hasproto
16176
16177 : see if socks5_init exists
16178 set socks5_init d_socks5_init
16179 eval $inlibc
16180
16181 : see if srand48_r exists
16182 set srand48_r d_srand48_r
16183 eval $inlibc
16184 case "$d_srand48_r" in
16185 "$define")
16186         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16187         case "$d_srand48_r_proto:$usethreads" in
16188         ":define")      d_srand48_r_proto=define
16189                 set d_srand48_r_proto srand48_r $hdrs
16190                 eval $hasproto ;;
16191         *)      ;;
16192         esac
16193         case "$d_srand48_r_proto" in
16194         define)
16195         case "$srand48_r_proto" in
16196         ''|0) try='int srand48_r(long, struct drand48_data*);'
16197         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16198         esac
16199         case "$srand48_r_proto" in
16200         ''|0)   d_srand48_r=undef
16201                 srand48_r_proto=0
16202                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16203         * )     case "$srand48_r_proto" in
16204                 REENTRANT_PROTO*) ;;
16205                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16206                 esac
16207                 echo "Prototype: $try" ;;
16208         esac
16209         ;;
16210         *)      case "$usethreads" in
16211                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16212                 esac
16213                 d_srand48_r=undef
16214                 srand48_r_proto=0
16215                 ;;
16216         esac
16217         ;;
16218 *)      srand48_r_proto=0
16219         ;;
16220 esac
16221
16222 : see if srandom_r exists
16223 set srandom_r d_srandom_r
16224 eval $inlibc
16225 case "$d_srandom_r" in
16226 "$define")
16227         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16228         case "$d_srandom_r_proto:$usethreads" in
16229         ":define")      d_srandom_r_proto=define
16230                 set d_srandom_r_proto srandom_r $hdrs
16231                 eval $hasproto ;;
16232         *)      ;;
16233         esac
16234         case "$d_srandom_r_proto" in
16235         define)
16236         case "$srandom_r_proto" in
16237         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16238         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16239         esac
16240         case "$srandom_r_proto" in
16241         ''|0)   d_srandom_r=undef
16242                 srandom_r_proto=0
16243                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16244         * )     case "$srandom_r_proto" in
16245                 REENTRANT_PROTO*) ;;
16246                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16247                 esac
16248                 echo "Prototype: $try" ;;
16249         esac
16250         ;;
16251         *)      case "$usethreads" in
16252                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16253                 esac
16254                 d_srandom_r=undef
16255                 srandom_r_proto=0
16256                 ;;
16257         esac
16258         ;;
16259 *)      srandom_r_proto=0
16260         ;;
16261 esac
16262
16263 : see if prototype for setresgid is available
16264 echo " "
16265 set d_sresgproto setresgid $i_unistd unistd.h
16266 eval $hasproto
16267
16268 : see if prototype for setresuid is available
16269 echo " "
16270 set d_sresuproto setresuid $i_unistd unistd.h
16271 eval $hasproto
16272
16273 : see if sys/stat.h is available
16274 set sys/stat.h i_sysstat
16275 eval $inhdr
16276
16277
16278 : see if stat knows about block sizes
16279 echo " "
16280 echo "Checking to see if your struct stat has st_blocks field..." >&4
16281 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16282 eval $hasfield
16283
16284
16285 : see if this is a sys/vfs.h system
16286 set sys/vfs.h i_sysvfs
16287 eval $inhdr
16288
16289
16290 : see if this is a sys/statfs.h system
16291 set sys/statfs.h i_sysstatfs
16292 eval $inhdr
16293
16294
16295 echo " "
16296 echo "Checking to see if your system supports struct statfs..." >&4
16297 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
16298 eval $hasstruct
16299 case "$d_statfs_s" in
16300 "$define")      echo "Yes, it does."   ;;
16301 *)              echo "No, it doesn't." ;;
16302 esac
16303
16304
16305
16306 : see if struct statfs knows about f_flags
16307 case "$d_statfs_s" in
16308 define) 
16309         echo " "
16310         echo "Checking to see if your struct statfs has f_flags field..." >&4
16311         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
16312         eval $hasfield
16313         ;;
16314 *)      val="$undef"
16315         set d_statfs_f_flags
16316         eval $setvar
16317         ;;
16318 esac
16319 case "$d_statfs_f_flags" in
16320 "$define")      echo "Yes, it does."   ;;
16321 *)              echo "No, it doesn't." ;;
16322 esac
16323
16324 $cat >&4 <<EOM
16325 Checking how to access stdio streams by file descriptor number...
16326 EOM
16327 case "$stdio_stream_array" in
16328 '')     $cat >try.c <<EOCP
16329 #include <stdio.h>
16330 int main() {
16331   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16332     printf("yes\n");
16333 }
16334 EOCP
16335         for s in _iob __iob __sF
16336         do
16337                 set try -DSTDIO_STREAM_ARRAY=$s
16338                 if eval $compile; then
16339                         case "`$run ./try`" in
16340                         yes)    stdio_stream_array=$s; break ;;
16341                         esac
16342                 fi
16343         done
16344         $rm -f try.* try$exe_ext
16345 esac
16346 case "$stdio_stream_array" in
16347 '')     $cat >&4 <<EOM
16348 I can't figure out how to access stdio streams by file descriptor number.
16349 EOM
16350         d_stdio_stream_array="$undef"
16351         ;;
16352 *)      $cat >&4 <<EOM
16353 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16354 EOM
16355         d_stdio_stream_array="$define"
16356         ;;
16357 esac
16358
16359 : see if strcoll exists
16360 set strcoll d_strcoll
16361 eval $inlibc
16362
16363 : check for structure copying
16364 echo " "
16365 echo "Checking to see if your C compiler can copy structs..." >&4
16366 $cat >try.c <<'EOCP'
16367 int main()
16368 {
16369         struct blurfl {
16370                 int dyick;
16371         } foo, bar;
16372
16373         foo = bar;
16374 }
16375 EOCP
16376 if $cc -c try.c >/dev/null 2>&1 ; then
16377         val="$define"
16378         echo "Yup, it can."
16379 else
16380         val="$undef"
16381         echo "Nope, it can't."
16382 fi
16383 set d_strctcpy
16384 eval $setvar
16385 $rm -f try.*
16386
16387 : see if strerror and/or sys_errlist[] exist
16388 echo " "
16389 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16390     if set strerror val -f d_strerror; eval $csym; $val; then
16391                 echo 'strerror() found.' >&4
16392                 d_strerror="$define"
16393                 d_strerrm='strerror(e)'
16394                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16395                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16396                         d_syserrlst="$define"
16397                 else
16398                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16399                         d_syserrlst="$undef"
16400                 fi
16401     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16402                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16403                 echo 'strerror() found in string header.' >&4
16404                 d_strerror="$define"
16405                 d_strerrm='strerror(e)'
16406                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16407                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16408                                 d_syserrlst="$define"
16409                 else
16410                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16411                         d_syserrlst="$undef"
16412                 fi
16413     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16414                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16415                 d_strerror="$undef"
16416                 d_syserrlst="$define"
16417                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16418     else
16419                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16420                 d_strerror="$undef"
16421                 d_syserrlst="$undef"
16422                 d_strerrm='"unknown"'
16423     fi
16424 fi
16425
16426 : see if strerror_r exists
16427 set strerror_r d_strerror_r
16428 eval $inlibc
16429 case "$d_strerror_r" in
16430 "$define")
16431         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16432         case "$d_strerror_r_proto:$usethreads" in
16433         ":define")      d_strerror_r_proto=define
16434                 set d_strerror_r_proto strerror_r $hdrs
16435                 eval $hasproto ;;
16436         *)      ;;
16437         esac
16438         case "$d_strerror_r_proto" in
16439         define)
16440         case "$strerror_r_proto" in
16441         ''|0) try='int strerror_r(int, char*, size_t);'
16442         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16443         esac
16444         case "$strerror_r_proto" in
16445         ''|0) try='int strerror_r(int, char*, int);'
16446         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16447         esac
16448         case "$strerror_r_proto" in
16449         ''|0) try='char* strerror_r(int, char*, size_t);'
16450         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16451         esac
16452         case "$strerror_r_proto" in
16453         ''|0)   d_strerror_r=undef
16454                 strerror_r_proto=0
16455                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16456         * )     case "$strerror_r_proto" in
16457                 REENTRANT_PROTO*) ;;
16458                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16459                 esac
16460                 echo "Prototype: $try" ;;
16461         esac
16462         ;;
16463         *)      case "$usethreads" in
16464                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16465                 esac
16466                 d_strerror_r=undef
16467                 strerror_r_proto=0
16468                 ;;
16469         esac
16470         ;;
16471 *)      strerror_r_proto=0
16472         ;;
16473 esac
16474
16475 : see if strftime exists
16476 set strftime d_strftime
16477 eval $inlibc
16478
16479 : see if strlcat exists
16480 set strlcat d_strlcat
16481 eval $inlibc
16482
16483 : see if strlcpy exists
16484 set strlcpy d_strlcpy
16485 eval $inlibc
16486
16487 : see if strtod exists
16488 set strtod d_strtod
16489 eval $inlibc
16490
16491 : see if strtol exists
16492 set strtol d_strtol
16493 eval $inlibc
16494
16495 : see if strtold exists
16496 set strtold d_strtold
16497 eval $inlibc
16498
16499 : see if strtoll exists
16500 set strtoll d_strtoll
16501 eval $inlibc
16502
16503 case "$d_longlong-$d_strtoll" in
16504 "$define-$define")
16505         $cat <<EOM
16506 Checking whether your strtoll() works okay...
16507 EOM
16508         $cat >try.c <<'EOCP'
16509 #include <errno.h>
16510 #ifdef __hpux
16511 #define strtoll __strtoll
16512 #endif
16513 #ifdef __EMX__
16514 #define strtoll _strtoll
16515 #endif
16516 #include <stdio.h>
16517 extern long long int strtoll(char *s, char **, int); 
16518 static int bad = 0;
16519 int check(char *s, long long ell, int een) {
16520         long long gll;
16521         errno = 0;
16522         gll = strtoll(s, 0, 10);
16523         if (!((gll == ell) && (errno == een)))
16524                 bad++;
16525 }
16526 int main() {
16527         check(" 1",                                      1LL, 0);
16528         check(" 0",                                      0LL, 0);
16529         check("-1",                                     -1LL, 0);
16530         check("-9223372036854775808", -9223372036854775808LL, 0);
16531         check("-9223372036854775808", -9223372036854775808LL, 0);
16532         check(" 9223372036854775807",  9223372036854775807LL, 0);
16533         check("-9223372036854775808", -9223372036854775808LL, 0);
16534         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16535         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16536         if (!bad)
16537                 printf("ok\n");
16538 }
16539 EOCP
16540         set try
16541         if eval $compile; then
16542                 yyy=`$run ./try`
16543                 case "$yyy" in
16544                 ok) echo "Your strtoll() seems to be working okay." ;;
16545                 *) cat <<EOM >&4
16546 Your strtoll() doesn't seem to be working okay.
16547 EOM
16548                    d_strtoll="$undef"
16549                    ;;
16550                 esac
16551         else
16552                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16553                 d_strtoll="$undef"
16554         fi
16555         ;;
16556 esac
16557
16558 : see if strtoq exists
16559 set strtoq d_strtoq
16560 eval $inlibc
16561
16562 : see if strtoul exists
16563 set strtoul d_strtoul
16564 eval $inlibc
16565
16566 case "$d_strtoul" in
16567 "$define")
16568         $cat <<EOM
16569 Checking whether your strtoul() works okay...
16570 EOM
16571         $cat >try.c <<'EOCP'
16572 #include <errno.h>
16573 #include <stdio.h>
16574 extern unsigned long int strtoul(char *s, char **, int); 
16575 static int bad = 0;
16576 void check(char *s, unsigned long eul, int een) {
16577         unsigned long gul;
16578         errno = 0;
16579         gul = strtoul(s, 0, 10);
16580         if (!((gul == eul) && (errno == een)))
16581                 bad++;
16582 }
16583 int main() {
16584         check(" 1", 1L, 0);
16585         check(" 0", 0L, 0);
16586 EOCP
16587         case "$longsize" in
16588         8)
16589             $cat >>try.c <<'EOCP'
16590         check("18446744073709551615", 18446744073709551615UL, 0);
16591         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16592 #if 0 /* strtoul() for /^-/ strings is undefined. */
16593         check("-1", 18446744073709551615UL, 0);
16594         check("-18446744073709551614", 2, 0);
16595         check("-18446744073709551615", 1, 0);
16596         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16597         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16598 #endif
16599 EOCP
16600                 ;;
16601         4)
16602                     $cat >>try.c <<'EOCP'
16603         check("4294967295", 4294967295UL, 0);
16604         check("4294967296", 4294967295UL, ERANGE);
16605 #if 0 /* strtoul() for /^-/ strings is undefined. */
16606         check("-1", 4294967295UL, 0);
16607         check("-4294967294", 2, 0);
16608         check("-4294967295", 1, 0);
16609         check("-4294967296", 4294967295UL, ERANGE);
16610         check("-4294967297", 4294967295UL, ERANGE);
16611 #endif
16612 EOCP
16613                 ;;
16614         *)
16615 : Should we write these tests to be more portable by sprintf-ing
16616 : ~0 and then manipulating that char string as input for strtol?
16617                 ;;
16618         esac
16619         $cat >>try.c <<'EOCP'
16620         if (!bad)
16621                 printf("ok\n");
16622         return 0;
16623 }
16624 EOCP
16625         set try
16626         if eval $compile; then
16627                 case "`$run ./try`" in
16628                 ok) echo "Your strtoul() seems to be working okay." ;;
16629                 *) cat <<EOM >&4
16630 Your strtoul() doesn't seem to be working okay.
16631 EOM
16632                    d_strtoul="$undef"
16633                    ;;
16634                 esac
16635         fi
16636         ;;
16637 esac
16638
16639 : see if strtoull exists
16640 set strtoull d_strtoull
16641 eval $inlibc
16642
16643 case "$d_longlong-$d_strtoull" in
16644 "$define-$define")
16645         $cat <<EOM
16646 Checking whether your strtoull() works okay...
16647 EOM
16648         $cat >try.c <<'EOCP'
16649 #include <errno.h>
16650 #ifdef __hpux
16651 #define strtoull __strtoull
16652 #endif
16653 #include <stdio.h>
16654 extern unsigned long long int strtoull(char *s, char **, int); 
16655 static int bad = 0;
16656 int check(char *s, long long eull, int een) {
16657         long long gull;
16658         errno = 0;
16659         gull = strtoull(s, 0, 10);
16660         if (!((gull == eull) && (errno == een)))
16661                 bad++;
16662 }
16663 int main() {
16664         check(" 1",                                        1LL, 0);
16665         check(" 0",                                        0LL, 0);
16666         check("18446744073709551615",  18446744073709551615ULL, 0);
16667         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16668 #if 0 /* strtoull() for /^-/ strings is undefined. */
16669         check("-1",                    18446744073709551615ULL, 0);
16670         check("-18446744073709551614",                     2LL, 0);
16671         check("-18446744073709551615",                     1LL, 0);
16672         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16673         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16674 #endif
16675         if (!bad)
16676                 printf("ok\n");
16677 }
16678 EOCP
16679         set try
16680         if eval $compile; then
16681                 case "`$run ./try`" in
16682                 ok) echo "Your strtoull() seems to be working okay." ;;
16683                 *) cat <<EOM >&4
16684 Your strtoull() doesn't seem to be working okay.
16685 EOM
16686                    d_strtoull="$undef"
16687                    ;;
16688                 esac
16689         fi
16690         ;;
16691 esac
16692
16693 : see if strtouq exists
16694 set strtouq d_strtouq
16695 eval $inlibc
16696
16697 case "$d_strtouq" in
16698 "$define")
16699         $cat <<EOM
16700 Checking whether your strtouq() works okay...
16701 EOM
16702         $cat >try.c <<'EOCP'
16703 #include <errno.h>
16704 #include <stdio.h>
16705 extern unsigned long long int strtouq(char *s, char **, int); 
16706 static int bad = 0;
16707 void check(char *s, unsigned long long eull, int een) {
16708         unsigned long long gull;
16709         errno = 0;
16710         gull = strtouq(s, 0, 10);
16711         if (!((gull == eull) && (errno == een)))
16712                 bad++;
16713 }
16714 int main() {
16715         check(" 1",                                        1LL, 0);
16716         check(" 0",                                        0LL, 0);
16717         check("18446744073709551615",  18446744073709551615ULL, 0);
16718         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16719 #if 0 /* strtouq() for /^-/ strings is undefined. */
16720         check("-1",                    18446744073709551615ULL, 0);
16721         check("-18446744073709551614",                     2LL, 0);
16722         check("-18446744073709551615",                     1LL, 0);
16723         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16724         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16725 #endif
16726         if (!bad)
16727                 printf("ok\n");
16728         return 0;
16729 }
16730 EOCP
16731         set try
16732         if eval $compile; then
16733                 case "`$run ./try`" in
16734                 ok) echo "Your strtouq() seems to be working okay." ;;
16735                 *) cat <<EOM >&4
16736 Your strtouq() doesn't seem to be working okay.
16737 EOM
16738                    d_strtouq="$undef"
16739                    ;;
16740                 esac
16741         fi
16742         ;;
16743 esac
16744
16745 : see if strxfrm exists
16746 set strxfrm d_strxfrm
16747 eval $inlibc
16748
16749 : see if symlink exists
16750 set symlink d_symlink
16751 eval $inlibc
16752
16753 : see if syscall exists
16754 set syscall d_syscall
16755 eval $inlibc
16756
16757 : see if prototype for syscall is available
16758 echo " "
16759 set d_syscallproto syscall $i_unistd unistd.h
16760 eval $hasproto
16761
16762 : see if sysconf exists
16763 set sysconf d_sysconf
16764 eval $inlibc
16765
16766 : see if system exists
16767 set system d_system
16768 eval $inlibc
16769
16770 : see if tcgetpgrp exists
16771 set tcgetpgrp d_tcgetpgrp
16772 eval $inlibc
16773
16774 : see if tcsetpgrp exists
16775 set tcsetpgrp d_tcsetpgrp
16776 eval $inlibc
16777
16778 : see if prototype for telldir is available
16779 echo " "
16780 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16781 eval $hasproto
16782
16783 : see if time exists
16784 echo " "
16785 if test "X$d_time" = X -o X"$timetype" = X; then
16786     if set time val -f d_time; eval $csym; $val; then
16787                 echo 'time() found.' >&4
16788                 val="$define"
16789                 rp="What is the type returned by time() on this system?"
16790                 set time_t timetype long stdio.h sys/types.h
16791                 eval $typedef_ask
16792     else
16793                 echo 'time() not found, hope that will do.' >&4
16794                 val="$undef"
16795                 timetype='int';
16796     fi
16797     set d_time
16798     eval $setvar
16799 fi
16800
16801 : see if this is a sys/times.h system
16802 set sys/times.h i_systimes
16803 eval $inhdr
16804
16805 : see if times exists
16806 echo " "
16807 if set times val -f d_times; eval $csym; $val; then
16808         echo 'times() found.' >&4
16809         d_times="$define"
16810         inc=''
16811         case "$i_systimes" in
16812         "$define") inc='sys/times.h';;
16813         esac
16814         rp="What is the type returned by times() on this system?"
16815         set clock_t clocktype long stdio.h sys/types.h $inc
16816         eval $typedef_ask
16817 else
16818         echo 'times() NOT found, hope that will do.' >&4
16819         d_times="$undef"
16820         clocktype='int'
16821 fi
16822
16823 : see if tmpnam_r exists
16824 set tmpnam_r d_tmpnam_r
16825 eval $inlibc
16826 case "$d_tmpnam_r" in
16827 "$define")
16828         hdrs="$i_systypes sys/types.h define stdio.h "
16829         case "$d_tmpnam_r_proto:$usethreads" in
16830         ":define")      d_tmpnam_r_proto=define
16831                 set d_tmpnam_r_proto tmpnam_r $hdrs
16832                 eval $hasproto ;;
16833         *)      ;;
16834         esac
16835         case "$d_tmpnam_r_proto" in
16836         define)
16837         case "$tmpnam_r_proto" in
16838         ''|0) try='char* tmpnam_r(char*);'
16839         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16840         esac
16841         case "$tmpnam_r_proto" in
16842         ''|0)   d_tmpnam_r=undef
16843                 tmpnam_r_proto=0
16844                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16845         * )     case "$tmpnam_r_proto" in
16846                 REENTRANT_PROTO*) ;;
16847                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16848                 esac
16849                 echo "Prototype: $try" ;;
16850         esac
16851         ;;
16852         *)      case "$usethreads" in
16853                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16854                 esac
16855                 d_tmpnam_r=undef
16856                 tmpnam_r_proto=0
16857                 ;;
16858         esac
16859         ;;
16860 *)      tmpnam_r_proto=0
16861         ;;
16862 esac
16863
16864 : see if truncate exists
16865 set truncate d_truncate
16866 eval $inlibc
16867
16868 : see if ttyname_r exists
16869 set ttyname_r d_ttyname_r
16870 eval $inlibc
16871 case "$d_ttyname_r" in
16872 "$define")
16873         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16874         case "$d_ttyname_r_proto:$usethreads" in
16875         ":define")      d_ttyname_r_proto=define
16876                 set d_ttyname_r_proto ttyname_r $hdrs
16877                 eval $hasproto ;;
16878         *)      ;;
16879         esac
16880         case "$d_ttyname_r_proto" in
16881         define)
16882         case "$ttyname_r_proto" in
16883         ''|0) try='int ttyname_r(int, char*, size_t);'
16884         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16885         esac
16886         case "$ttyname_r_proto" in
16887         ''|0) try='int ttyname_r(int, char*, int);'
16888         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16889         esac
16890         case "$ttyname_r_proto" in
16891         ''|0) try='char* ttyname_r(int, char*, int);'
16892         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16893         esac
16894         case "$ttyname_r_proto" in
16895         ''|0)   d_ttyname_r=undef
16896                 ttyname_r_proto=0
16897                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16898         * )     case "$ttyname_r_proto" in
16899                 REENTRANT_PROTO*) ;;
16900                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16901                 esac
16902                 echo "Prototype: $try" ;;
16903         esac
16904         ;;
16905         *)      case "$usethreads" in
16906                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16907                 esac
16908                 d_ttyname_r=undef
16909                 ttyname_r_proto=0
16910                 ;;
16911         esac
16912         ;;
16913 *)      ttyname_r_proto=0
16914         ;;
16915 esac
16916
16917 : see if tzname[] exists
16918 echo " "
16919 if set tzname val -a d_tzname; eval $csym; $val; then
16920         val="$define"
16921         echo 'tzname[] found.' >&4
16922 else
16923         val="$undef"
16924         echo 'tzname[] NOT found.' >&4
16925 fi
16926 set d_tzname
16927 eval $setvar
16928
16929 case "$osname" in
16930 next|rhapsody|darwin) multiarch="$define" ;;
16931 esac
16932 case "$multiarch" in
16933 ''|[nN]*) multiarch="$undef" ;;
16934 esac
16935
16936 : check for ordering of bytes in a UV
16937 echo " "
16938 case "$usecrosscompile$multiarch" in
16939 *$define*)
16940         $cat <<EOM
16941 You seem to be either cross-compiling or doing a multiarchitecture build,
16942 skipping the byteorder check.
16943
16944 EOM
16945         byteorder='ffff'
16946         ;;
16947 *)
16948         case "$byteorder" in
16949         '')
16950                 $cat <<'EOM'
16951 In the following, larger digits indicate more significance.  A big-endian
16952 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16953 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16954 machines may have weird orders like 3412.  A Cray will report 87654321,
16955 an Alpha will report 12345678. If the test program works the default is
16956 probably right.
16957 I'm now running the test program...
16958 EOM
16959                 $cat >try.c <<EOCP
16960 #include <stdio.h>
16961 #$i_stdlib I_STDLIB
16962 #ifdef I_STDLIB
16963 #include <stdlib.h>
16964 #endif
16965 #include <sys/types.h>
16966 typedef $uvtype UV;
16967 int main()
16968 {
16969         int i;
16970         union {
16971                 UV l;
16972                 char c[$uvsize];
16973         } u;
16974
16975         if ($uvsize > 4)
16976                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16977         else
16978                 u.l = (UV)0x04030201;
16979         for (i = 0; i < $uvsize; i++)
16980                 printf("%c", u.c[i]+'0');
16981         printf("\n");
16982         exit(0);
16983 }
16984 EOCP
16985                 xxx_prompt=y
16986                 set try
16987                 if eval $compile && ./try > /dev/null; then
16988                         dflt=`$run ./try`
16989                         case "$dflt" in
16990                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16991                                 echo "(The test program ran ok.)"
16992                                 echo "byteorder=$dflt"
16993                                 xxx_prompt=n
16994                         ;;
16995                         ????|????????) echo "(The test program ran ok.)" ;;
16996                         *) echo "(The test program didn't run right for some reason.)" ;;
16997                         esac
16998                 else
16999                         dflt='4321'
17000                         cat <<'EOM'
17001 (I can't seem to compile the test program.  Guessing big-endian...)
17002 EOM
17003                 fi
17004                 case "$xxx_prompt" in
17005                 y)
17006                         rp="What is the order of bytes in $uvtype?"
17007                         . ./myread
17008                         byteorder="$ans"
17009                         ;;
17010                 *)      byteorder=$dflt
17011                         ;;
17012                 esac
17013                 ;;
17014         esac
17015         $rm -f try.c try
17016         ;;
17017 esac
17018
17019
17020 $cat <<EOM
17021
17022 Checking to see whether you can access character data unalignedly...
17023 EOM
17024 case "$d_u32align" in
17025 '')   $cat >try.c <<EOCP
17026 #include <stdio.h>
17027 #$i_stdlib I_STDLIB
17028 #ifdef I_STDLIB
17029 #include <stdlib.h>
17030 #endif
17031 #define U32 $u32type
17032 #define BYTEORDER 0x$byteorder
17033 #define U8 $u8type
17034 #include <signal.h>
17035 #ifdef SIGBUS
17036 $signal_t bletch(s) int s; { exit(4); }
17037 #endif
17038 int main() {
17039 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
17040     U8 buf[8];
17041     U32 *up;
17042     int i;
17043
17044     if (sizeof(U32) != 4) {
17045         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
17046         exit(1);
17047     }
17048
17049     fflush(stdout);
17050
17051 #ifdef SIGBUS
17052     signal(SIGBUS, bletch);
17053 #endif
17054
17055     buf[0] = 0;
17056     buf[1] = 0;
17057     buf[2] = 0;
17058     buf[3] = 1;
17059     buf[4] = 0;
17060     buf[5] = 0;
17061     buf[6] = 0;
17062     buf[7] = 1;
17063
17064     for (i = 0; i < 4; i++) {
17065         up = (U32*)(buf + i);
17066         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
17067                (*up == 1 << (8*(3-i)))  /* little-endian */
17068               )
17069            )
17070         {
17071             printf("read failed (%x)\n", *up);
17072             exit(2);
17073         }
17074     }
17075
17076     /* write test */
17077     for (i = 0; i < 4; i++) {
17078         up = (U32*)(buf + i);
17079         *up = 0xBeef;
17080         if (*up != 0xBeef) {
17081             printf("write failed (%x)\n", *up);
17082             exit(3);
17083         }
17084     }
17085
17086     exit(0);
17087 #else
17088     printf("1\n");
17089     exit(1);
17090 #endif
17091     return 0;
17092 }
17093 EOCP
17094 set try
17095 if eval $compile_ok; then
17096         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
17097         $run ./try 2>&1 >/dev/null
17098         case "$?" in
17099         0)      cat >&4 <<EOM
17100 You can access character data pretty unalignedly.
17101 EOM
17102                 d_u32align="$undef"
17103                 ;;
17104         *)      cat >&4 <<EOM
17105 It seems that you must access character data in an aligned manner.
17106 EOM
17107                 d_u32align="$define"
17108                 ;;
17109         esac
17110 else
17111         rp='Can you access character data at unaligned addresses?'
17112         dflt='n'
17113         . ./myread
17114         case "$ans" in
17115         [yY]*)  d_u32align="$undef"  ;;
17116         *)      d_u32align="$define" ;;
17117         esac
17118 fi
17119 $rm -f core core.try.* try.core
17120 ;;
17121 esac
17122
17123 : see if ualarm exists
17124 set ualarm d_ualarm
17125 eval $inlibc
17126
17127 : see if umask exists
17128 set umask d_umask
17129 eval $inlibc
17130
17131 : see if unordered exists
17132 set unordered d_unordered
17133 eval $inlibc
17134
17135 : see if usleep exists
17136 set usleep d_usleep
17137 eval $inlibc
17138
17139 : see if prototype for usleep is available
17140 echo " "
17141 set d_usleepproto usleep $i_unistd unistd.h
17142 eval $hasproto
17143
17144 : see if ustat exists
17145 set ustat d_ustat
17146 eval $inlibc
17147
17148 : backward compatibility for d_hvfork
17149 if test X$d_hvfork != X; then
17150         d_vfork="$d_hvfork"
17151         d_hvfork=''
17152 fi
17153 : see if there is a vfork
17154 val=''
17155 set vfork val
17156 eval $inlibc
17157
17158 : Ok, but do we want to use it. vfork is reportedly unreliable in 
17159 : perl on Solaris 2.x, and probably elsewhere.
17160 case "$val" in
17161 $define)
17162         echo " "
17163         case "$usevfork" in
17164         false) dflt='n';;
17165         *) dflt='y';;
17166         esac
17167         cat <<'EOM'
17168  
17169 Perl can only use a vfork() that doesn't suffer from strict
17170 restrictions on calling functions or modifying global data in
17171 the child.  For example, glibc-2.1 contains such a vfork()
17172 that is unsuitable.  If your system provides a proper fork()
17173 call, chances are that you do NOT want perl to use vfork().
17174
17175 EOM
17176         rp="Do you still want to use vfork()?"
17177         . ./myread
17178         case "$ans" in
17179         y|Y) ;;
17180         *)
17181                 echo "Ok, we won't use vfork()."
17182                 val="$undef"
17183                 ;;
17184         esac
17185         ;;
17186 esac
17187 set d_vfork
17188 eval $setvar
17189 case "$d_vfork" in
17190 $define) usevfork='true';;
17191 *) usevfork='false';;
17192 esac
17193
17194 : see if closedir exists
17195 set closedir d_closedir
17196 eval $inlibc
17197
17198 case "$d_closedir" in
17199 "$define")
17200         echo " "
17201         echo "Checking whether closedir() returns a status..." >&4
17202         cat > try.c <<EOM
17203 #$i_dirent I_DIRENT             /**/
17204 #$i_sysdir I_SYS_DIR            /**/
17205 #$i_sysndir I_SYS_NDIR          /**/
17206 #$i_systypes I_SYS_TYPES        /**/
17207
17208 #if defined(I_SYS_TYPES)
17209 #include <sys/types.h>
17210 #endif
17211 #if defined(I_DIRENT)
17212 #include <dirent.h>
17213 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17214 #include <sys/dir.h>
17215 #endif
17216 #else
17217 #ifdef I_SYS_NDIR
17218 #include <sys/ndir.h>
17219 #else
17220 #ifdef I_SYS_DIR
17221 #ifdef hp9000s500
17222 #include <ndir.h>       /* may be wrong in the future */
17223 #else
17224 #include <sys/dir.h>
17225 #endif
17226 #endif
17227 #endif
17228 #endif 
17229 int main() { return closedir(opendir(".")); }
17230 EOM
17231         set try
17232         if eval $compile_ok; then
17233                 if $run ./try > /dev/null 2>&1 ; then
17234                         echo "Yes, it does."
17235                         val="$undef"
17236                 else
17237                         echo "No, it doesn't."
17238                         val="$define"
17239                 fi
17240         else
17241                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17242                 val="$define"
17243         fi
17244         ;;
17245 *)
17246         val="$undef";
17247         ;;
17248 esac
17249 set d_void_closedir
17250 eval $setvar
17251 $rm -f try try.*
17252 : see if there is a wait4
17253 set wait4 d_wait4
17254 eval $inlibc
17255
17256 : see if waitpid exists
17257 set waitpid d_waitpid
17258 eval $inlibc
17259
17260 : see if wcstombs exists
17261 set wcstombs d_wcstombs
17262 eval $inlibc
17263
17264 : see if wctomb exists
17265 set wctomb d_wctomb
17266 eval $inlibc
17267
17268 : see if writev exists
17269 set writev d_writev
17270 eval $inlibc
17271
17272 : preserve RCS keywords in files with variable substitution, grrr
17273 Date='$Date'
17274 Id='$Id'
17275 Log='$Log'
17276 RCSfile='$RCSfile'
17277 Revision='$Revision'
17278
17279 : check for alignment requirements
17280 echo " "
17281 case "$usecrosscompile$multiarch" in
17282 *$define*)
17283         $cat <<EOM
17284 You seem to be either cross-compiling or doing a multiarchitecture build,
17285 skipping the memory alignment check.
17286
17287 EOM
17288         case "$alignbytes" in
17289         '') alignbytes=8 ;;
17290         esac
17291         ;;
17292 *)
17293         case "$alignbytes" in
17294         '') echo "Checking alignment constraints..." >&4
17295                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17296                         $cat >try.c <<'EOCP'
17297 typedef long double NV;
17298 EOCP
17299                 else
17300                         $cat >try.c <<'EOCP'
17301 typedef double NV;
17302 EOCP
17303                 fi
17304                 $cat >>try.c <<'EOCP'
17305 #include <stdio.h>
17306 struct foobar {
17307         char foo;
17308         NV bar;
17309 } try_algn;
17310 int main()
17311 {
17312     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17313     return(0);
17314 }
17315 EOCP
17316                 set try
17317                 if eval $compile_ok; then
17318                         dflt=`$run ./try`
17319                 else
17320                         dflt='8'
17321                         echo "(I can't seem to compile the test program...)"
17322                 fi
17323                 ;;
17324         *) dflt="$alignbytes"
17325                 ;;
17326         esac
17327         rp="Doubles must be aligned on a how-many-byte boundary?"
17328         . ./myread
17329         alignbytes="$ans"
17330         $rm -f try.c try
17331         ;;
17332 esac
17333
17334
17335 : set the base revision
17336 baserev=5.0
17337
17338 : how do we concatenate cpp tokens here?
17339 echo " "
17340 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
17341 $cat >cpp_stuff.c <<'EOCP'
17342 #define RCAT(a,b)a/**/b
17343 #define ACAT(a,b)a ## b
17344 RCAT(Rei,ser)
17345 ACAT(Cir,cus)
17346 EOCP
17347 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17348 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17349         echo "Oh!  Smells like ANSI's been here." >&4
17350         echo "We can catify or stringify, separately or together!"
17351         cpp_stuff=42
17352 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17353         echo "Ah, yes!  The good old days!" >&4
17354         echo "However, in the good old days we don't know how to stringify and"
17355         echo "catify at the same time."
17356         cpp_stuff=1
17357 else
17358         $cat >&4 <<EOM
17359 Hmm, I don't seem to be able to concatenate tokens with your cpp.
17360 You're going to have to edit the values of CAT[2-5] in config.h...
17361 EOM
17362         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17363 fi
17364 $rm -f cpp_stuff.*
17365
17366 : see if this is a db.h system
17367 set db.h i_db
17368 eval $inhdr
17369
17370 case "$i_db" in
17371 $define)
17372         : Check db version.
17373         echo " "
17374         echo "Checking Berkeley DB version ..." >&4
17375         $cat >try.c <<EOCP
17376 #$d_const HASCONST
17377 #ifndef HASCONST
17378 #define const
17379 #endif
17380 #include <sys/types.h>
17381 #include <stdio.h>
17382 #$i_stdlib I_STDLIB
17383 #ifdef I_STDLIB
17384 #include <stdlib.h>
17385 #endif
17386 #include <db.h>
17387 int main(int argc, char *argv[])
17388 {
17389 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17390     int Major, Minor, Patch ;
17391     unsigned long Version ;
17392     (void)db_version(&Major, &Minor, &Patch) ;
17393     if (argc == 2) {
17394         printf("%d %d %d %d %d %d\n",
17395                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17396                Major, Minor, Patch);
17397         exit(0);
17398     }
17399     printf("You have Berkeley DB Version 2 or greater.\n");
17400
17401     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17402                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17403     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17404                 Major, Minor, Patch) ;
17405
17406     /* check that db.h & libdb are compatible */
17407     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17408         printf("db.h and libdb are incompatible.\n") ;
17409         exit(3);        
17410     }
17411
17412     printf("db.h and libdb are compatible.\n") ;
17413
17414     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17415                 + DB_VERSION_PATCH ;
17416
17417     /* needs to be >= 2.3.4 */
17418     if (Version < 2003004) {
17419     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17420         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17421         exit(2);        
17422     }
17423
17424     exit(0);
17425 #else
17426 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17427     if (argc == 2) {
17428         printf("1 0 0\n");
17429         exit(0);
17430     }
17431     printf("You have Berkeley DB Version 1.\n");
17432     exit(0);    /* DB version < 2: the coast is clear. */
17433 #else
17434     exit(1);    /* <db.h> not Berkeley DB? */
17435 #endif
17436 #endif
17437 }
17438 EOCP
17439         set try
17440         if eval $compile_ok && $run ./try; then
17441                 echo 'Looks OK.' >&4
17442                 set `$run ./try 1`
17443                 db_version_major=$1
17444                 db_version_minor=$2
17445                 db_version_patch=$3
17446         else
17447                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17448                 i_db=$undef
17449                 case " $libs " in
17450                 *"-ldb "*)
17451                         : Remove db from list of libraries to use
17452                         echo "Removing unusable -ldb from library list" >&4
17453                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17454                         shift
17455                         libs="$*"
17456                         echo "libs = $libs" >&4
17457                         ;;
17458                 esac
17459         fi
17460         $rm -f try.*
17461         ;;
17462 esac
17463
17464 case "$i_db" in
17465 define)
17466         : Check the return type needed for hash 
17467         echo " "
17468         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17469         $cat >try.c <<EOCP
17470 #$d_const HASCONST
17471 #ifndef HASCONST
17472 #define const
17473 #endif
17474 #include <sys/types.h>
17475 #include <db.h>
17476
17477 #ifndef DB_VERSION_MAJOR
17478 u_int32_t hash_cb (ptr, size)
17479 const void *ptr;
17480 size_t size;
17481 {
17482 }
17483 HASHINFO info;
17484 int main()
17485 {
17486         info.hash = hash_cb;
17487 }
17488 #endif
17489 EOCP
17490         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17491                 if $contains warning try.out >>/dev/null 2>&1 ; then
17492                         db_hashtype='int'
17493                 else
17494                         db_hashtype='u_int32_t'
17495                 fi
17496         else
17497                 : XXX Maybe we should just give up here.
17498                 db_hashtype=u_int32_t
17499                 $cat try.out >&4
17500                 echo "Help:  I can't seem to compile the db test program." >&4
17501                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17502         fi
17503         $rm -f try.*
17504         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17505         ;;
17506 *)      db_hashtype=u_int32_t
17507         ;;
17508 esac
17509 case "$i_db" in
17510 define)
17511         : Check the return type needed for prefix 
17512         echo " "
17513         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17514         cat >try.c <<EOCP
17515 #$d_const HASCONST
17516 #ifndef HASCONST
17517 #define const
17518 #endif
17519 #include <sys/types.h>
17520 #include <db.h>
17521
17522 #ifndef DB_VERSION_MAJOR
17523 size_t prefix_cb (key1, key2)
17524 const DBT *key1;
17525 const DBT *key2;
17526 {
17527 }
17528 BTREEINFO info;
17529 int main()
17530 {
17531         info.prefix = prefix_cb;
17532 }
17533 #endif
17534 EOCP
17535         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17536                 if $contains warning try.out >>/dev/null 2>&1 ; then
17537                         db_prefixtype='int'
17538                 else
17539                         db_prefixtype='size_t'
17540                 fi
17541         else
17542                 db_prefixtype='size_t'
17543                 : XXX Maybe we should just give up here.
17544                 $cat try.out >&4
17545                 echo "Help:  I can't seem to compile the db test program." >&4
17546                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17547         fi
17548         $rm -f try.*
17549         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17550         ;;
17551 *)      db_prefixtype='size_t'
17552         ;;
17553 esac
17554
17555
17556 : How can we generate normalized random numbers ?
17557 echo " "
17558 echo "Looking for a random number function..." >&4
17559 case "$randfunc" in
17560 '')
17561         if set drand48 val -f; eval $csym; $val; then
17562                 dflt="drand48"
17563                 echo "Good, found drand48()." >&4
17564         elif set random val -f; eval $csym; $val; then
17565                 dflt="random"
17566                 echo "OK, found random()." >&4
17567         else
17568                 dflt="rand"
17569                 echo "Yick, looks like I have to use rand()." >&4
17570         fi
17571         echo " "
17572         ;;
17573 *)
17574         dflt="$randfunc"
17575         ;;
17576 esac
17577 cont=true
17578
17579 case "$ccflags" in
17580 *-Dmy_rand=*|*-Dmy_srand=*)
17581         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17582         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17583         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17584         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17585         ;;
17586 esac
17587
17588 while $test "$cont"; do
17589         rp="Use which function to generate random numbers?"
17590         . ./myread
17591         if $test "$ans" = "$dflt"; then
17592                 : null
17593         else
17594                 randbits=''
17595         fi
17596         randfunc="$ans"
17597         if set $ans val -f; eval $csym; $val; then
17598                 cont=''
17599         else
17600                 dflt=y
17601                 rp="I cannot find function $ans. Use that name anyway?"
17602                 . ./myread
17603                 dflt=rand
17604                 case "$ans" in
17605                         [yY]*) cont='';;
17606                 esac
17607         fi
17608         case "$cont" in
17609         '')
17610                 case "$randfunc" in
17611                 drand48)
17612                         drand01="drand48()"
17613                         seedfunc="srand48"
17614                         randbits=48
17615                         randseedtype=long
17616                         ;;
17617                 rand|random)
17618                         case "$randbits" in
17619                         '')
17620 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17621                                 $cat >try.c <<EOCP
17622 #$i_unistd I_UNISTD
17623 #$i_stdlib I_STDLIB
17624 #include <stdio.h>
17625 #ifdef I_UNISTD
17626 #  include <unistd.h>
17627 #endif
17628 #ifdef I_STDLIB
17629 #  include <stdlib.h>
17630 #endif
17631 int main()
17632 {
17633         register int i;
17634         register unsigned long tmp;
17635         register unsigned long max = 0L;
17636
17637         for (i = 1000; i; i--) {
17638                 tmp = (unsigned long) $randfunc();
17639                 if (tmp > max) max = tmp;
17640         }
17641         for (i = 0; max; i++)
17642                 max /= 2;
17643         printf("%d\n",i);
17644 }
17645 EOCP
17646                                 set try
17647                                 if eval $compile_ok; then
17648                                         dflt=`try`
17649                                 else
17650                                         dflt='?'
17651                                         echo "(I can't seem to compile the test program...)"
17652                                 fi
17653                                 ;;
17654                         *)
17655                                 dflt="$randbits"
17656                                 ;;
17657                         esac
17658                         rp="How many bits does your $randfunc() function produce?"
17659                         . ./myread
17660                         randbits="$ans"
17661                         $rm -f try.c try
17662                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17663                         seedfunc="s$randfunc"
17664                         randseedtype=unsigned
17665                         ;;
17666                 *)
17667                         dflt="31"
17668                         rp="How many bits does your $randfunc() function produce?"
17669                         . ./myread
17670                         randbits="$ans"
17671                         seedfunc="s$randfunc"
17672                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17673                         if set $seedfunc val -f; eval $csym; $val; then
17674                                 echo "(Using $seedfunc() to seed random generator)"
17675                         else
17676                                 echo "(Warning: no $seedfunc() to seed random generator)"
17677                                 seedfunc=rand
17678                         fi
17679                         randseedtype=unsigned
17680                         ;;
17681                 esac
17682                 ;;
17683         esac
17684 done
17685
17686 echo " "
17687 echo "Determining whether or not we are on an EBCDIC system..." >&4
17688 $cat >try.c <<'EOM'
17689 int main()
17690 {
17691   if ('M'==0xd4) return 0;
17692   return 1;
17693 }
17694 EOM
17695
17696 val=$undef
17697 set try
17698 if eval $compile_ok; then
17699         if $run ./try; then
17700                 echo "You seem to speak EBCDIC." >&4
17701                 val="$define"
17702         else
17703                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17704         fi
17705 else
17706         echo "I'm unable to compile the test program." >&4
17707         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17708 fi
17709 $rm -f try try.*
17710 set ebcdic
17711 eval $setvar
17712
17713 echo " "
17714 $cat >&4 <<EOM
17715 Checking how to flush all pending stdio output...
17716 EOM
17717 # I only know how to find the first 32 possibly open files on SunOS.
17718 # See also hints/sunos_4_1.sh and util.c  --AD
17719 case "$osname" in
17720 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17721 esac
17722 $cat >>try.c <<EOCP
17723 #include <stdio.h>
17724 #$i_stdlib I_STDLIB
17725 #ifdef I_STDLIB
17726 #include <stdlib.h>
17727 #endif
17728 #$i_unistd I_UNISTD
17729 #ifdef I_UNISTD
17730 # include <unistd.h>
17731 #endif
17732 #$d_sysconf HAS_SYSCONF
17733 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17734 #ifdef HAS_STDIO_STREAM_ARRAY
17735 # define STDIO_STREAM_ARRAY $stdio_stream_array
17736 #endif
17737 int main() {
17738   FILE* p;
17739   unlink("try.out");
17740   p = fopen("try.out", "w");
17741 #ifdef TRY_FPUTC
17742   fputc('x', p);
17743 #else
17744 # ifdef TRY_FPRINTF
17745   fprintf(p, "x");
17746 # endif
17747 #endif
17748 #ifdef TRY_FFLUSH_NULL
17749   fflush(NULL);
17750 #endif
17751 #ifdef TRY_FFLUSH_ALL
17752   {
17753     long open_max = -1;
17754 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17755     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17756 # else
17757 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17758     open_max = sysconf(_SC_OPEN_MAX);
17759 #  else
17760 #   ifdef FOPEN_MAX
17761     open_max = FOPEN_MAX;
17762 #   else
17763 #    ifdef OPEN_MAX
17764     open_max = OPEN_MAX;
17765 #    else
17766 #     ifdef _NFILE
17767     open_max = _NFILE;
17768 #     endif
17769 #    endif
17770 #   endif
17771 #  endif
17772 # endif 
17773 # ifdef HAS_STDIO_STREAM_ARRAY
17774     if (open_max > 0) {
17775       long i;
17776       for (i = 0; i < open_max; i++)
17777             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17778                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17779                 STDIO_STREAM_ARRAY[i]._flag)
17780                 fflush(&STDIO_STREAM_ARRAY[i]);
17781     }   
17782   }
17783 # endif
17784 #endif
17785   _exit(42);
17786 }
17787 EOCP
17788 : first we have to find out how _not_ to flush
17789 $to try.c
17790 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17791     output=''
17792     set try -DTRY_FPUTC
17793     if eval $compile; then
17794             $run ./try 2>/dev/null
17795             code="$?"
17796             $from try.out
17797             if $test ! -s try.out -a "X$code" = X42; then
17798                 output=-DTRY_FPUTC
17799             fi
17800     fi
17801     case "$output" in
17802     '')
17803             set try -DTRY_FPRINTF
17804             if eval $compile; then
17805                     $run ./try 2>/dev/null
17806                     code="$?"
17807                     $from try.out
17808                     if $test ! -s try.out -a "X$code" = X42; then
17809                         output=-DTRY_FPRINTF
17810                     fi
17811             fi
17812         ;;
17813     esac
17814 fi
17815 : check for fflush NULL behaviour
17816 case "$fflushNULL" in
17817 '')     set try -DTRY_FFLUSH_NULL $output
17818         if eval $compile; then
17819                 $run ./try 2>/dev/null
17820                 code="$?"
17821                 $from try.out
17822                 if $test -s try.out -a "X$code" = X42; then
17823                         fflushNULL="`$cat try.out`"
17824                 else
17825                         if $test "X$code" != X42; then
17826                                 $cat >&4 <<EOM
17827 (If this test failed, don't worry, we'll try another method shortly.)
17828 EOM
17829                         fi
17830                 fi
17831         fi
17832         $rm -f core try.core core.try.*
17833         case "$fflushNULL" in
17834         x)      $cat >&4 <<EOM
17835 Your fflush(NULL) works okay for output streams.
17836 Let's see if it clobbers input pipes...
17837 EOM
17838 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17839 # bug that improperly flushes the input end of pipes.  So we avoid the
17840 # autoflush on fork/system/exec support for now. :-(
17841 $cat >tryp.c <<EOCP
17842 #include <stdio.h>
17843 int
17844 main(int argc, char **argv)
17845 {
17846     char buf[1024];
17847     int i;
17848     char *bp = buf;
17849     while (1) {
17850         while ((i = getc(stdin)) != -1
17851                && (*bp++ = i) != '\n'
17852                && bp < &buf[1024])
17853         /* DO NOTHING */ ;
17854         *bp = '\0';
17855         fprintf(stdout, "%s", buf);
17856         fflush(NULL);
17857         if (i == -1)
17858             return 0;
17859         bp = buf;
17860     }
17861 }
17862 EOCP
17863                 fflushNULL="$define"
17864                 set tryp
17865                 if eval $compile; then
17866                     $rm -f tryp.out
17867                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17868                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17869                        $cat >&4 <<EOM
17870 fflush(NULL) seems to behave okay with input streams.
17871 EOM
17872                         fflushNULL="$define"
17873                     else
17874                         $cat >&4 <<EOM
17875 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17876 EOM
17877                         fflushNULL="$undef"
17878                     fi
17879                 fi
17880                 $rm -f core tryp.c tryp.core core.tryp.*
17881                 ;;
17882         '')     $cat >&4 <<EOM
17883 Your fflush(NULL) isn't working (contrary to ANSI C).
17884 EOM
17885                 fflushNULL="$undef"
17886                 ;;
17887         *)      $cat >&4 <<EOM
17888 Cannot figure out whether your fflush(NULL) works or not.
17889 I'm assuming it doesn't (contrary to ANSI C).
17890 EOM
17891                 fflushNULL="$undef"
17892                 ;;
17893         esac
17894         ;;
17895 $define|true|[yY]*)
17896         fflushNULL="$define"
17897         ;;
17898 *)
17899         fflushNULL="$undef"
17900         ;;
17901 esac
17902 : check explicit looping only if NULL did not work, and if the pipe
17903 : bug does not show up on an explicit flush too
17904 case "$fflushNULL" in
17905 "$undef")
17906         $cat >tryp.c <<EOCP
17907 #include <stdio.h>
17908 int
17909 main(int argc, char **argv)
17910 {
17911     char buf[1024];
17912     int i;
17913     char *bp = buf;
17914     while (1) {
17915         while ((i = getc(stdin)) != -1
17916                && (*bp++ = i) != '\n'
17917                && bp < &buf[1024])
17918         /* DO NOTHING */ ;
17919         *bp = '\0';
17920         fprintf(stdout, "%s", buf);
17921         fflush(stdin);
17922         if (i == -1)
17923             return 0;
17924         bp = buf;
17925     }
17926 }
17927 EOCP
17928         set tryp
17929         if eval $compile; then
17930             $rm -f tryp.out
17931             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17932             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17933                $cat >&4 <<EOM
17934 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17935 EOM
17936                 : now check for fflushall behaviour
17937                 case "$fflushall" in
17938                 '')     set try -DTRY_FFLUSH_ALL $output
17939                         if eval $compile; then
17940                                 $cat >&4 <<EOM
17941 (Now testing the other method--but note that this also may fail.)
17942 EOM
17943                                 $run ./try 2>/dev/null
17944                                 code=$?
17945                                 $from try.out
17946                                 if $test -s try.out -a "X$code" = X42; then
17947                                         fflushall="`$cat try.out`"
17948                                 fi
17949                         fi
17950                         $rm -f core try.core core.try.*
17951                         case "$fflushall" in
17952                         x)      $cat >&4 <<EOM
17953 Whew. Flushing explicitly all the stdio streams works.
17954 EOM
17955                                 fflushall="$define"
17956                                 ;;
17957                         '')     $cat >&4 <<EOM
17958 Sigh. Flushing explicitly all the stdio streams doesn't work.
17959 EOM
17960                                 fflushall="$undef"
17961                                 ;;
17962                         *)      $cat >&4 <<EOM
17963 Cannot figure out whether flushing stdio streams explicitly works or not.
17964 I'm assuming it doesn't.
17965 EOM
17966                                 fflushall="$undef"
17967                                 ;;
17968                         esac
17969                         ;;
17970                 "$define"|true|[yY]*)
17971                         fflushall="$define"
17972                         ;;
17973                 *)
17974                         fflushall="$undef"
17975                         ;;
17976                 esac
17977             else
17978                 $cat >&4 <<EOM
17979 All is futile.  Even fflush(stdin) clobbers input pipes!
17980 EOM
17981                 fflushall="$undef"
17982             fi
17983         else
17984             fflushall="$undef"
17985         fi
17986         $rm -f core tryp.c tryp.core core.tryp.*
17987         ;;
17988 *)      fflushall="$undef"
17989         ;;
17990 esac
17991
17992 case "$fflushNULL$fflushall" in
17993 undefundef)
17994         $cat <<EOM
17995 OK, I give up.  I cannot figure out how to flush pending stdio output.
17996 We won't be flushing handles at all before fork/exec/popen.
17997 EOM
17998         ;;
17999 esac
18000 $rm -f try.* try$exe_ext
18001
18002 : Store the full pathname to the ar program for use in the C program
18003 : Respect a hint or command line value for full_ar.
18004 case "$full_ar" in
18005 '') full_ar=$ar ;;
18006 esac
18007
18008 : Store the full pathname to the sed program for use in the C program
18009 full_sed=$sed
18010
18011 : see what type gids are declared as in the kernel
18012 echo " "
18013 echo "Looking for the type for group ids returned by getgid()."
18014 set gid_t gidtype xxx stdio.h sys/types.h
18015 eval $typedef
18016 case "$gidtype" in
18017 xxx)
18018         xxx=`./findhdr sys/user.h`
18019         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
18020         case $1 in
18021         unsigned) dflt="$1 $2" ;;
18022         *) dflt="$1" ;;
18023         esac
18024         ;;
18025 *) dflt="$gidtype";;
18026 esac
18027 case "$gidtype" in
18028 gid_t) echo "gid_t found." ;;
18029 *)      rp="What is the type for group ids returned by getgid()?"
18030         . ./myread
18031         gidtype="$ans"
18032         ;;
18033 esac
18034
18035 echo " "
18036 case "$gidtype" in
18037 *_t) zzz="$gidtype"     ;;
18038 *)   zzz="gid"          ;;
18039 esac
18040 echo "Checking the size of $zzz..." >&4 
18041 cat > try.c <<EOCP
18042 #include <sys/types.h>
18043 #include <stdio.h>
18044 #$i_stdlib I_STDLIB
18045 #ifdef I_STDLIB
18046 #include <stdlib.h>
18047 #endif
18048 int main() {
18049     printf("%d\n", (int)sizeof($gidtype));
18050     exit(0);
18051 }
18052 EOCP
18053 set try
18054 if eval $compile_ok; then
18055         yyy=`$run ./try`
18056         case "$yyy" in
18057         '')     gidsize=4
18058                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
18059                 ;;
18060         *)      gidsize=$yyy
18061                 echo "Your $zzz is $gidsize bytes long."
18062                 ;;
18063         esac
18064 else
18065         gidsize=4
18066         echo "(I can't compile the test program--guessing $gidsize.)" >&4
18067 fi
18068
18069
18070 echo " "
18071 case "$gidtype" in
18072 *_t) zzz="$gidtype"     ;;
18073 *)   zzz="gid"          ;;
18074 esac
18075 echo "Checking the sign of $zzz..." >&4 
18076 cat > try.c <<EOCP
18077 #include <sys/types.h>
18078 #include <stdio.h>
18079 int main() {
18080         $gidtype foo = -1;
18081         if (foo < 0)
18082                 printf("-1\n");
18083         else
18084                 printf("1\n");
18085 }
18086 EOCP
18087 set try
18088 if eval $compile; then
18089         yyy=`$run ./try`
18090         case "$yyy" in
18091         '')     gidsign=1
18092                 echo "(I can't execute the test program--guessing unsigned.)" >&4
18093                 ;;
18094         *)      gidsign=$yyy
18095                 case "$gidsign" in
18096                  1) echo "Your $zzz is unsigned." ;;
18097                 -1) echo "Your $zzz is signed."   ;;
18098                 esac
18099                 ;;
18100         esac
18101 else
18102         gidsign=1
18103         echo "(I can't compile the test program--guessing unsigned.)" >&4
18104 fi
18105
18106
18107 echo " "
18108
18109 if $test X"$quadtype" != X; then
18110
18111 echo "Checking how to print 64-bit integers..." >&4
18112
18113 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18114         $cat >try.c <<'EOCP'
18115 #include <sys/types.h>
18116 #include <stdio.h>
18117 int main() {
18118   int q = 12345678901;
18119   printf("%ld\n", q);
18120 }
18121 EOCP
18122         set try
18123         if eval $compile; then
18124                 yyy=`$run ./try`
18125                 case "$yyy" in
18126                 12345678901)
18127                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18128                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18129                         echo "We will use %d."
18130                         ;;
18131                 esac
18132         fi
18133 fi
18134
18135 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18136         $cat >try.c <<'EOCP'
18137 #include <sys/types.h>
18138 #include <stdio.h>
18139 int main() {
18140   long q = 12345678901;
18141   printf("%ld\n", q);
18142 }
18143 EOCP
18144         set try
18145         if eval $compile; then
18146                 yyy=`$run ./try`
18147                 case "$yyy" in
18148                 12345678901)
18149                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18150                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18151                         echo "We will use %ld."
18152                         ;;
18153                 esac
18154         fi
18155 fi
18156
18157 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18158         $cat >try.c <<'EOCP'
18159 #include <sys/types.h>
18160 #include <inttypes.h>
18161 #include <stdio.h>
18162 int main() {
18163   int64_t q = 12345678901;
18164   printf("%" PRId64 "\n", q);
18165 }
18166 EOCP
18167         set try
18168         if eval $compile; then
18169                 yyy=`$run ./try`
18170                 case "$yyy" in
18171                 12345678901)
18172                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18173                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18174                         echo "We will use the C9X style."
18175                         ;;
18176                 esac
18177         fi
18178 fi
18179
18180 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18181         $cat >try.c <<EOCP
18182 #include <sys/types.h>
18183 #include <stdio.h>
18184 int main() {
18185   $quadtype q = 12345678901;
18186   printf("%Ld\n", q);
18187 }
18188 EOCP
18189         set try
18190         if eval $compile; then
18191                 yyy=`$run ./try`
18192                 case "$yyy" in
18193                 12345678901)
18194                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18195                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18196                         echo "We will use %Ld."
18197                         ;;
18198                 esac
18199         fi
18200 fi
18201
18202 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18203         $cat >try.c <<'EOCP'
18204 #include <sys/types.h>
18205 #include <stdio.h>
18206 int main() {
18207   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18208   printf("%lld\n", q);
18209 }
18210 EOCP
18211         set try
18212         if eval $compile; then
18213                 yyy=`$run ./try`
18214                 case "$yyy" in
18215                 12345678901)
18216                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18217                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18218                         echo "We will use the %lld style."
18219                         ;;
18220                 esac
18221         fi
18222 fi
18223
18224 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18225         $cat >try.c <<EOCP
18226 #include <sys/types.h>
18227 #include <stdio.h>
18228 int main() {
18229   $quadtype q = 12345678901;
18230   printf("%qd\n", q);
18231 }
18232 EOCP
18233         set try
18234         if eval $compile; then
18235                 yyy=`$run ./try`
18236                 case "$yyy" in
18237                 12345678901)
18238                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18239                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18240                         echo "We will use %qd."
18241                         ;;
18242                 esac
18243         fi
18244 fi
18245
18246 if $test X"$sPRId64" = X; then
18247         echo "Cannot figure out how to print 64-bit integers." >&4
18248 fi
18249
18250 $rm -f try try.*
18251
18252 fi
18253
18254 case "$sPRId64" in
18255 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18256         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18257         ;;
18258 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18259         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18260         ;;
18261 esac
18262
18263
18264 echo " "
18265 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18266
18267 if $test X"$ivsize" = X8; then
18268         ivdformat="$sPRId64"
18269         uvuformat="$sPRIu64"
18270         uvoformat="$sPRIo64"
18271         uvxformat="$sPRIx64"
18272         uvXUformat="$sPRIXU64"
18273 else
18274         if $test X"$ivsize" = X"$longsize"; then
18275                 ivdformat='"ld"'
18276                 uvuformat='"lu"'
18277                 uvoformat='"lo"'
18278                 uvxformat='"lx"'
18279                 uvXUformat='"lX"'
18280         else
18281                 if $test X"$ivsize" = X"$intsize"; then
18282                         ivdformat='"d"'
18283                         uvuformat='"u"'
18284                         uvoformat='"o"'
18285                         uvxformat='"x"'
18286                         uvXUformat='"X"'
18287                 else
18288                         : far out
18289                         if $test X"$ivsize" = X"$shortsize"; then
18290                                 ivdformat='"hd"'
18291                                 uvuformat='"hu"'
18292                                 uvoformat='"ho"'
18293                                 uvxformat='"hx"'
18294                                 uvXUformat='"hX"'
18295                         fi
18296                 fi
18297         fi
18298 fi
18299
18300 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18301         nveformat="$sPRIeldbl"
18302         nvfformat="$sPRIfldbl"
18303         nvgformat="$sPRIgldbl"
18304         nvEUformat="$sPRIEUldbl"
18305         nvFUformat="$sPRIFUldbl"
18306         nvGUformat="$sPRIGUldbl"
18307 else
18308         nveformat='"e"'
18309         nvfformat='"f"'
18310         nvgformat='"g"'
18311         nvEUformat='"E"'
18312         nvFUformat='"F"'
18313         nvGUformat='"G"'
18314 fi
18315
18316 case "$ivdformat" in
18317 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18318     exit 1
18319     ;;
18320 esac
18321
18322
18323 echo " "
18324 $echo "Checking the format string to be used for gids..." >&4
18325
18326 case "$gidsign" in
18327 -1)     if $test X"$gidsize" = X"$ivsize"; then
18328                 gidformat="$ivdformat"
18329         else
18330                 if $test X"$gidsize" = X"$longsize"; then
18331                         gidformat='"ld"'
18332                 else
18333                         if $test X"$gidsize" = X"$intsize"; then
18334                                 gidformat='"d"'
18335                         else
18336                                 if $test X"$gidsize" = X"$shortsize"; then
18337                                         gidformat='"hd"'
18338                                 fi
18339                         fi
18340                 fi
18341         fi
18342         ;;
18343 *)      if $test X"$gidsize" = X"$uvsize"; then
18344                 gidformat="$uvuformat"
18345         else
18346                 if $test X"$gidsize" = X"$longsize"; then
18347                         gidformat='"lu"'
18348                 else
18349                         if $test X"$gidsize" = X"$intsize"; then
18350                                 gidformat='"u"'
18351                         else
18352                                 if $test X"$gidsize" = X"$shortsize"; then
18353                                         gidformat='"hu"'
18354                                 fi
18355                         fi
18356                 fi
18357         fi
18358         ;;
18359 esac
18360
18361 : see if getgroups exists
18362 set getgroups d_getgrps
18363 eval $inlibc
18364
18365 : see if setgroups exists
18366 set setgroups d_setgrps
18367 eval $inlibc
18368
18369
18370 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18371 echo " "
18372 case "$d_getgrps$d_setgrps" in
18373 *define*)
18374         case "$groupstype" in
18375         '') dflt="$gidtype" ;;
18376         *)  dflt="$groupstype" ;;
18377         esac
18378         $cat <<EOM
18379 What type of pointer is the second argument to getgroups() and setgroups()?
18380 Usually this is the same as group ids, $gidtype, but not always.
18381
18382 EOM
18383         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18384         . ./myread
18385         groupstype="$ans"
18386         ;;
18387 *)  groupstype="$gidtype";;
18388 esac
18389
18390 echo " "
18391 echo "Checking if your $make program sets \$(MAKE)..." >&4
18392 case "$make_set_make" in
18393 '')
18394         $sed 's/^X //' > testmake.mak << 'EOF'
18395 Xall:
18396 X       @echo 'maketemp="$(MAKE)"'
18397 EOF
18398         case "`$make -f testmake.mak 2>/dev/null`" in
18399         *maketemp=*) make_set_make='#' ;;
18400         *)      make_set_make="MAKE=$make" ;;
18401         esac
18402         $rm -f testmake.mak
18403         ;;
18404 esac
18405 case "$make_set_make" in
18406 '#') echo "Yup, it does.";;
18407 *) echo "Nope, it doesn't.";;
18408 esac
18409
18410 : see what type is used for mode_t
18411 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18412 set mode_t modetype int stdio.h sys/types.h
18413 eval $typedef_ask
18414
18415 : see if stdarg is available
18416 echo " "
18417 if $test `./findhdr stdarg.h`; then
18418         echo "<stdarg.h> found." >&4
18419         valstd="$define"
18420 else
18421         echo "<stdarg.h> NOT found." >&4
18422         valstd="$undef"
18423 fi
18424
18425 : see if varags is available
18426 echo " "
18427 if $test `./findhdr varargs.h`; then
18428         echo "<varargs.h> found." >&4
18429 else
18430         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18431 fi
18432
18433 : set up the varargs testing programs
18434 $cat > varargs.c <<EOP
18435 #ifdef I_STDARG
18436 #include <stdarg.h>
18437 #endif
18438 #ifdef I_VARARGS
18439 #include <varargs.h>
18440 #endif
18441
18442 #ifdef I_STDARG
18443 int f(char *p, ...)
18444 #else
18445 int f(va_alist)
18446 va_dcl
18447 #endif
18448 {
18449         va_list ap;
18450 #ifndef I_STDARG
18451         char *p;
18452 #endif
18453 #ifdef I_STDARG
18454         va_start(ap,p);
18455 #else
18456         va_start(ap);
18457         p = va_arg(ap, char *);
18458 #endif
18459         va_end(ap);
18460 }
18461 EOP
18462 $cat > varargs <<EOP
18463 $startsh
18464 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18465         echo "true"
18466 else
18467         echo "false"
18468 fi
18469 $rm -f varargs$_o
18470 EOP
18471 chmod +x varargs
18472
18473 : now check which varargs header should be included
18474 echo " "
18475 i_varhdr=''
18476 case "$valstd" in
18477 "$define")
18478         if `./varargs I_STDARG`; then
18479                 val='stdarg.h'
18480         elif `./varargs I_VARARGS`; then
18481                 val='varargs.h'
18482         fi
18483         ;;
18484 *)
18485         if `./varargs I_VARARGS`; then
18486                 val='varargs.h'
18487         fi
18488         ;;
18489 esac
18490 case "$val" in
18491 '')
18492 echo "I could not find the definition for va_dcl... You have problems..." >&4
18493         val="$undef"; set i_stdarg; eval $setvar
18494         val="$undef"; set i_varargs; eval $setvar
18495         ;;
18496 *) 
18497         set i_varhdr
18498         eval $setvar
18499         case "$i_varhdr" in
18500         stdarg.h)
18501                 val="$define"; set i_stdarg; eval $setvar
18502                 val="$undef"; set i_varargs; eval $setvar
18503                 ;;
18504         varargs.h)
18505                 val="$undef"; set i_stdarg; eval $setvar
18506                 val="$define"; set i_varargs; eval $setvar
18507                 ;;
18508         esac
18509         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18510 esac
18511 $rm -f varargs*
18512
18513 : see if we need va_copy
18514 echo " "
18515 case "$i_stdarg" in
18516 "$define")
18517         $cat >try.c <<EOCP
18518 #include <stdarg.h>
18519 #include <stdio.h>
18520 #$i_stdlib I_STDLIB
18521 #ifdef I_STDLIB
18522 #include <stdlib.h>
18523 #endif
18524 #include <signal.h>
18525
18526 int
18527 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18528 {
18529   return vfprintf(f, fmt, *valp);
18530 }
18531  
18532 int    
18533 myvfprintf(FILE *f, const  char *fmt, va_list val)
18534 {
18535   return ivfprintf(f, fmt, &val);
18536 }
18537       
18538 int
18539 myprintf(char *fmt, ...) 
18540 {
18541   va_list val;
18542   va_start(val, fmt);
18543   return myvfprintf(stdout, fmt, val); 
18544 }         
18545
18546 int
18547 main(int ac, char **av)
18548 {
18549   signal(SIGSEGV, exit);
18550
18551   myprintf("%s%cs all right, then\n", "that", '\'');                            
18552   exit(0);      
18553 }
18554 EOCP
18555         set try
18556         if eval $compile && $run ./try 2>&1 >/dev/null; then
18557                 case "`$run ./try`" in
18558                 "that's all right, then")
18559                         okay=yes
18560                         ;;
18561                 esac
18562         fi
18563         case "$okay" in
18564         yes)    echo "It seems that you don't need va_copy()." >&4
18565                 need_va_copy="$undef"
18566                 ;;
18567         *)      echo "It seems that va_copy() or similar will be needed." >&4
18568                 need_va_copy="$define"
18569                 ;;
18570         esac
18571         $rm -f try.* core core.* *.core *.core.*
18572         ;;
18573 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18574         ;;
18575 esac
18576
18577 : see what type is used for size_t
18578 rp="What is the type used for the length parameter for string functions?"
18579 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18580 eval $typedef_ask
18581
18582 : check for type of arguments to gethostbyaddr. 
18583 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18584         case "$d_gethbyaddr" in
18585         $define)
18586                 $cat <<EOM
18587
18588 Checking to see what type of arguments are accepted by gethostbyaddr().
18589 EOM
18590                 hdrs="$define sys/types.h
18591                         $d_socket sys/socket.h 
18592                         $i_niin netinet/in.h 
18593                         $i_netdb netdb.h
18594                         $i_unistd unistd.h"
18595                 : The first arg can 'char *' or 'void *'
18596                 : The second arg is some of integral type
18597                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18598                         for yyy in size_t long int; do
18599                                 case "$netdb_host_type" in
18600                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18601                                         if ./protochk "$try" $hdrs; then
18602                                                 echo "Your system accepts $xxx for the first arg."
18603                                                 echo "...and $yyy for the second arg."
18604                                                 netdb_host_type="$xxx"
18605                                                 netdb_hlen_type="$yyy"
18606                                         fi
18607                                         ;;
18608                                 esac
18609                         done
18610                 done
18611                 : In case none of those worked, prompt the user.
18612                 case "$netdb_host_type" in
18613                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18614                         dflt='char *'
18615                         . ./myread
18616                         netdb_host_type=$ans
18617                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18618                         dflt="$sizetype"
18619                         . ./myread
18620                         netdb_hlen_type=$ans
18621                         ;;
18622                 esac
18623                 ;;
18624         *)      : no gethostbyaddr, so pick harmless defaults
18625                 netdb_host_type='char *'
18626                 netdb_hlen_type="$sizetype"
18627                 ;;
18628         esac
18629         # Remove the "const" if needed. -- but then we'll have a 
18630         # prototype clash!
18631         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18632 fi
18633
18634 : check for type of argument to gethostbyname. 
18635 if test "X$netdb_name_type" = X ; then
18636         case "$d_gethbyname" in
18637         $define)
18638                 $cat <<EOM
18639
18640 Checking to see what type of argument is accepted by gethostbyname().
18641 EOM
18642                 hdrs="$define sys/types.h
18643                         $d_socket sys/socket.h 
18644                         $i_niin netinet/in.h 
18645                         $i_netdb netdb.h
18646                         $i_unistd unistd.h"
18647                 for xxx in "const char *" "char *"; do
18648                         case "$netdb_name_type" in
18649                         '')     try="extern struct hostent *gethostbyname($xxx);"
18650                                 if ./protochk "$try" $hdrs; then
18651                                         echo "Your system accepts $xxx."
18652                                         netdb_name_type="$xxx"
18653                                 fi
18654                                 ;;
18655                         esac
18656                 done
18657                 : In case none of those worked, prompt the user.
18658                 case "$netdb_name_type" in
18659                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18660                         dflt='char *'
18661                         . ./myread
18662                         netdb_name_type=$ans
18663                         ;;
18664                 esac
18665                 ;;
18666         *)      : no gethostbyname, so pick harmless default
18667                 netdb_name_type='char *'
18668                 ;;
18669         esac
18670 fi
18671
18672 : check for type of 1st argument to getnetbyaddr. 
18673 if test "X$netdb_net_type" = X ; then
18674         case "$d_getnbyaddr" in
18675         $define)
18676                 $cat <<EOM
18677
18678 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18679 EOM
18680                 hdrs="$define sys/types.h
18681                         $d_socket sys/socket.h 
18682                         $i_niin netinet/in.h 
18683                         $i_netdb netdb.h
18684                         $i_unistd unistd.h"
18685                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18686                         case "$netdb_net_type" in
18687                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18688                                 if ./protochk "$try" $hdrs; then
18689                                         echo "Your system accepts $xxx."
18690                                         netdb_net_type="$xxx"
18691                                 fi
18692                                 ;;
18693                         esac
18694                 done
18695                 : In case none of those worked, prompt the user.
18696                 case "$netdb_net_type" in
18697                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18698                         dflt='long'
18699                         . ./myread
18700                         netdb_net_type=$ans
18701                         ;;
18702                 esac
18703                 ;;
18704         *)      : no getnetbyaddr, so pick harmless default
18705                 netdb_net_type='long'
18706                 ;;
18707         esac
18708 fi
18709 : locate the preferred pager for this system
18710 fn=f/
18711 case "$pager" in
18712 '')
18713         dflt=''
18714         case "$pg" in
18715         /*) dflt=$pg;;
18716         [a-zA-Z]:/*) dflt=$pg;;
18717         esac
18718         case "$more" in
18719         /*) dflt=$more;;
18720         [a-zA-Z]:/*) dflt=$more;;
18721         esac
18722         case "$less" in
18723         /*) dflt=$less;;
18724         [a-zA-Z]:/*) dflt=$less;;
18725         esac
18726         case "$dflt" in
18727         '') dflt=/usr/ucb/more;;
18728         esac
18729         ;;
18730 *)      dflt="$pager"
18731         : Instruct ./getfile to trust the hinted or previous pager value,
18732         : even if it does not begin with a slash.  For example, on os2,
18733         : pager might be cmd /c more.  See comments in UU/getfile.
18734         fn="f/($pager)"
18735         ;;
18736 esac
18737 echo " "
18738 rp='What pager is used on your system?'
18739 . ./getfile
18740 pager="$ans"
18741
18742 : see what type pids are declared as in the kernel
18743 rp="What is the type of process ids on this system?"
18744 set pid_t pidtype int stdio.h sys/types.h
18745 eval $typedef_ask
18746
18747 : see if ar generates random libraries by itself
18748 echo " "
18749 echo "Checking how to generate random libraries on your machine..." >&4
18750 echo 'int bar1() { return bar2(); }' > bar1.c
18751 echo 'int bar2() { return 2; }' > bar2.c
18752 $cat > foo.c <<EOP
18753 #$i_stdlib I_STDLIB
18754 #ifdef I_STDLIB
18755 #include <stdlib.h>
18756 #endif
18757 int main() { printf("%d\n", bar1()); exit(0); }
18758 EOP
18759 $cc $ccflags -c bar1.c >/dev/null 2>&1
18760 $cc $ccflags -c bar2.c >/dev/null 2>&1
18761 $cc $ccflags -c foo.c >/dev/null 2>&1
18762 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18763 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18764         $run ./foobar >/dev/null 2>&1; then
18765         echo "$ar appears to generate random libraries itself."
18766         orderlib=false
18767         ranlib=":"
18768 elif $ar ts bar$_a >/dev/null 2>&1 &&
18769         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18770         $run ./foobar >/dev/null 2>&1; then
18771                 echo "a table of contents needs to be added with '$ar ts'."
18772                 orderlib=false
18773                 ranlib="$ar ts"
18774 else
18775         case "$ranlib" in
18776         :) ranlib='';;
18777         '')
18778                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18779                 $test -f $ranlib || ranlib=''
18780                 ;;
18781         esac
18782         if $test -n "$ranlib"; then
18783                 echo "your system has '$ranlib'; we'll use that."
18784                 orderlib=false
18785         else
18786                 echo "your system doesn't seem to support random libraries"
18787                 echo "so we'll use lorder and tsort to order the libraries."
18788                 orderlib=true
18789                 ranlib=":"
18790         fi
18791 fi
18792 $rm -f foo* bar* 
18793
18794 : check for type of arguments to select. 
18795 case "$selecttype" in
18796 '') case "$d_select" in
18797         $define)
18798                 echo " "
18799                 $cat <<EOM
18800 Checking to see what type of arguments are accepted by select().
18801 EOM
18802                 hdrs="$define sys/types.h
18803                         $i_systime sys/time.h 
18804                         $i_sysselct sys/select.h
18805                         $d_socket sys/socket.h"
18806                 : The first arg can be int, unsigned, or size_t
18807                 : The last arg may or may not be 'const'
18808                 val=''
18809                 : void pointer has been seen but using that
18810                 : breaks the selectminbits test
18811                 for xxx in 'fd_set *' 'int *'; do
18812                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18813                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18814                                         case "$val" in
18815                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18816                                                 if ./protochk "$try" $hdrs; then
18817                                                         echo "Your system accepts $xxx."
18818                                                         val="$xxx"
18819                                                 fi
18820                                                 ;;
18821                                         esac
18822                                 done
18823                         done
18824                 done
18825                 case "$val" in
18826                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18827                         case "$d_fd_set" in
18828                                 $define) dflt="fd_set *" ;;
18829                                 *)              dflt="int *" ;;
18830                         esac
18831                         . ./myread
18832                         val=$ans
18833                         ;;
18834                 esac
18835                 selecttype="$val"
18836                 ;;
18837         *)      : no select, so pick a harmless default
18838                 selecttype='int *'
18839                 ;;
18840         esac
18841         ;;
18842 esac
18843
18844 : check for the select 'width'
18845 case "$selectminbits" in
18846 '') safebits=`expr $ptrsize \* 8`
18847     case "$d_select" in
18848         $define)
18849                 $cat <<EOM
18850
18851 Checking to see on how many bits at a time your select() operates...
18852 EOM
18853                 $cat >try.c <<EOCP
18854 #include <sys/types.h>
18855 #$i_time I_TIME
18856 #$i_systime I_SYS_TIME
18857 #$i_systimek I_SYS_TIME_KERNEL
18858 #ifdef I_TIME
18859 #   include <time.h>
18860 #endif
18861 #ifdef I_SYS_TIME
18862 #   ifdef I_SYS_TIME_KERNEL
18863 #       define KERNEL
18864 #   endif
18865 #   include <sys/time.h>
18866 #   ifdef I_SYS_TIME_KERNEL
18867 #       undef KERNEL
18868 #   endif
18869 #endif
18870 #$i_sysselct I_SYS_SELECT
18871 #ifdef I_SYS_SELECT
18872 #include <sys/select.h>
18873 #endif
18874 #$d_socket HAS_SOCKET
18875 #ifdef HAS_SOCKET
18876 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18877 #endif
18878 #include <stdio.h>
18879 #$i_stdlib I_STDLIB
18880 #ifdef I_STDLIB
18881 #include <stdlib.h>
18882 #endif
18883 $selecttype b;
18884 #define S sizeof(*(b))
18885 #define MINBITS 64
18886 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18887 #define NBITS  (NBYTES * 8)
18888 int main() {
18889     char *s = malloc(NBYTES);
18890     struct timeval t;
18891     int i;
18892     FILE* fp;
18893     int fd;
18894
18895     if (!s)
18896         exit(1);
18897     fclose(stdin);
18898     fp = fopen("try.c", "r");
18899     if (fp == 0)
18900       exit(2);
18901     fd = fileno(fp);
18902     if (fd < 0)
18903       exit(3);
18904     b = ($selecttype)s;
18905     for (i = 0; i < NBITS; i++)
18906         FD_SET(i, b);
18907     t.tv_sec  = 0;
18908     t.tv_usec = 0;
18909     select(fd + 1, b, 0, 0, &t);
18910     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18911     free(s);
18912     printf("%d\n", i + 1);
18913     return 0;
18914 }
18915 EOCP
18916                 set try
18917                 if eval $compile_ok; then
18918                         selectminbits=`$run ./try`
18919                         case "$selectminbits" in
18920                         '')     cat >&4 <<EOM
18921 Cannot figure out on how many bits at a time your select() operates.
18922 I'll play safe and guess it is $safebits bits.
18923 EOM
18924                                 selectminbits=$safebits
18925                                 bits="$safebits bits"
18926                                 ;;
18927                         1)      bits="1 bit" ;;
18928                         *)      bits="$selectminbits bits" ;;
18929                         esac
18930                         echo "Your select() operates on $bits at a time." >&4
18931                 else
18932                         rp='What is the minimum number of bits your select() operates on?'
18933                         case "$byteorder" in
18934                         12345678)       dflt=64 ;;
18935                         1234)           dflt=32 ;;
18936                         *)              dflt=1  ;;
18937                         esac
18938                         . ./myread
18939                         val=$ans
18940                         selectminbits="$val"
18941                 fi
18942                 $rm -f try.* try
18943                 ;;
18944         *)      : no select, so pick a harmless default
18945                 selectminbits=$safebits
18946                 ;;
18947         esac
18948         ;;
18949 esac
18950
18951 : Trace out the files included by signal.h, then look for SIGxxx names.
18952 : Remove SIGARRAYSIZE used by HPUX.
18953 : Remove SIGSTKSIZE used by Linux.
18954 : Remove SIGSTKSZ used by Posix.
18955 : Remove SIGTYP void lines used by OS2.
18956 : Some cpps, like os390, dont give the file name anywhere
18957 if [ "X$fieldn" = X ]; then
18958         : Just make some guesses.  We check them later.
18959         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18960 else
18961         xxx=`echo '#include <signal.h>' |
18962         $cppstdin $cppminus $cppflags 2>/dev/null |
18963         $grep '^[       ]*#.*include' | 
18964         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18965 fi
18966 : Check this list of files to be sure we have parsed the cpp output ok.
18967 : This will also avoid potentially non-existent files, such 
18968 : as ../foo/bar.h
18969 xxxfiles=''
18970 for xx in $xxx /dev/null ; do
18971         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18972 done
18973 : If we have found no files, at least try signal.h
18974 case "$xxxfiles" in
18975 '')     xxxfiles=`./findhdr signal.h` ;;
18976 esac
18977 xxx=`awk '
18978 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18979         print substr($2, 4, 20)
18980 }
18981 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18982         print substr($3, 4, 20)
18983 }' $xxxfiles`
18984 : Append some common names just in case the awk scan failed.
18985 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18986 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18987 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18988 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18989 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18990
18991 : generate a few handy files for later
18992 $cat > signal.c <<EOCP
18993 #include <sys/types.h>
18994 #include <signal.h>
18995 #$i_stdlib I_STDLIB
18996 #ifdef I_STDLIB
18997 #include <stdlib.h>
18998 #endif
18999 #include <stdio.h>
19000 int main() {
19001
19002 /* Strange style to avoid deeply-nested #if/#else/#endif */
19003 #ifndef NSIG
19004 #  ifdef _NSIG
19005 #    define NSIG (_NSIG)
19006 #  endif
19007 #endif
19008
19009 #ifndef NSIG
19010 #  ifdef SIGMAX
19011 #    define NSIG (SIGMAX+1)
19012 #  endif
19013 #endif
19014
19015 #ifndef NSIG
19016 #  ifdef SIG_MAX
19017 #    define NSIG (SIG_MAX+1)
19018 #  endif
19019 #endif
19020
19021 #ifndef NSIG
19022 #  ifdef MAXSIG
19023 #    define NSIG (MAXSIG+1)
19024 #  endif
19025 #endif
19026
19027 #ifndef NSIG
19028 #  ifdef MAX_SIG
19029 #    define NSIG (MAX_SIG+1)
19030 #  endif
19031 #endif
19032
19033 #ifndef NSIG
19034 #  ifdef SIGARRAYSIZE
19035 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
19036 #  endif
19037 #endif
19038
19039 #ifndef NSIG
19040 #  ifdef _sys_nsig
19041 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
19042 #  endif
19043 #endif
19044
19045 /* Default to some arbitrary number that's big enough to get most
19046    of the common signals.
19047 */
19048 #ifndef NSIG
19049 #    define NSIG 50
19050 #endif
19051
19052 printf("NSIG %d\n", NSIG);
19053
19054 #ifndef JUST_NSIG
19055
19056 EOCP
19057
19058 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
19059 {
19060         printf "#ifdef SIG"; printf $1; printf "\n"
19061         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
19062         printf $1; printf ");\n"
19063         printf "#endif\n"
19064 }
19065 END {
19066         printf "#endif /* JUST_NSIG */\n";
19067         printf "exit(0);\n}\n";
19068 }
19069 ' >>signal.c
19070 $cat >signal.awk <<'EOP'
19071 BEGIN { ndups = 0 }
19072 $1 ~ /^NSIG$/ { nsig = $2 }
19073 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
19074     if ($2 > maxsig) { maxsig = $2 }
19075     if (sig_name[$2]) {
19076         dup_name[ndups] = $1
19077         dup_num[ndups] = $2
19078         ndups++ 
19079     }
19080     else {
19081         sig_name[$2] = $1
19082         sig_num[$2] = $2
19083     }
19084 }
19085 END { 
19086     if (nsig == 0) {
19087         nsig = maxsig + 1
19088     }
19089     printf("NSIG %d\n", nsig);
19090     for (n = 1; n < nsig; n++) {
19091         if (sig_name[n]) {
19092             printf("%s %d\n", sig_name[n], sig_num[n])
19093         }
19094         else {
19095             printf("NUM%d %d\n", n, n) 
19096         }
19097     }
19098     for (n = 0; n < ndups; n++) {
19099         printf("%s %d\n", dup_name[n], dup_num[n])
19100     }
19101 }
19102 EOP
19103 $cat >signal_cmd <<EOS
19104 $startsh
19105 if $test -s signal.lst; then
19106     echo "Using your existing signal.lst file"
19107         exit 0
19108 fi
19109 xxx="$xxx"
19110 EOS
19111 $cat >>signal_cmd <<'EOS'
19112
19113 set signal
19114 if eval $compile_ok; then
19115         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19116 else
19117         echo "(I can't seem be able to compile the whole test program)" >&4
19118         echo "(I'll try it in little pieces.)" >&4
19119         set signal -DJUST_NSIG
19120         if eval $compile_ok; then
19121                 $run ./signal$_exe > signal.nsg
19122                 $cat signal.nsg
19123         else
19124                 echo "I can't seem to figure out how many signals you have." >&4
19125                 echo "Guessing 50." >&4
19126                 echo 'NSIG 50' > signal.nsg
19127         fi
19128         : Now look at all the signal names, one at a time.
19129         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19130                 $cat > signal.c <<EOCP
19131 #include <sys/types.h>
19132 #include <signal.h>
19133 #include <stdio.h>
19134 int main() {
19135 printf("$xx %d\n", SIG${xx});
19136 return 0;
19137 }
19138 EOCP
19139                 set signal
19140                 if eval $compile; then
19141                         echo "SIG${xx} found."
19142                         $run ./signal$_exe  >> signal.ls1
19143                 else
19144                         echo "SIG${xx} NOT found."
19145                 fi
19146         done
19147         if $test -s signal.ls1; then
19148                 $cat signal.nsg signal.ls1 |
19149                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
19150         fi
19151
19152 fi
19153 if $test -s signal.lst; then
19154         :
19155 else
19156         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19157         echo 'kill -l' >signal
19158         set X `csh -f <signal`
19159         $rm -f signal
19160         shift
19161         case $# in
19162         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19163         esac
19164         echo $@ | $tr ' ' $trnl | \
19165             $awk '{ printf "%s %d\n", $1, ++s; }
19166                   END { printf "NSIG %d\n", ++s }' >signal.lst
19167 fi
19168 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19169 EOS
19170 chmod a+x signal_cmd
19171 $eunicefix signal_cmd
19172
19173 : generate list of signal names
19174 echo " "
19175 case "$sig_name_init" in
19176 '') doinit=yes ;;
19177 *)  case "$sig_num_init" in
19178     ''|*,*) doinit=yes ;;
19179     esac ;;
19180 esac
19181 case "$doinit" in
19182 yes)
19183         echo "Generating a list of signal names and numbers..." >&4
19184         . ./signal_cmd
19185         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19186         sig_name=`$awk 'BEGIN { printf "ZERO " }
19187                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19188         sig_num=`$awk  'BEGIN { printf "0 " }
19189                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19190         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19191                              !/^NSIG/   { printf "\"%s\", ", $1 }
19192                              END        { printf "0\n" }' signal.lst`
19193         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19194                              !/^NSIG/   { printf "%d, ", $2}
19195                              END        { printf "0\n"}' signal.lst`
19196         ;;
19197 esac
19198 echo "The following $sig_count signals are available:"
19199 echo " "
19200 echo $sig_name | $awk \
19201 'BEGIN { linelen = 0 }
19202 {
19203         for (i = 1; i <= NF; i++) {
19204                 name = "SIG" $i " "
19205                 linelen = linelen + length(name)
19206                 if (linelen > 70) {
19207                         printf "\n"
19208                         linelen = length(name)
19209                 }
19210                 printf "%s", name
19211         }
19212         printf "\n"
19213 }'
19214 sig_size=`echo $sig_name | awk '{print NF}'`
19215 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19216
19217 echo " "
19218 case "$sizetype" in
19219 *_t) zzz="$sizetype"    ;;
19220 *)   zzz="filesize"     ;;
19221 esac
19222 echo "Checking the size of $zzz..." >&4 
19223 cat > try.c <<EOCP
19224 #include <sys/types.h>
19225 #include <stdio.h>
19226 #$i_stdlib I_STDLIB
19227 #ifdef I_STDLIB
19228 #include <stdlib.h>
19229 #endif
19230 int main() {
19231     printf("%d\n", (int)sizeof($sizetype));
19232     exit(0);
19233 }
19234 EOCP
19235 set try
19236 if eval $compile_ok; then
19237         yyy=`$run ./try`
19238         case "$yyy" in
19239         '')     sizesize=4
19240                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19241                 ;;
19242         *)      sizesize=$yyy
19243                 echo "Your $zzz size is $sizesize bytes."
19244                 ;;
19245         esac
19246 else
19247         sizesize=4
19248         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19249 fi
19250
19251
19252 : check for socklen_t
19253 echo " "
19254 echo "Checking to see if you have socklen_t..." >&4
19255 $cat >try.c <<EOCP
19256 #include <sys/types.h>
19257 #$d_socket HAS_SOCKET
19258 #ifdef HAS_SOCKET
19259 #include <sys/socket.h>
19260 #endif
19261 int main() { socklen_t x = 16; }
19262 EOCP
19263 set try
19264 if eval $compile; then
19265         val="$define"
19266         echo "You have socklen_t."
19267 else
19268         val="$undef"
19269         echo "You do not have socklen_t."
19270         case "$sizetype" in
19271         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19272         esac
19273 fi
19274 $rm -f try try.*
19275 set d_socklen_t
19276 eval $setvar
19277
19278 : see if this is a socks.h system
19279 set socks.h i_socks
19280 eval $inhdr
19281
19282 : check for type of the size argument to socket calls
19283 case "$d_socket" in
19284 "$define")
19285         $cat <<EOM
19286
19287 Checking to see what type is the last argument of accept().
19288 EOM
19289         yyy=''
19290         case "$d_socklen_t" in
19291         "$define") yyy="$yyy socklen_t"
19292         esac
19293         yyy="$yyy $sizetype int long unsigned"
19294         for xxx in $yyy; do
19295                 case "$socksizetype" in
19296                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19297                         case "$usesocks" in
19298                         "$define")
19299                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19300                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19301                                         socksizetype="$xxx"
19302                                 fi
19303                                 ;;
19304                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19305                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19306                                         socksizetype="$xxx"
19307                                 fi
19308                                 ;;
19309                         esac
19310                         ;;
19311                 esac
19312         done
19313 : In case none of those worked, prompt the user.
19314         case "$socksizetype" in
19315         '')     rp='What is the type for socket address structure sizes?'
19316                 dflt='int'
19317                 . ./myread
19318                 socksizetype=$ans
19319                 ;;
19320         esac
19321         ;;
19322 *)      : no sockets, so pick relatively harmless default
19323         socksizetype='int'
19324         ;;
19325 esac
19326
19327 : see what type is used for signed size_t
19328 set ssize_t ssizetype int stdio.h sys/types.h
19329 eval $typedef
19330 dflt="$ssizetype"
19331 $cat > try.c <<EOM
19332 #include <stdio.h>
19333 #$i_stdlib I_STDLIB
19334 #ifdef I_STDLIB
19335 #include <stdlib.h>
19336 #endif
19337 #include <sys/types.h>
19338 #define Size_t $sizetype
19339 #define SSize_t $dflt
19340 int main()
19341 {
19342         if (sizeof(Size_t) == sizeof(SSize_t))
19343                 printf("$dflt\n");
19344         else if (sizeof(Size_t) == sizeof(int))
19345                 printf("int\n");
19346         else 
19347                 printf("long\n");
19348         exit(0);
19349 }
19350 EOM
19351 echo " "
19352 set try
19353 if eval $compile_ok && $run ./try > /dev/null; then
19354         ssizetype=`$run ./try`
19355         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19356 else
19357         $cat >&4 <<EOM
19358 Help! I can't compile and run the ssize_t test program: please enlighten me!
19359 (This is probably a misconfiguration in your system or libraries, and
19360 you really ought to fix it.  Still, I'll try anyway.)
19361
19362 I need a type that is the same size as $sizetype, but is guaranteed to
19363 be signed.  Common values are ssize_t, int and long.
19364
19365 EOM
19366         rp="What signed type is the same size as $sizetype?"
19367         . ./myread
19368         ssizetype="$ans"
19369 fi
19370 $rm -f try try.*
19371
19372 : see what type of char stdio uses.
19373 echo " "
19374 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19375 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19376         echo "Your stdio uses unsigned chars." >&4
19377         stdchar="unsigned char"
19378 else
19379         echo "Your stdio uses signed chars." >&4
19380         stdchar="char"
19381 fi
19382 $rm -f stdioh
19383
19384
19385
19386 : see what type uids are declared as in the kernel
19387 echo " "
19388 echo "Looking for the type for user ids returned by getuid()."
19389 set uid_t uidtype xxx stdio.h sys/types.h
19390 eval $typedef
19391 case "$uidtype" in
19392 xxx)
19393         xxx=`./findhdr sys/user.h`
19394         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19395         case $1 in
19396         unsigned) dflt="$1 $2" ;;
19397         *) dflt="$1" ;;
19398         esac
19399         ;;
19400 *) dflt="$uidtype";;
19401 esac
19402 case "$uidtype" in
19403 uid_t)  echo "uid_t found." ;;
19404 *)      rp="What is the type for user ids returned by getuid()?"
19405         . ./myread
19406         uidtype="$ans"
19407         ;;
19408 esac
19409
19410 echo " "
19411 case "$uidtype" in
19412 *_t) zzz="$uidtype"     ;;
19413 *)   zzz="uid"          ;;
19414 esac
19415 echo "Checking the size of $zzz..." >&4 
19416 cat > try.c <<EOCP
19417 #include <sys/types.h>
19418 #include <stdio.h>
19419 #$i_stdlib I_STDLIB
19420 #ifdef I_STDLIB
19421 #include <stdlib.h>
19422 #endif
19423 int main() {
19424     printf("%d\n", (int)sizeof($uidtype));
19425     exit(0);
19426 }
19427 EOCP
19428 set try
19429 if eval $compile_ok; then
19430         yyy=`$run ./try`
19431         case "$yyy" in
19432         '')     uidsize=4
19433                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19434                 ;;
19435         *)      uidsize=$yyy
19436                 echo "Your $zzz is $uidsize bytes long."
19437                 ;;
19438         esac
19439 else
19440         uidsize=4
19441         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19442 fi
19443
19444 echo " "
19445 case "$uidtype" in
19446 *_t) zzz="$uidtype"     ;;
19447 *)   zzz="uid"          ;;
19448 esac
19449 echo "Checking the sign of $zzz..." >&4
19450 cat > try.c <<EOCP
19451 #include <sys/types.h>
19452 #include <stdio.h>
19453 int main() {
19454         $uidtype foo = -1;
19455         if (foo < 0)
19456                 printf("-1\n");
19457         else
19458                 printf("1\n");
19459 }
19460 EOCP
19461 set try
19462 if eval $compile; then
19463         yyy=`$run ./try`
19464         case "$yyy" in
19465         '')     uidsign=1
19466                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19467                 ;;
19468         *)      uidsign=$yyy
19469                 case "$uidsign" in
19470                  1) echo "Your $zzz is unsigned." ;;
19471                 -1) echo "Your $zzz is signed."   ;;
19472                 esac
19473                 ;;
19474         esac
19475 else
19476         uidsign=1
19477         echo "(I can't compile the test program--guessing unsigned.)" >&4
19478 fi
19479
19480
19481
19482 echo " "
19483 $echo "Checking the format string to be used for uids..." >&4
19484
19485 case "$uidsign" in
19486 -1)     if $test X"$uidsize" = X"$ivsize"; then
19487                 uidformat="$ivdformat"
19488         else
19489                 if $test X"$uidsize" = X"$longsize"; then
19490                         uidformat='"ld"'
19491                 else
19492                         if $test X"$uidsize" = X"$intsize"; then
19493                                 uidformat='"d"'
19494                         else
19495                                 if $test X"$uidsize" = X"$shortsize"; then
19496                                         uidformat='"hd"'
19497                                 fi
19498                         fi
19499                 fi
19500         fi
19501         ;;
19502 *)      if $test X"$uidsize" = X"$uvsize"; then
19503                 uidformat="$uvuformat"
19504         else
19505                 if $test X"$uidsize" = X"$longsize"; then
19506                         uidformat='"lu"'
19507                 else
19508                         if $test X"$uidsize" = X"$intsize"; then
19509                                 uidformat='"u"'
19510                         else
19511                                 if $test X"$uidsize" = X"$shortsize"; then
19512                                         uidformat='"hu"'
19513                                 fi
19514                         fi
19515                 fi
19516         fi
19517         ;;
19518 esac
19519
19520
19521 case "$usesitecustomize" in
19522     $define|true|[Yy]*)
19523         usesitecustomize="$define"
19524         ;;
19525     *)
19526         usesitecustomize="$undef"
19527         ;;
19528     esac
19529
19530 : determine compiler compiler
19531 case "$yacc" in
19532 '')
19533         dflt=yacc;;
19534 *)
19535         dflt="$yacc";;
19536 esac
19537 echo " "
19538 comp='yacc'
19539 if $test -f "$byacc$_exe"; then
19540         dflt="$byacc"
19541         comp="byacc or $comp"
19542 fi
19543 if $test -f "$bison$_exe"; then
19544         comp="$comp or bison -y"
19545 fi
19546 rp="Which compiler compiler ($comp) shall I use?"
19547 . ./myread
19548 yacc="$ans"
19549 case "$yacc" in
19550 *bis*)
19551         case "$yacc" in
19552         *-y*) ;;
19553         *)
19554                 yacc="$yacc -y"
19555                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19556                 ;;
19557         esac
19558         ;;
19559 esac
19560
19561 : see if this is a fp.h system
19562 set fp.h i_fp
19563 eval $inhdr
19564
19565 : see if this is a fp_class.h system
19566 set fp_class.h i_fp_class
19567 eval $inhdr
19568
19569 : see if this is a ieeefp.h system
19570 case "$i_ieeefp" in
19571 '' ) set ieeefp.h i_ieeefp
19572      eval $inhdr
19573      ;;
19574 esac
19575
19576 : see if this is a libutil.h system
19577 set libutil.h i_libutil
19578 eval $inhdr
19579
19580 : see if mach cthreads are available
19581 if test "X$usethreads" = "X$define"; then
19582         set mach/cthreads.h i_machcthr
19583         eval $inhdr
19584 else
19585         i_machcthr="$undef"
19586 fi
19587
19588
19589
19590 : see if this is a mntent.h system
19591 set mntent.h i_mntent
19592 eval $inhdr
19593
19594 : see if ndbm.h is available
19595 set ndbm.h t_ndbm
19596 eval $inhdr
19597
19598 case "$t_ndbm" in
19599 $undef)
19600     # Some Linux distributions such as RedHat 7.1 put the
19601     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19602     if $test -f /usr/include/gdbm/ndbm.h; then
19603         echo '<gdbm/ndbm.h> found.'
19604         ccflags="$ccflags -I/usr/include/gdbm"
19605         cppflags="$cppflags -I/usr/include/gdbm"
19606         t_ndbm=$define
19607     fi
19608     ;;
19609 esac
19610
19611 case "$t_ndbm" in
19612 $define)
19613         : see if dbm_open exists
19614         set dbm_open d_dbm_open
19615         eval $inlibc
19616         case "$d_dbm_open" in
19617         $undef)
19618                 t_ndbm="$undef"
19619                 echo "We won't be including <ndbm.h>"
19620                 ;;
19621         esac
19622         ;;
19623 esac
19624 val="$t_ndbm"
19625 set i_ndbm
19626 eval $setvar
19627
19628 : see if net/errno.h is available
19629 val=''
19630 set net/errno.h val
19631 eval $inhdr
19632
19633 : Unfortunately, it causes problems on some systems.  Arrgh.
19634 case "$val" in
19635 $define)
19636         cat > try.c <<'EOM'
19637 #include <stdio.h>
19638 #include <errno.h>
19639 #include <net/errno.h>
19640 int func()
19641 {
19642         return ENOTSOCK;
19643 }
19644 EOM
19645         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19646                 echo "We'll be including <net/errno.h>." >&4
19647         else
19648                 echo "We won't be including <net/errno.h>." >&4
19649                 val="$undef"
19650         fi
19651         $rm -f try.* try
19652         ;;
19653 esac
19654 set i_neterrno
19655 eval $setvar
19656
19657 : see if netinet/tcp.h is available
19658 set netinet/tcp.h i_netinettcp
19659 eval $inhdr
19660
19661 : see if this is a poll.h system
19662 set poll.h i_poll
19663 eval $inhdr
19664
19665 : see if this is a prot.h system
19666 set prot.h i_prot
19667 eval $inhdr
19668
19669 echo " "
19670 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19671 $cat <<'EOSH' > Cppsym.know
19672 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19673 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19674 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19675 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19676 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19677 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19678 bull c cadmus clipper CMU COFF COMPILER_VERSION
19679 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19680 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19681 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19682 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19683 GLIBC GLIBC_MINOR
19684 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19685 H3050R H3050RX hbullx20 hcx host_mips
19686 hp200 hp300 hp700 HP700 hp800 hp9000
19687 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19688 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19689 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19690 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19691 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19692 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19693 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19694 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19695 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19696 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19697 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19698 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19699 MATH_HAS_NO_SIDE_EFFECTS
19700 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19701 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19702 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19703 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19704 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19705 NetBSD news1500 news1700 news1800 news1900 news3700
19706 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19707 ns32016 ns32332 ns32k nsc32000
19708 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19709 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19710 pc532 pdp11 PGC PIC plexus PORTAR posix
19711 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19712 POSIX_C_SOURCE POSIX_SOURCE POWER
19713 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19714 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19715 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19716 sony sony_news sonyrisc sparc sparclite spectrum
19717 stardent stdc STDC_EXT stratos sun sun3 sun386
19718 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19719 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19720 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19721 sysV68 sysV88 Tek4132 Tek4300 titan
19722 TM3200 TM5400 TM5600
19723 tower tower32 tower32_200 tower32_600 tower32_700
19724 tower32_800 tower32_850 tss
19725 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19726 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19727 unix UNIX95 UNIX99 unixpc unos
19728 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19729 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19730 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19731 USGr4 USGr4_2
19732 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19733 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19734 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19735 z8000
19736 EOSH
19737 # Maybe put other stuff here too.
19738 cat <<EOSH >>Cppsym.know
19739 $osname
19740 EOSH
19741 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19742 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19743 $cat Cppsym.know > Cppsym.c
19744 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19745 $rm -f Cppsym.a Cppsym.b Cppsym.c
19746 cat <<EOSH > Cppsym
19747 $startsh
19748 if $test \$# -gt 0; then
19749     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19750     if $test -s Cppsym.got; then
19751         $rm -f Cppsym.got
19752         exit 0
19753     fi
19754     $rm -f Cppsym.got
19755     exit 1
19756 else
19757     $tr " " "$trnl" | ./Cppsym.try
19758     exit 0
19759 fi
19760 EOSH
19761 chmod +x Cppsym
19762 $eunicefix Cppsym
19763 cat <<EOSH > Cppsym.try
19764 $startsh
19765 cat <<'EOCP' > try.c
19766 #include <stdio.h>
19767 int main() {
19768 EOCP
19769 $awk \\
19770 EOSH
19771 cat <<'EOSH' >> Cppsym.try
19772 'length($1) > 0 {
19773     printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", (long)%s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19774     printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", (long)_%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19775     printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", (long)__%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19776     printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", (long)__%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19777 }'       >> try.c
19778 echo 'return 0;}' >> try.c
19779 EOSH
19780 cat <<EOSH >> Cppsym.try
19781 ccflags="$ccflags"
19782 case "$osname-$gccversion" in
19783 irix-) ccflags="\$ccflags -woff 1178" ;;
19784 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19785 esac
19786 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19787 EOSH
19788 chmod +x Cppsym.try
19789 $eunicefix Cppsym.try
19790 ./Cppsym < Cppsym.know > Cppsym.true
19791 : now check the C compiler for additional symbols
19792 postprocess_cc_v=''
19793 case "$osname" in
19794 aix) postprocess_cc_v="|$tr , ' '" ;;
19795 esac
19796 $cat >ccsym <<EOS
19797 $startsh
19798 $cat >tmp.c <<EOF
19799 extern int foo;
19800 EOF
19801 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19802 do
19803         case "\$i" in
19804         -D*) echo "\$i" | $sed 's/^-D//';;
19805         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19806         esac
19807 done
19808 $rm -f try.c
19809 EOS
19810 postprocess_cc_v=''
19811 chmod +x ccsym
19812 $eunicefix ccsym
19813 ./ccsym > ccsym1.raw
19814 if $test -s ccsym1.raw; then
19815        $sort ccsym1.raw | $uniq >ccsym.raw
19816 else
19817        mv ccsym1.raw ccsym.raw
19818 fi
19819
19820 $awk '/\=/ { print $0; next }
19821         { print $0"=1" }' ccsym.raw >ccsym.list
19822 $awk '/\=/ { print $0; next }
19823         { print $0"=1" }' Cppsym.true >ccsym.true
19824 $comm -13 ccsym.true ccsym.list >ccsym.own
19825 $comm -12 ccsym.true ccsym.list >ccsym.com
19826 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19827 also=''
19828 if $test -z ccsym.raw; then
19829         echo "Your C compiler doesn't seem to define any symbols!" >&4
19830         echo " "
19831         echo "However, your C preprocessor defines the following symbols:"
19832         $cat Cppsym.true
19833         ccsymbols=''
19834         cppsymbols=`$cat Cppsym.true`
19835         cppsymbols=`echo $cppsymbols`
19836         cppccsymbols="$cppsymbols"
19837 else
19838         if $test -s ccsym.com; then
19839                 echo "Your C compiler and pre-processor define these symbols:"
19840                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19841                 also='also '
19842                 symbols='ones'
19843                 cppccsymbols=`$cat ccsym.com`
19844                 cppccsymbols=`echo $cppccsymbols`
19845                 $test "$silent" || sleep 1
19846         fi
19847         if $test -s ccsym.cpp; then
19848                 $test "$also" && echo " "
19849                 echo "Your C pre-processor ${also}defines the following symbols:"
19850                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19851                 also='further '
19852                 cppsymbols=`$cat ccsym.cpp`
19853                 cppsymbols=`echo $cppsymbols`
19854                 $test "$silent" || sleep 1
19855         fi
19856         if $test -s ccsym.own; then
19857                 $test "$also" && echo " "
19858                 echo "Your C compiler ${also}defines the following cpp symbols:"
19859                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19860                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19861                 ccsymbols=`$cat ccsym.own`
19862                 ccsymbols=`echo $ccsymbols`
19863                 $test "$silent" || sleep 1
19864         fi
19865 fi
19866
19867 : see if this is a termio system
19868 val="$undef"
19869 val2="$undef"
19870 val3="$undef"
19871 if $test `./findhdr termios.h`; then
19872         set tcsetattr i_termios
19873         eval $inlibc
19874         val3="$i_termios"
19875 fi
19876 echo " "
19877 case "$val3" in
19878 "$define") echo "You have POSIX termios.h... good!" >&4;;
19879 *) if ./Cppsym pyr; then
19880                 case "`/bin/universe`" in
19881                 ucb) if $test `./findhdr sgtty.h`; then
19882                                 val2="$define"
19883                                 echo "<sgtty.h> found." >&4
19884                         else
19885                                 echo "System is pyramid with BSD universe."
19886                                 echo "<sgtty.h> not found--you could have problems." >&4
19887                         fi;;
19888                 *) if $test `./findhdr termio.h`; then
19889                                 val="$define"
19890                                 echo "<termio.h> found." >&4
19891                         else
19892                                 echo "System is pyramid with USG universe."
19893                                 echo "<termio.h> not found--you could have problems." >&4
19894                         fi;;
19895                 esac
19896         elif ./usg; then
19897                 if $test `./findhdr termio.h`; then
19898                         echo "<termio.h> found." >&4
19899                         val="$define"
19900                 elif $test `./findhdr sgtty.h`; then
19901                         echo "<sgtty.h> found." >&4
19902                         val2="$define"
19903                 else
19904 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19905                 fi
19906         else
19907                 if $test `./findhdr sgtty.h`; then
19908                         echo "<sgtty.h> found." >&4
19909                         val2="$define"
19910                 elif $test `./findhdr termio.h`; then
19911                         echo "<termio.h> found." >&4
19912                         val="$define"
19913                 else
19914 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19915                 fi
19916         fi;;
19917 esac
19918 set i_termio; eval $setvar
19919 val=$val2; set i_sgtty; eval $setvar
19920 val=$val3; set i_termios; eval $setvar
19921
19922 : see if stddef is available
19923 set stddef.h i_stddef
19924 eval $inhdr
19925
19926 : see if this is a sunmath.h system
19927 set sunmath.h i_sunmath
19928 eval $inhdr
19929
19930 : see if sys/access.h is available
19931 set sys/access.h i_sysaccess
19932 eval $inhdr
19933
19934 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19935 set sys/filio.h i_sysfilio
19936 eval $inhdr
19937 echo " "
19938 if $test `./findhdr sys/ioctl.h`; then
19939         val="$define"
19940         echo '<sys/ioctl.h> found.' >&4
19941 else
19942         val="$undef"
19943         if $test $i_sysfilio = "$define"; then
19944             echo '<sys/ioctl.h> NOT found.' >&4
19945         else
19946                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19947                 $test $i_termio = "$define" && xxx="termio.h"
19948                 $test $i_termios = "$define" && xxx="termios.h"
19949 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19950         fi
19951 fi
19952 set i_sysioctl
19953 eval $setvar
19954
19955 : see if socket ioctl defs are in sys/sockio.h
19956 echo " "
19957 xxx=`./findhdr sys/sockio.h`
19958 if $test "$xxx"; then
19959         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19960                 val="$define"
19961                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19962         else
19963                 val="$undef"
19964                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19965         fi
19966 else
19967         val="$undef"
19968         $cat <<EOM
19969 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19970 EOM
19971 fi
19972 set i_syssockio
19973 eval $setvar
19974
19975
19976 : see if this is a syslog.h system
19977 set syslog.h i_syslog
19978 eval $inhdr
19979
19980
19981 : see if this is a sys/mode.h system
19982 set sys/mode.h i_sysmode
19983 eval $inhdr
19984
19985 : see if sys/resource.h has to be included
19986 set sys/resource.h i_sysresrc
19987 eval $inhdr
19988
19989 : see if sys/security.h is available
19990 set sys/security.h i_syssecrt
19991 eval $inhdr
19992
19993 : see if this is a sys/statvfs.h system
19994 set sys/statvfs.h i_sysstatvfs
19995 eval $inhdr
19996
19997 : see if this is a sys/un.h system
19998 set sys/un.h i_sysun
19999 eval $inhdr
20000
20001
20002 : see if this is a sys/utsname.h system
20003 set sys/utsname.h i_sysutsname
20004 eval $inhdr
20005
20006 : see if this is a syswait system
20007 set sys/wait.h i_syswait
20008 eval $inhdr
20009
20010 : see if this is a ustat.h system
20011 set ustat.h i_ustat
20012 eval $inhdr
20013
20014 : see if this is an utime system
20015 set utime.h i_utime
20016 eval $inhdr
20017
20018 : see if this is a values.h system
20019 set values.h i_values
20020 eval $inhdr
20021
20022 : see if this is a vfork system
20023 case "$d_vfork" in
20024 "$define")
20025         set vfork.h i_vfork
20026         eval $inhdr
20027         ;;
20028 *)
20029         i_vfork="$undef"
20030         ;;
20031 esac
20032
20033 : see if gdbm.h is available
20034 set gdbm.h t_gdbm
20035 eval $inhdr
20036 case "$t_gdbm" in
20037 $define)
20038         : see if gdbm_open exists
20039         set gdbm_open d_gdbm_open
20040         eval $inlibc
20041         case "$d_gdbm_open" in
20042         $undef)
20043                 t_gdbm="$undef"
20044                 echo "We won't be including <gdbm.h>"
20045                 ;;
20046         esac
20047         ;;
20048 esac
20049 val="$t_gdbm"
20050 set i_gdbm
20051 eval $setvar
20052
20053 echo " "
20054 echo "Looking for extensions..." >&4
20055 : If we are using the old config.sh, known_extensions may contain
20056 : old or inaccurate or duplicate values.
20057 known_extensions=''
20058 nonxs_extensions=''
20059 : We do not use find because it might not be available.
20060 : We do not just use MANIFEST because the user may have dropped
20061 : some additional extensions into the source tree and expect them
20062 : to be built.
20063
20064 : Function to recursively find available extensions, ignoring DynaLoader
20065 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
20066 find_extensions='
20067     for xxx in *; do
20068        case "$xxx" in
20069            DynaLoader|dynaload) ;;
20070            *)
20071            if $test -f $xxx/$xxx.xs; then
20072                known_extensions="$known_extensions $1$xxx";
20073            elif $test -f $xxx/Makefile.PL; then
20074                nonxs_extensions="$nonxs_extensions $1$xxx";
20075            else
20076                if $test -d $xxx -a $# -lt 10; then
20077                    set $1$xxx/ $*;
20078                    cd "$xxx";
20079                    eval $find_extensions;
20080                    cd ..;
20081                    shift;
20082                fi;
20083            fi
20084            ;;
20085        esac;
20086     done'
20087 tdir=`pwd`
20088 cd "$rsrc/ext"
20089 set X
20090 shift
20091 eval $find_extensions
20092 # Special case:  Add in threads/shared since it is not picked up by the
20093 # recursive find above (and adding in general recursive finding breaks
20094 # SDBM_File/sdbm).  A.D.  10/25/2001.
20095 known_extensions="$known_extensions threads/shared"
20096 set X $nonxs_extensions
20097 shift
20098 nonxs_extensions="$*"
20099 set X $known_extensions
20100 shift
20101 known_extensions="$*"
20102 cd "$tdir"
20103
20104 : Now see which are supported on this system.
20105 avail_ext=''
20106 for xxx in $known_extensions ; do
20107         case "$xxx" in
20108         DB_File|db_file)
20109                 case "$i_db" in
20110                 $define) avail_ext="$avail_ext $xxx" ;;
20111                 esac
20112                 ;;
20113         GDBM_File|gdbm_fil)
20114                 case "$i_gdbm" in 
20115                 $define) avail_ext="$avail_ext $xxx" ;;
20116                 esac
20117                 ;;
20118         I18N/Langinfo|i18n_lan)
20119                 case "$i_langinfo$d_nl_langinfo" in 
20120                 $define$define) avail_ext="$avail_ext $xxx" ;;
20121                 esac
20122                 ;;
20123         NDBM_File|ndbm_fil)
20124                 case "$i_ndbm" in
20125                 $define)
20126                     case "$osname-$use64bitint" in
20127                     hpux-define)
20128                         case "$libs" in
20129                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20130                         esac
20131                         ;;
20132                     *) avail_ext="$avail_ext $xxx" ;;
20133                     esac
20134                     ;;
20135                 esac
20136                 ;;
20137         ODBM_File|odbm_fil) 
20138                 case "${i_dbm}${i_rpcsvcdbm}" in
20139                 *"${define}"*)
20140                     case "$osname-$use64bitint" in
20141                     hpux-define)
20142                         case "$libs" in
20143                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20144                         esac
20145                         ;;
20146                     *) avail_ext="$avail_ext $xxx" ;;
20147                     esac
20148                     ;;
20149                 esac
20150                 ;;
20151         POSIX|posix)
20152                 case "$useposix" in
20153                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20154                 esac
20155                 ;;
20156         Opcode|opcode)
20157                 case "$useopcode" in
20158                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20159                 esac
20160                 ;;
20161         Socket|socket)
20162                 case "$d_socket" in 
20163                 true|$define|y)
20164                     case "$osname" in
20165                     beos) ;; # not unless BONE
20166                     *) avail_ext="$avail_ext $xxx" ;;
20167                     esac
20168                     ;;
20169                 esac
20170                 ;;
20171         Sys/Syslog|sys/syslog)
20172                 : XXX syslog requires socket
20173                 case "$d_socket" in 
20174                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20175                 esac
20176                 ;;
20177         Thread|thread)
20178                 case "$usethreads" in
20179                 true|$define|y)
20180                         case "$useithreads" in
20181                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20182                         esac
20183                 esac
20184                 ;;
20185         XS/APItest|xs/apitest)
20186                 # This is just for testing.  Skip it unless we have dynamic loading.
20187
20188                 case "$usedl" in
20189                 $define) avail_ext="$avail_ext $xxx" ;;
20190                 esac
20191                 ;;
20192         XS/Typemap|xs/typemap)
20193                 # This is just for testing.  Skip it unless we have dynamic loading.
20194                 case "$usedl" in
20195                 $define) avail_ext="$avail_ext $xxx" ;;
20196                 esac
20197                 ;;
20198         threads|threads/shared)
20199                 # threads and threads::shared are special cases.
20200                 # To stop people from asking "Perl 5.8.0 was supposed
20201                 # to have this new fancy threads implementation but my
20202                 # perl doesn't have it" and from people trying to
20203                 # (re)install the threads module using CPAN.pm and
20204                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20205                 # the threads.pm and threads/shared.pm will always be
20206                 # there, croaking informatively ("you need to rebuild
20207                 # all of Perl with threads, sorry") when threads haven't
20208                 # been compiled in.
20209                 # --jhi
20210                 avail_ext="$avail_ext $xxx"
20211                 ;;
20212         IPC/SysV|ipc/sysv)
20213                 : XXX Do we need a useipcsysv variable here
20214                 case "${d_msg}${d_sem}${d_shm}" in 
20215                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20216                 esac
20217                 ;;
20218         *)      avail_ext="$avail_ext $xxx"
20219                 ;;
20220         esac
20221 done
20222
20223 set X $avail_ext
20224 shift
20225 avail_ext="$*"
20226
20227 case "$onlyextensions" in
20228 '') ;;
20229 *)  keepextensions=''
20230     echo "You have requested that only certains extensions be included..." >&4
20231     for i in $onlyextensions; do
20232         case " $avail_ext " in
20233         *" $i "*)
20234             echo "Keeping extension $i."
20235             keepextensions="$keepextensions $i"
20236             ;;
20237         *) echo "Ignoring extension $i." ;;
20238         esac
20239     done
20240     avail_ext="$keepextensions"
20241     ;;
20242 esac
20243
20244 case "$noextensions" in
20245 '') ;;
20246 *)  keepextensions=''
20247     echo "You have requested that certain extensions be ignored..." >&4
20248     for i in $avail_ext; do
20249         case " $noextensions " in
20250         *" $i "*) echo "Ignoring extension $i." ;;
20251         *) echo "Keeping extension $i.";
20252            keepextensions="$keepextensions $i"
20253            ;;
20254         esac
20255     done
20256     avail_ext="$keepextensions"
20257     ;;
20258 esac
20259
20260 : Now see which nonxs extensions are supported on this system.
20261 : For now assume all are.
20262 nonxs_ext=''
20263 for xxx in $nonxs_extensions ; do
20264         case "$xxx" in
20265         *)      nonxs_ext="$nonxs_ext $xxx"
20266                 ;;
20267         esac
20268 done
20269
20270 set X $nonxs_ext
20271 shift
20272 nonxs_ext="$*"
20273
20274 case $usedl in
20275 $define)
20276         $cat <<EOM
20277 A number of extensions are supplied with $package.  You may choose to
20278 compile these extensions for dynamic loading (the default), compile
20279 them into the $package executable (static loading), or not include
20280 them at all.  Answer "none" to include no extensions.
20281 Note that DynaLoader is always built and need not be mentioned here.
20282
20283 EOM
20284         case "$dynamic_ext" in
20285         '')
20286                 : Exclude those listed in static_ext
20287                 dflt=''
20288                 for xxx in $avail_ext; do
20289                         case " $static_ext " in
20290                         *" $xxx "*) ;;
20291                         *) dflt="$dflt $xxx" ;;
20292                         esac
20293                 done
20294                 set X $dflt
20295                 shift
20296                 dflt="$*"
20297                 ;;
20298         *)      dflt="$dynamic_ext"
20299                 # Perhaps we are reusing an old out-of-date config.sh.
20300                 case "$hint" in
20301                 previous)
20302                         if test X"$dynamic_ext" != X"$avail_ext"; then
20303                                 $cat <<EOM
20304 NOTICE:  Your previous config.sh list may be incorrect. 
20305 The extensions now available to you are 
20306         ${avail_ext}
20307 but the default list from your previous config.sh is
20308         ${dynamic_ext} 
20309
20310 EOM
20311                         fi
20312                         ;;
20313                 esac
20314                 ;;
20315         esac
20316         case "$dflt" in
20317         '')     dflt=none;;
20318         esac
20319         rp="What extensions do you wish to load dynamically?"
20320         . ./myread
20321         case "$ans" in
20322         none) dynamic_ext=' ' ;;
20323         *) dynamic_ext="$ans" ;;
20324         esac
20325
20326         case "$static_ext" in
20327         '')
20328                 : Exclude those already listed in dynamic linking
20329                 dflt=''
20330                 for xxx in $avail_ext; do
20331                         case " $dynamic_ext " in
20332                         *" $xxx "*) ;;
20333                         *) dflt="$dflt $xxx" ;;
20334                         esac
20335                 done
20336                 set X $dflt
20337                 shift
20338                 dflt="$*"
20339                 ;;
20340         *)  dflt="$static_ext" 
20341                 ;;
20342         esac
20343
20344         case "$dflt" in
20345         '')     dflt=none;;
20346         esac
20347         rp="What extensions do you wish to load statically?"
20348         . ./myread
20349         case "$ans" in
20350         none) static_ext=' ' ;;
20351         *) static_ext="$ans" ;;
20352         esac
20353         ;;
20354 *)
20355         $cat <<EOM
20356 A number of extensions are supplied with $package.  Answer "none" 
20357 to include no extensions. 
20358 Note that DynaLoader is always built and need not be mentioned here.
20359
20360 EOM
20361         case "$static_ext" in
20362         '') dflt="$avail_ext" ;;
20363         *)      dflt="$static_ext"
20364                 # Perhaps we are reusing an old out-of-date config.sh.
20365                 case "$hint" in
20366                 previous)
20367                         if test X"$static_ext" != X"$avail_ext"; then
20368                                 $cat <<EOM
20369 NOTICE:  Your previous config.sh list may be incorrect. 
20370 The extensions now available to you are 
20371         ${avail_ext}
20372 but the default list from your previous config.sh is
20373         ${static_ext} 
20374
20375 EOM
20376                         fi
20377                         ;;
20378                 esac
20379                 ;;
20380         esac
20381         : Exclude those that are not xs extensions
20382         case "$dflt" in
20383         '')     dflt=none;;
20384         esac
20385         rp="What extensions do you wish to include?"
20386         . ./myread
20387         case "$ans" in
20388         none) static_ext=' ' ;;
20389         *) static_ext="$ans" ;;
20390         esac
20391         ;;
20392 esac
20393 #        
20394 # Encode is a special case.  If we are building Encode as a static
20395 # extension, we need to explicitly list its subextensions as well.
20396 # For other nested extensions, this is handled automatically by
20397 # the appropriate Makefile.PL.
20398 case " $static_ext " in
20399         *" Encode "*) # Add the subextensions of Encode
20400         cd "$rsrc/ext"
20401         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20402                 static_ext="$static_ext Encode/$xxx"
20403         done
20404         cd "$tdir"
20405         ;;
20406 esac
20407
20408 set X $dynamic_ext $static_ext $nonxs_ext
20409 shift
20410 extensions="$*"
20411
20412 # Sanity check:  We require an extension suitable for use with
20413 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
20414 # should show up as failures in the test suite, but it's helpful to
20415 # catch them now.) The 'extensions' list is normally sorted
20416 # alphabetically, so we need to accept either
20417 #    DB_File ... Fcntl ... IO  ....
20418 # or something like
20419 #    Fcntl ... NDBM_File ... IO  ....
20420 case " $extensions"  in
20421 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
20422 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20423 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
20424 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20425    echo "WARNING: The Perl you are building will be quite crippled." >& 4
20426    ;;
20427 esac
20428
20429 : Remove libraries needed only for extensions
20430 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20431 : The exception is SunOS 4.x, which needs them.
20432 case "${osname}X${osvers}" in
20433 sunos*X4*)
20434     perllibs="$libs"
20435     ;;
20436 *) case "$usedl" in
20437     $define|true|[yY]*)
20438             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20439             shift
20440             perllibs="$*"
20441             ;;
20442     *)  perllibs="$libs"
20443             ;;
20444     esac
20445     ;;
20446 esac
20447
20448 : Remove build directory name from cppstdin so it can be used from
20449 : either the present location or the final installed location.
20450 echo " "
20451 : Get out of the UU directory to get correct path name.
20452 cd ..
20453 case "$cppstdin" in
20454 `pwd`/cppstdin)
20455         echo "Stripping down cppstdin path name"
20456         cppstdin=cppstdin
20457         ;;
20458 esac
20459 cd UU
20460
20461 : end of configuration questions
20462 echo " "
20463 echo "End of configuration questions."
20464 echo " "
20465
20466 : back to where it started
20467 if test -d ../UU; then
20468         cd ..
20469 fi
20470
20471 : configuration may be patched via a 'config.arch' file
20472 if $test -f config.arch; then
20473         echo "I see a config.arch file, loading it."
20474         . ./config.arch
20475 fi
20476
20477 : configuration may be patched via a 'config.over' file
20478 if $test -f config.over; then
20479         echo " "
20480         dflt=y
20481         rp='I see a config.over file.  Do you wish to load it?'
20482         . UU/myread
20483         case "$ans" in
20484         n*) echo "OK, I'll ignore it.";;
20485         *)      . ./config.over
20486                 echo "Configuration override changes have been loaded."
20487                 ;;
20488         esac
20489 fi
20490
20491 : in case they want portability, strip down executable paths
20492 case "$d_portable" in
20493 "$define")
20494         echo " "
20495         echo "Stripping down executable paths..." >&4
20496         for file in $loclist $trylist; do
20497                 eval temp=\$$file
20498                 eval $file=`basename $temp`
20499         done
20500         ;;
20501 esac
20502
20503 : create config.sh file
20504 echo " "
20505 echo "Creating config.sh..." >&4
20506 $spitshell <<EOT >config.sh
20507 $startsh
20508 #
20509 # This file was produced by running the Configure script. It holds all the
20510 # definitions figured out by Configure. Should you modify one of these values,
20511 # do not forget to propagate your changes by running "Configure -der". You may
20512 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20513 #
20514
20515 # Package name      : $package
20516 # Source directory  : $src
20517 # Configuration time: $cf_time
20518 # Configured by     : $cf_by
20519 # Target system     : $myuname
20520
20521 Author='$Author'
20522 Date='$Date'
20523 Header='$Header'
20524 Id='$Id'
20525 Locker='$Locker'
20526 Log='$Log'
20527 Mcc='$Mcc'
20528 RCSfile='$RCSfile'
20529 Revision='$Revision'
20530 Source='$Source'
20531 State='$State'
20532 _a='$_a'
20533 _exe='$_exe'
20534 _o='$_o'
20535 afs='$afs'
20536 afsroot='$afsroot'
20537 alignbytes='$alignbytes'
20538 ansi2knr='$ansi2knr'
20539 aphostname='$aphostname'
20540 api_revision='$api_revision'
20541 api_subversion='$api_subversion'
20542 api_version='$api_version'
20543 api_versionstring='$api_versionstring'
20544 ar='$ar'
20545 archlib='$archlib'
20546 archlibexp='$archlibexp'
20547 archname64='$archname64'
20548 archname='$archname'
20549 archobjs='$archobjs'
20550 asctime_r_proto='$asctime_r_proto'
20551 awk='$awk'
20552 baserev='$baserev'
20553 bash='$bash'
20554 bin='$bin'
20555 binexp='$binexp'
20556 bison='$bison'
20557 byacc='$byacc'
20558 byteorder='$byteorder'
20559 c='$c'
20560 castflags='$castflags'
20561 cat='$cat'
20562 cc='$cc'
20563 cccdlflags='$cccdlflags'
20564 ccdlflags='$ccdlflags'
20565 ccflags='$ccflags'
20566 ccflags_uselargefiles='$ccflags_uselargefiles'
20567 ccname='$ccname'
20568 ccsymbols='$ccsymbols'
20569 ccversion='$ccversion'
20570 cf_by='$cf_by'
20571 cf_email='$cf_email'
20572 cf_time='$cf_time'
20573 charsize='$charsize'
20574 chgrp='$chgrp'
20575 chmod='$chmod'
20576 chown='$chown'
20577 clocktype='$clocktype'
20578 comm='$comm'
20579 compress='$compress'
20580 contains='$contains'
20581 cp='$cp'
20582 cpio='$cpio'
20583 cpp='$cpp'
20584 cpp_stuff='$cpp_stuff'
20585 cppccsymbols='$cppccsymbols'
20586 cppflags='$cppflags'
20587 cpplast='$cpplast'
20588 cppminus='$cppminus'
20589 cpprun='$cpprun'
20590 cppstdin='$cppstdin'
20591 cppsymbols='$cppsymbols'
20592 crypt_r_proto='$crypt_r_proto'
20593 cryptlib='$cryptlib'
20594 csh='$csh'
20595 ctermid_r_proto='$ctermid_r_proto'
20596 ctime_r_proto='$ctime_r_proto'
20597 d_Gconvert='$d_Gconvert'
20598 d_PRIEUldbl='$d_PRIEUldbl'
20599 d_PRIFUldbl='$d_PRIFUldbl'
20600 d_PRIGUldbl='$d_PRIGUldbl'
20601 d_PRIXU64='$d_PRIXU64'
20602 d_PRId64='$d_PRId64'
20603 d_PRIeldbl='$d_PRIeldbl'
20604 d_PRIfldbl='$d_PRIfldbl'
20605 d_PRIgldbl='$d_PRIgldbl'
20606 d_PRIi64='$d_PRIi64'
20607 d_PRIo64='$d_PRIo64'
20608 d_PRIu64='$d_PRIu64'
20609 d_PRIx64='$d_PRIx64'
20610 d_SCNfldbl='$d_SCNfldbl'
20611 d__fwalk='$d__fwalk'
20612 d_access='$d_access'
20613 d_accessx='$d_accessx'
20614 d_aintl='$d_aintl'
20615 d_alarm='$d_alarm'
20616 d_archlib='$d_archlib'
20617 d_asctime_r='$d_asctime_r'
20618 d_atolf='$d_atolf'
20619 d_atoll='$d_atoll'
20620 d_attribut='$d_attribut'
20621 d_bcmp='$d_bcmp'
20622 d_bcopy='$d_bcopy'
20623 d_bsd='$d_bsd'
20624 d_bsdgetpgrp='$d_bsdgetpgrp'
20625 d_bsdsetpgrp='$d_bsdsetpgrp'
20626 d_bzero='$d_bzero'
20627 d_casti32='$d_casti32'
20628 d_castneg='$d_castneg'
20629 d_charvspr='$d_charvspr'
20630 d_chown='$d_chown'
20631 d_chroot='$d_chroot'
20632 d_chsize='$d_chsize'
20633 d_class='$d_class'
20634 d_closedir='$d_closedir'
20635 d_cmsghdr_s='$d_cmsghdr_s'
20636 d_const='$d_const'
20637 d_copysignl='$d_copysignl'
20638 d_crypt='$d_crypt'
20639 d_crypt_r='$d_crypt_r'
20640 d_csh='$d_csh'
20641 d_ctermid_r='$d_ctermid_r'
20642 d_ctime_r='$d_ctime_r'
20643 d_cuserid='$d_cuserid'
20644 d_dbl_dig='$d_dbl_dig'
20645 d_dbminitproto='$d_dbminitproto'
20646 d_difftime='$d_difftime'
20647 d_dirfd='$d_dirfd'
20648 d_dirnamlen='$d_dirnamlen'
20649 d_dlerror='$d_dlerror'
20650 d_dlopen='$d_dlopen'
20651 d_dlsymun='$d_dlsymun'
20652 d_dosuid='$d_dosuid'
20653 d_drand48_r='$d_drand48_r'
20654 d_drand48proto='$d_drand48proto'
20655 d_dup2='$d_dup2'
20656 d_eaccess='$d_eaccess'
20657 d_endgrent='$d_endgrent'
20658 d_endgrent_r='$d_endgrent_r'
20659 d_endhent='$d_endhent'
20660 d_endhostent_r='$d_endhostent_r'
20661 d_endnent='$d_endnent'
20662 d_endnetent_r='$d_endnetent_r'
20663 d_endpent='$d_endpent'
20664 d_endprotoent_r='$d_endprotoent_r'
20665 d_endpwent='$d_endpwent'
20666 d_endpwent_r='$d_endpwent_r'
20667 d_endsent='$d_endsent'
20668 d_endservent_r='$d_endservent_r'
20669 d_eofnblk='$d_eofnblk'
20670 d_eunice='$d_eunice'
20671 d_faststdio='$d_faststdio'
20672 d_fchdir='$d_fchdir'
20673 d_fchmod='$d_fchmod'
20674 d_fchown='$d_fchown'
20675 d_fcntl='$d_fcntl'
20676 d_fcntl_can_lock='$d_fcntl_can_lock'
20677 d_fd_macros='$d_fd_macros'
20678 d_fd_set='$d_fd_set'
20679 d_fds_bits='$d_fds_bits'
20680 d_fgetpos='$d_fgetpos'
20681 d_finite='$d_finite'
20682 d_finitel='$d_finitel'
20683 d_flexfnam='$d_flexfnam'
20684 d_flock='$d_flock'
20685 d_flockproto='$d_flockproto'
20686 d_fork='$d_fork'
20687 d_fp_class='$d_fp_class'
20688 d_fpathconf='$d_fpathconf'
20689 d_fpclass='$d_fpclass'
20690 d_fpclassify='$d_fpclassify'
20691 d_fpclassl='$d_fpclassl'
20692 d_fpos64_t='$d_fpos64_t'
20693 d_frexpl='$d_frexpl'
20694 d_fs_data_s='$d_fs_data_s'
20695 d_fseeko='$d_fseeko'
20696 d_fsetpos='$d_fsetpos'
20697 d_fstatfs='$d_fstatfs'
20698 d_fstatvfs='$d_fstatvfs'
20699 d_fsync='$d_fsync'
20700 d_ftello='$d_ftello'
20701 d_ftime='$d_ftime'
20702 d_getcwd='$d_getcwd'
20703 d_getespwnam='$d_getespwnam'
20704 d_getfsstat='$d_getfsstat'
20705 d_getgrent='$d_getgrent'
20706 d_getgrent_r='$d_getgrent_r'
20707 d_getgrgid_r='$d_getgrgid_r'
20708 d_getgrnam_r='$d_getgrnam_r'
20709 d_getgrps='$d_getgrps'
20710 d_gethbyaddr='$d_gethbyaddr'
20711 d_gethbyname='$d_gethbyname'
20712 d_gethent='$d_gethent'
20713 d_gethname='$d_gethname'
20714 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20715 d_gethostbyname_r='$d_gethostbyname_r'
20716 d_gethostent_r='$d_gethostent_r'
20717 d_gethostprotos='$d_gethostprotos'
20718 d_getitimer='$d_getitimer'
20719 d_getlogin='$d_getlogin'
20720 d_getlogin_r='$d_getlogin_r'
20721 d_getmnt='$d_getmnt'
20722 d_getmntent='$d_getmntent'
20723 d_getnbyaddr='$d_getnbyaddr'
20724 d_getnbyname='$d_getnbyname'
20725 d_getnent='$d_getnent'
20726 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20727 d_getnetbyname_r='$d_getnetbyname_r'
20728 d_getnetent_r='$d_getnetent_r'
20729 d_getnetprotos='$d_getnetprotos'
20730 d_getpagsz='$d_getpagsz'
20731 d_getpbyname='$d_getpbyname'
20732 d_getpbynumber='$d_getpbynumber'
20733 d_getpent='$d_getpent'
20734 d_getpgid='$d_getpgid'
20735 d_getpgrp2='$d_getpgrp2'
20736 d_getpgrp='$d_getpgrp'
20737 d_getppid='$d_getppid'
20738 d_getprior='$d_getprior'
20739 d_getprotobyname_r='$d_getprotobyname_r'
20740 d_getprotobynumber_r='$d_getprotobynumber_r'
20741 d_getprotoent_r='$d_getprotoent_r'
20742 d_getprotoprotos='$d_getprotoprotos'
20743 d_getprpwnam='$d_getprpwnam'
20744 d_getpwent='$d_getpwent'
20745 d_getpwent_r='$d_getpwent_r'
20746 d_getpwnam_r='$d_getpwnam_r'
20747 d_getpwuid_r='$d_getpwuid_r'
20748 d_getsbyname='$d_getsbyname'
20749 d_getsbyport='$d_getsbyport'
20750 d_getsent='$d_getsent'
20751 d_getservbyname_r='$d_getservbyname_r'
20752 d_getservbyport_r='$d_getservbyport_r'
20753 d_getservent_r='$d_getservent_r'
20754 d_getservprotos='$d_getservprotos'
20755 d_getspnam='$d_getspnam'
20756 d_getspnam_r='$d_getspnam_r'
20757 d_gettimeod='$d_gettimeod'
20758 d_gmtime_r='$d_gmtime_r'
20759 d_gnulibc='$d_gnulibc'
20760 d_grpasswd='$d_grpasswd'
20761 d_hasmntopt='$d_hasmntopt'
20762 d_htonl='$d_htonl'
20763 d_ilogbl='$d_ilogbl'
20764 d_index='$d_index'
20765 d_inetaton='$d_inetaton'
20766 d_int64_t='$d_int64_t'
20767 d_isascii='$d_isascii'
20768 d_isfinite='$d_isfinite'
20769 d_isinf='$d_isinf'
20770 d_isnan='$d_isnan'
20771 d_isnanl='$d_isnanl'
20772 d_killpg='$d_killpg'
20773 d_lchown='$d_lchown'
20774 d_ldbl_dig='$d_ldbl_dig'
20775 d_libm_lib_version='$d_libm_lib_version'
20776 d_link='$d_link'
20777 d_localtime_r='$d_localtime_r'
20778 d_locconv='$d_locconv'
20779 d_lockf='$d_lockf'
20780 d_longdbl='$d_longdbl'
20781 d_longlong='$d_longlong'
20782 d_lseekproto='$d_lseekproto'
20783 d_lstat='$d_lstat'
20784 d_madvise='$d_madvise'
20785 d_mblen='$d_mblen'
20786 d_mbstowcs='$d_mbstowcs'
20787 d_mbtowc='$d_mbtowc'
20788 d_memchr='$d_memchr'
20789 d_memcmp='$d_memcmp'
20790 d_memcpy='$d_memcpy'
20791 d_memmove='$d_memmove'
20792 d_memset='$d_memset'
20793 d_mkdir='$d_mkdir'
20794 d_mkdtemp='$d_mkdtemp'
20795 d_mkfifo='$d_mkfifo'
20796 d_mkstemp='$d_mkstemp'
20797 d_mkstemps='$d_mkstemps'
20798 d_mktime='$d_mktime'
20799 d_mmap='$d_mmap'
20800 d_modfl='$d_modfl'
20801 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20802 d_modflproto='$d_modflproto'
20803 d_mprotect='$d_mprotect'
20804 d_msg='$d_msg'
20805 d_msg_ctrunc='$d_msg_ctrunc'
20806 d_msg_dontroute='$d_msg_dontroute'
20807 d_msg_oob='$d_msg_oob'
20808 d_msg_peek='$d_msg_peek'
20809 d_msg_proxy='$d_msg_proxy'
20810 d_msgctl='$d_msgctl'
20811 d_msgget='$d_msgget'
20812 d_msghdr_s='$d_msghdr_s'
20813 d_msgrcv='$d_msgrcv'
20814 d_msgsnd='$d_msgsnd'
20815 d_msync='$d_msync'
20816 d_munmap='$d_munmap'
20817 d_mymalloc='$d_mymalloc'
20818 d_nice='$d_nice'
20819 d_nl_langinfo='$d_nl_langinfo'
20820 d_nv_preserves_uv='$d_nv_preserves_uv'
20821 d_off64_t='$d_off64_t'
20822 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20823 d_oldpthreads='$d_oldpthreads'
20824 d_oldsock='$d_oldsock'
20825 d_open3='$d_open3'
20826 d_pathconf='$d_pathconf'
20827 d_pause='$d_pause'
20828 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20829 d_phostname='$d_phostname'
20830 d_pipe='$d_pipe'
20831 d_poll='$d_poll'
20832 d_portable='$d_portable'
20833 d_procselfexe='$d_procselfexe'
20834 d_pthread_atfork='$d_pthread_atfork'
20835 d_pthread_attr_setscope='$d_pthread_attr_setscope'
20836 d_pthread_yield='$d_pthread_yield'
20837 d_pwage='$d_pwage'
20838 d_pwchange='$d_pwchange'
20839 d_pwclass='$d_pwclass'
20840 d_pwcomment='$d_pwcomment'
20841 d_pwexpire='$d_pwexpire'
20842 d_pwgecos='$d_pwgecos'
20843 d_pwpasswd='$d_pwpasswd'
20844 d_pwquota='$d_pwquota'
20845 d_qgcvt='$d_qgcvt'
20846 d_quad='$d_quad'
20847 d_random_r='$d_random_r'
20848 d_readdir64_r='$d_readdir64_r'
20849 d_readdir='$d_readdir'
20850 d_readdir_r='$d_readdir_r'
20851 d_readlink='$d_readlink'
20852 d_readv='$d_readv'
20853 d_recvmsg='$d_recvmsg'
20854 d_rename='$d_rename'
20855 d_rewinddir='$d_rewinddir'
20856 d_rmdir='$d_rmdir'
20857 d_safebcpy='$d_safebcpy'
20858 d_safemcpy='$d_safemcpy'
20859 d_sanemcmp='$d_sanemcmp'
20860 d_sbrkproto='$d_sbrkproto'
20861 d_scalbnl='$d_scalbnl'
20862 d_sched_yield='$d_sched_yield'
20863 d_scm_rights='$d_scm_rights'
20864 d_seekdir='$d_seekdir'
20865 d_select='$d_select'
20866 d_sem='$d_sem'
20867 d_semctl='$d_semctl'
20868 d_semctl_semid_ds='$d_semctl_semid_ds'
20869 d_semctl_semun='$d_semctl_semun'
20870 d_semget='$d_semget'
20871 d_semop='$d_semop'
20872 d_sendmsg='$d_sendmsg'
20873 d_setegid='$d_setegid'
20874 d_seteuid='$d_seteuid'
20875 d_setgrent='$d_setgrent'
20876 d_setgrent_r='$d_setgrent_r'
20877 d_setgrps='$d_setgrps'
20878 d_sethent='$d_sethent'
20879 d_sethostent_r='$d_sethostent_r'
20880 d_setitimer='$d_setitimer'
20881 d_setlinebuf='$d_setlinebuf'
20882 d_setlocale='$d_setlocale'
20883 d_setlocale_r='$d_setlocale_r'
20884 d_setnent='$d_setnent'
20885 d_setnetent_r='$d_setnetent_r'
20886 d_setpent='$d_setpent'
20887 d_setpgid='$d_setpgid'
20888 d_setpgrp2='$d_setpgrp2'
20889 d_setpgrp='$d_setpgrp'
20890 d_setprior='$d_setprior'
20891 d_setproctitle='$d_setproctitle'
20892 d_setprotoent_r='$d_setprotoent_r'
20893 d_setpwent='$d_setpwent'
20894 d_setpwent_r='$d_setpwent_r'
20895 d_setregid='$d_setregid'
20896 d_setresgid='$d_setresgid'
20897 d_setresuid='$d_setresuid'
20898 d_setreuid='$d_setreuid'
20899 d_setrgid='$d_setrgid'
20900 d_setruid='$d_setruid'
20901 d_setsent='$d_setsent'
20902 d_setservent_r='$d_setservent_r'
20903 d_setsid='$d_setsid'
20904 d_setvbuf='$d_setvbuf'
20905 d_sfio='$d_sfio'
20906 d_shm='$d_shm'
20907 d_shmat='$d_shmat'
20908 d_shmatprototype='$d_shmatprototype'
20909 d_shmctl='$d_shmctl'
20910 d_shmdt='$d_shmdt'
20911 d_shmget='$d_shmget'
20912 d_sigaction='$d_sigaction'
20913 d_sigprocmask='$d_sigprocmask'
20914 d_sigsetjmp='$d_sigsetjmp'
20915 d_sockatmark='$d_sockatmark'
20916 d_sockatmarkproto='$d_sockatmarkproto'
20917 d_socket='$d_socket'
20918 d_socklen_t='$d_socklen_t'
20919 d_sockpair='$d_sockpair'
20920 d_socks5_init='$d_socks5_init'
20921 d_sqrtl='$d_sqrtl'
20922 d_srand48_r='$d_srand48_r'
20923 d_srandom_r='$d_srandom_r'
20924 d_sresgproto='$d_sresgproto'
20925 d_sresuproto='$d_sresuproto'
20926 d_statblks='$d_statblks'
20927 d_statfs_f_flags='$d_statfs_f_flags'
20928 d_statfs_s='$d_statfs_s'
20929 d_statvfs='$d_statvfs'
20930 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20931 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20932 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20933 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20934 d_stdio_stream_array='$d_stdio_stream_array'
20935 d_stdiobase='$d_stdiobase'
20936 d_stdstdio='$d_stdstdio'
20937 d_strchr='$d_strchr'
20938 d_strcoll='$d_strcoll'
20939 d_strctcpy='$d_strctcpy'
20940 d_strerrm='$d_strerrm'
20941 d_strerror='$d_strerror'
20942 d_strerror_r='$d_strerror_r'
20943 d_strftime='$d_strftime'
20944 d_strlcat='$d_strlcat'
20945 d_strlcpy='$d_strlcpy'
20946 d_strtod='$d_strtod'
20947 d_strtol='$d_strtol'
20948 d_strtold='$d_strtold'
20949 d_strtoll='$d_strtoll'
20950 d_strtoq='$d_strtoq'
20951 d_strtoul='$d_strtoul'
20952 d_strtoull='$d_strtoull'
20953 d_strtouq='$d_strtouq'
20954 d_strxfrm='$d_strxfrm'
20955 d_suidsafe='$d_suidsafe'
20956 d_symlink='$d_symlink'
20957 d_syscall='$d_syscall'
20958 d_syscallproto='$d_syscallproto'
20959 d_sysconf='$d_sysconf'
20960 d_sysernlst='$d_sysernlst'
20961 d_syserrlst='$d_syserrlst'
20962 d_system='$d_system'
20963 d_tcgetpgrp='$d_tcgetpgrp'
20964 d_tcsetpgrp='$d_tcsetpgrp'
20965 d_telldir='$d_telldir'
20966 d_telldirproto='$d_telldirproto'
20967 d_time='$d_time'
20968 d_times='$d_times'
20969 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20970 d_tm_tm_zone='$d_tm_tm_zone'
20971 d_tmpnam_r='$d_tmpnam_r'
20972 d_truncate='$d_truncate'
20973 d_ttyname_r='$d_ttyname_r'
20974 d_tzname='$d_tzname'
20975 d_u32align='$d_u32align'
20976 d_ualarm='$d_ualarm'
20977 d_umask='$d_umask'
20978 d_uname='$d_uname'
20979 d_union_semun='$d_union_semun'
20980 d_unordered='$d_unordered'
20981 d_usleep='$d_usleep'
20982 d_usleepproto='$d_usleepproto'
20983 d_ustat='$d_ustat'
20984 d_vendorarch='$d_vendorarch'
20985 d_vendorbin='$d_vendorbin'
20986 d_vendorlib='$d_vendorlib'
20987 d_vendorscript='$d_vendorscript'
20988 d_vfork='$d_vfork'
20989 d_void_closedir='$d_void_closedir'
20990 d_voidsig='$d_voidsig'
20991 d_voidtty='$d_voidtty'
20992 d_volatile='$d_volatile'
20993 d_vprintf='$d_vprintf'
20994 d_wait4='$d_wait4'
20995 d_waitpid='$d_waitpid'
20996 d_wcstombs='$d_wcstombs'
20997 d_wctomb='$d_wctomb'
20998 d_writev='$d_writev'
20999 d_xenix='$d_xenix'
21000 date='$date'
21001 db_hashtype='$db_hashtype'
21002 db_prefixtype='$db_prefixtype'
21003 db_version_major='$db_version_major'
21004 db_version_minor='$db_version_minor'
21005 db_version_patch='$db_version_patch'
21006 defvoidused='$defvoidused'
21007 direntrytype='$direntrytype'
21008 dlext='$dlext'
21009 dlsrc='$dlsrc'
21010 doublesize='$doublesize'
21011 drand01='$drand01'
21012 drand48_r_proto='$drand48_r_proto'
21013 dynamic_ext='$dynamic_ext'
21014 eagain='$eagain'
21015 ebcdic='$ebcdic'
21016 echo='$echo'
21017 egrep='$egrep'
21018 emacs='$emacs'
21019 endgrent_r_proto='$endgrent_r_proto'
21020 endhostent_r_proto='$endhostent_r_proto'
21021 endnetent_r_proto='$endnetent_r_proto'
21022 endprotoent_r_proto='$endprotoent_r_proto'
21023 endpwent_r_proto='$endpwent_r_proto'
21024 endservent_r_proto='$endservent_r_proto'
21025 eunicefix='$eunicefix'
21026 exe_ext='$exe_ext'
21027 expr='$expr'
21028 extensions='$extensions'
21029 extras='$extras'
21030 fflushNULL='$fflushNULL'
21031 fflushall='$fflushall'
21032 find='$find'
21033 firstmakefile='$firstmakefile'
21034 flex='$flex'
21035 fpossize='$fpossize'
21036 fpostype='$fpostype'
21037 freetype='$freetype'
21038 from='$from'
21039 full_ar='$full_ar'
21040 full_csh='$full_csh'
21041 full_sed='$full_sed'
21042 gccansipedantic='$gccansipedantic'
21043 gccosandvers='$gccosandvers'
21044 gccversion='$gccversion'
21045 getgrent_r_proto='$getgrent_r_proto'
21046 getgrgid_r_proto='$getgrgid_r_proto'
21047 getgrnam_r_proto='$getgrnam_r_proto'
21048 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
21049 gethostbyname_r_proto='$gethostbyname_r_proto'
21050 gethostent_r_proto='$gethostent_r_proto'
21051 getlogin_r_proto='$getlogin_r_proto'
21052 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
21053 getnetbyname_r_proto='$getnetbyname_r_proto'
21054 getnetent_r_proto='$getnetent_r_proto'
21055 getprotobyname_r_proto='$getprotobyname_r_proto'
21056 getprotobynumber_r_proto='$getprotobynumber_r_proto'
21057 getprotoent_r_proto='$getprotoent_r_proto'
21058 getpwent_r_proto='$getpwent_r_proto'
21059 getpwnam_r_proto='$getpwnam_r_proto'
21060 getpwuid_r_proto='$getpwuid_r_proto'
21061 getservbyname_r_proto='$getservbyname_r_proto'
21062 getservbyport_r_proto='$getservbyport_r_proto'
21063 getservent_r_proto='$getservent_r_proto'
21064 getspnam_r_proto='$getspnam_r_proto'
21065 gidformat='$gidformat'
21066 gidsign='$gidsign'
21067 gidsize='$gidsize'
21068 gidtype='$gidtype'
21069 glibpth='$glibpth'
21070 gmake='$gmake'
21071 gmtime_r_proto='$gmtime_r_proto'
21072 gnulibc_version='$gnulibc_version'
21073 grep='$grep'
21074 groupcat='$groupcat'
21075 groupstype='$groupstype'
21076 gzip='$gzip'
21077 h_fcntl='$h_fcntl'
21078 h_sysfile='$h_sysfile'
21079 hint='$hint'
21080 hostcat='$hostcat'
21081 html1dir='$html1dir'
21082 html1direxp='$html1direxp'
21083 html3dir='$html3dir'
21084 html3direxp='$html3direxp'
21085 i16size='$i16size'
21086 i16type='$i16type'
21087 i32size='$i32size'
21088 i32type='$i32type'
21089 i64size='$i64size'
21090 i64type='$i64type'
21091 i8size='$i8size'
21092 i8type='$i8type'
21093 i_arpainet='$i_arpainet'
21094 i_bsdioctl='$i_bsdioctl'
21095 i_crypt='$i_crypt'
21096 i_db='$i_db'
21097 i_dbm='$i_dbm'
21098 i_dirent='$i_dirent'
21099 i_dld='$i_dld'
21100 i_dlfcn='$i_dlfcn'
21101 i_fcntl='$i_fcntl'
21102 i_float='$i_float'
21103 i_fp='$i_fp'
21104 i_fp_class='$i_fp_class'
21105 i_gdbm='$i_gdbm'
21106 i_grp='$i_grp'
21107 i_ieeefp='$i_ieeefp'
21108 i_inttypes='$i_inttypes'
21109 i_langinfo='$i_langinfo'
21110 i_libutil='$i_libutil'
21111 i_limits='$i_limits'
21112 i_locale='$i_locale'
21113 i_machcthr='$i_machcthr'
21114 i_malloc='$i_malloc'
21115 i_math='$i_math'
21116 i_memory='$i_memory'
21117 i_mntent='$i_mntent'
21118 i_ndbm='$i_ndbm'
21119 i_netdb='$i_netdb'
21120 i_neterrno='$i_neterrno'
21121 i_netinettcp='$i_netinettcp'
21122 i_niin='$i_niin'
21123 i_poll='$i_poll'
21124 i_prot='$i_prot'
21125 i_pthread='$i_pthread'
21126 i_pwd='$i_pwd'
21127 i_rpcsvcdbm='$i_rpcsvcdbm'
21128 i_sfio='$i_sfio'
21129 i_sgtty='$i_sgtty'
21130 i_shadow='$i_shadow'
21131 i_socks='$i_socks'
21132 i_stdarg='$i_stdarg'
21133 i_stddef='$i_stddef'
21134 i_stdlib='$i_stdlib'
21135 i_string='$i_string'
21136 i_sunmath='$i_sunmath'
21137 i_sysaccess='$i_sysaccess'
21138 i_sysdir='$i_sysdir'
21139 i_sysfile='$i_sysfile'
21140 i_sysfilio='$i_sysfilio'
21141 i_sysin='$i_sysin'
21142 i_sysioctl='$i_sysioctl'
21143 i_syslog='$i_syslog'
21144 i_sysmman='$i_sysmman'
21145 i_sysmode='$i_sysmode'
21146 i_sysmount='$i_sysmount'
21147 i_sysndir='$i_sysndir'
21148 i_sysparam='$i_sysparam'
21149 i_sysresrc='$i_sysresrc'
21150 i_syssecrt='$i_syssecrt'
21151 i_sysselct='$i_sysselct'
21152 i_syssockio='$i_syssockio'
21153 i_sysstat='$i_sysstat'
21154 i_sysstatfs='$i_sysstatfs'
21155 i_sysstatvfs='$i_sysstatvfs'
21156 i_systime='$i_systime'
21157 i_systimek='$i_systimek'
21158 i_systimes='$i_systimes'
21159 i_systypes='$i_systypes'
21160 i_sysuio='$i_sysuio'
21161 i_sysun='$i_sysun'
21162 i_sysutsname='$i_sysutsname'
21163 i_sysvfs='$i_sysvfs'
21164 i_syswait='$i_syswait'
21165 i_termio='$i_termio'
21166 i_termios='$i_termios'
21167 i_time='$i_time'
21168 i_unistd='$i_unistd'
21169 i_ustat='$i_ustat'
21170 i_utime='$i_utime'
21171 i_values='$i_values'
21172 i_varargs='$i_varargs'
21173 i_varhdr='$i_varhdr'
21174 i_vfork='$i_vfork'
21175 ignore_versioned_solibs='$ignore_versioned_solibs'
21176 inc_version_list='$inc_version_list'
21177 inc_version_list_init='$inc_version_list_init'
21178 incpath='$incpath'
21179 inews='$inews'
21180 installarchlib='$installarchlib'
21181 installbin='$installbin'
21182 installhtml1dir='$installhtml1dir'
21183 installhtml3dir='$installhtml3dir'
21184 installman1dir='$installman1dir'
21185 installman3dir='$installman3dir'
21186 installprefix='$installprefix'
21187 installprefixexp='$installprefixexp'
21188 installprivlib='$installprivlib'
21189 installscript='$installscript'
21190 installsitearch='$installsitearch'
21191 installsitebin='$installsitebin'
21192 installsitehtml1dir='$installsitehtml1dir'
21193 installsitehtml3dir='$installsitehtml3dir'
21194 installsitelib='$installsitelib'
21195 installsiteman1dir='$installsiteman1dir'
21196 installsiteman3dir='$installsiteman3dir'
21197 installsitescript='$installsitescript'
21198 installstyle='$installstyle'
21199 installusrbinperl='$installusrbinperl'
21200 installvendorarch='$installvendorarch'
21201 installvendorbin='$installvendorbin'
21202 installvendorhtml1dir='$installvendorhtml1dir'
21203 installvendorhtml3dir='$installvendorhtml3dir'
21204 installvendorlib='$installvendorlib'
21205 installvendorman1dir='$installvendorman1dir'
21206 installvendorman3dir='$installvendorman3dir'
21207 installvendorscript='$installvendorscript'
21208 intsize='$intsize'
21209 issymlink='$issymlink'
21210 ivdformat='$ivdformat'
21211 ivsize='$ivsize'
21212 ivtype='$ivtype'
21213 known_extensions='$known_extensions'
21214 ksh='$ksh'
21215 ld='$ld'
21216 lddlflags='$lddlflags'
21217 ldflags='$ldflags'
21218 ldflags_uselargefiles='$ldflags_uselargefiles'
21219 ldlibpthname='$ldlibpthname'
21220 less='$less'
21221 lib_ext='$lib_ext'
21222 libc='$libc'
21223 libperl='$libperl'
21224 libpth='$libpth'
21225 libs='$libs'
21226 libsdirs='$libsdirs'
21227 libsfiles='$libsfiles'
21228 libsfound='$libsfound'
21229 libspath='$libspath'
21230 libswanted='$libswanted'
21231 libswanted_uselargefiles='$libswanted_uselargefiles'
21232 line='$line'
21233 lint='$lint'
21234 lkflags='$lkflags'
21235 ln='$ln'
21236 lns='$lns'
21237 localtime_r_proto='$localtime_r_proto'
21238 locincpth='$locincpth'
21239 loclibpth='$loclibpth'
21240 longdblsize='$longdblsize'
21241 longlongsize='$longlongsize'
21242 longsize='$longsize'
21243 lp='$lp'
21244 lpr='$lpr'
21245 ls='$ls'
21246 lseeksize='$lseeksize'
21247 lseektype='$lseektype'
21248 mail='$mail'
21249 mailx='$mailx'
21250 make='$make'
21251 make_set_make='$make_set_make'
21252 mallocobj='$mallocobj'
21253 mallocsrc='$mallocsrc'
21254 malloctype='$malloctype'
21255 man1dir='$man1dir'
21256 man1direxp='$man1direxp'
21257 man1ext='$man1ext'
21258 man3dir='$man3dir'
21259 man3direxp='$man3direxp'
21260 man3ext='$man3ext'
21261 mips_type='$mips_type'
21262 mistrustnm='$mistrustnm'
21263 mkdir='$mkdir'
21264 mmaptype='$mmaptype'
21265 modetype='$modetype'
21266 more='$more'
21267 multiarch='$multiarch'
21268 mv='$mv'
21269 myarchname='$myarchname'
21270 mydomain='$mydomain'
21271 myhostname='$myhostname'
21272 myuname='$myuname'
21273 n='$n'
21274 need_va_copy='$need_va_copy'
21275 netdb_hlen_type='$netdb_hlen_type'
21276 netdb_host_type='$netdb_host_type'
21277 netdb_name_type='$netdb_name_type'
21278 netdb_net_type='$netdb_net_type'
21279 nm='$nm'
21280 nm_opt='$nm_opt'
21281 nm_so_opt='$nm_so_opt'
21282 nonxs_ext='$nonxs_ext'
21283 nroff='$nroff'
21284 nvEUformat='$nvEUformat'
21285 nvFUformat='$nvFUformat'
21286 nvGUformat='$nvGUformat'
21287 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21288 nveformat='$nveformat'
21289 nvfformat='$nvfformat'
21290 nvgformat='$nvgformat'
21291 nvsize='$nvsize'
21292 nvtype='$nvtype'
21293 o_nonblock='$o_nonblock'
21294 obj_ext='$obj_ext'
21295 old_pthread_create_joinable='$old_pthread_create_joinable'
21296 optimize='$optimize'
21297 orderlib='$orderlib'
21298 osname='$osname'
21299 osvers='$osvers'
21300 otherlibdirs='$otherlibdirs'
21301 package='$package'
21302 pager='$pager'
21303 passcat='$passcat'
21304 patchlevel='$patchlevel'
21305 path_sep='$path_sep'
21306 perl5='$perl5'
21307 perl='$perl'
21308 perl_patchlevel='$perl_patchlevel'
21309 perladmin='$perladmin'
21310 perllibs='$perllibs'
21311 perlpath='$perlpath'
21312 pg='$pg'
21313 phostname='$phostname'
21314 pidtype='$pidtype'
21315 plibpth='$plibpth'
21316 pmake='$pmake'
21317 pr='$pr'
21318 prefix='$prefix'
21319 prefixexp='$prefixexp'
21320 privlib='$privlib'
21321 privlibexp='$privlibexp'
21322 procselfexe='$procselfexe'
21323 prototype='$prototype'
21324 ptrsize='$ptrsize'
21325 quadkind='$quadkind'
21326 quadtype='$quadtype'
21327 randbits='$randbits'
21328 randfunc='$randfunc'
21329 random_r_proto='$random_r_proto'
21330 randseedtype='$randseedtype'
21331 ranlib='$ranlib'
21332 rd_nodata='$rd_nodata'
21333 readdir64_r_proto='$readdir64_r_proto'
21334 readdir_r_proto='$readdir_r_proto'
21335 revision='$revision'
21336 rm='$rm'
21337 rmail='$rmail'
21338 run='$run'
21339 runnm='$runnm'
21340 sPRIEUldbl='$sPRIEUldbl'
21341 sPRIFUldbl='$sPRIFUldbl'
21342 sPRIGUldbl='$sPRIGUldbl'
21343 sPRIXU64='$sPRIXU64'
21344 sPRId64='$sPRId64'
21345 sPRIeldbl='$sPRIeldbl'
21346 sPRIfldbl='$sPRIfldbl'
21347 sPRIgldbl='$sPRIgldbl'
21348 sPRIi64='$sPRIi64'
21349 sPRIo64='$sPRIo64'
21350 sPRIu64='$sPRIu64'
21351 sPRIx64='$sPRIx64'
21352 sSCNfldbl='$sSCNfldbl'
21353 sched_yield='$sched_yield'
21354 scriptdir='$scriptdir'
21355 scriptdirexp='$scriptdirexp'
21356 sed='$sed'
21357 seedfunc='$seedfunc'
21358 selectminbits='$selectminbits'
21359 selecttype='$selecttype'
21360 sendmail='$sendmail'
21361 setgrent_r_proto='$setgrent_r_proto'
21362 sethostent_r_proto='$sethostent_r_proto'
21363 setlocale_r_proto='$setlocale_r_proto'
21364 setnetent_r_proto='$setnetent_r_proto'
21365 setprotoent_r_proto='$setprotoent_r_proto'
21366 setpwent_r_proto='$setpwent_r_proto'
21367 setservent_r_proto='$setservent_r_proto'
21368 sh='$sh'
21369 shar='$shar'
21370 sharpbang='$sharpbang'
21371 shmattype='$shmattype'
21372 shortsize='$shortsize'
21373 shrpenv='$shrpenv'
21374 shsharp='$shsharp'
21375 sig_count='$sig_count'
21376 sig_name='$sig_name'
21377 sig_name_init='$sig_name_init'
21378 sig_num='$sig_num'
21379 sig_num_init='$sig_num_init'
21380 sig_size='$sig_size'
21381 signal_t='$signal_t'
21382 sitearch='$sitearch'
21383 sitearchexp='$sitearchexp'
21384 sitebin='$sitebin'
21385 sitebinexp='$sitebinexp'
21386 sitehtml1dir='$sitehtml1dir'
21387 sitehtml1direxp='$sitehtml1direxp'
21388 sitehtml3dir='$sitehtml3dir'
21389 sitehtml3direxp='$sitehtml3direxp'
21390 sitelib='$sitelib'
21391 sitelib_stem='$sitelib_stem'
21392 sitelibexp='$sitelibexp'
21393 siteman1dir='$siteman1dir'
21394 siteman1direxp='$siteman1direxp'
21395 siteman3dir='$siteman3dir'
21396 siteman3direxp='$siteman3direxp'
21397 siteprefix='$siteprefix'
21398 siteprefixexp='$siteprefixexp'
21399 sitescript='$sitescript'
21400 sitescriptexp='$sitescriptexp'
21401 sizesize='$sizesize'
21402 sizetype='$sizetype'
21403 sleep='$sleep'
21404 smail='$smail'
21405 so='$so'
21406 sockethdr='$sockethdr'
21407 socketlib='$socketlib'
21408 socksizetype='$socksizetype'
21409 sort='$sort'
21410 spackage='$spackage'
21411 spitshell='$spitshell'
21412 srand48_r_proto='$srand48_r_proto'
21413 srandom_r_proto='$srandom_r_proto'
21414 src='$src'
21415 ssizetype='$ssizetype'
21416 startperl='$startperl'
21417 startsh='$startsh'
21418 static_ext='$static_ext'
21419 stdchar='$stdchar'
21420 stdio_base='$stdio_base'
21421 stdio_bufsiz='$stdio_bufsiz'
21422 stdio_cnt='$stdio_cnt'
21423 stdio_filbuf='$stdio_filbuf'
21424 stdio_ptr='$stdio_ptr'
21425 stdio_stream_array='$stdio_stream_array'
21426 strerror_r_proto='$strerror_r_proto'
21427 strings='$strings'
21428 submit='$submit'
21429 subversion='$subversion'
21430 sysman='$sysman'
21431 tail='$tail'
21432 tar='$tar'
21433 targetarch='$targetarch'
21434 tbl='$tbl'
21435 tee='$tee'
21436 test='$test'
21437 timeincl='$timeincl'
21438 timetype='$timetype'
21439 tmpnam_r_proto='$tmpnam_r_proto'
21440 to='$to'
21441 touch='$touch'
21442 tr='$tr'
21443 trnl='$trnl'
21444 troff='$troff'
21445 ttyname_r_proto='$ttyname_r_proto'
21446 u16size='$u16size'
21447 u16type='$u16type'
21448 u32size='$u32size'
21449 u32type='$u32type'
21450 u64size='$u64size'
21451 u64type='$u64type'
21452 u8size='$u8size'
21453 u8type='$u8type'
21454 uidformat='$uidformat'
21455 uidsign='$uidsign'
21456 uidsize='$uidsize'
21457 uidtype='$uidtype'
21458 uname='$uname'
21459 uniq='$uniq'
21460 uquadtype='$uquadtype'
21461 use5005threads='$use5005threads'
21462 use64bitall='$use64bitall'
21463 use64bitint='$use64bitint'
21464 usecrosscompile='$usecrosscompile'
21465 usedl='$usedl'
21466 usefaststdio='$usefaststdio'
21467 useithreads='$useithreads'
21468 uselargefiles='$uselargefiles'
21469 uselongdouble='$uselongdouble'
21470 usemallocwrap='$usemallocwrap'
21471 usemorebits='$usemorebits'
21472 usemultiplicity='$usemultiplicity'
21473 usemymalloc='$usemymalloc'
21474 usenm='$usenm'
21475 useopcode='$useopcode'
21476 useperlio='$useperlio'
21477 useposix='$useposix'
21478 usereentrant='$usereentrant'
21479 userelocatableinc='$userelocatableinc'
21480 usesfio='$usesfio'
21481 useshrplib='$useshrplib'
21482 usesitecustomize='$usesitecustomize'
21483 usesocks='$usesocks'
21484 usethreads='$usethreads'
21485 usevendorprefix='$usevendorprefix'
21486 usevfork='$usevfork'
21487 usrinc='$usrinc'
21488 uuname='$uuname'
21489 uvXUformat='$uvXUformat'
21490 uvoformat='$uvoformat'
21491 uvsize='$uvsize'
21492 uvtype='$uvtype'
21493 uvuformat='$uvuformat'
21494 uvxformat='$uvxformat'
21495 vendorarch='$vendorarch'
21496 vendorarchexp='$vendorarchexp'
21497 vendorbin='$vendorbin'
21498 vendorbinexp='$vendorbinexp'
21499 vendorhtml1dir='$vendorhtml1dir'
21500 vendorhtml1direxp='$vendorhtml1direxp'
21501 vendorhtml3dir='$vendorhtml3dir'
21502 vendorhtml3direxp='$vendorhtml3direxp'
21503 vendorlib='$vendorlib'
21504 vendorlib_stem='$vendorlib_stem'
21505 vendorlibexp='$vendorlibexp'
21506 vendorman1dir='$vendorman1dir'
21507 vendorman1direxp='$vendorman1direxp'
21508 vendorman3dir='$vendorman3dir'
21509 vendorman3direxp='$vendorman3direxp'
21510 vendorprefix='$vendorprefix'
21511 vendorprefixexp='$vendorprefixexp'
21512 vendorscript='$vendorscript'
21513 vendorscriptexp='$vendorscriptexp'
21514 version='$version'
21515 version_patchlevel_string='$version_patchlevel_string'
21516 versiononly='$versiononly'
21517 vi='$vi'
21518 voidflags='$voidflags'
21519 xlibpth='$xlibpth'
21520 yacc='$yacc'
21521 yaccflags='$yaccflags'
21522 zcat='$zcat'
21523 zip='$zip'
21524 EOT
21525
21526 : Add in command line options if available
21527 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21528
21529 : add special variables
21530 $test -f $src/patchlevel.h && \
21531 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21532 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21533 echo "PERL_CONFIG_SH=true" >>config.sh
21534
21535 : propagate old symbols
21536 if $test -f UU/config.sh; then
21537         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21538         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21539         $sort | $uniq -u >UU/oldsyms
21540         set X `cat UU/oldsyms`
21541         shift
21542         case $# in
21543         0) ;;
21544         *)
21545                 cat <<EOM
21546 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21547 EOM
21548                 echo "# Variables propagated from previous config.sh file." >>config.sh
21549                 for sym in `cat UU/oldsyms`; do
21550                         echo "    Propagating $hint variable "'$'"$sym..."
21551                         eval 'tmp="$'"${sym}"'"'
21552                         echo "$tmp" | \
21553                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21554                 done
21555                 ;;
21556         esac
21557 fi
21558
21559 : Finish up by extracting the .SH files
21560 case "$alldone" in
21561 exit)
21562         $rm -rf UU
21563         echo "Extraction done."
21564         exit 0
21565         ;;
21566 cont)
21567         ;;
21568 '')
21569         dflt=''
21570         nostick=true
21571         $cat <<EOM
21572
21573 If you'd like to make any changes to the config.sh file before I begin
21574 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21575
21576 EOM
21577         rp="Press return or use a shell escape to edit config.sh:"
21578         . UU/myread
21579         nostick=''
21580         case "$ans" in
21581         '') ;;
21582         *) : in case they cannot read
21583                 sh 1>&4 -c "$ans";;
21584         esac
21585         ;;
21586 esac
21587
21588 : if this fails, just run all the .SH files by hand
21589 . ./config.sh
21590
21591 echo " "
21592 exec 1>&4
21593 pwd=`pwd`
21594 . ./UU/extract
21595 cd "$pwd"
21596
21597 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21598         dflt=y
21599         case "$silent" in
21600         true) ;;
21601         *)
21602                 $cat <<EOM
21603
21604 Now you need to generate make dependencies by running "$make depend".
21605 You might prefer to run it in background: "$make depend > makedepend.out &"
21606 It can take a while, so you might not want to run it right now.
21607
21608 EOM
21609                 ;;
21610         esac
21611         rp="Run $make depend now?"
21612         . UU/myread
21613         case "$ans" in
21614         y*)
21615                 $make depend && echo "Now you must run '$make'."
21616                 ;;
21617         *)
21618                 echo "You must run '$make depend' then '$make'."
21619                 ;;
21620         esac
21621 elif test -f [Mm]akefile; then
21622         echo " "
21623         echo "Now you must run a $make."
21624 else
21625         echo "Configure done."
21626 fi
21627
21628 if $test -f Policy.sh; then
21629     $cat <<EOM
21630
21631 If you compile $package on a different machine or from a different object
21632 directory, copy the Policy.sh file from this object directory to the
21633 new one before you run Configure -- this will help you with most of
21634 the policy defaults.
21635
21636 EOM
21637 fi
21638 if $test -f config.msg; then
21639     echo "Hmm.  I also noted the following information while running:"
21640     echo " "
21641     $cat config.msg >&4
21642     $rm -f config.msg
21643 fi
21644 $rm -f kit*isdone ark*isdone
21645 $rm -rf UU
21646
21647 : End of Configure
21648