This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Well defined $? and introduction of ${^CHILD_ERROR_NATIVE} [PATCH]
[perl5.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Sun Apr 24 14:17:04 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 -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                 echo "Checking if your compiler accepts -Wdeclaration-after-statement" 2>&1
4762                 echo 'int main(void) { return 0; }' > gcctest.c
4763                 if $cc -Wdeclaration-after-statement -o gcctest gcctest.c; then
4764                         echo "Yes, it does." 2>&1
4765                         case "$ccflags" in
4766                         *-Wdeclaration-after-statement*)
4767                                 echo "Leaving current flags $ccflags alone." 2>&1
4768                                 ;;
4769                         *) dflt="$dflt -Wdeclaration-after-statement" ;;
4770                         esac
4771                 else
4772                         echo "Nope, it doesn't, but that's ok." 2>&1
4773                 fi
4774                 ;;
4775         esac
4776         ;;
4777 esac
4778
4779 case "$mips_type" in
4780 *BSD*|'') inclwanted="$locincpth $usrinc";;
4781 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4782 esac
4783 for thisincl in $inclwanted; do
4784         if $test -d $thisincl; then
4785                 if $test x$thisincl != x$usrinc; then
4786                         case "$dflt" in
4787                         *" -I$thisincl "*);;
4788                         *) dflt="$dflt -I$thisincl ";;
4789                         esac
4790                 fi
4791         fi
4792 done
4793
4794 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4795         xxx=true;
4796 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4797         xxx=true;
4798 else
4799         xxx=false;
4800 fi;
4801 if $xxx; then
4802         case "$dflt" in
4803         *$2*);;
4804         *) dflt="$dflt -D$2";;
4805         esac;
4806 fi'
4807
4808 set signal.h LANGUAGE_C; eval $inctest
4809
4810 case "$usesocks" in
4811 $define)
4812         ccflags="$ccflags -DSOCKS"
4813         ;;
4814 esac
4815
4816 case "$hint" in
4817 default|recommended) dflt="$ccflags $dflt" ;;
4818 *) dflt="$ccflags";;
4819 esac
4820
4821 case "$dflt" in
4822 ''|' ') dflt=none;;
4823 esac
4824
4825 $cat <<EOH
4826
4827 Your C compiler may want other flags.  For this question you should include
4828 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4829 but you should NOT include libraries or ld flags like -lwhatever.  If you
4830 want $package to honor its debug switch, you should include -DDEBUGGING here.
4831 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4832
4833 To use no flags, specify the word "none".
4834
4835 EOH
4836 set X $dflt
4837 shift
4838 dflt=${1+"$@"}
4839 rp="Any additional cc flags?"
4840 . ./myread
4841 case "$ans" in
4842 none) ccflags='';;
4843 *) ccflags="$ans";;
4844 esac
4845
4846 : the following weeds options from ccflags that are of no interest to cpp
4847 case "$cppflags" in
4848 '') cppflags="$ccflags" ;;
4849 *)  cppflags="$cppflags $ccflags" ;;
4850 esac
4851 case "$gccversion" in
4852 1*) cppflags="$cppflags -D__GNUC__"
4853 esac
4854 case "$mips_type" in
4855 '');;
4856 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4857 esac
4858 case "$cppflags" in
4859 '');;
4860 *)
4861         echo " "
4862         echo "Let me guess what the preprocessor flags are..." >&4
4863         set X $cppflags
4864         shift
4865         cppflags=''
4866         $cat >cpp.c <<'EOM'
4867 #define BLURFL foo
4868
4869 BLURFL xx LFRULB
4870 EOM
4871         previous=''
4872         for flag in $*
4873         do
4874                 case "$flag" in
4875                 -*) ftry="$flag";;
4876                 *) ftry="$previous $flag";;
4877                 esac
4878                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4879                         >cpp1.out 2>/dev/null && \
4880                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4881                         >cpp2.out 2>/dev/null && \
4882                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4883                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4884                 then
4885                         cppflags="$cppflags $ftry"
4886                         previous=''
4887                 else
4888                         previous="$flag"
4889                 fi
4890         done
4891         set X $cppflags
4892         shift
4893         cppflags=${1+"$@"}
4894         case "$cppflags" in
4895         *-*)  echo "They appear to be: $cppflags";;
4896         esac
4897         $rm -f cpp.c cpp?.out
4898         ;;
4899 esac
4900
4901 : flags used in final linking phase
4902 case "$ldflags" in
4903 '') if ./venix; then
4904                 dflt='-i -z'
4905         else
4906                 dflt=''
4907         fi
4908         case "$ccflags" in
4909         *-posix*) dflt="$dflt -posix" ;;
4910         esac
4911         ;;
4912 *) dflt="$ldflags";;
4913 esac
4914
4915 : Try to guess additional flags to pick up local libraries.
4916 for thislibdir in $libpth; do
4917         case " $loclibpth " in
4918         *" $thislibdir "*)
4919                 case "$dflt " in
4920                 *"-L$thislibdir "*) ;;
4921                 *)  dflt="$dflt -L$thislibdir" ;;
4922                 esac
4923                 ;;
4924         esac
4925 done
4926
4927 case "$dflt" in
4928 '') dflt='none' ;;
4929 esac
4930
4931 $cat <<EOH
4932
4933 Your C linker may need flags.  For this question you should
4934 include -L/whatever and any other flags used by the C linker, but you
4935 should NOT include libraries like -lwhatever.
4936
4937 Make sure you include the appropriate -L/path flags if your C linker
4938 does not normally search all of the directories you specified above,
4939 namely
4940         $libpth
4941 To use no flags, specify the word "none".
4942
4943 EOH
4944
4945 rp="Any additional ld flags (NOT including libraries)?"
4946 . ./myread
4947 case "$ans" in
4948 none) ldflags='';;
4949 *) ldflags="$ans";;
4950 esac
4951 rmlist="$rmlist pdp11"
4952
4953 : coherency check
4954 echo " "
4955 echo "Checking your choice of C compiler and flags for coherency..." >&4
4956 $cat > try.c <<'EOF'
4957 #include <stdio.h>
4958 int main() { printf("Ok\n"); return(0); }
4959 EOF
4960 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4961 shift
4962 $cat >try.msg <<'EOM'
4963 I've tried to compile and run the following simple program:
4964
4965 EOM
4966 $cat try.c >> try.msg
4967
4968 $cat >> try.msg <<EOM
4969
4970 I used the command:
4971
4972         $*
4973         $run ./try
4974
4975 and I got the following output:
4976
4977 EOM
4978 dflt=y
4979 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4980         if $sh -c "$run ./try" >>try.msg 2>&1; then
4981                 xxx=`$run ./try`
4982                 case "$xxx" in
4983                 "Ok") dflt=n ;;
4984                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4985                         case " $libs " in
4986                         *" -lsfio "*)
4987                                 cat >> try.msg <<'EOQS'
4988 If $libs contains -lsfio, and sfio is mis-configured, then it
4989 sometimes (apparently) runs and exits with a 0 status, but with no
4990 output!  It may have to do with sfio's use of _exit vs. exit.
4991
4992 EOQS
4993                                 rp="You have a big problem.  Shall I abort Configure"
4994                                 dflt=y
4995                                 ;;
4996                         esac
4997                         ;;
4998                 esac
4999         else
5000                 echo "The program compiled OK, but exited with status $?." >>try.msg
5001                 rp="You have a problem.  Shall I abort Configure"
5002                 dflt=y
5003         fi
5004 else
5005         echo "I can't compile the test program." >>try.msg
5006         rp="You have a BIG problem.  Shall I abort Configure"
5007         dflt=y
5008 fi
5009 case "$dflt" in
5010 y)
5011         $cat try.msg >&4
5012         case "$knowitall" in
5013         '')
5014                 echo "(The supplied flags or libraries might be incorrect.)"
5015                 ;;
5016         *) dflt=n;;
5017         esac
5018         echo " "
5019         . ./myread
5020         case "$ans" in
5021         n*|N*) ;;
5022         *)      echo "Ok.  Stopping Configure." >&4
5023                 exit 1
5024                 ;;
5025         esac
5026         ;;
5027 n) echo "OK, that should do.";;
5028 esac
5029 $rm -f try try.* core
5030
5031 : define a shorthand compile call
5032 compile='
5033 mc_file=$1;
5034 shift;
5035 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5036 : define a shorthand compile call for compilations that should be ok.
5037 compile_ok='
5038 mc_file=$1;
5039 shift;
5040 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5041
5042 : determine filename position in cpp output
5043 echo " "
5044 echo "Computing filename position in cpp output for #include directives..." >&4
5045 case "$osname" in
5046 vos) testaccess=-e ;;
5047 *)   testaccess=-r ;;
5048 esac
5049 echo '#include <stdio.h>' > foo.c
5050 $cat >fieldn <<EOF
5051 $startsh
5052 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5053 $grep '^[       ]*#.*stdio\.h' | \
5054 while read cline; do
5055         pos=1
5056         set \$cline
5057         while $test \$# -gt 0; do
5058                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5059                         echo "\$pos"
5060                         exit 0
5061                 fi
5062                 shift
5063                 pos=\`expr \$pos + 1\`
5064         done
5065 done
5066 EOF
5067 chmod +x fieldn
5068 fieldn=`./fieldn`
5069 $rm -f foo.c fieldn
5070 case $fieldn in
5071 '') pos='???';;
5072 1) pos=first;;
5073 2) pos=second;;
5074 3) pos=third;;
5075 *) pos="${fieldn}th";;
5076 esac
5077 echo "Your cpp writes the filename in the $pos field of the line."
5078
5079 case "$osname" in
5080 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5081 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5082 *)   cppfilter='' ;;
5083 esac
5084 : locate header file
5085 $cat >findhdr <<EOF
5086 $startsh
5087 wanted=\$1
5088 name=''
5089 for usrincdir in $usrinc
5090 do
5091         if test -f \$usrincdir/\$wanted; then
5092                 echo "\$usrincdir/\$wanted"
5093                 exit 0
5094         fi
5095 done
5096 awkprg='{ print \$$fieldn }'
5097 echo "#include <\$wanted>" > foo\$\$.c
5098 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5099 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5100 while read cline; do
5101         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5102         case "\$name" in
5103         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5104         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5105         *) exit 2;;
5106         esac;
5107 done;
5108 #
5109 # status = 0: grep returned 0 lines, case statement not executed
5110 # status = 1: headerfile found
5111 # status = 2: while loop executed, no headerfile found
5112 #
5113 status=\$?
5114 $rm -f foo\$\$.c;
5115 if test \$status -eq 1; then
5116         exit 0;
5117 fi
5118 exit 1
5119 EOF
5120 chmod +x findhdr
5121
5122 : define an alternate in-header-list? function
5123 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5124 cont=true; xxf="echo \"<\$1> found.\" >&4";
5125 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5126 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5127 esac;
5128 case $# in 4) instead=instead;; *) instead="at last";; esac;
5129 while $test "$cont"; do
5130         xxx=`./findhdr $1`
5131         var=$2; eval "was=\$$2";
5132         if $test "$xxx" && $test -r "$xxx";
5133         then eval $xxf;
5134         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5135                 cont="";
5136         else eval $xxnf;
5137         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5138         set $yyy; shift; shift; yyy=$@;
5139         case $# in 0) cont="";;
5140         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5141                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5142         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5143                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5144         esac;
5145 done;
5146 while $test "$yyy";
5147 do set $yyy; var=$2; eval "was=\$$2";
5148         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5149         set $yyy; shift; shift; yyy=$@;
5150 done'
5151
5152 : see if stdlib is available
5153 set stdlib.h i_stdlib
5154 eval $inhdr
5155
5156 : check for lengths of integral types
5157 echo " "
5158 case "$intsize" in
5159 '')
5160         echo "Checking to see how big your integers are..." >&4
5161         $cat >try.c <<EOCP
5162 #include <stdio.h>
5163 #$i_stdlib I_STDLIB
5164 #ifdef I_STDLIB
5165 #include <stdlib.h>
5166 #endif
5167 int main()
5168 {
5169         printf("intsize=%d;\n", (int)sizeof(int));
5170         printf("longsize=%d;\n", (int)sizeof(long));
5171         printf("shortsize=%d;\n", (int)sizeof(short));
5172         exit(0);
5173 }
5174 EOCP
5175         set try
5176         if eval $compile_ok && $run ./try > /dev/null; then
5177                 eval `$run ./try`
5178                 echo "Your integers are $intsize bytes long."
5179                 echo "Your long integers are $longsize bytes long."
5180                 echo "Your short integers are $shortsize bytes long."
5181         else
5182                 $cat >&4 <<EOM
5183 !
5184 Help! I can't compile and run the intsize test program: please enlighten me!
5185 (This is probably a misconfiguration in your system or libraries, and
5186 you really ought to fix it.  Still, I'll try anyway.)
5187 !
5188 EOM
5189                 dflt=4
5190                 rp="What is the size of an integer (in bytes)?"
5191                 . ./myread
5192                 intsize="$ans"
5193                 dflt=$intsize
5194                 rp="What is the size of a long integer (in bytes)?"
5195                 . ./myread
5196                 longsize="$ans"
5197                 dflt=2
5198                 rp="What is the size of a short integer (in bytes)?"
5199                 . ./myread
5200                 shortsize="$ans"
5201         fi
5202         ;;
5203 esac
5204 $rm -f try try.*
5205
5206 : check for long long
5207 echo " "
5208 echo "Checking to see if you have long long..." >&4
5209 echo 'int main() { long long x = 7; return 0; }' > try.c
5210 set try
5211 if eval $compile; then
5212         val="$define"
5213         echo "You have long long."
5214 else
5215         val="$undef"
5216         echo "You do not have long long."
5217 fi
5218 $rm try.*
5219 set d_longlong
5220 eval $setvar
5221
5222 : check for length of long long
5223 case "${d_longlong}${longlongsize}" in
5224 $define)
5225         echo " "
5226         echo "Checking to see how big your long longs are..." >&4
5227         $cat >try.c <<'EOCP'
5228 #include <stdio.h>
5229 int main()
5230 {
5231     printf("%d\n", (int)sizeof(long long));
5232     return(0);
5233 }
5234 EOCP
5235         set try
5236         if eval $compile_ok; then
5237                 longlongsize=`$run ./try`
5238                 echo "Your long longs are $longlongsize bytes long."
5239         else
5240                 dflt='8'
5241                 echo " "
5242                 echo "(I can't seem to compile the test program.  Guessing...)"
5243                 rp="What is the size of a long long (in bytes)?"
5244                 . ./myread
5245                 longlongsize="$ans"
5246         fi
5247         if $test "X$longsize" = "X$longlongsize"; then
5248                 echo "(That isn't any different from an ordinary long.)"
5249         fi      
5250         ;;
5251 esac
5252 $rm -f try.* try
5253
5254 : see if inttypes.h is available
5255 : we want a real compile instead of Inhdr because some systems
5256 : have an inttypes.h which includes non-existent headers
5257 echo " "
5258 $cat >try.c <<EOCP
5259 #include <inttypes.h>
5260 int main() {
5261         static int32_t foo32 = 0x12345678;
5262 }
5263 EOCP
5264 set try
5265 if eval $compile; then
5266         echo "<inttypes.h> found." >&4
5267         val="$define"
5268 else
5269         echo "<inttypes.h> NOT found." >&4
5270         val="$undef"
5271 fi
5272 $rm -f try.c try
5273 set i_inttypes
5274 eval $setvar
5275
5276 : check for int64_t
5277 echo " "
5278 echo "Checking to see if you have int64_t..." >&4
5279 $cat >try.c <<EOCP
5280 #include <sys/types.h>
5281 #$i_inttypes I_INTTYPES
5282 #ifdef I_INTTYPES
5283 #include <inttypes.h>
5284 #endif
5285 int main() { int64_t x = 7; }
5286 EOCP
5287 set try
5288 if eval $compile; then
5289         val="$define"
5290         echo "You have int64_t."
5291 else
5292         val="$undef"
5293         echo "You do not have int64_t."
5294 fi
5295 $rm -f try try.*
5296 set d_int64_t
5297 eval $setvar
5298
5299
5300 echo " "
5301 echo "Checking which 64-bit integer type we could use..." >&4
5302
5303 case "$intsize" in
5304 8) val=int
5305    set quadtype
5306    eval $setvar
5307    val='"unsigned int"'
5308    set uquadtype
5309    eval $setvar
5310    quadkind=1
5311    ;;
5312 *) case "$longsize" in
5313    8) val=long
5314       set quadtype
5315       eval $setvar
5316       val='"unsigned long"'
5317       set uquadtype
5318       eval $setvar
5319       quadkind=2
5320       ;;
5321    *) case "$d_longlong:$longlongsize" in
5322       define:8)
5323         val='"long long"'
5324         set quadtype
5325         eval $setvar
5326         val='"unsigned long long"'
5327         set uquadtype
5328         eval $setvar
5329         quadkind=3
5330         ;;
5331       *) case "$d_int64_t" in
5332          define)
5333            val=int64_t
5334            set quadtype
5335            eval $setvar
5336            val=uint64_t
5337            set uquadtype
5338            eval $setvar
5339            quadkind=4
5340            ;;
5341          esac
5342          ;;
5343       esac
5344       ;;
5345    esac
5346    ;;
5347 esac
5348
5349 case "$quadtype" in
5350 '')     echo "Alas, no 64-bit integer types in sight." >&4
5351         d_quad="$undef"
5352         ;;
5353 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5354         d_quad="$define"
5355         ;;
5356 esac
5357
5358
5359 case "$uselonglong" in
5360 "$define"|true|[yY]*)
5361         cat <<EOM >&4
5362
5363 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5364 EOM
5365         use64bitint="$define"
5366         ;;
5367 esac                          
5368 case "$use64bits" in
5369 "$define"|true|[yY]*)
5370         cat <<EOM >&4
5371
5372 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5373 EOM
5374         use64bitint="$define"
5375         ;;
5376 esac                          
5377 case "$use64bitints" in
5378 "$define"|true|[yY]*)
5379         cat <<EOM >&4
5380
5381 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5382 EOM
5383         use64bitint="$define"
5384         ;;
5385 esac                          
5386 case "$use64bitsint" in
5387 "$define"|true|[yY]*)
5388         cat <<EOM >&4
5389
5390 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5391 EOM
5392         use64bitint="$define"
5393         ;;
5394 esac                          
5395 case "$uselonglongs" in
5396 "$define"|true|[yY]*)
5397         cat <<EOM >&4
5398
5399 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5400 EOM
5401         use64bitint="$define"
5402         ;;
5403 esac                          
5404 case "$use64bitsall" in
5405 "$define"|true|[yY]*)
5406         cat <<EOM >&4
5407
5408 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5409 EOM
5410         use64bitall="$define"
5411         ;;
5412 esac                          
5413
5414 case "$ccflags" in
5415 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5416 esac
5417 case "$use64bitall" in
5418 "$define"|true|[yY]*) use64bitint="$define" ;;
5419 esac
5420
5421 case "$longsize" in
5422 8) cat <<EOM
5423
5424 You have natively 64-bit long integers.
5425 EOM
5426    val="$define"
5427    ;;
5428 *) case "$use64bitint" in
5429    "$define"|true|[yY]*) dflt='y';;
5430    *) dflt='n';;
5431    esac
5432    case "$d_quad" in
5433    "$define") ;;
5434    *) dflt='n' ;;
5435    esac
5436    cat <<EOM
5437
5438 Perl can be built to take advantage of 64-bit integer types
5439 on some systems.  To do so, Configure can be run with -Duse64bitint.
5440 Choosing this option will most probably introduce binary incompatibilities.
5441
5442 If this doesn't make any sense to you, just accept the default '$dflt'.
5443 (The default has been chosen based on your configuration.)
5444 EOM
5445    rp='Try to use 64-bit integers, if available?'
5446    . ./myread
5447    case "$ans" in
5448    [yY]*) val="$define" ;;
5449    *)     val="$undef"  ;;
5450    esac
5451    ;;
5452 esac
5453 set use64bitint
5454 eval $setvar
5455
5456 case "$use64bitall" in
5457 "$define"|true|[yY]*) dflt='y' ;;
5458 *) case "$longsize" in
5459    8) dflt='y' ;;
5460    *) dflt='n' ;;
5461    esac
5462    ;;
5463 esac    
5464 cat <<EOM
5465
5466 You may also choose to try maximal 64-bitness.  It means using as much
5467 64-bitness as possible on the platform.  This in turn means even more
5468 binary incompatibilities.  On the other hand, your platform may not
5469 have any more 64-bitness available than what you already have chosen.
5470
5471 If this doesn't make any sense to you, just accept the default '$dflt'.
5472 (The default has been chosen based on your configuration.)
5473 EOM
5474 rp='Try to use maximal 64-bit support, if available?'
5475 . ./myread
5476 case "$ans" in
5477 [yY]*) val="$define" ;;
5478 *)     val="$undef"  ;;
5479 esac
5480 set use64bitall
5481 eval $setvar
5482 case "$use64bitall" in
5483 "$define")
5484         case "$use64bitint" in
5485         "$undef")
5486                 cat <<EOM
5487
5488 Since you have chosen a maximally 64-bit build, I'm also turning on
5489 the use of 64-bit integers.
5490 EOM
5491                 use64bitint="$define" ;;
5492         esac
5493         ;;
5494 esac
5495
5496 : Look for a hint-file generated 'call-back-unit'.  If the
5497 : user has specified that a 64-bit perl is to be built,
5498 : we may need to set or change some other defaults.
5499 if $test -f use64bitint.cbu; then
5500         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5501         . ./use64bitint.cbu
5502 fi
5503 case "$use64bitint" in
5504 "$define"|true|[yY]*)
5505         case "$longsize" in
5506         4) case "$archname64" in
5507            '') archname64=64int ;;
5508            esac
5509            ;;
5510         esac
5511         ;;
5512 esac
5513
5514 : Look for a hint-file generated 'call-back-unit'.  If the
5515 : user has specified that a maximally 64-bit perl is to be built,
5516 : we may need to set or change some other defaults.
5517 if $test -f use64bitall.cbu; then
5518         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5519         . ./use64bitall.cbu
5520 fi
5521 case "$use64bitall" in
5522 "$define"|true|[yY]*)
5523         case "$longsize" in
5524         4) case "$archname64" in
5525            ''|64int) archname64=64all ;;
5526            esac
5527            ;;
5528         esac
5529         ;;
5530 esac
5531
5532 case "$d_quad:$use64bitint" in
5533 $undef:$define)
5534         cat >&4 <<EOF
5535
5536 *** You have chosen to use 64-bit integers,
5537 *** but none can be found.
5538 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5539 *** Cannot continue, aborting.
5540
5541 EOF
5542         exit 1
5543         ;;
5544 esac
5545
5546 : check for length of double
5547 echo " "
5548 case "$doublesize" in
5549 '')
5550         echo "Checking to see how big your double precision numbers are..." >&4
5551         $cat >try.c <<EOCP
5552 #include <stdio.h>
5553 #$i_stdlib I_STDLIB
5554 #ifdef I_STDLIB
5555 #include <stdlib.h>
5556 #endif
5557 int main()
5558 {
5559     printf("%d\n", (int)sizeof(double));
5560     exit(0);
5561 }
5562 EOCP
5563         set try
5564         if eval $compile_ok; then
5565                 doublesize=`$run ./try`
5566                 echo "Your double is $doublesize bytes long."
5567         else
5568                 dflt='8'
5569                 echo "(I can't seem to compile the test program.  Guessing...)"
5570                 rp="What is the size of a double precision number (in bytes)?"
5571                 . ./myread
5572                 doublesize="$ans"
5573         fi
5574         ;;
5575 esac
5576 $rm -f try.c try
5577
5578 : check for long doubles
5579 echo " "
5580 echo "Checking to see if you have long double..." >&4
5581 echo 'int main() { long double x = 7.0; }' > try.c
5582 set try
5583 if eval $compile; then
5584         val="$define"
5585         echo "You have long double."
5586 else
5587         val="$undef"
5588         echo "You do not have long double."
5589 fi
5590 $rm try.*
5591 set d_longdbl
5592 eval $setvar
5593
5594 : check for length of long double
5595 case "${d_longdbl}${longdblsize}" in
5596 $define)
5597         echo " "
5598         echo "Checking to see how big your long doubles are..." >&4
5599         $cat >try.c <<'EOCP'
5600 #include <stdio.h>
5601 int main()
5602 {
5603         printf("%d\n", sizeof(long double));
5604 }
5605 EOCP
5606         set try
5607         set try
5608         if eval $compile; then
5609                 longdblsize=`$run ./try`
5610                 echo "Your long doubles are $longdblsize bytes long."
5611         else
5612                 dflt='8'
5613                 echo " "
5614                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5615                 rp="What is the size of a long double (in bytes)?"
5616                 . ./myread
5617                 longdblsize="$ans"
5618         fi
5619         if $test "X$doublesize" = "X$longdblsize"; then
5620                 echo "That isn't any different from an ordinary double."
5621                 echo "I'll keep your setting anyway, but you may see some"
5622                 echo "harmless compilation warnings."
5623         fi      
5624         ;;
5625 esac
5626 $rm -f try.* try
5627
5628 : determine the architecture name
5629 echo " "
5630 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5631         tarch=`arch`"-$osname"
5632 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5633         if uname -m > tmparch 2>&1 ; then
5634                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5635                         -e 's/$/'"-$osname/" tmparch`
5636         else
5637                 tarch="$osname"
5638         fi
5639         $rm -f tmparch
5640 else
5641         tarch="$osname"
5642 fi
5643 case "$myarchname" in
5644 ''|"$tarch") ;;
5645 *)
5646         echo "(Your architecture name used to be $myarchname.)"
5647         archname=''
5648         ;;
5649 esac
5650 case "$targetarch" in
5651 '') ;;
5652 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5653 esac
5654 myarchname="$tarch"
5655 case "$archname" in
5656 '') dflt="$tarch";;
5657 *) dflt="$archname";;
5658 esac
5659 rp='What is your architecture name'
5660 . ./myread
5661 archname="$ans"
5662 case "$usethreads" in
5663 $define)
5664         echo "Threads selected." >&4
5665         case "$archname" in
5666         *-thread*) echo "...and architecture name already has -thread." >&4
5667                 ;;
5668         *)      archname="$archname-thread"
5669                 echo "...setting architecture name to $archname." >&4
5670                 ;;
5671         esac
5672         ;;
5673 esac
5674 case "$usemultiplicity" in
5675 $define)
5676         echo "Multiplicity selected." >&4
5677         case "$archname" in
5678         *-multi*) echo "...and architecture name already has -multi." >&4
5679                 ;;
5680         *)      archname="$archname-multi"
5681                 echo "...setting architecture name to $archname." >&4
5682                 ;;
5683         esac
5684         ;;
5685 esac
5686 case "$use64bitint$use64bitall" in
5687 *"$define"*)
5688         case "$archname64" in
5689         '')
5690                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5691                 ;;
5692         *)
5693                 case "$use64bitint" in
5694                 "$define") echo "64 bit integers selected." >&4 ;;
5695                 esac
5696                 case "$use64bitall" in
5697                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5698                 esac
5699                 case "$archname" in
5700                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5701                         ;;
5702                 *)      archname="$archname-$archname64"
5703                         echo "...setting architecture name to $archname." >&4
5704                         ;;
5705                 esac
5706                 ;;
5707         esac
5708 esac
5709 case "$uselongdouble" in
5710 $define)
5711         echo "Long doubles selected." >&4
5712         case "$longdblsize" in
5713         $doublesize)
5714                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5715                 ;;
5716         *)
5717                 case "$archname" in
5718                 *-ld*) echo "...and architecture name already has -ld." >&4
5719                         ;;
5720                 *)      archname="$archname-ld"
5721                         echo "...setting architecture name to $archname." >&4
5722                         ;;
5723                 esac
5724                 ;;
5725         esac
5726         ;;
5727 esac
5728 case "$useperlio" in
5729 $define)
5730         echo "Perlio selected." >&4
5731         ;;
5732 *)
5733         echo "Perlio not selected, using stdio." >&4
5734         case "$archname" in
5735         *-stdio*) echo "...and architecture name already has -stdio." >&4
5736                 ;;
5737         *)      archname="$archname-stdio"
5738                 echo "...setting architecture name to $archname." >&4
5739                 ;;
5740         esac
5741         ;;
5742 esac
5743 if $test -f archname.cbu; then
5744         echo "Your platform has some specific hints for architecture name, using them..."
5745         . ./archname.cbu
5746 fi
5747
5748 : determine root of directory hierarchy where package will be installed.
5749 case "$prefix" in
5750 '')
5751         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5752         ;;
5753 *?/)
5754         dflt=`echo "$prefix" | sed 's/.$//'`
5755         ;;
5756 *)
5757         dflt="$prefix"
5758         ;;
5759 esac
5760 $cat <<EOM
5761
5762 By default, $package will be installed in $dflt/bin, manual pages
5763 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5764 installation directories. Typically this is something like /usr/local.
5765 If you wish to have binaries under /usr/bin but other parts of the
5766 installation under /usr/local, that's ok: you will be prompted
5767 separately for each of the installation directories, the prefix being
5768 only used to set the defaults.
5769
5770 EOM
5771 fn=d~
5772 rp='Installation prefix to use?'
5773 . ./getfile
5774 oldprefix=''
5775 case "$prefix" in
5776 '') ;;
5777 *)
5778         case "$ans" in
5779         "$prefix") ;;
5780         *) oldprefix="$prefix";;
5781         esac
5782         ;;
5783 esac
5784 prefix="$ans"
5785 prefixexp="$ansexp"
5786
5787 case "$afsroot" in
5788 '')     afsroot=/afs ;;
5789 *)      afsroot=$afsroot ;;
5790 esac
5791
5792 : is AFS running?
5793 echo " "
5794 case "$afs" in
5795 $define|true)   afs=true ;;
5796 $undef|false)   afs=false ;;
5797 *)      if test -d $afsroot; then
5798                 afs=true
5799         else
5800                 afs=false
5801         fi
5802         ;;
5803 esac
5804 if $afs; then
5805         echo "AFS may be running... I'll be extra cautious then..." >&4
5806 else
5807         echo "AFS does not seem to be running..." >&4
5808 fi
5809
5810 : determine installation prefix for where package is to be installed.
5811 if $afs; then 
5812 $cat <<EOM
5813
5814 Since you are running AFS, I need to distinguish the directory in which
5815 files will reside from the directory in which they are installed (and from
5816 which they are presumably copied to the former directory by occult means).
5817
5818 EOM
5819         case "$installprefix" in
5820         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5821         *) dflt="$installprefix";;
5822         esac
5823 else
5824 $cat <<EOM
5825
5826 In some special cases, particularly when building $package for distribution,
5827 it is convenient to distinguish the directory in which files should be
5828 installed from the directory ($prefix) in which they will
5829 eventually reside.  For most users, these two directories are the same.
5830
5831 EOM
5832         case "$installprefix" in
5833         '') dflt=$prefix ;;
5834         *) dflt=$installprefix;;
5835         esac
5836 fi
5837 fn=d~
5838 rp='What installation prefix should I use for installing files?'
5839 . ./getfile
5840 installprefix="$ans"
5841 installprefixexp="$ansexp"
5842
5843 : set the prefixit variable, to compute a suitable default value
5844 prefixit='case "$3" in
5845 ""|none)
5846         case "$oldprefix" in
5847         "") eval "$1=\"\$$2\"";;
5848         *)
5849                 case "$3" in
5850                 "") eval "$1=";;
5851                 none)
5852                         eval "tp=\"\$$2\"";
5853                         case "$tp" in
5854                         ""|" ") eval "$1=\"\$$2\"";;
5855                         *) eval "$1=";;
5856                         esac;;
5857                 esac;;
5858         esac;;
5859 *)
5860         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5861         case "$tp" in
5862         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5863         /*-$oldprefix/*|\~*-$oldprefix/*)
5864                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5865         *) eval "$1=\"\$$2\"";;
5866         esac;;
5867 esac'
5868
5869 : get the patchlevel
5870 echo " "
5871 echo "Getting the current patchlevel..." >&4
5872 if $test -r $rsrc/patchlevel.h;then
5873         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5874         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5875         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5876         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5877         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5878         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5879        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5880 else
5881         revision=0
5882         patchlevel=0
5883         subversion=0
5884         api_revision=0
5885         api_version=0
5886         api_subversion=0
5887         perl_patchlevel=0
5888         $echo "(You do not have patchlevel.h.  Eek.)"
5889 fi
5890 if $test -r $rsrc/.patch ; then  
5891         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5892                 perl_patchlevel=`cat $rsrc/.patch`
5893         fi
5894 fi
5895 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5896 version_patchlevel_string="version $patchlevel subversion $subversion"
5897 case "$perl_patchlevel" in
5898 0|'') ;;
5899 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5900 esac
5901
5902 $echo "(You have $package $version_patchlevel_string.)"
5903
5904 case "$osname" in
5905 dos|vms)
5906         : XXX Should be a Configure test for double-dots in filenames.
5907         version=`echo $revision $patchlevel $subversion | \
5908                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5909         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5910                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5911         ;;
5912 *)
5913         version=`echo $revision $patchlevel $subversion | \
5914                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5915         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5916                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5917         ;;
5918 esac
5919 : Special case the 5.005_xx maintenance series, which used 5.005
5920 : without any subversion label as a subdirectory in $sitelib
5921 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5922         api_versionstring='5.005'
5923 fi
5924
5925 : determine installation style
5926 : For now, try to deduce it from prefix unless it is already set.
5927 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5928 case "$installstyle" in
5929 '')     case "$prefix" in
5930                 *perl*) dflt='lib';;
5931                 *) dflt='lib/perl5' ;;
5932         esac
5933         ;;
5934 *)      dflt="$installstyle" ;;
5935 esac
5936 : Probably not worth prompting for this since we prompt for all
5937 : the directories individually, and the prompt would be too long and
5938 : confusing anyway.
5939 installstyle=$dflt
5940
5941 : determine where private library files go
5942 : Usual default is /usr/local/lib/perl5/$version.
5943 : Also allow things like /opt/perl/lib/$version, since 
5944 : /opt/perl/lib/perl5... would be redundant.
5945 : The default "style" setting is made in installstyle.U
5946 case "$installstyle" in
5947 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5948 *)       set dflt privlib lib/$version ;;
5949 esac
5950 eval $prefixit
5951 $cat <<EOM
5952
5953 There are some auxiliary files for $package that need to be put into a
5954 private library directory that is accessible by everyone.
5955
5956 EOM
5957 fn=d~+
5958 rp='Pathname where the private library files will reside?'
5959 . ./getfile
5960 privlib="$ans"
5961 privlibexp="$ansexp"
5962 : Change installation prefix, if necessary.
5963 if $test X"$prefix" != X"$installprefix"; then
5964         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5965 else
5966         installprivlib="$privlibexp"
5967 fi
5968
5969 : set the prefixup variable, to restore leading tilda escape
5970 prefixup='case "$prefixexp" in
5971 "$prefix") ;;
5972 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5973 esac'
5974
5975 : determine where public architecture dependent libraries go
5976 set archlib archlib
5977 eval $prefixit
5978 : privlib default is /usr/local/lib/$package/$version
5979 : archlib default is /usr/local/lib/$package/$version/$archname
5980 : privlib may have an optional trailing /share.
5981 tdflt=`echo $privlib | $sed 's,/share$,,'`
5982 tdflt=$tdflt/$archname
5983 case "$archlib" in
5984 '')     dflt=$tdflt
5985         ;;
5986 *)      dflt="$archlib"
5987     ;;
5988 esac
5989 $cat <<EOM
5990
5991 $spackage contains architecture-dependent library files.  If you are
5992 sharing libraries in a heterogeneous environment, you might store
5993 these files in a separate location.  Otherwise, you can just include
5994 them with the rest of the public library files.
5995
5996 EOM
5997 fn=d+~
5998 rp='Where do you want to put the public architecture-dependent libraries?'
5999 . ./getfile
6000 archlib="$ans"
6001 archlibexp="$ansexp"
6002 if $test X"$archlib" = X"$privlib"; then
6003         d_archlib="$undef"
6004 else
6005         d_archlib="$define"
6006 fi
6007 : Change installation prefix, if necessary.
6008 if $test X"$prefix" != X"$installprefix"; then
6009         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6010 else
6011         installarchlib="$archlibexp"
6012 fi
6013
6014 : see if setuid scripts can be secure
6015 $cat <<EOM
6016
6017 Some kernels have a bug that prevents setuid #! scripts from being
6018 secure.  Some sites have disabled setuid #! scripts because of this.
6019
6020 First let's decide if your kernel supports secure setuid #! scripts.
6021 (If setuid #! scripts would be secure but have been disabled anyway,
6022 don't say that they are secure if asked.)
6023
6024 EOM
6025
6026 val="$undef"
6027 if $test -d /dev/fd; then
6028         echo "#!$ls" >reflect
6029         chmod +x,u+s reflect
6030         ./reflect >flect 2>&1
6031         if $contains "/dev/fd" flect >/dev/null; then
6032                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6033                 val="$define"
6034         else
6035                 $cat <<EOM
6036 If you are not sure if they are secure, I can check but I'll need a
6037 username and password different from the one you are using right now.
6038 If you don't have such a username or don't want me to test, simply
6039 enter 'none'.
6040
6041 EOM
6042                 rp='Other username to test security of setuid scripts with?'
6043                 dflt='none'
6044                 . ./myread
6045                 case "$ans" in
6046                 n|none)
6047                         case "$d_suidsafe" in
6048                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6049                                 dflt=n;;
6050                         "$undef")
6051                                 echo "Well, the $hint value is *not* secure." >&4
6052                                 dflt=n;;
6053                         *)      echo "Well, the $hint value *is* secure." >&4
6054                                 dflt=y;;
6055                         esac
6056                         ;;
6057                 *)
6058                         $rm -f reflect flect
6059                         echo "#!$ls" >reflect
6060                         chmod +x,u+s reflect
6061                         echo >flect
6062                         chmod a+w flect
6063                         echo '"su" will (probably) prompt you for '"$ans's password."
6064                         su $ans -c './reflect >flect'
6065                         if $contains "/dev/fd" flect >/dev/null; then
6066                                 echo "Okay, it looks like setuid scripts are secure." >&4
6067                                 dflt=y
6068                         else
6069                                 echo "I don't think setuid scripts are secure." >&4
6070                                 dflt=n
6071                         fi
6072                         ;;
6073                 esac
6074                 rp='Does your kernel have *secure* setuid scripts?'
6075                 . ./myread
6076                 case "$ans" in
6077                 [yY]*)  val="$define";;
6078                 *)      val="$undef";;
6079                 esac
6080         fi
6081 else
6082         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6083         echo "(That's for file descriptors, not floppy disks.)"
6084         val="$undef"
6085 fi
6086 set d_suidsafe
6087 eval $setvar
6088
6089 $rm -f reflect flect
6090
6091 : now see if they want to do setuid emulation
6092 echo " "
6093 val="$undef"
6094 case "$d_suidsafe" in
6095 "$define")
6096         val="$undef"
6097         echo "No need to emulate SUID scripts since they are secure here." >&4
6098         ;;
6099 *)
6100         $cat <<EOM
6101 Some systems have disabled setuid scripts, especially systems where
6102 setuid scripts cannot be secure.  On systems where setuid scripts have
6103 been disabled, the setuid/setgid bits on scripts are currently
6104 useless.  It is possible for $package to detect those bits and emulate
6105 setuid/setgid in a secure fashion.  This emulation will only work if
6106 setuid scripts have been disabled in your kernel.
6107
6108 EOM
6109         case "$d_dosuid" in
6110         "$define") dflt=y ;;
6111         *) dflt=n ;;
6112         esac
6113         rp="Do you want to do setuid/setgid emulation?"
6114         . ./myread
6115         case "$ans" in
6116         [yY]*)  val="$define";;
6117         *)      val="$undef";;
6118         esac
6119         ;;
6120 esac
6121 set d_dosuid
6122 eval $setvar
6123
6124 : see if this is a malloc.h system
6125 : we want a real compile instead of Inhdr because some systems have a
6126 : malloc.h that just gives a compile error saying to use stdlib.h instead
6127 echo " "
6128 $cat >try.c <<EOCP
6129 #include <stdlib.h>
6130 #include <malloc.h>
6131 int main () { return 0; }
6132 EOCP
6133 set try
6134 if eval $compile; then
6135     echo "<malloc.h> found." >&4
6136     val="$define"
6137 else
6138     echo "<malloc.h> NOT found." >&4
6139     val="$undef"
6140 fi
6141 $rm -f try.c try
6142 set i_malloc
6143 eval $setvar
6144
6145 : check for void type
6146 echo " "
6147 echo "Checking to see how well your C compiler groks the void type..." >&4
6148 case "$voidflags" in
6149 '')
6150         $cat >try.c <<EOCP
6151 #$i_stdlib I_STDLIB
6152 #ifdef I_STDLIB
6153 #include <stdlib.h>
6154 #endif
6155 #if TRY & 1
6156 void sub() {
6157 #else
6158 sub() {
6159 #endif
6160         extern void moo();      /* function returning void */
6161         void (*goo)();          /* ptr to func returning void */
6162 #if TRY & 8
6163         void *hue;              /* generic ptr */
6164 #endif
6165 #if TRY & 2
6166         void (*foo[10])();
6167 #endif
6168
6169 #if TRY & 4
6170         if(goo == moo) {
6171                 exit(0);
6172         }
6173 #endif
6174         exit(0);
6175 }
6176 int main() { sub(); }
6177 EOCP
6178         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6179                 voidflags=$defvoidused
6180         echo "Good.  It appears to support void to the level $package wants.">&4
6181                 if $contains warning .out >/dev/null 2>&1; then
6182                         echo "However, you might get some warnings that look like this:"
6183                         $cat .out
6184                 fi
6185         else
6186 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6187                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6188                         echo "It supports 1..."
6189                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6190                                 echo "It also supports 2..."
6191                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6192                                         voidflags=7
6193                                         echo "And it supports 4 but not 8 definitely."
6194                                 else
6195                                         echo "It doesn't support 4..."
6196                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6197                                                 voidflags=11
6198                                                 echo "But it supports 8."
6199                                         else
6200                                                 voidflags=3
6201                                                 echo "Neither does it support 8."
6202                                         fi
6203                                 fi
6204                         else
6205                                 echo "It does not support 2..."
6206                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6207                                         voidflags=13
6208                                         echo "But it supports 4 and 8."
6209                                 else
6210                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6211                                                 voidflags=5
6212                                                 echo "And it supports 4 but has not heard about 8."
6213                                         else
6214                                                 echo "However it supports 8 but not 4."
6215                                         fi
6216                                 fi
6217                         fi
6218                 else
6219                         echo "There is no support at all for void."
6220                         voidflags=0
6221                 fi
6222         fi
6223 esac
6224 case "$voidflags" in
6225 "$defvoidused") ;;
6226 *)      $cat >&4 <<'EOM'
6227   Support flag bits are:
6228     1: basic void declarations.
6229     2: arrays of pointers to functions returning void.
6230     4: operations between pointers to and addresses of void functions.
6231     8: generic void pointers.
6232 EOM
6233         dflt="$voidflags";
6234         rp="Your void support flags add up to what?"
6235         . ./myread
6236         voidflags="$ans"
6237         ;;
6238 esac
6239 $rm -f try.* .out
6240
6241 : check for length of pointer
6242 echo " "
6243 case "$ptrsize" in
6244 '')
6245         echo "Checking to see how big your pointers are..." >&4
6246         if test "$voidflags" -gt 7; then
6247                 echo '#define VOID_PTR char *' > try.c
6248         else
6249                 echo '#define VOID_PTR void *' > try.c
6250         fi
6251         $cat >>try.c <<EOCP
6252 #include <stdio.h>
6253 #$i_stdlib I_STDLIB
6254 #ifdef I_STDLIB
6255 #include <stdlib.h>
6256 #endif
6257 int main()
6258 {
6259     printf("%d\n", (int)sizeof(VOID_PTR));
6260     exit(0);
6261 }
6262 EOCP
6263         set try
6264         if eval $compile_ok; then
6265                 ptrsize=`$run ./try`
6266                 echo "Your pointers are $ptrsize bytes long."
6267         else
6268                 dflt='4'
6269                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6270                 rp="What is the size of a pointer (in bytes)?"
6271                 . ./myread
6272                 ptrsize="$ans"
6273         fi
6274         ;;
6275 esac
6276 $rm -f try.c try
6277 case "$use64bitall" in
6278 "$define"|true|[yY]*)
6279         case "$ptrsize" in
6280         4)      cat <<EOM >&4
6281
6282 *** You have chosen a maximally 64-bit build,
6283 *** but your pointers are only 4 bytes wide.
6284 *** Please rerun Configure without -Duse64bitall.
6285 EOM
6286                 case "$d_quad" in
6287                 define)
6288                         cat <<EOM >&4
6289 *** Since you have quads, you could possibly try with -Duse64bitint.
6290 EOM
6291                         ;;
6292                 esac
6293                 cat <<EOM >&4
6294 *** Cannot continue, aborting.
6295
6296 EOM
6297
6298                 exit 1
6299                 ;;
6300         esac
6301         ;;
6302 esac
6303
6304
6305 : determine whether to use malloc wrapping
6306 echo " "
6307 case "$usemallocwrap" in
6308 [yY]*|true|$define)     dflt='y' ;;
6309 [nN]*|false|$undef)     dflt='n' ;;
6310 *)      case "$usedevel" in
6311         [yY]*|true|$define)     dflt='y' ;;
6312         *) dflt='n' ;;
6313         esac
6314         ;;
6315 esac
6316 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6317 . ./myread
6318 usemallocwrap="$ans"
6319 case "$ans" in
6320 y*|true)
6321         usemallocwrap="$define" ;;
6322 *)
6323         usemallocwrap="$undef" ;;
6324 esac
6325
6326 : determine which malloc to compile in
6327 echo " "
6328 case "$usemymalloc" in
6329 [yY]*|true|$define)     dflt='y' ;;
6330 [nN]*|false|$undef)     dflt='n' ;;
6331 *)      case "$ptrsize" in
6332         4) dflt='y' ;;
6333         *) dflt='n' ;;
6334         esac
6335         ;;
6336 esac
6337 rp="Do you wish to attempt to use the malloc that comes with $package?"
6338 . ./myread
6339 usemymalloc="$ans"
6340 case "$ans" in
6341 y*|true)
6342         usemymalloc='y'
6343         mallocsrc='malloc.c'
6344         mallocobj="malloc$_o"
6345         d_mymalloc="$define"
6346         case "$libs" in
6347         *-lmalloc*)
6348                 : Remove malloc from list of libraries to use
6349                 echo "Removing unneeded -lmalloc from library list" >&4
6350                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6351                 shift
6352                 libs="$*"
6353                 echo "libs = $libs" >&4
6354                 ;;
6355         esac
6356         ;;
6357 *)
6358         usemymalloc='n'
6359         mallocsrc=''
6360         mallocobj=''
6361         d_mymalloc="$undef"
6362         ;;
6363 esac
6364
6365 : compute the return types of malloc and free
6366 echo " "
6367 $cat >malloc.c <<END
6368 #$i_malloc I_MALLOC
6369 #$i_stdlib I_STDLIB
6370 #include <stdio.h>
6371 #include <sys/types.h>
6372 #ifdef I_MALLOC
6373 #include <malloc.h>
6374 #endif
6375 #ifdef I_STDLIB
6376 #include <stdlib.h>
6377 #endif
6378 #ifdef TRY_MALLOC
6379 void *malloc();
6380 #endif
6381 #ifdef TRY_FREE
6382 void free();
6383 #endif
6384 END
6385 case "$malloctype" in
6386 '')
6387         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6388                 malloctype='void *'
6389         else
6390                 malloctype='char *'
6391         fi
6392         ;;
6393 esac
6394 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6395
6396 case "$freetype" in
6397 '')
6398         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6399                 freetype='void'
6400         else
6401                 freetype='int'
6402         fi
6403         ;;
6404 esac
6405 echo "Your system uses $freetype free(), it would seem." >&4
6406 $rm -f malloc.[co]
6407 $cat <<EOM
6408
6409 After $package is installed, you may wish to install various
6410 add-on modules and utilities.  Typically, these add-ons will
6411 be installed under $prefix with the rest
6412 of this package.  However, you may wish to install such add-ons
6413 elsewhere under a different prefix.
6414
6415 If you do not wish to put everything under a single prefix, that's
6416 ok.  You will be prompted for the individual locations; this siteprefix
6417 is only used to suggest the defaults.
6418
6419 The default should be fine for most people.
6420
6421 EOM
6422 fn=d~+
6423 rp='Installation prefix to use for add-on modules and utilities?'
6424 : XXX Here might be another good place for an installstyle setting.
6425 case "$siteprefix" in
6426 '') dflt=$prefix ;;
6427 *)  dflt=$siteprefix ;;
6428 esac
6429 . ./getfile
6430 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6431 oldsiteprefix=''
6432 case "$siteprefix" in
6433 '') ;;
6434 *)      case "$ans" in
6435         "$prefix") ;;
6436         *) oldsiteprefix="$prefix";;
6437         esac
6438         ;;
6439 esac
6440 siteprefix="$ans"
6441 siteprefixexp="$ansexp"
6442
6443 : determine where site specific libraries go.
6444 : Usual default is /usr/local/lib/perl5/site_perl/$version
6445 : The default "style" setting is made in installstyle.U
6446 : XXX No longer works with Prefixit stuff.
6447 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6448 case "$sitelib" in
6449 '') case "$installstyle" in
6450         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6451         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6452         esac
6453         ;;
6454 *)      dflt="$sitelib"
6455         ;;
6456 esac
6457 $cat <<EOM
6458
6459 The installation process will create a directory for
6460 site-specific extensions and modules.  Most users find it convenient
6461 to place all site-specific files in this directory rather than in the
6462 main distribution directory.
6463
6464 EOM
6465 fn=d~+
6466 rp='Pathname for the site-specific library files?'
6467 . ./getfile
6468 sitelib="$ans"
6469 sitelibexp="$ansexp"
6470 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6471 : Change installation prefix, if necessary.
6472 if $test X"$prefix" != X"$installprefix"; then
6473         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6474 else
6475         installsitelib="$sitelibexp"
6476 fi
6477
6478 : determine where site specific architecture-dependent libraries go.
6479 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6480 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6481 : sitelib may have an optional trailing /share.
6482 case "$sitearch" in
6483 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6484         dflt="$dflt/$archname"
6485         ;;
6486 *)      dflt="$sitearch"
6487         ;;
6488 esac
6489 set sitearch sitearch none
6490 eval $prefixit
6491 $cat <<EOM
6492
6493 The installation process will also create a directory for
6494 architecture-dependent site-specific extensions and modules.
6495
6496 EOM
6497 fn=d~+
6498 rp='Pathname for the site-specific architecture-dependent library files?'
6499 . ./getfile
6500 sitearch="$ans"
6501 sitearchexp="$ansexp"
6502 : Change installation prefix, if necessary.
6503 if $test X"$prefix" != X"$installprefix"; then
6504         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6505 else
6506         installsitearch="$sitearchexp"
6507 fi
6508
6509 $cat <<EOM
6510
6511 The installation process will also create a directory for
6512 vendor-supplied add-ons.  Vendors who supply perl with their system
6513 may find it convenient to place all vendor-supplied files in this
6514 directory rather than in the main distribution directory.  This will
6515 ease upgrades between binary-compatible maintenance versions of perl.
6516
6517 Of course you may also use these directories in whatever way you see
6518 fit.  For example, you might use them to access modules shared over a
6519 company-wide network.
6520
6521 The default answer should be fine for most people.
6522 This causes further questions about vendor add-ons to be skipped
6523 and no vendor-specific directories will be configured for perl.
6524
6525 EOM
6526 rp='Do you want to configure vendor-specific add-on directories?'
6527 case "$usevendorprefix" in
6528 define|true|[yY]*) dflt=y ;;
6529 *)      : User may have set vendorprefix directly on Configure command line.
6530         case "$vendorprefix" in
6531         ''|' ') dflt=n ;;
6532         *)      dflt=y ;;
6533         esac
6534         ;;
6535 esac
6536 . ./myread
6537 case "$ans" in
6538 [yY]*)  fn=d~+
6539         rp='Installation prefix to use for vendor-supplied add-ons?'
6540         case "$vendorprefix" in
6541         '') dflt='' ;;
6542         *)  dflt=$vendorprefix ;;
6543         esac
6544         . ./getfile
6545         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6546         oldvendorprefix=''
6547         case "$vendorprefix" in
6548         '') ;;
6549         *)      case "$ans" in
6550                 "$prefix") ;;
6551                 *) oldvendorprefix="$prefix";;
6552                 esac
6553                 ;;
6554         esac
6555         usevendorprefix="$define"
6556         vendorprefix="$ans"
6557         vendorprefixexp="$ansexp"
6558         ;;
6559 *)      usevendorprefix="$undef"
6560         vendorprefix=''
6561         vendorprefixexp=''
6562         ;;
6563 esac
6564
6565 case "$vendorprefix" in
6566 '')     d_vendorlib="$undef"
6567         vendorlib=''
6568         vendorlibexp=''
6569         ;;
6570 *)      d_vendorlib="$define"
6571         : determine where vendor-supplied modules go.
6572         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6573         case "$vendorlib" in
6574         '')
6575                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6576                 case "$installstyle" in
6577                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6578                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6579                 esac
6580                 ;;
6581         *)      dflt="$vendorlib"
6582                 ;;
6583         esac
6584         fn=d~+
6585         rp='Pathname for the vendor-supplied library files?'
6586         . ./getfile
6587         vendorlib="$ans"
6588         vendorlibexp="$ansexp"
6589         ;;
6590 esac
6591 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6592 : Change installation prefix, if necessary.
6593 if $test X"$prefix" != X"$installprefix"; then
6594         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6595 else
6596         installvendorlib="$vendorlibexp"
6597 fi
6598
6599 case "$vendorprefix" in
6600 '')     d_vendorarch="$undef"
6601         vendorarch=''
6602         vendorarchexp=''
6603         ;;
6604 *)      d_vendorarch="$define"
6605         : determine where vendor-supplied architecture-dependent libraries go.
6606         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6607         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6608         : vendorlib may have an optional trailing /share.
6609         case "$vendorarch" in
6610         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6611                 dflt="$dflt/$archname"
6612                 ;;
6613         *)      dflt="$vendorarch" ;;
6614         esac
6615         fn=d~+
6616         rp='Pathname for vendor-supplied architecture-dependent files?'
6617         . ./getfile
6618         vendorarch="$ans"
6619         vendorarchexp="$ansexp"
6620         ;;
6621 esac
6622 : Change installation prefix, if necessary.
6623 if $test X"$prefix" != X"$installprefix"; then
6624         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6625 else
6626         installvendorarch="$vendorarchexp"
6627 fi
6628
6629 : Final catch-all directories to search
6630 $cat <<EOM
6631
6632 Lastly, you can have perl look in other directories for extensions and
6633 modules in addition to those already specified.
6634 These directories will be searched after 
6635         $sitearch 
6636         $sitelib 
6637 EOM
6638 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6639 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6640 echo ' '
6641 case "$otherlibdirs" in
6642 ''|' ') dflt='none' ;;
6643 *)      dflt="$otherlibdirs" ;;
6644 esac
6645 $cat <<EOM
6646 Enter a colon-separated set of extra paths to include in perl's @INC
6647 search path, or enter 'none' for no extra paths.
6648
6649 EOM
6650
6651 rp='Colon-separated list of additional directories for perl to search?'
6652 . ./myread
6653 case "$ans" in
6654 ' '|''|none)    otherlibdirs=' ' ;;     
6655 *)      otherlibdirs="$ans" ;;
6656 esac
6657 case "$otherlibdirs" in
6658 ' ') val=$undef ;;
6659 *)      val=$define ;;
6660 esac
6661 set d_perl_otherlibdirs
6662 eval $setvar
6663
6664 : Cruising for prototypes
6665 echo " "
6666 echo "Checking out function prototypes..." >&4
6667 $cat >prototype.c <<EOCP
6668 #$i_stdlib I_STDLIB
6669 #ifdef I_STDLIB
6670 #include <stdlib.h>
6671 #endif
6672 int main(int argc, char *argv[]) {
6673         exit(0);}
6674 EOCP
6675 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6676         echo "Your C compiler appears to support function prototypes."
6677         val="$define"
6678 else
6679         echo "Your C compiler doesn't seem to understand function prototypes."
6680         val="$undef"
6681 fi
6682 set prototype
6683 eval $setvar
6684 $rm -f prototype*
6685
6686 case "$prototype" in
6687 "$define") ;;
6688 *)      ansi2knr='ansi2knr'
6689         echo " "
6690         cat <<EOM >&4
6691
6692 $me:  FATAL ERROR:
6693 This version of $package can only be compiled by a compiler that 
6694 understands function prototypes.  Unfortunately, your C compiler 
6695         $cc $ccflags
6696 doesn't seem to understand them.  Sorry about that.
6697
6698 If GNU cc is available for your system, perhaps you could try that instead.  
6699
6700 Eventually, we hope to support building Perl with pre-ANSI compilers.
6701 If you would like to help in that effort, please contact <perlbug@perl.org>.
6702
6703 Aborting Configure now.
6704 EOM
6705         exit 2
6706         ;;
6707 esac
6708
6709 : determine where public executables go
6710 echo " "
6711 set dflt bin bin
6712 eval $prefixit
6713 fn=d~
6714 rp='Pathname where the public executables will reside?'
6715 . ./getfile
6716 if $test "X$ansexp" != "X$binexp"; then
6717         installbin=''
6718 fi
6719 bin="$ans"
6720 binexp="$ansexp"
6721 : Change installation prefix, if necessary.
6722 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6723 if $test X"$prefix" != X"$installprefix"; then
6724         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6725 else
6726         installbin="$binexp"
6727 fi
6728
6729 echo " "
6730 case "$extras" in
6731 '') dflt='n';;
6732 *) dflt='y';;
6733 esac
6734 cat <<EOM
6735 Perl can be built with extra modules or bundles of modules which
6736 will be fetched from the CPAN and installed alongside Perl.
6737
6738 Notice that you will need access to the CPAN; either via the Internet,
6739 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6740 be asked later to configure the CPAN.pm module which will in turn do
6741 the installation of the rest of the extra modules or bundles.)
6742
6743 Notice also that if the modules require any external software such as
6744 libraries and headers (the libz library and the zlib.h header for the
6745 Compress::Zlib module, for example) you MUST have any such software
6746 already installed, this configuration process will NOT install such
6747 things for you.
6748
6749 If this doesn't make any sense to you, just accept the default '$dflt'.
6750 EOM
6751 rp='Install any extra modules (y or n)?'
6752 . ./myread
6753 case "$ans" in
6754 y|Y)
6755         cat <<EOM
6756
6757 Please list any extra modules or bundles to be installed from CPAN,
6758 with spaces between the names.  The names can be in any format the
6759 'install' command of CPAN.pm will understand.  (Answer 'none',
6760 without the quotes, to install no extra modules or bundles.)
6761 EOM
6762         rp='Extras?'
6763         dflt="$extras"
6764         . ./myread
6765         extras="$ans"
6766 esac
6767 case "$extras" in
6768 ''|'none')
6769         val=''
6770         $rm -f ../extras.lst
6771         ;;
6772 *)      echo "(Saving the list of extras for later...)"
6773         echo "$extras" > ../extras.lst
6774         val="'$extras'"
6775         ;;
6776 esac
6777 set extras
6778 eval $setvar
6779 echo " "
6780
6781 : determine where html pages for programs go
6782 set html1dir html1dir none
6783 eval $prefixit
6784 $cat <<EOM
6785
6786 If you wish to install html files for programs in $spackage, indicate 
6787 the appropriate directory here.  To skip installing html files,
6788 answer "none".
6789 EOM
6790 case "$html1dir" in
6791 ''|none|$undef|' ') dflt=none ;;
6792 *) dflt=$html1dir ;;
6793 esac
6794 fn=dn+~
6795 rp="Directory for the main $spackage html pages?"
6796 . ./getfile
6797 html1dir="$ans"
6798 html1direxp="$ansexp"
6799 : Use ' ' for none so value is preserved next time through Configure
6800 $test X"$html1dir" = "X" && html1dir=' '
6801 : Change installation prefix, if necessary.
6802 if $test X"$prefix" != X"$installprefix"; then
6803         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6804 else
6805         installhtml1dir="$html1direxp"
6806 fi
6807
6808 : determine where html pages for libraries and modules go
6809 set html3dir html3dir none
6810 eval $prefixit
6811 $cat <<EOM
6812
6813 If you wish to install html files for modules associated with $spackage,
6814 indicate the appropriate directory here.  To skip installing html files,
6815 answer "none".
6816 EOM
6817 : There is no obvious default.  If they have specified html1dir, then
6818 : try to key off that, possibly changing .../html1 into .../html3.
6819 case "$html3dir" in
6820 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6821 *) dflt=$html3dir ;;
6822 esac
6823 fn=dn+~
6824 rp="Directory for the $spackage module html pages?"
6825 . ./getfile
6826 html3dir="$ans"
6827 html3direxp="$ansexp"
6828 : Use ' ' for none so value is preserved next time through Configure
6829 $test X"$html3dir" = "X" && html3dir=' '
6830 : Change installation prefix, if necessary.
6831 if $test X"$prefix" != X"$installprefix"; then
6832         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6833 else
6834         installhtml3dir="$html3direxp"
6835 fi
6836
6837 : Find perl5.005 or later.
6838 echo "Looking for a previously installed perl5.005 or later... "
6839 case "$perl5" in
6840 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6841                 : Check if this perl is recent and can load a simple module
6842                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6843                         perl5=$tdir/perl
6844                         break;
6845                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6846                         perl5=$tdir/perl5
6847                         break;
6848                 fi
6849         done
6850         ;;
6851 *)      perl5="$perl5"
6852         ;;
6853 esac
6854 case "$perl5" in
6855 '')     echo "None found.  That's ok.";;
6856 *)      echo "Using $perl5." ;;
6857 esac
6858
6859 : Determine list of previous versions to include in @INC
6860 $cat > getverlist <<EOPL
6861 #!$perl5 -w
6862 use File::Basename;
6863 \$api_versionstring = "$api_versionstring";
6864 \$version = "$version";
6865 \$stem = "$sitelib_stem";
6866 \$archname = "$archname";
6867 EOPL
6868         $cat >> getverlist <<'EOPL'
6869 # Can't have leading @ because metaconfig interprets it as a command!
6870 ;@inc_version_list=();
6871 # XXX Redo to do opendir/readdir? 
6872 if (-d $stem) {
6873     chdir($stem);
6874     ;@candidates = glob("5.*");
6875 }
6876 else {
6877     ;@candidates = ();
6878 }
6879
6880 # XXX ToDo:  These comparisons must be reworked when two-digit
6881 # subversions come along, so that 5.7.10 compares as greater than
6882 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6883 # widespread that we can use the built-in version vectors rather
6884 # than reinventing them here.  For 5.6.0, however, we must
6885 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6886 foreach $d (@candidates) {
6887     if ($d lt $version) {
6888         if ($d ge $api_versionstring) {
6889             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6890         }
6891         elsif ($d ge "5.005") {
6892             unshift(@inc_version_list, grep { -d } $d);
6893         }
6894     }
6895     else {
6896         # Skip newer version.  I.e. don't look in
6897         # 5.7.0 if we're installing 5.6.1.
6898     }
6899 }
6900
6901 if (@inc_version_list) {
6902     print join(' ', @inc_version_list);
6903 }
6904 else {
6905     # Blank space to preserve value for next Configure run.
6906     print " ";
6907 }
6908 EOPL
6909 chmod +x getverlist
6910 case "$inc_version_list" in
6911 '')     if test -x "$perl5$exe_ext"; then
6912                 dflt=`$perl5 getverlist`
6913         else
6914                 dflt='none'
6915         fi
6916         ;;
6917 $undef) dflt='none' ;;
6918 *)  eval dflt=\"$inc_version_list\" ;;
6919 esac
6920 case "$dflt" in
6921 ''|' ') dflt=none ;;
6922 esac
6923 case "$dflt" in
6924 5.005) dflt=none ;;
6925 esac
6926 $cat <<EOM
6927
6928 In order to ease the process of upgrading, this version of perl 
6929 can be configured to use modules built and installed with earlier 
6930 versions of perl that were installed under $prefix.  Specify here
6931 the list of earlier versions that this version of perl should check.
6932 If Configure detected no earlier versions of perl installed under
6933 $prefix, then the list will be empty.  Answer 'none' to tell perl
6934 to not search earlier versions.
6935
6936 The default should almost always be sensible, so if you're not sure,
6937 just accept the default.
6938 EOM
6939
6940 rp='List of earlier versions to include in @INC?'
6941 . ./myread
6942 case "$ans" in
6943 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6944 *) inc_version_list="$ans" ;;
6945 esac
6946 case "$inc_version_list" in
6947 ''|' ') 
6948         inc_version_list_init='0';;
6949 *)      inc_version_list_init=`echo $inc_version_list |
6950                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6951         ;;
6952 esac
6953 $rm -f getverlist
6954
6955 : determine whether to install perl also as /usr/bin/perl
6956
6957 echo " "
6958 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6959         $cat <<EOM
6960 Many scripts expect perl to be installed as /usr/bin/perl.
6961
6962 If you want to, I can install the perl you are about to compile
6963 as /usr/bin/perl (in addition to $bin/perl).
6964 EOM
6965         if test -f /usr/bin/perl; then
6966             $cat <<EOM
6967
6968 However, please note that because you already have a /usr/bin/perl,
6969 overwriting that with a new Perl would very probably cause problems.
6970 Therefore I'm assuming you don't want to do that (unless you insist).
6971
6972 EOM
6973             case "$installusrbinperl" in
6974             "$define"|[yY]*)    dflt='y';;
6975             *)                  dflt='n';;
6976             esac
6977         else
6978             $cat <<EOM
6979
6980 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6981
6982 EOM
6983             case "$installusrbinperl" in
6984             "$undef"|[nN]*)     dflt='n';;
6985             *)                  dflt='y';;
6986             esac
6987         fi
6988         rp="Do you want to install perl as /usr/bin/perl?"
6989         . ./myread
6990         case "$ans" in
6991         [yY]*)  val="$define";;
6992         *)      val="$undef" ;;
6993         esac
6994 else
6995         val="$undef"
6996 fi
6997 set installusrbinperl
6998 eval $setvar
6999
7000 echo " "
7001 echo "Checking for GNU C Library..." >&4
7002 cat >try.c <<'EOCP'
7003 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
7004    alone are insufficient to distinguish different versions, such as
7005    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
7006    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
7007 */
7008 #include <stdio.h>
7009 int main(void)
7010 {
7011 #ifdef __GLIBC__
7012 #   ifdef __GLIBC_MINOR__
7013 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
7014 #           include <gnu/libc-version.h>
7015             printf("%s\n",  gnu_get_libc_version());
7016 #       else
7017             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
7018 #       endif
7019 #   else
7020         printf("%d\n",  __GLIBC__);
7021 #   endif
7022     return 0;
7023 #else
7024     return 1;
7025 #endif
7026 }
7027 EOCP
7028 set try
7029 if eval $compile_ok && $run ./try > glibc.ver; then
7030         val="$define"
7031         gnulibc_version=`$cat glibc.ver`
7032         echo "You are using the GNU C Library version $gnulibc_version"
7033 else
7034         val="$undef"
7035         gnulibc_version=''
7036         echo "You are not using the GNU C Library"
7037 fi
7038 $rm -f try try.* glibc.ver
7039 set d_gnulibc
7040 eval $setvar
7041
7042 : see if nm is to be used to determine whether a symbol is defined or not
7043 case "$usenm" in
7044 '')
7045         dflt=''
7046         case "$d_gnulibc" in
7047         "$define")
7048                 echo " "
7049                 echo "nm probably won't work on the GNU C Library." >&4
7050                 dflt=n
7051                 ;;
7052         esac
7053         case "$dflt" in
7054         '') 
7055                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7056                         echo " "
7057                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
7058                         echo "'nm' won't be sufficient on this sytem." >&4
7059                         dflt=n
7060                 fi
7061                 ;;
7062         esac
7063         case "$dflt" in
7064         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7065                 if $test $dflt -gt 20; then
7066                         dflt=y
7067                 else
7068                         dflt=n
7069                 fi
7070                 ;;
7071         esac
7072         ;;
7073 *)
7074         case "$usenm" in
7075         true|$define) dflt=y;;
7076         *) dflt=n;;
7077         esac
7078         ;;
7079 esac
7080 $cat <<EOM
7081
7082 I can use $nm to extract the symbols from your C libraries. This
7083 is a time consuming task which may generate huge output on the disk (up
7084 to 3 megabytes) but that should make the symbols extraction faster. The
7085 alternative is to skip the 'nm' extraction part and to compile a small
7086 test program instead to determine whether each symbol is present. If
7087 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7088 this may be the best solution.
7089
7090 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7091
7092 EOM
7093 rp="Shall I use $nm to extract C symbols from the libraries?"
7094 . ./myread
7095 case "$ans" in
7096 [Nn]*) usenm=false;;
7097 *) usenm=true;;
7098 esac
7099
7100 runnm=$usenm
7101 case "$reuseval" in
7102 true) runnm=false;;
7103 esac
7104
7105 : nm options which may be necessary
7106 case "$nm_opt" in
7107 '') if $test -f /mach_boot; then
7108                 nm_opt=''       # Mach
7109         elif $test -d /usr/ccs/lib; then
7110                 nm_opt='-p'     # Solaris (and SunOS?)
7111         elif $test -f /dgux; then
7112                 nm_opt='-p'     # DG-UX
7113         elif $test -f /lib64/rld; then
7114                 nm_opt='-p'     # 64-bit Irix
7115         else
7116                 nm_opt=''
7117         fi;;
7118 esac
7119
7120 : nm options which may be necessary for shared libraries but illegal
7121 : for archive libraries.  Thank you, Linux.
7122 case "$nm_so_opt" in
7123 '')     case "$myuname" in
7124         *linux*|gnu*)
7125                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7126                         nm_so_opt='--dynamic'
7127                 fi
7128                 ;;
7129         esac
7130         ;;
7131 esac
7132
7133 case "$runnm" in
7134 true)
7135 : get list of predefined functions in a handy place
7136 echo " "
7137 case "$libc" in
7138 '') libc=unknown
7139         case "$libs" in
7140         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7141         esac
7142         ;;
7143 esac
7144 case "$libs" in
7145 '') ;;
7146 *)  for thislib in $libs; do
7147         case "$thislib" in
7148         -lc|-lc_s)
7149                 : Handle C library specially below.
7150                 ;;
7151         -l*)
7152                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7153                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7154                         :
7155                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7156                         :
7157                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7158                         :
7159                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7160                         :
7161                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7162                         :
7163                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7164                         :
7165                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7166                         :
7167                 else
7168                         try=''
7169                 fi
7170                 libnames="$libnames $try"
7171                 ;;
7172         *) libnames="$libnames $thislib" ;;
7173         esac
7174         done
7175         ;;
7176 esac
7177 xxx=normal
7178 case "$libc" in
7179 unknown)
7180         set /lib/libc.$so
7181         for xxx in $libpth; do
7182                 $test -r $1 || set $xxx/libc.$so
7183                 : The messy sed command sorts on library version numbers.
7184                 $test -r $1 || \
7185                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7186                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7187                                 h
7188                                 s/[0-9][0-9]*/0000&/g
7189                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7190                                 G
7191                                 s/\n/ /' | \
7192                          $sort | $sed -e 's/^.* //'`
7193                 eval set \$$#
7194         done
7195         $test -r $1 || set /usr/ccs/lib/libc.$so
7196         $test -r $1 || set /lib/libsys_s$_a
7197         ;;
7198 *)
7199         set blurfl
7200         ;;
7201 esac
7202 if $test -r "$1"; then
7203         echo "Your (shared) C library seems to be in $1."
7204         libc="$1"
7205 elif $test -r /lib/libc && $test -r /lib/clib; then
7206         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7207         xxx=apollo
7208         libc='/lib/clib /lib/libc'
7209         if $test -r /lib/syslib; then
7210                 echo "(Your math library is in /lib/syslib.)"
7211                 libc="$libc /lib/syslib"
7212         fi
7213 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7214         echo "Your C library seems to be in $libc, as you said before."
7215 elif $test -r $incpath/usr/lib/libc$_a; then
7216         libc=$incpath/usr/lib/libc$_a;
7217         echo "Your C library seems to be in $libc.  That's fine."
7218 elif $test -r /lib/libc$_a; then
7219         libc=/lib/libc$_a;
7220         echo "Your C library seems to be in $libc.  You're normal."
7221 else
7222         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7223                 :
7224         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7225                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7226         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7227                 :
7228         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7229                 :
7230         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7231                 :
7232         else
7233                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7234         fi
7235         if $test -r "$tans"; then
7236                 echo "Your C library seems to be in $tans, of all places."
7237                 libc=$tans
7238         else
7239                 libc='blurfl'
7240         fi
7241 fi
7242 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7243         dflt="$libc"
7244         cat <<EOM
7245
7246 If the guess above is wrong (which it might be if you're using a strange
7247 compiler, or your machine supports multiple models), you can override it here.
7248
7249 EOM
7250 else
7251         dflt=''
7252         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7253         cat >&4 <<EOM
7254 I can't seem to find your C library.  I've looked in the following places:
7255
7256 EOM
7257         $sed 's/^/      /' libpath
7258         cat <<EOM
7259
7260 None of these seems to contain your C library. I need to get its name...
7261
7262 EOM
7263 fi
7264 fn=f
7265 rp='Where is your C library?'
7266 . ./getfile
7267 libc="$ans"
7268
7269 echo " "
7270 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7271 set X `cat libnames`
7272 shift
7273 xxx=files
7274 case $# in 1) xxx=file; esac
7275 echo "Extracting names from the following $xxx for later perusal:" >&4
7276 echo " "
7277 $sed 's/^/      /' libnames >&4
7278 echo " "
7279 $echo $n "This may take a while...$c" >&4
7280
7281 for file in $*; do
7282         case $file in
7283         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7284         *) $nm $nm_opt $file 2>/dev/null;;
7285         esac
7286 done >libc.tmp
7287
7288 $echo $n ".$c"
7289 $grep fprintf libc.tmp > libc.ptf
7290 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7291 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7292 xxx='[ADTSIW]'
7293 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7294         eval $xscan;\
7295         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7296                 eval $xrun
7297 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7298         eval $xscan;\
7299         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7300                 eval $xrun
7301 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7302         eval $xscan;\
7303         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7304                 eval $xrun
7305 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7306         eval $xscan;\
7307         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7308                 eval $xrun
7309 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7310         eval $xscan;\
7311         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7312                 eval $xrun
7313 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7314         eval $xscan;\
7315         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7316                 eval $xrun
7317 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7318                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7319         eval $xscan;\
7320         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7321                 eval $xrun
7322 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7323         eval $xscan;\
7324         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7325                 eval $xrun
7326 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7327         eval $xscan;\
7328         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7329                 eval $xrun
7330 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7331         eval $xscan;\
7332         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7333                 eval $xrun
7334 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7335         eval $xscan;\
7336         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7337                 eval $xrun
7338 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7339         eval $xscan;\
7340         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7341                 eval $xrun
7342 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7343         eval $xscan;\
7344         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7345                 eval $xrun
7346 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7347         eval $xscan;\
7348         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7349                 eval $xrun
7350 else
7351         $nm -p $* 2>/dev/null >libc.tmp
7352         $grep fprintf libc.tmp > libc.ptf
7353         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7354                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7355         then
7356                 nm_opt='-p'
7357                 eval $xrun
7358         else
7359                 echo " "
7360                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7361                 com=''
7362                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7363                         for thisname in $libnames $libc; do
7364                                 $ar t $thisname >>libc.tmp
7365                         done
7366                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7367                         echo "Ok." >&4
7368                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7369                         # Repeat libc to extract forwarders to DLL entries too
7370                         for thisname in $libnames $libc; do
7371                                 $ar tv $thisname >>libc.tmp
7372                                 # Revision 50 of EMX has bug in $ar.
7373                                 # it will not extract forwarders to DLL entries
7374                                 # Use emximp which will extract exactly them.
7375                                 emximp -o tmp.imp $thisname \
7376                                     2>/dev/null && \
7377                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7378                                     < tmp.imp >>libc.tmp
7379                                 $rm tmp.imp
7380                         done
7381                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7382                         echo "Ok." >&4
7383                 else
7384                         echo "$ar didn't seem to work right." >&4
7385                         echo "Maybe this is a Cray...trying bld instead..." >&4
7386                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7387                         then
7388                                 for thisname in $libnames; do
7389                                         bld t $libnames | \
7390                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7391                                         $ar t $thisname >>libc.tmp
7392                                 done
7393                                 echo "Ok." >&4
7394                         else
7395                                 echo "That didn't work either.  Giving up." >&4
7396                                 exit 1
7397                         fi
7398                 fi
7399         fi
7400 fi
7401 nm_extract="$com"
7402 case "$PASE" in
7403 define)
7404     echo " "
7405     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7406     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7407     ;;
7408 *)  if $test -f /lib/syscalls.exp; then
7409         echo " "
7410         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7411         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7412     fi
7413     ;;
7414 esac
7415 ;;
7416 esac
7417 $rm -f libnames libpath
7418
7419 : see if dld is available
7420 set dld.h i_dld
7421 eval $inhdr
7422
7423 : is a C symbol defined?
7424 csym='tlook=$1;
7425 case "$3" in
7426 -v) tf=libc.tmp; tdc="";;
7427 -a) tf=libc.tmp; tdc="[]";;
7428 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7429 esac;
7430 tx=yes;
7431 case "$reuseval-$4" in
7432 true-) ;;
7433 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7434 esac;
7435 case "$tx" in
7436 yes)
7437         tval=false;
7438         if $test "$runnm" = true; then
7439                 if $contains $tlook $tf >/dev/null 2>&1; then
7440                         tval=true;
7441                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7442                         echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7443                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7444                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7445                         $rm -f try$_exe try.c core core.* try.core;
7446                 fi;
7447         else
7448                 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7449                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7450                 $rm -f try$_exe try.c;
7451         fi;
7452         ;;
7453 *)
7454         case "$tval" in
7455         $define) tval=true;;
7456         *) tval=false;;
7457         esac;
7458         ;;
7459 esac;
7460 eval "$2=$tval"'
7461
7462 : define an is-in-libc? function
7463 inlibc='echo " "; td=$define; tu=$undef;
7464 sym=$1; var=$2; eval "was=\$$2";
7465 tx=yes;
7466 case "$reuseval$was" in
7467 true) ;;
7468 true*) tx=no;;
7469 esac;
7470 case "$tx" in
7471 yes)
7472         set $sym tres -f;
7473         eval $csym;
7474         case "$tres" in
7475         true)
7476                 echo "$sym() found." >&4;
7477                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7478         *)
7479                 echo "$sym() NOT found." >&4;
7480                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7481         esac;;
7482 *)
7483         case "$was" in
7484         $define) echo "$sym() found." >&4;;
7485         *) echo "$sym() NOT found." >&4;;
7486         esac;;
7487 esac'
7488
7489 : see if dlopen exists
7490 xxx_runnm="$runnm"
7491 runnm=false
7492 set dlopen d_dlopen
7493 eval $inlibc
7494 runnm="$xxx_runnm"
7495
7496 : determine which dynamic loading, if any, to compile in
7497 echo " "
7498 dldir="ext/DynaLoader"
7499 case "$usedl" in
7500 $define|y|true)
7501         dflt='y'
7502         usedl="$define"
7503         ;;
7504 $undef|n|false)
7505         dflt='n'
7506         usedl="$undef"
7507         ;;
7508 *) 
7509         dflt='n'
7510         case "$d_dlopen" in
7511             $define) dflt='y' ;;
7512         esac
7513         case "$i_dld" in
7514             $define) dflt='y' ;;
7515         esac
7516         : Does a dl_xxx.xs file exist for this operating system
7517         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7518         ;;
7519 esac
7520 rp="Do you wish to use dynamic loading?"
7521 . ./myread
7522 usedl="$ans"
7523 case "$ans" in
7524 y*) usedl="$define"
7525         case "$dlsrc" in
7526         '')
7527                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7528                         dflt="$dldir/dl_${osname}.xs"
7529                 elif $test "$d_dlopen" = "$define" ; then
7530                         dflt="$dldir/dl_dlopen.xs"
7531                 elif $test "$i_dld" = "$define" ; then
7532                         dflt="$dldir/dl_dld.xs"
7533                 else
7534                         dflt=''
7535                 fi
7536                 ;;
7537         *)      dflt="$dldir/$dlsrc"
7538                 ;;
7539         esac
7540     echo "The following dynamic loading files are available:"
7541         : Can not go over to $dldir because getfile has path hard-coded in.
7542         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7543         rp="Source file to use for dynamic loading"
7544         fn="fne"
7545         gfpth="$src"
7546         . ./getfile
7547         usedl="$define"
7548         : emulate basename
7549         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7550
7551         $cat << EOM
7552
7553 Some systems may require passing special flags to $cc -c to
7554 compile modules that will be used to create a shared library.
7555 To use no flags, say "none".
7556
7557 EOM
7558     case "$cccdlflags" in
7559     '') case "$gccversion" in
7560                 '') case "$osname" in
7561                         hpux)   dflt='+z' ;;
7562                         next)   dflt='none' ;;
7563                         irix*)  dflt='-KPIC' ;;
7564                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7565                         sunos)  dflt='-pic' ;;
7566                         *)      dflt='none' ;;
7567                     esac
7568                         ;;
7569                 *)  case "$osname" in
7570                         darwin) dflt='none' ;;
7571                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7572                         *)      dflt='-fpic' ;;
7573                     esac ;;
7574             esac ;;
7575         ' ') dflt='none' ;;
7576     *)  dflt="$cccdlflags" ;;
7577     esac
7578     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7579     . ./myread
7580     case "$ans" in
7581     none) cccdlflags=' ' ;;
7582     *) cccdlflags="$ans" ;;
7583     esac
7584
7585     cat << EOM
7586
7587 Some systems use ld to create libraries that can be dynamically loaded,
7588 while other systems (such as those using ELF) use $cc.
7589
7590 EOM
7591         case "$ld" in
7592         '')     $cat >try.c <<EOM
7593 /* Test for whether ELF binaries are produced */
7594 #include <fcntl.h>
7595 #$i_stdlib I_STDLIB
7596 #ifdef I_STDLIB
7597 #include <stdlib.h>
7598 #endif
7599 int main() {
7600         char b[4];
7601         int i = open("a.out",O_RDONLY);
7602         if(i == -1) 
7603                 exit(1); /* fail */
7604         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7605                 exit(0); /* succeed (yes, it's ELF) */
7606         else
7607                 exit(1); /* fail */
7608 }
7609 EOM
7610                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7611                         cat <<EOM
7612 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7613 EOM
7614                         dflt="$cc"
7615                 else
7616                         echo "I'll use ld to build dynamic libraries."
7617                         dflt='ld'
7618                 fi
7619                 rm -f try.c a.out
7620                 ;;
7621         *)      dflt="$ld"
7622                 ;;
7623         esac
7624
7625     rp="What command should be used to create dynamic libraries?"
7626     . ./myread
7627         ld="$ans"
7628
7629     cat << EOM
7630
7631 Some systems may require passing special flags to $ld to create a
7632 library that can be dynamically loaded.  If your ld flags include
7633 -L/other/path options to locate libraries outside your loader's normal
7634 search path, you may need to specify those -L options here as well.  To
7635 use no flags, say "none".
7636
7637 EOM
7638     case "$lddlflags" in
7639     '') case "$osname" in
7640                         beos) dflt='-nostart' ;;
7641                         hpux) dflt='-b';
7642                               case "$gccversion" in
7643                               '') dflt="$dflt +vnocompatwarnings" ;;
7644                               esac
7645                               ;;        
7646                         linux|irix*|gnu*)       dflt='-shared' ;;
7647                         next)  dflt='none' ;;
7648                         solaris) dflt='-G' ;;
7649                         sunos) dflt='-assert nodefinitions' ;;
7650                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7651                 *)     dflt='none' ;;
7652                         esac
7653                         ;;
7654     *) dflt="$lddlflags" ;;
7655     esac
7656
7657         : Try to guess additional flags to pick up local libraries.
7658         : Be careful not to append to a plain 'none'
7659         case "$dflt" in
7660         none) dflt='' ;;
7661         esac
7662         for thisflag in $ldflags; do
7663                 case "$thisflag" in
7664                 -L*|-R*|-Wl,-R*)
7665                         case " $dflt " in
7666                         *" $thisflag "*) ;;
7667                         *) dflt="$dflt $thisflag" ;;
7668                         esac
7669                         ;;
7670                 esac
7671         done
7672
7673         case "$dflt" in
7674         ''|' ') dflt='none' ;;
7675         esac
7676
7677     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7678     . ./myread
7679     case "$ans" in
7680     none) lddlflags=' ' ;;
7681     *) lddlflags="$ans" ;;
7682     esac
7683
7684         cat <<EOM
7685
7686 Some systems may require passing special flags to $cc to indicate that
7687 the resulting executable will use dynamic linking.  To use no flags,
7688 say "none".
7689
7690 EOM
7691     case "$ccdlflags" in
7692     '') case "$osname" in
7693             linux|hpux|gnu*)    dflt='-Wl,-E' ;;
7694             next|sunos) dflt='none' ;;
7695             *)          dflt='none' ;;
7696             esac ;;
7697     ' ')  dflt='none' ;;
7698     *)  dflt="$ccdlflags" ;;
7699     esac
7700     rp="Any special flags to pass to $cc to use dynamic linking?"
7701     . ./myread
7702     case "$ans" in
7703     none) ccdlflags=' ' ;;
7704     *) ccdlflags="$ans" ;;
7705     esac
7706     ;;
7707 *)  usedl="$undef"
7708         ld='ld'
7709     dlsrc='dl_none.xs'
7710     lddlflags=''
7711     ccdlflags=''
7712     ;;
7713 esac
7714
7715 also=''
7716 case "$usedl" in
7717 $undef)
7718         # No dynamic loading being used, so don't bother even to prompt.
7719         useshrplib='false'
7720         ;;
7721 *)      case "$useshrplib" in
7722         '')     case "$osname" in
7723                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7724                         dflt=y
7725                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7726                         ;;
7727                 next*)
7728                         case "$osvers" in
7729                         4*)     dflt=y
7730                                 also='Building a shared libperl is needed for MAB support.'
7731                                 ;;
7732                         *)      dflt=n
7733                                 ;;
7734                         esac
7735                         ;;
7736                 *)      dflt=n
7737                         ;;
7738                 esac
7739                 ;;
7740         $define|true|[Yy]*)
7741                 dflt=y
7742                 ;;
7743         *)      dflt=n
7744                 ;;
7745         esac
7746         $cat << EOM
7747
7748 The perl executable is normally obtained by linking perlmain.c with
7749 libperl${_a}, any static extensions (usually just DynaLoader), and
7750 any other libraries needed on this system (such as -lm, etc.).  Since
7751 your system supports dynamic loading, it is probably possible to build
7752 a shared libperl.$so.  If you will have more than one executable linked
7753 to libperl.$so, this will significantly reduce the size of each
7754 executable, but it may have a noticeable affect on performance.  The
7755 default is probably sensible for your system.
7756 $also
7757
7758 EOM
7759         rp="Build a shared libperl.$so (y/n)"
7760         . ./myread
7761         case "$ans" in
7762         true|$define|[Yy]*)
7763                 useshrplib='true'  ;;
7764         *)      useshrplib='false' ;;
7765         esac
7766         ;;
7767 esac
7768
7769 case "$useshrplib" in
7770 true)
7771         case "$libperl" in
7772         '')
7773                 # Figure out a good name for libperl.so.  Since it gets stored in
7774                 # a version-specific architecture-dependent library, the version
7775                 # number isn't really that important, except for making cc/ld happy.
7776                 #
7777                 # A name such as libperl.so.3.1
7778                 majmin="libperl.$so.$patchlevel.$subversion"
7779                 # A name such as libperl.so.301
7780                 majonly=`echo $patchlevel $subversion |
7781                         $awk '{printf "%d%02d", $1, $2}'`
7782                 majonly=libperl.$so.$majonly
7783                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7784                 # rely on figuring it out from the naming of libc.
7785                 case "${osname}${osvers}" in
7786                 next4*)
7787                         dflt=libperl.5.$so
7788                         # XXX How handle the --version stuff for MAB?
7789                         ;;
7790                 linux*|gnu*)  # ld won't link with a bare -lperl otherwise.
7791                         dflt=libperl.$so
7792                         ;;
7793                 cygwin*) # ld links against an importlib
7794                         dflt=libperl$lib_ext
7795                         ;;
7796                 *)      # Try to guess based on whether libc has major.minor.
7797                         case "$libc" in
7798                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7799                         *libc.$so.[0-9]*) dflt=$majonly ;;
7800                         *)      dflt=libperl.$so ;;
7801                         esac
7802                         ;;
7803                 esac
7804                 ;;
7805         *)      dflt=$libperl
7806                 ;;
7807         esac
7808         cat << EOM
7809
7810 I need to select a good name for the shared libperl.  If your system uses
7811 library names with major and minor numbers, then you might want something
7812 like $majmin.  Alternatively, if your system uses a single version
7813 number for shared libraries, then you might want to use $majonly.
7814 Or, your system might be quite happy with a simple libperl.$so.
7815
7816 Since the shared libperl will get installed into a version-specific
7817 architecture-dependent directory, the version number of the shared perl
7818 library probably isn't important, so the default should be o.k.
7819
7820 EOM
7821         rp='What name do you want to give to the shared libperl?'
7822         . ./myread
7823         libperl=$ans
7824         echo "Ok, I'll use $libperl"
7825         ;;
7826 *)
7827         libperl="libperl${_a}"
7828         ;;
7829 esac
7830
7831 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7832 case "$shrpdir" in
7833 '') ;;
7834 *)      $cat >&4 <<EOM
7835 WARNING:  Use of the shrpdir variable for the installation location of
7836 the shared $libperl is not supported.  It was never documented and
7837 will not work in this version.  Let me (perlbug@perl.org)
7838 know of any problems this may cause.
7839
7840 EOM
7841         case "$shrpdir" in
7842         "$archlibexp/CORE")
7843                 $cat >&4 <<EOM
7844 But your current setting of $shrpdir is
7845 the default anyway, so it's harmless.
7846 EOM
7847                 ;;
7848         *)
7849                 $cat >&4 <<EOM
7850 Further, your current attempted setting of $shrpdir
7851 conflicts with the value of $archlibexp/CORE
7852 that installperl will use.
7853 EOM
7854                 ;;
7855         esac
7856         ;;
7857 esac
7858
7859 # How will the perl executable find the installed shared $libperl?
7860 # Add $xxx to ccdlflags.
7861 # If we can't figure out a command-line option, use $shrpenv to
7862 # set env LD_RUN_PATH.  The main perl makefile uses this.
7863 shrpdir=$archlibexp/CORE
7864 xxx=''
7865 tmp_shrpenv=''
7866 if "$useshrplib"; then
7867     case "$osname" in 
7868         aix)
7869                 # We'll set it in Makefile.SH...
7870                 ;;
7871         solaris)
7872                 xxx="-R $shrpdir"
7873                 ;;
7874         freebsd|netbsd|openbsd|interix)
7875                 xxx="-Wl,-R$shrpdir"
7876                 ;;
7877         bsdos|linux|irix*|dec_osf|gnu*)
7878                 xxx="-Wl,-rpath,$shrpdir"
7879                 ;;
7880         next)
7881                 # next doesn't like the default...
7882                 ;;
7883         beos)
7884                 # beos doesn't like the default, either.
7885                 ;;
7886         hpux*)
7887                 # hpux doesn't like the default, either.
7888                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7889                 ;;
7890         *)
7891                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7892                 ;;
7893         esac
7894         case "$xxx" in
7895         '') ;;
7896         *)      
7897                 # Only add $xxx if it isn't already in ccdlflags.
7898                 case " $ccdlflags " in
7899                 *" $xxx "*)     ;;
7900                 *)      ccdlflags="$ccdlflags $xxx"
7901                         cat <<EOM >&4
7902
7903 Adding $xxx to the flags
7904 passed to $ld so that the perl executable will find the 
7905 installed shared $libperl.
7906
7907 EOM
7908                         ;;
7909                 esac
7910                 ;;
7911         esac
7912 fi
7913 # Fix ccdlflags in AIX for building external extensions.
7914 # (For building Perl itself bare -bE:perl.exp is needed,
7915 #  Makefile.SH takes care of this.)
7916 case "$osname" in
7917 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7918 esac
7919 # Respect a hint or command-line value.
7920 case "$shrpenv" in
7921 '') shrpenv="$tmp_shrpenv" ;;
7922 esac
7923 case "$ldlibpthname" in
7924 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7925 none)   ldlibpthname='' ;;
7926 esac
7927
7928 : determine where manual pages are on this system
7929 echo " "
7930 case "$sysman" in
7931 '') 
7932         syspath='/usr/share/man/man1 /usr/man/man1'
7933         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7934         syspath="$syspath /usr/man/u_man/man1"
7935         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7936         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7937         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7938         sysman=`./loc . /usr/man/man1 $syspath`
7939         ;;
7940 esac
7941 if $test -d "$sysman"; then
7942         echo "System manual is in $sysman." >&4
7943 else
7944         echo "Could not find manual pages in source form." >&4
7945 fi
7946
7947 : determine where manual pages go
7948 set man1dir man1dir none
7949 eval $prefixit
7950 $cat <<EOM
7951
7952 $spackage has manual pages available in source form.
7953 EOM
7954 case "$nroff" in
7955 nroff)
7956         echo "However, you don't have nroff, so they're probably useless to you."
7957         case "$man1dir" in
7958         '') man1dir="none";;
7959         esac;;
7960 esac
7961 echo "If you don't want the manual sources installed, answer 'none'."
7962 case "$man1dir" in
7963 ' ') dflt=none
7964         ;;
7965 '')
7966         lookpath="$prefixexp/share/man/man1"
7967         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7968         lookpath="$lookpath $prefixexp/man/p_man/man1"
7969         lookpath="$lookpath $prefixexp/man/u_man/man1"
7970         lookpath="$lookpath $prefixexp/man/man.1"
7971         case "$sysman" in
7972         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7973         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7974         esac
7975         set dflt
7976         eval $prefixup
7977         ;;
7978 *)  dflt="$man1dir"
7979         ;;
7980 esac
7981 echo " "
7982 fn=dn+~
7983 rp="Where do the main $spackage manual pages (source) go?"
7984 . ./getfile
7985 if $test "X$man1direxp" != "X$ansexp"; then
7986         installman1dir=''
7987 fi
7988 man1dir="$ans"
7989 man1direxp="$ansexp"
7990 case "$man1dir" in
7991 '')     man1dir=' '
7992         installman1dir='';;
7993 esac
7994
7995 : Change installation prefix, if necessary.
7996 if $test X"$prefix" != X"$installprefix"; then
7997         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7998 else
7999         installman1dir="$man1direxp"
8000 fi
8001
8002 : What suffix to use on installed man pages
8003
8004 case "$man1dir" in
8005 ' ')
8006         man1ext='0'
8007         ;;
8008 *)
8009         rp="What suffix should be used for the main $spackage man pages?"
8010         case "$man1ext" in
8011         '')     case "$man1dir" in
8012                 *1)  dflt=1 ;;
8013                 *1p) dflt=1p ;;
8014                 *1pm) dflt=1pm ;;
8015                 *l) dflt=l;;
8016                 *n) dflt=n;;
8017                 *o) dflt=o;;
8018                 *p) dflt=p;;
8019                 *C) dflt=C;;
8020                 *L) dflt=L;;
8021                 *L1) dflt=L1;;
8022                 *) dflt=1;;
8023                 esac
8024                 ;;
8025         *)      dflt="$man1ext";;
8026         esac
8027         . ./myread
8028         man1ext="$ans"
8029         ;;
8030 esac
8031
8032 : see if we can have long filenames
8033 echo " "
8034 first=123456789abcdef
8035 $rm -f $first
8036 if (echo hi >$first) 2>/dev/null; then
8037         if $test -f 123456789abcde; then
8038                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
8039                 val="$undef"
8040         else
8041                 echo 'You can have filenames longer than 14 characters.'>&4
8042                 val="$define"
8043         fi
8044 else
8045         $cat <<'EOM'
8046 You can't have filenames longer than 14 chars.
8047 You can't even think about them!
8048 EOM
8049         val="$undef"
8050 fi 
8051 set d_flexfnam
8052 eval $setvar
8053 $rm -rf 123456789abcde*
8054
8055 : determine where library module manual pages go
8056 set man3dir man3dir none
8057 eval $prefixit
8058 $cat <<EOM
8059
8060 $spackage has manual pages for many of the library modules.
8061 EOM
8062
8063 case "$nroff" in
8064 nroff)
8065         $cat <<'EOM'
8066 However, you don't have nroff, so they're probably useless to you.
8067 EOM
8068         case "$man3dir" in
8069         '') man3dir="none";;
8070         esac;;
8071 esac
8072
8073 case "$d_flexfnam" in
8074 undef)
8075         $cat <<'EOM'
8076 However, your system can't handle the long file names like File::Basename.3. 
8077 EOM
8078         case "$man3dir" in
8079         '') man3dir="none";;
8080         esac;;
8081 esac
8082
8083 echo "If you don't want the manual sources installed, answer 'none'."
8084 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8085 case "$man3dir" in
8086 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8087         if $test -d "$privlib/man/man3"; then
8088                 cat <<EOM >&4
8089
8090 WARNING:  Previous versions of perl installed man3 pages into
8091 $privlib/man/man3.  This version will suggest a 
8092 new default of $dflt.  
8093 EOM
8094                 tdflt=$dflt
8095                 dflt='n'
8096                 rp='Do you wish to preserve the old behavior?(y/n)'
8097                 . ./myread
8098                 case "$ans" in
8099                 y*) dflt="$privlib/man/man3" ;;
8100                 *)  dflt=$tdflt ;;
8101                 esac
8102     fi
8103         ;;
8104 *)      dflt="$man3dir" ;;
8105 esac
8106 case "$dflt" in
8107 ' ') dflt=none ;;
8108 esac
8109 echo " "
8110 fn=dn+~
8111 rp="Where do the $package library man pages (source) go?"
8112 . ./getfile
8113 man3dir="$ans"
8114 man3direxp="$ansexp"
8115 case "$man3dir" in
8116 '')     man3dir=' '
8117         installman3dir='';;
8118 esac
8119
8120 : Change installation prefix, if necessary.
8121 if $test X"$prefix" != X"$installprefix"; then
8122         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8123 else
8124         installman3dir="$man3direxp"
8125 fi
8126
8127 : What suffix to use on installed man pages
8128 case "$man3dir" in
8129 ' ')
8130         man3ext='0'
8131         ;;
8132 *)
8133         rp="What suffix should be used for the $package library man pages?"
8134         case "$man3ext" in
8135         '')     case "$man3dir" in
8136                 *3)  dflt=3 ;;
8137                 *3p) dflt=3p ;;
8138                 *3pm) dflt=3pm ;;
8139                 *l) dflt=l;;
8140                 *n) dflt=n;;
8141                 *o) dflt=o;;
8142                 *p) dflt=p;;
8143                 *C) dflt=C;;
8144                 *L) dflt=L;;
8145                 *L3) dflt=L3;;
8146                 *) dflt=3;;
8147                 esac
8148                 ;;
8149         *)      dflt="$man3ext";;
8150         esac
8151         . ./myread
8152         man3ext="$ans"
8153         ;;
8154 esac
8155
8156 : see if we have to deal with yellow pages, now NIS.
8157 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8158         if $test -f /usr/etc/nibindd; then
8159                 echo " "
8160                 echo "I'm fairly confident you're on a NeXT."
8161                 echo " "
8162                 rp='Do you get the hosts file via NetInfo?'
8163                 dflt=y
8164                 case "$hostcat" in
8165                 nidump*) ;;
8166                 '') ;;
8167                 *) dflt=n;;
8168                 esac
8169                 . ./myread
8170                 case "$ans" in
8171                 y*) hostcat='nidump hosts .';;
8172                 *)      case "$hostcat" in
8173                         nidump*) hostcat='';;
8174                         esac
8175                         ;;
8176                 esac
8177         fi
8178         case "$hostcat" in
8179         nidump*) ;;
8180         *)
8181                 case "$hostcat" in
8182                 *ypcat*) dflt=y;;
8183                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8184                                 dflt=y
8185                         else
8186                                 dflt=n
8187                         fi;;
8188                 *) dflt=n;;
8189                 esac
8190                 echo " "
8191                 rp='Are you getting the hosts file via yellow pages?'
8192                 . ./myread
8193                 case "$ans" in
8194                 y*) hostcat='ypcat hosts';;
8195                 *) hostcat='cat /etc/hosts';;
8196                 esac
8197                 ;;
8198         esac
8199 fi
8200 case "$hostcat" in
8201 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8202 esac
8203 case "$groupcat" in
8204 '') test -f /etc/group && groupcat='cat /etc/group';;
8205 esac
8206 case "$passcat" in
8207 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8208 esac
8209
8210 : now get the host name
8211 echo " "
8212 echo "Figuring out host name..." >&4
8213 case "$myhostname" in
8214 '') cont=true
8215         echo 'Maybe "hostname" will work...'
8216         if tans=`sh -c hostname 2>&1` ; then
8217                 myhostname=$tans
8218                 phostname=hostname
8219                 cont=''
8220         fi
8221         ;;
8222 *) cont='';;
8223 esac
8224 if $test "$cont"; then
8225         if ./xenix; then
8226                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8227                 if tans=`cat /etc/systemid 2>&1` ; then
8228                         myhostname=$tans
8229                         phostname='cat /etc/systemid'
8230                         echo "Whadyaknow.  Xenix always was a bit strange..."
8231                         cont=''
8232                 fi
8233         elif $test -r /etc/systemid; then
8234                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8235         fi
8236 fi
8237 if $test "$cont"; then
8238         echo 'No, maybe "uuname -l" will work...'
8239         if tans=`sh -c 'uuname -l' 2>&1` ; then
8240                 myhostname=$tans
8241                 phostname='uuname -l'
8242         else
8243                 echo 'Strange.  Maybe "uname -n" will work...'
8244                 if tans=`sh -c 'uname -n' 2>&1` ; then
8245                         myhostname=$tans
8246                         phostname='uname -n'
8247                 else
8248                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8249                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8250                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8251                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8252                         else
8253                                 case "$myhostname" in
8254                                 '') echo "Does this machine have an identity crisis or something?"
8255                                         phostname='';;
8256                                 *)
8257                                         echo "Well, you said $myhostname before..."
8258                                         phostname='echo $myhostname';;
8259                                 esac
8260                         fi
8261                 fi
8262         fi
8263 fi
8264 case "$myhostname" in
8265 '') myhostname=noname ;;
8266 esac
8267 : you do not want to know about this
8268 set $myhostname
8269 myhostname=$1
8270
8271 : verify guess
8272 if $test "$myhostname" ; then
8273         dflt=y
8274         rp='Your host name appears to be "'$myhostname'".'" Right?"
8275         . ./myread
8276         case "$ans" in
8277         y*) ;;
8278         *) myhostname='';;
8279         esac
8280 fi
8281
8282 : bad guess or no guess
8283 while $test "X$myhostname" = X ; do
8284         dflt=''
8285         rp="Please type the (one word) name of your host:"
8286         . ./myread
8287         myhostname="$ans"
8288 done
8289
8290 : translate upper to lower if necessary
8291 case "$myhostname" in
8292 *[A-Z]*)
8293         echo "(Normalizing case in your host name)"
8294         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8295         ;;
8296 esac
8297
8298 case "$myhostname" in
8299 *.*)
8300         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8301         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8302         echo "(Trimming domain name from host name--host name is now $myhostname)"
8303         ;;
8304 *) case "$mydomain" in
8305         '')
8306                 {
8307                         test "X$hostcat" = "Xypcat hosts" &&
8308                         ypmatch "$myhostname" hosts 2>/dev/null |\
8309                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8310                         $test -s hosts
8311                 } || {
8312                         test "X$hostcat" != "X" &&
8313                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8314                                         /[       ]$myhostname[  . ]/p" > hosts
8315                 }
8316                 tmp_re="[       . ]"
8317                 if $test -f hosts; then
8318                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8319                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8320                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8321                                 hosts | $sort | $uniq | \
8322                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8323                         case `$echo X$dflt` in
8324                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8325                                 dflt=.
8326                                 ;;
8327                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8328                                 ;;
8329                         esac
8330                 else
8331                         echo "(I cannot locate a hosts database anywhere)"
8332                         dflt=.
8333                 fi
8334                 case "$dflt" in
8335                 .)
8336                         tans=`./loc resolv.conf X /etc /usr/etc`
8337                         if $test -f "$tans"; then
8338                                 echo "(Attempting domain name extraction from $tans)"
8339                                 dflt=.`$sed -n -e 's/   / /g' \
8340                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8341                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8342                                 case "$dflt" in
8343                                 .) dflt=.`$sed -n -e 's/        / /g' \
8344                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8345                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8346                                         ;;
8347                                 esac
8348                         fi
8349                         ;;
8350                 esac
8351                 case "$dflt" in
8352                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8353                         dflt=.`sh -c domainname 2>/dev/null`
8354                         case "$dflt" in
8355                         '') dflt='.';;
8356                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8357                         esac
8358                         ;;
8359                 esac
8360                 case "$dflt$osname" in
8361                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8362                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8363                         ;;
8364                 esac
8365                 case "$dflt" in
8366                 .) echo "(Lost all hope -- silly guess then)"
8367                         dflt='.nonet'
8368                         ;;
8369                 esac
8370                 $rm -f hosts
8371                 ;;
8372         *) dflt="$mydomain";;
8373         esac;;
8374 esac
8375 echo " "
8376 rp="What is your domain name?"
8377 . ./myread
8378 tans="$ans"
8379 case "$ans" in
8380 '') ;;
8381 .*) ;;
8382 *) tans=".$tans";;
8383 esac
8384 mydomain="$tans"
8385
8386 : translate upper to lower if necessary
8387 case "$mydomain" in
8388 *[A-Z]*)
8389         echo "(Normalizing case in your domain name)"
8390         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8391         ;;
8392 esac
8393
8394 : a little sanity check here
8395 case "$phostname" in
8396 '') ;;
8397 *)
8398         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8399         $myhostname$mydomain|$myhostname) ;;
8400         *)
8401                 case "$phostname" in
8402                 sed*)
8403                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8404                         ;;
8405                 *)
8406                         echo "(That doesn't agree with your $phostname command, by the way.)"
8407                         ;;
8408                 esac
8409         ;;
8410         esac
8411         ;;
8412 esac
8413
8414 $cat <<EOM
8415
8416 I need to get your e-mail address in Internet format if possible, i.e.
8417 something like user@host.domain. Please answer accurately since I have
8418 no easy means to double check it. The default value provided below
8419 is most probably close to reality but may not be valid from outside
8420 your organization...
8421
8422 EOM
8423 cont=x
8424 while test "$cont"; do
8425         case "$cf_email" in
8426         '') dflt="$cf_by@$myhostname$mydomain";;
8427         *) dflt="$cf_email";;
8428         esac
8429         rp='What is your e-mail address?'
8430         . ./myread
8431         cf_email="$ans"
8432         case "$cf_email" in
8433         *@*.*) cont='' ;;
8434         *)
8435                 rp='Address does not look like an Internet one.  Use it anyway?'
8436                 case "$fastread" in
8437                 yes) dflt=y ;;
8438                 *) dflt=n ;;
8439                 esac
8440                 . ./myread
8441                 case "$ans" in
8442                 y*) cont='' ;;
8443                 *) echo " " ;;
8444                 esac
8445                 ;;
8446         esac
8447 done
8448
8449 $cat <<EOM
8450
8451 If you or somebody else will be maintaining perl at your site, please
8452 fill in the correct e-mail address here so that they may be contacted
8453 if necessary. Currently, the "perlbug" program included with perl
8454 will send mail to this address in addition to perlbug@perl.org. You may
8455 enter "none" for no administrator.
8456
8457 EOM
8458 case "$perladmin" in
8459 '') dflt="$cf_email";;
8460 *) dflt="$perladmin";;
8461 esac
8462 rp='Perl administrator e-mail address'
8463 . ./myread
8464 perladmin="$ans"
8465
8466 : determine whether to only install version-specific parts.
8467 echo " "
8468 $cat <<EOM
8469 Do you want to install only the version-specific parts of the perl
8470 distribution?  Usually you do *not* want to do this.
8471 EOM
8472 case "$versiononly" in
8473 "$define"|[Yy]*|true) dflt='y' ;;
8474 *) dflt='n';
8475 esac
8476 rp="Do you want to install only the version-specific parts of perl?"
8477 . ./myread
8478 case "$ans" in
8479 [yY]*)  val="$define";;
8480 *)      val="$undef" ;;
8481 esac
8482 set versiononly
8483 eval $setvar
8484
8485 case "$versiononly" in
8486 "$define") inc_version_list=''
8487            inc_version_list_init=0
8488            ;;
8489 esac
8490
8491 : figure out how to guarantee perl startup
8492 case "$startperl" in
8493 '')
8494         case "$sharpbang" in
8495         *!)
8496                 $cat <<EOH
8497
8498 I can use the #! construct to start perl on your system. This will
8499 make startup of perl scripts faster, but may cause problems if you
8500 want to share those scripts and perl is not in a standard place
8501 ($binexp/perl) on all your platforms. The alternative is to force
8502 a shell by starting the script with a single ':' character.
8503
8504 EOH
8505                 case "$versiononly" in
8506                 "$define")      dflt="$binexp/perl$version";;  
8507                 *)              dflt="$binexp/perl";;
8508                 esac
8509                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8510                 . ./myread
8511                 case "$ans" in
8512                 none)   startperl=": # use perl";;
8513                 *)      startperl="#!$ans"
8514                         if $test 30 -lt `echo "$ans" | wc -c`; then
8515                                 $cat >&4 <<EOM
8516
8517 WARNING:  Some systems limit the #! command to 32 characters.
8518 If you experience difficulty running Perl scripts with #!, try
8519 installing Perl in a directory with a shorter pathname.
8520
8521 EOM
8522                         fi ;;
8523                 esac
8524                 ;;
8525         *) startperl=": # use perl"
8526                 ;;
8527         esac
8528         ;;
8529 esac
8530 echo "I'll use $startperl to start perl scripts."
8531
8532 : figure best path for perl in scripts
8533 case "$perlpath" in
8534 '')
8535         case "$versiononly" in
8536         "$define")      perlpath="$binexp/perl$version";;
8537         *)              perlpath="$binexp/perl";;
8538         esac
8539         case "$startperl" in
8540         *!*) ;;
8541         *)
8542                 $cat <<EOH
8543
8544 I will use the "eval 'exec'" idiom to start Perl on your system.
8545 I can use the full path of your Perl binary for this purpose, but
8546 doing so may cause problems if you want to share those scripts and
8547 Perl is not always in a standard place ($binexp/perl).
8548
8549 EOH
8550                 dflt="$binexp/perl"
8551                 rp="What path shall I use in \"eval 'exec'\"?"
8552                 . ./myread
8553                 perlpath="$ans"
8554                 ;;
8555         esac
8556         ;;
8557 esac
8558 case "$startperl" in
8559 *!*)    ;;
8560 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8561 esac
8562
8563 : determine where public executable scripts go
8564 set scriptdir scriptdir
8565 eval $prefixit
8566 case "$scriptdir" in
8567 '')
8568         dflt="$bin"
8569         : guess some guesses
8570         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8571         $test -d /usr/share/bin     && dflt=/usr/share/bin
8572         $test -d /usr/local/script  && dflt=/usr/local/script
8573         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8574         $test -d $prefixexp/script  && dflt=$prefixexp/script
8575         set dflt
8576         eval $prefixup
8577         ;;
8578 *)  dflt="$scriptdir"
8579         ;;
8580 esac
8581 $cat <<EOM
8582  
8583 Some installations have a separate directory just for executable scripts so
8584 that they can mount it across multiple architectures but keep the scripts in
8585 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8586 Or you might just lump your scripts in with all your other executables.
8587  
8588 EOM
8589 fn=d~
8590 rp='Where do you keep publicly executable scripts?'
8591 . ./getfile
8592 if $test "X$ansexp" != "X$scriptdirexp"; then
8593         installscript=''
8594 fi
8595 scriptdir="$ans"
8596 scriptdirexp="$ansexp"
8597 : Change installation prefix, if necessary.
8598 if $test X"$prefix" != X"$installprefix"; then
8599         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8600 else
8601         installscript="$scriptdirexp"
8602 fi
8603
8604 : determine where add-on public executables go
8605 case "$sitebin" in
8606 '')     dflt=$siteprefix/bin ;;
8607 *)      dflt=$sitebin ;;
8608 esac
8609 fn=d~
8610 rp='Pathname where the add-on public executables should be installed?'
8611 . ./getfile
8612 sitebin="$ans"
8613 sitebinexp="$ansexp"
8614 : Change installation prefix, if necessary.
8615 if $test X"$prefix" != X"$installprefix"; then
8616         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8617 else
8618         installsitebin="$sitebinexp"
8619 fi
8620
8621 : determine where add-on html pages go
8622 : There is no standard location, so try to copy the previously-selected
8623 : directory structure for the core html pages.
8624 case "$sitehtml1dir" in
8625 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8626 *)     dflt=$sitehtml1dir ;;
8627 esac
8628 case "$dflt" in
8629 ''|' ') dflt=none ;;
8630 esac
8631 fn=dn+~
8632 rp='Pathname where the site-specific html pages should be installed?'
8633 . ./getfile
8634 sitehtml1dir="$ans"
8635 sitehtml1direxp="$ansexp"
8636 : Change installation prefix, if necessary.
8637 if $test X"$prefix" != X"$installprefix"; then
8638         installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
8639 else
8640         installsitehtml1dir="$sitehtml1direxp"
8641 fi
8642
8643 : determine where add-on library html pages go
8644 : There is no standard location, so try to copy the previously-selected
8645 : directory structure for the core html pages.
8646 case "$sitehtml3dir" in
8647 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8648 *)     dflt=$sitehtml3dir ;;
8649 esac
8650 case "$dflt" in
8651 ''|' ') dflt=none ;;
8652 esac
8653 fn=dn+~
8654 rp='Pathname where the site-specific library html pages should be installed?'
8655 . ./getfile
8656 sitehtml3dir="$ans"
8657 sitehtml3direxp="$ansexp"
8658 : Change installation prefix, if necessary.
8659 if $test X"$prefix" != X"$installprefix"; then
8660         installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
8661 else
8662         installsitehtml3dir="$sitehtml3direxp"
8663 fi
8664
8665 : determine where add-on manual pages go
8666 case "$siteman1dir" in
8667 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8668 *)      dflt=$siteman1dir ;;
8669 esac
8670 case "$dflt" in
8671 ''|' ') dflt=none ;;
8672 esac
8673 fn=dn+~
8674 rp='Pathname where the site-specific manual pages should be installed?'
8675 . ./getfile
8676 siteman1dir="$ans"
8677 siteman1direxp="$ansexp"
8678 : Change installation prefix, if necessary.
8679 if $test X"$prefix" != X"$installprefix"; then
8680         installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
8681 else
8682         installsiteman1dir="$siteman1direxp"
8683 fi
8684
8685 : determine where add-on library man pages go
8686 case "$siteman3dir" in
8687 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8688 *)      dflt=$siteman3dir ;;
8689 esac
8690 case "$dflt" in
8691 ''|' ') dflt=none ;;
8692 esac
8693 fn=dn+~
8694 rp='Pathname where the site-specific library manual pages should be installed?'
8695 . ./getfile
8696 siteman3dir="$ans"
8697 siteman3direxp="$ansexp"
8698 : Change installation prefix, if necessary.
8699 if $test X"$prefix" != X"$installprefix"; then
8700         installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
8701 else
8702         installsiteman3dir="$siteman3direxp"
8703 fi
8704
8705 : determine where add-on public executable scripts go
8706 case "$sitescript" in
8707 '')     dflt=$siteprefix/script
8708         $test -d $dflt || dflt=$sitebin ;;
8709 *)  dflt="$sitescript" ;;
8710 esac
8711 fn=d~+
8712 rp='Pathname where add-on public executable scripts should be installed?'
8713 . ./getfile
8714 sitescript="$ans"
8715 sitescriptexp="$ansexp"
8716 : Change installation prefix, if necessary.
8717 if $test X"$prefix" != X"$installprefix"; then
8718         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8719 else
8720         installsitescript="$sitescriptexp"
8721 fi
8722
8723 case "$usefaststdio" in
8724 $define|true|[yY]*|'')
8725         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8726         case "$xversion" in
8727         [68])   dflt='y' ;;
8728         *)      dflt='n' ;;
8729         esac
8730         ;;
8731 *) dflt='n';;
8732 esac
8733 cat <<EOM
8734
8735 Perl can be built to use 'fast stdio', which means using the stdio
8736 library but also directly manipulating the stdio buffers to enable
8737 faster I/O.  Using stdio is better for backward compatibility (especially
8738 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8739 interface has been preferred instead of stdio.
8740
8741 If this doesn't make any sense to you, just accept the default '$dflt'.
8742 EOM
8743 rp='Use the "fast stdio" if available?'
8744 . ./myread
8745 case "$ans" in
8746 y|Y)    val="$define" ;;     
8747 *)      val="$undef" ;;
8748 esac
8749 set usefaststdio
8750 eval $setvar
8751
8752
8753 : define an is-a-typedef? function
8754 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8755 case "$inclist" in
8756 "") inclist="sys/types.h";;
8757 esac;
8758 eval "varval=\$$var";
8759 case "$varval" in
8760 "")
8761         $rm -f temp.c;
8762         for inc in $inclist; do
8763                 echo "#include <$inc>" >>temp.c;
8764         done;
8765         echo "#ifdef $type" >> temp.c;
8766         echo "printf(\"We have $type\");" >> temp.c;
8767         echo "#endif" >> temp.c;
8768         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8769         if $contains $type temp.E >/dev/null 2>&1; then
8770                 eval "$var=\$type";
8771         else
8772                 eval "$var=\$def";
8773         fi;
8774         $rm -f temp.?;;
8775 *) eval "$var=\$varval";;
8776 esac'
8777
8778 : define an is-a-typedef? function that prompts if the type is not available.
8779 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8780 case "$inclist" in
8781 "") inclist="sys/types.h";;
8782 esac;
8783 eval "varval=\$$var";
8784 case "$varval" in
8785 "")
8786         $rm -f temp.c;
8787         for inc in $inclist; do
8788                 echo "#include <$inc>" >>temp.c;
8789         done;
8790         echo "#ifdef $type" >> temp.c;
8791         echo "printf(\"We have $type\");" >> temp.c;
8792         echo "#endif" >> temp.c;
8793         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8794         echo " " ;
8795         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8796         if $contains $type temp.E >/dev/null 2>&1; then
8797                 echo "$type found." >&4;
8798                 eval "$var=\$type";
8799         else
8800                 echo "$type NOT found." >&4;
8801                 dflt="$def";
8802                 . ./myread ;
8803                 eval "$var=\$ans";
8804         fi;
8805         $rm -f temp.?;;
8806 *) eval "$var=\$varval";;
8807 esac'
8808
8809 : see what type lseek is declared as in the kernel
8810 rp="What is the type used for lseek's offset on this system?"
8811 set off_t lseektype long stdio.h sys/types.h
8812 eval $typedef_ask
8813
8814 echo " "
8815 echo "Checking to see how big your file offsets are..." >&4
8816 $cat >try.c <<EOCP
8817 #include <sys/types.h>
8818 #include <stdio.h>
8819 int main()
8820 {
8821     printf("%d\n", (int)sizeof($lseektype));
8822     return(0); 
8823 }
8824 EOCP
8825 set try
8826 if eval $compile_ok; then
8827         lseeksize=`$run ./try`
8828         echo "Your file offsets are $lseeksize bytes long."
8829 else
8830         dflt=$longsize
8831         echo " "
8832         echo "(I can't seem to compile the test program.  Guessing...)"
8833         rp="What is the size of your file offsets (in bytes)?"
8834         . ./myread
8835         lseeksize="$ans"
8836 fi
8837 $rm -f try.c try
8838
8839 : see what type file positions are declared as in the library
8840 rp="What is the type for file position used by fsetpos()?"
8841 set fpos_t fpostype long stdio.h sys/types.h
8842 eval $typedef_ask
8843
8844 echo " "
8845 case "$fpostype" in
8846 *_t) zzz="$fpostype"    ;;
8847 *)   zzz="fpos_t"       ;;
8848 esac
8849 echo "Checking the size of $zzz..." >&4 
8850 cat > try.c <<EOCP
8851 #include <sys/types.h>
8852 #include <stdio.h>
8853 #$i_stdlib I_STDLIB
8854 #ifdef I_STDLIB
8855 #include <stdlib.h>
8856 #endif
8857 int main() {
8858     printf("%d\n", (int)sizeof($fpostype));
8859     exit(0);
8860 }
8861 EOCP
8862 set try
8863 if eval $compile_ok; then
8864         yyy=`$run ./try`
8865         case "$yyy" in
8866         '')     fpossize=4
8867                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8868                 ;;
8869         *)      fpossize=$yyy
8870                 echo "Your $zzz is $fpossize bytes long."
8871                 ;;
8872         esac
8873 else
8874         dflt="$longsize"
8875         echo " " >&4
8876         echo "(I can't compile the test program.  Guessing...)" >&4
8877         rp="What is the size of your file positions (in bytes)?"
8878         . ./myread
8879         fpossize="$ans"
8880 fi
8881
8882 # Backward compatibility (uselfs is deprecated).
8883 case "$uselfs" in
8884 "$define"|true|[yY]*)
8885         cat <<EOM >&4
8886
8887 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8888 EOM
8889         uselargefiles="$define"
8890         ;;
8891 esac                          
8892
8893 case "$lseeksize:$fpossize" in
8894 8:8) cat <<EOM
8895
8896 You can have files larger than 2 gigabytes.
8897 EOM
8898    val="$define" ;;
8899 *)    case "$uselargefiles" in
8900    "$undef"|false|[nN]*) dflt='n' ;;
8901    *)   dflt='y' ;;
8902    esac
8903    cat <<EOM
8904
8905 Perl can be built to understand large files (files larger than 2 gigabytes)
8906 on some systems.  To do so, Configure can be run with -Duselargefiles.
8907
8908 If this doesn't make any sense to you, just accept the default '$dflt'.
8909 EOM
8910    rp='Try to understand large files, if available?'
8911    . ./myread
8912    case "$ans" in
8913    y|Y)         val="$define" ;;
8914    *)           val="$undef"  ;;
8915    esac
8916    ;;
8917 esac
8918 set uselargefiles
8919 eval $setvar
8920 : Look for a hint-file generated 'call-back-unit'.  If the
8921 : user has specified that a large files perl is to be built,
8922 : we may need to set or change some other defaults.
8923 if $test -f uselargefiles.cbu; then
8924         echo "Your platform has some specific hints regarding large file builds, using them..."
8925         . ./uselargefiles.cbu
8926 fi
8927 case "$uselargefiles" in
8928 "$define")
8929         if $test -f uselargefiles.cbu; then
8930                 echo " "
8931                 echo "Rechecking to see how big your file offsets are..." >&4
8932                 $cat >try.c <<EOCP
8933 #include <sys/types.h>
8934 #include <stdio.h>
8935 int main()
8936 {
8937     printf("%d\n", (int)sizeof($lseektype));
8938     return(0); 
8939 }
8940 EOCP
8941                 set try
8942                 if eval $compile_ok; then
8943                         lseeksize=`$run ./try`
8944                         $echo "Your file offsets are now $lseeksize bytes long."
8945                 else
8946                         dflt="$lseeksize"
8947                         echo " "
8948                         echo "(I can't seem to compile the test program.  Guessing...)"
8949                         rp="What is the size of your file offsets (in bytes)?"
8950                         . ./myread
8951                         lseeksize="$ans"
8952                 fi
8953                 case "$fpostype" in
8954                 *_t) zzz="$fpostype"    ;;
8955                 *)   zzz="fpos_t"       ;;
8956                 esac
8957                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8958                 $cat > try.c <<EOCP
8959 #include <sys/types.h>
8960 #include <stdio.h>
8961 #$i_stdlib I_STDLIB
8962 #ifdef I_STDLIB
8963 #include <stdlib.h>
8964 #endif
8965 int main() {
8966     printf("%d\n", (int)sizeof($fpostype));
8967     return(0);
8968 }
8969 EOCP
8970                 set try
8971                 if eval $compile_ok; then
8972                         yyy=`$run ./try`
8973                         dflt="$lseeksize"
8974                         case "$yyy" in
8975                         '')     echo " "
8976                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8977                                 ;;
8978                         *)      fpossize=$yyy
8979                                 echo " $fpossize bytes." >&4
8980                                 ;;
8981                         esac
8982                 else
8983                         dflt="$fpossize"
8984                         echo " "
8985                         echo "(I can't compile the test program.  Guessing...)" >&4
8986                         rp="What is the size of your file positions (in bytes)?"
8987                         . ./myread
8988                         fpossize="$ans"
8989                 fi
8990                 $rm -f try.c try
8991         fi
8992         ;;
8993 esac
8994
8995 # probably will refer to
8996 #   $archlib $privlib $sitearch $sitelib $vendorarch $vendorlib
8997 need_relocation=0
8998 userelocatableinc=undef
8999
9000 case "$vendorprefix" in
9001 '')     d_vendorbin="$undef"
9002         vendorbin=''
9003         vendorbinexp=''
9004         ;;
9005 *)      d_vendorbin="$define"
9006         : determine where vendor-supplied executables go.
9007         case "$vendorbin" in
9008         '') dflt=$vendorprefix/bin ;;
9009         *)      dflt="$vendorbin" ;;
9010         esac
9011         fn=d~+
9012         rp='Pathname for the vendor-supplied executables directory?'
9013         . ./getfile
9014         vendorbin="$ans"
9015         vendorbinexp="$ansexp"
9016         ;;
9017 esac
9018 : Change installation prefix, if necessary.
9019 if $test X"$prefix" != X"$installprefix"; then
9020         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
9021 else
9022         installvendorbin="$vendorbinexp"
9023 fi
9024
9025 case "$vendorprefix" in
9026 '')     vendorhtml1dir=''
9027         vendorhtml1direxp=''
9028         ;;
9029 *)      : determine where vendor-supplied html pages go.
9030         : There is no standard location, so try to copy the previously-selected
9031         : directory structure for the core html pages.
9032         : XXX Better default suggestions would be welcome.
9033         case "$vendorhtml1dir" in
9034         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9035         *)      dflt=$vendorhtml1dir ;;
9036         esac
9037         case "$dflt" in
9038         ''|' ') dflt=none ;;
9039         esac
9040         fn=dn+~
9041         rp='Pathname for the vendor-supplied html pages?'
9042         . ./getfile
9043         vendorhtml1dir="$ans"
9044         vendorhtml1direxp="$ansexp"
9045         ;;
9046 esac
9047 : Use ' ' for none so value is preserved next time through Configure
9048 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9049 : Change installation prefix, if necessary.
9050 if $test X"$prefix" != X"$installprefix"; then
9051         installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
9052 else
9053         installvendorhtml1dir="$vendorhtml1direxp"
9054 fi
9055
9056 case "$vendorprefix" in
9057 '')     vendorhtml3dir=''
9058         vendorhtml3direxp=''
9059         ;;
9060 *)      : determine where vendor-supplied module html pages go.
9061         : There is no standard location, so try to copy the previously-selected
9062         : directory structure for the core html pages.
9063         : XXX Better default suggestions would be welcome.
9064         case "$vendorhtml3dir" in
9065         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9066         *)      dflt=$vendorhtml3dir ;;
9067         esac
9068         case "$dflt" in
9069         ''|' ') dflt=none ;;
9070         esac
9071         fn=dn+~
9072         rp='Pathname for the vendor-supplied html pages?'
9073         . ./getfile
9074         vendorhtml3dir="$ans"
9075         vendorhtml3direxp="$ansexp"
9076         ;;
9077 esac
9078 : Use ' ' for none so value is preserved next time through Configure
9079 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9080 : Change installation prefix, if necessary.
9081 if $test X"$prefix" != X"$installprefix"; then
9082         installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
9083 else
9084         installvendorhtml3dir="$vendorhtml3direxp"
9085 fi
9086
9087 case "$vendorprefix" in
9088 '')     vendorman1dir=''
9089         vendorman1direxp=''
9090         ;;
9091 *)      : determine where vendor-supplied manual pages go.
9092         case "$vendorman1dir" in
9093         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9094         *)      dflt=$vendorman1dir ;;
9095         esac
9096         case "$dflt" in
9097         ''|' ') dflt=none ;;
9098         esac
9099         fn=nd~+
9100         rp='Pathname for the vendor-supplied manual section 1 pages?'
9101         . ./getfile
9102         vendorman1dir="$ans"
9103         vendorman1direxp="$ansexp"
9104         ;;
9105 esac
9106 : Use ' ' for none so value is preserved next time through Configure
9107 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9108 : Change installation prefix, if necessary.
9109 if $test X"$prefix" != X"$installprefix"; then
9110         installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
9111 else
9112         installvendorman1dir="$vendorman1direxp"
9113 fi
9114
9115 case "$vendorprefix" in
9116 '')     vendorman3dir=''
9117         vendorman3direxp=''
9118         ;;
9119 *)      : determine where vendor-supplied module manual pages go.
9120         case "$vendorman3dir" in
9121         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9122         *)      dflt=$vendorman3dir ;;
9123         esac
9124         case "$dflt" in
9125         ''|' ') dflt=none ;;
9126         esac
9127         fn=nd~+
9128         rp='Pathname for the vendor-supplied manual section 3 pages?'
9129         . ./getfile
9130         vendorman3dir="$ans"
9131         vendorman3direxp="$ansexp"
9132         ;;
9133 esac
9134 : Use ' ' for none so value is preserved next time through Configure
9135 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9136 : Change installation prefix, if necessary.
9137 if $test X"$prefix" != X"$installprefix"; then
9138         installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
9139 else
9140         installvendorman3dir="$vendorman3direxp"
9141 fi
9142
9143 case "$vendorprefix" in
9144 '')     d_vendorscript="$undef"
9145         vendorscript=''
9146         vendorscriptexp=''
9147         ;;
9148 *)      d_vendorscript="$define"
9149         : determine where vendor-supplied scripts go.
9150         case "$vendorscript" in
9151         '')     dflt=$vendorprefix/script
9152                 $test -d $dflt || dflt=$vendorbin ;;
9153         *)  dflt="$vendorscript" ;;
9154         esac
9155         $cat <<EOM
9156
9157 The installation process will create a directory for 
9158 vendor-supplied scripts.
9159
9160 EOM
9161         fn=d~+
9162         rp='Pathname for the vendor-supplied scripts directory?'
9163         . ./getfile
9164         vendorscript="$ans"
9165         vendorscriptexp="$ansexp"
9166         ;;
9167 esac
9168 : Change installation prefix, if necessary.
9169 if $test X"$prefix" != X"$installprefix"; then
9170         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9171 else
9172         installvendorscript="$vendorscriptexp"
9173 fi
9174
9175 : see if qgcvt exists
9176 set qgcvt d_qgcvt
9177 eval $inlibc
9178
9179 echo " "
9180
9181 if $test X"$d_longdbl" = X"$define"; then
9182
9183 echo "Checking how to print long doubles..." >&4
9184
9185 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9186         $cat >try.c <<'EOCP'
9187 #include <sys/types.h>
9188 #include <stdio.h>
9189 int main() {
9190   double d = 123.456;
9191   printf("%.3f\n", d);
9192 }
9193 EOCP
9194         set try
9195         if eval $compile; then
9196                 yyy=`$run ./try`
9197                 case "$yyy" in
9198                 123.456)
9199                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9200                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9201                         echo "We will use %f."
9202                         ;;
9203                 esac
9204         fi
9205 fi
9206
9207 if $test X"$sPRIfldbl" = X; then
9208         $cat >try.c <<'EOCP'
9209 #include <sys/types.h>
9210 #include <stdio.h>
9211 int main() {
9212   long double d = 123.456;
9213   printf("%.3Lf\n", d);
9214 }
9215 EOCP
9216         set try
9217         if eval $compile; then
9218                 yyy=`$run ./try`
9219                 case "$yyy" in
9220                 123.456)
9221                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9222                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9223                         echo "We will use %Lf."
9224                         ;;
9225                 esac
9226         fi
9227 fi
9228
9229 if $test X"$sPRIfldbl" = X; then
9230         $cat >try.c <<'EOCP'
9231 #include <sys/types.h>
9232 #include <stdio.h>
9233 int main() {
9234   long double d = 123.456;
9235   printf("%.3llf\n", d);
9236 }
9237 EOCP
9238         set try
9239         if eval $compile; then
9240                 yyy=`$run ./try`
9241                 case "$yyy" in
9242                 123.456)
9243                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9244                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9245                         echo "We will use %llf."
9246                         ;;
9247                 esac
9248         fi
9249 fi
9250
9251 if $test X"$sPRIfldbl" = X; then
9252         $cat >try.c <<'EOCP'
9253 #include <sys/types.h>
9254 #include <stdio.h>
9255 int main() {
9256   long double d = 123.456;
9257   printf("%.3lf\n", d);
9258 }
9259 EOCP
9260         set try
9261         if eval $compile; then
9262                 yyy=`$run ./try`
9263                 case "$yyy" in
9264                 123.456)
9265                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9266                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9267                         echo "We will use %lf."
9268                         ;;
9269                 esac
9270         fi
9271 fi
9272
9273 if $test X"$sPRIfldbl" = X; then
9274         echo "Cannot figure out how to print long doubles." >&4
9275 else
9276         sSCNfldbl=$sPRIfldbl    # expect consistency
9277 fi
9278
9279 $rm -f try try.*
9280
9281 fi # d_longdbl
9282
9283 case "$sPRIfldbl" in
9284 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9285         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9286         d_SCNfldbl="$undef";
9287         ;;
9288 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9289         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9290         d_SCNfldbl="$define";
9291         ;;
9292 esac
9293
9294 : Check how to convert floats to strings.
9295
9296 if test "X$d_Gconvert" = X; then
9297
9298 echo " "
9299 echo "Checking for an efficient way to convert floats to strings."
9300 echo " " > try.c
9301 case "$uselongdouble" in
9302 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9303 esac
9304 case "$d_longdbl" in
9305 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9306 esac
9307 case "$d_PRIgldbl" in
9308 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9309 esac
9310 $cat >>try.c <<EOP
9311 #ifdef TRY_gconvert
9312 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9313 char *myname = "gconvert";
9314 #endif
9315 #ifdef TRY_gcvt
9316 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9317 char *myname = "gcvt";
9318 #endif
9319 #ifdef TRY_qgcvt
9320 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9321 char *myname = "qgcvt";
9322 #define DOUBLETYPE long double
9323 #endif
9324 #ifdef TRY_sprintf
9325 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9326 #ifdef HAS_PRIgldbl
9327 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9328 #else
9329 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9330 #endif
9331 #else
9332 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9333 #endif
9334 char *myname = "sprintf";
9335 #endif
9336
9337 #ifndef DOUBLETYPE
9338 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9339 #define DOUBLETYPE long double
9340 #else
9341 #define DOUBLETYPE double
9342 #endif
9343 #endif
9344
9345 #include <stdio.h>
9346
9347 #define I_STDLIB $i_stdlib
9348 #ifdef I_STDLIB
9349 #include <stdlib.h>
9350 #endif
9351
9352 int
9353 checkit(expect, got)
9354 char *expect;
9355 char *got;
9356 {
9357     if (strcmp(expect, got)) {
9358                 printf("%s oddity:  Expected %s, got %s\n",
9359                         myname, expect, got);
9360                 exit(1);
9361         }
9362 }
9363
9364 int main()
9365
9366         char buf[64]; 
9367         buf[63] = '\0';
9368
9369         /* This must be 1st test on (which?) platform */
9370         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9371         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9372         checkit("0.1", buf);
9373
9374         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9375         checkit("0.01", buf);
9376
9377         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9378         checkit("0.001", buf);
9379
9380         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9381         checkit("0.0001", buf);
9382
9383         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9384         if (strlen(buf) > 5)
9385             checkit("9e-005", buf); /* for Microsoft ?? */
9386         else
9387             checkit("9e-05", buf);
9388
9389         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9390         checkit("1", buf);
9391
9392         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9393         checkit("1.1", buf);
9394
9395         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9396         checkit("1.01", buf);
9397
9398         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9399         checkit("1.001", buf);
9400
9401         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9402         checkit("1.0001", buf);
9403
9404         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9405         checkit("1.00001", buf);
9406
9407         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9408         checkit("1.000001", buf);
9409
9410         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9411         checkit("0", buf);
9412
9413         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9414         checkit("-1", buf);
9415
9416         /* Some Linux gcvt's give 1.e+5 here. */
9417         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9418         checkit("100000", buf);
9419         
9420         /* Some Linux gcvt's give -1.e+5 here. */
9421         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9422         checkit("-100000", buf);
9423
9424         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9425         checkit("123.456", buf);
9426
9427         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9428         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9429         /* 34 should be enough to scare even long double
9430          * places into using the e notation. */
9431         if (strlen(buf) > 5)
9432             checkit("1e+034", buf); /* for Microsoft */
9433         else
9434             checkit("1e+34", buf);
9435
9436         /* For Perl, if you add additional tests here, also add them to
9437          * t/base/num.t for benefit of platforms not using Configure or
9438          * overriding d_Gconvert */
9439
9440         exit(0);
9441 }
9442 EOP
9443 : first add preferred functions to our list
9444 xxx_list=""
9445 for xxx_convert in $gconvert_preference; do
9446     case $xxx_convert in
9447     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9448     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9449     esac 
9450 done
9451 : then add any others
9452 for xxx_convert in gconvert gcvt sprintf; do
9453     case "$xxx_list" in
9454     *$xxx_convert*) ;;
9455     *) xxx_list="$xxx_list $xxx_convert" ;;
9456     esac 
9457 done
9458
9459 case "$d_longdbl$uselongdouble" in
9460 "$define$define")
9461     : again, add prefered functions to our list first
9462     xxx_ld_list=""
9463     for xxx_convert in $gconvert_ld_preference; do
9464         case $xxx_convert in
9465         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9466         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9467         esac
9468     done
9469     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9470     for xxx_convert in qgcvt sprintf $xxx_list; do
9471         case "$xxx_ld_list" in
9472         $xxx_convert*|*" $xxx_convert"*) ;;
9473         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9474         esac
9475     done
9476     : if sprintf cannot do long doubles, move it to the end
9477     if test "$d_PRIgldbl" != "$define"; then
9478         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9479     fi
9480     : if no qgcvt, remove it
9481     if test "$d_qgcvt" != "$define"; then
9482         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9483     fi
9484     : use the ld_list
9485     xxx_list="$xxx_ld_list"
9486     ;;
9487 esac
9488
9489 for xxx_convert in $xxx_list; do
9490         echo "Trying $xxx_convert..."
9491         $rm -f try try$_o
9492         set try -DTRY_$xxx_convert
9493         if eval $compile; then
9494                 echo "$xxx_convert() found." >&4
9495                 if $run ./try; then
9496                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9497                         break;
9498                 else
9499                         echo "...But $xxx_convert didn't work as I expected."
9500                         xxx_convert=''
9501                 fi
9502         else
9503                 echo "$xxx_convert NOT found." >&4
9504         fi
9505 done
9506
9507 if test X$xxx_convert = X; then
9508     echo "*** WHOA THERE!!! ***" >&4
9509     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9510     xxx_convert=sprintf
9511 fi
9512
9513 case "$xxx_convert" in
9514 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9515 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9516 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9517 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9518    "$define$define$define")
9519       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9520    "$define$define$undef")
9521       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9522    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9523    esac
9524    ;;  
9525 esac
9526
9527 fi
9528
9529 : see if _fwalk exists
9530 set fwalk d__fwalk
9531 eval $inlibc
9532
9533 : Initialize h_fcntl
9534 h_fcntl=false
9535
9536 : Initialize h_sysfile
9537 h_sysfile=false
9538
9539 : access call always available on UNIX
9540 set access d_access
9541 eval $inlibc
9542
9543 : locate the flags for 'access()'
9544 case "$d_access" in
9545 "$define")
9546         echo " "
9547         $cat >access.c <<EOCP
9548 #include <sys/types.h>
9549 #ifdef I_FCNTL
9550 #include <fcntl.h>
9551 #endif
9552 #ifdef I_SYS_FILE
9553 #include <sys/file.h>
9554 #endif
9555 #ifdef I_UNISTD
9556 #include <unistd.h>
9557 #endif
9558 #$i_stdlib I_STDLIB
9559 #ifdef I_STDLIB
9560 #include <stdlib.h>
9561 #endif
9562 int main() {
9563         exit(R_OK);
9564 }
9565 EOCP
9566         : check sys/file.h first, no particular reason here
9567         if $test `./findhdr sys/file.h` && \
9568                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9569                 h_sysfile=true;
9570                 echo "<sys/file.h> defines the *_OK access constants." >&4
9571         elif $test `./findhdr fcntl.h` && \
9572                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9573                 h_fcntl=true;
9574                 echo "<fcntl.h> defines the *_OK access constants." >&4
9575         elif $test `./findhdr unistd.h` && \
9576                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9577                 echo "<unistd.h> defines the *_OK access constants." >&4
9578         else
9579                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9580         fi
9581         ;;
9582 esac
9583 $rm -f access*
9584
9585 : see if accessx exists
9586 set accessx d_accessx
9587 eval $inlibc
9588
9589 : see if aintl exists
9590 set aintl d_aintl
9591 eval $inlibc
9592
9593 : see if alarm exists
9594 set alarm d_alarm
9595 eval $inlibc
9596
9597 : see if POSIX threads are available
9598 set pthread.h i_pthread
9599 eval $inhdr
9600
9601 : define a fucntion to check prototypes
9602 $cat > protochk <<EOSH
9603 $startsh
9604 cc="$cc"
9605 optimize="$optimize"
9606 ccflags="$ccflags"
9607 prototype="$prototype"
9608 define="$define"
9609 rm=$rm
9610 usethreads=$usethreads
9611 i_pthread=$i_pthread
9612 pthread_h_first=$pthread_h_first
9613 EOSH
9614
9615 $cat >> protochk <<'EOSH'
9616
9617 $rm -f try.c
9618 foo="$1"
9619 shift
9620 while test $# -ge 2; do
9621         case "$1" in
9622                 $define) echo "#include <$2>" >> try.c ;;
9623                 literal) echo "$2" >> try.c ;;
9624         esac
9625     # Extra magic for the benefit of systems that need pthread.h
9626     # to be included early to correctly detect threadsafe functions.
9627     # Such functions must guarantee themselves, though, that the usethreads
9628     # and i_pthread have been defined, before calling protochk.
9629     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9630         echo "#include <pthread.h>" >> try.c
9631         pthread_h_done=yes
9632     fi
9633     shift 2
9634 done
9635 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9636 cat >> try.c <<'EOCP'
9637 #ifdef CAN_PROTOTYPE
9638 #define _(args) args
9639 #else
9640 #define _(args) ()
9641 #endif
9642 EOCP
9643 echo "$foo" >> try.c
9644 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9645 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9646 status=$?
9647 $rm -f try.[co]
9648 exit $status
9649 EOSH
9650 chmod +x protochk
9651 $eunicefix protochk
9652
9653 hasproto='varname=$1; func=$2; shift; shift;
9654 while $test $# -ge 2; do
9655         case "$1" in
9656         $define) echo "#include <$2>";;
9657         esac ;
9658     shift 2;
9659 done > try.c;
9660 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9661 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9662         echo "$func() prototype found.";
9663         val="$define";
9664 else
9665         echo "$func() prototype NOT found.";
9666         val="$undef";
9667 fi;
9668 set $varname;
9669 eval $setvar;
9670 $rm -f try.c tryout.c'
9671
9672 : see if sys/types.h has to be included
9673 set sys/types.h i_systypes
9674 eval $inhdr
9675
9676 : see if sys/select.h has to be included
9677 set sys/select.h i_sysselct
9678 eval $inhdr
9679
9680 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9681 while $test $# -ge 2; do
9682         case "$1" in
9683         $define) echo "#include <$2>";;
9684         esac ;
9685     shift 2;
9686 done > try.c;
9687 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9688 set try;
9689 if eval $compile; then
9690         val="$define";
9691 else
9692         val="$undef";
9693 fi;
9694 set $varname;
9695 eval $setvar;
9696 $rm -f try.c try.o'
9697
9698 : see if we should include time.h, sys/time.h, or both
9699 echo " "
9700 if test "X$timeincl" = X; then
9701         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9702         $echo $n "I'm now running the test program...$c"
9703         $cat >try.c <<EOCP
9704 #include <sys/types.h>
9705 #ifdef I_TIME
9706 #include <time.h>
9707 #endif
9708 #ifdef I_SYSTIME
9709 #ifdef SYSTIMEKERNEL
9710 #define KERNEL
9711 #endif
9712 #include <sys/time.h>
9713 #endif
9714 #ifdef I_SYSSELECT
9715 #include <sys/select.h>
9716 #endif
9717 #$i_stdlib I_STDLIB
9718 #ifdef I_STDLIB
9719 #include <stdlib.h>
9720 #endif
9721 int main()
9722 {
9723         struct tm foo;
9724 #ifdef S_TIMEVAL
9725         struct timeval bar;
9726 #endif
9727 #ifdef S_TIMEZONE
9728         struct timezone tzp;
9729 #endif
9730         if (foo.tm_sec == foo.tm_sec)
9731                 exit(0);
9732 #ifdef S_TIMEVAL
9733         if (bar.tv_sec == bar.tv_sec)
9734                 exit(0);
9735 #endif
9736         exit(1);
9737 }
9738 EOCP
9739         flags=''
9740         for s_timezone in '-DS_TIMEZONE' ''; do
9741         sysselect=''
9742         for s_timeval in '-DS_TIMEVAL' ''; do
9743         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9744         for i_time in '' '-DI_TIME'; do
9745         for i_systime in '-DI_SYSTIME' ''; do
9746                 case "$flags" in
9747                 '') $echo $n ".$c"
9748                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9749                         if eval $compile; then
9750                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9751                                 shift
9752                                 flags="$*"
9753                                 echo " "
9754                                 $echo $n "Succeeded with $flags$c"
9755                         fi
9756                         ;;
9757                 esac
9758         done
9759         done
9760         done
9761         done
9762         done
9763         timeincl=''
9764         echo " "
9765         case "$flags" in
9766         *SYSTIMEKERNEL*) i_systimek="$define"
9767                 timeincl=`./findhdr sys/time.h`
9768                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9769         *) i_systimek="$undef";;
9770         esac
9771         case "$flags" in
9772         *I_TIME*) i_time="$define"
9773                 timeincl=`./findhdr time.h`" $timeincl"
9774                 echo "We'll include <time.h>." >&4;;
9775         *) i_time="$undef";;
9776         esac
9777         case "$flags" in
9778         *I_SYSTIME*) i_systime="$define"
9779                 timeincl=`./findhdr sys/time.h`" $timeincl"
9780                 echo "We'll include <sys/time.h>." >&4;;
9781         *) i_systime="$undef";;
9782         esac
9783         $rm -f try.c try
9784 fi
9785 : see if struct tm knows about tm_zone
9786 case "$i_systime$i_time" in
9787 *$define*) 
9788         echo " "
9789         echo "Checking to see if your struct tm has tm_zone field..." >&4
9790         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9791         eval $hasfield
9792         ;;
9793 *)      val="$undef"
9794         set d_tm_tm_zone
9795         eval $setvar
9796         ;;
9797 esac
9798 case "$d_tm_tm_zone" in
9799 "$define")      echo "Yes, it does."   ;;
9800 *)              echo "No, it doesn't." ;;
9801 esac
9802 : see if struct tm knows about tm_gmtoff
9803 case "$i_systime$i_time" in
9804 *$define*) 
9805         echo " "
9806         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9807         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9808         eval $hasfield
9809         ;;
9810 *)      val="$undef"
9811         set d_tm_tm_gmtoff
9812         eval $setvar
9813         ;;
9814 esac
9815 case "$d_tm_tm_gmtoff" in
9816 "$define")      echo "Yes, it does."   ;;
9817 *)              echo "No, it doesn't." ;;
9818 esac
9819
9820 : see if asctime_r exists
9821 set asctime_r d_asctime_r
9822 eval $inlibc
9823 case "$d_asctime_r" in
9824 "$define")
9825         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9826         case "$d_asctime_r_proto:$usethreads" in
9827         ":define")      d_asctime_r_proto=define
9828                 set d_asctime_r_proto asctime_r $hdrs
9829                 eval $hasproto ;;
9830         *)      ;;
9831         esac
9832         case "$d_asctime_r_proto" in
9833         define)
9834         case "$asctime_r_proto" in
9835         ''|0) try='char* asctime_r(const struct tm*, char*);'
9836         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9837         esac
9838         case "$asctime_r_proto" in
9839         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9840         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9841         esac
9842         case "$asctime_r_proto" in
9843         ''|0) try='int asctime_r(const struct tm*, char*);'
9844         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9845         esac
9846         case "$asctime_r_proto" in
9847         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9848         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9849         esac
9850         case "$asctime_r_proto" in
9851         ''|0)   d_asctime_r=undef
9852                 asctime_r_proto=0
9853                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9854         * )     case "$asctime_r_proto" in
9855                 REENTRANT_PROTO*) ;;
9856                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9857                 esac
9858                 echo "Prototype: $try" ;;
9859         esac
9860         ;;
9861         *)      case "$usethreads" in
9862                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9863                 esac
9864                 d_asctime_r=undef
9865                 asctime_r_proto=0
9866                 ;;
9867         esac
9868         ;;
9869 *)      asctime_r_proto=0
9870         ;;
9871 esac
9872
9873 : see if atolf exists
9874 set atolf d_atolf
9875 eval $inlibc
9876
9877 : see if atoll exists
9878 set atoll d_atoll
9879 eval $inlibc
9880
9881 : Look for GNU-cc style attribute checking
9882 case "$d_attribut" in
9883 '')
9884 echo " "
9885 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9886 $cat >attrib.c <<'EOCP'
9887 #include <stdio.h>
9888 void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
9889 EOCP
9890 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9891         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9892                 echo "Your C compiler doesn't fully support __attribute__."
9893                 val="$undef"
9894         else
9895                 echo "Your C compiler supports __attribute__."
9896                 val="$define"
9897         fi
9898 else
9899         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9900         val="$undef"
9901 fi
9902 ;;
9903 *) val="$d_attribut" ;;
9904 esac
9905 set d_attribut
9906 eval $setvar
9907 $rm -f attrib*
9908
9909 : see if bcmp exists
9910 set bcmp d_bcmp
9911 eval $inlibc
9912
9913 : see if bcopy exists
9914 set bcopy d_bcopy
9915 eval $inlibc
9916
9917 : see if this is a unistd.h system
9918 set unistd.h i_unistd
9919 eval $inhdr
9920
9921 : see if getpgrp exists
9922 set getpgrp d_getpgrp
9923 eval $inlibc
9924
9925 case "$d_getpgrp" in
9926 "$define")
9927         echo " "
9928         echo "Checking to see which flavor of getpgrp is in use..."
9929         $cat >try.c <<EOP
9930 #$i_unistd I_UNISTD
9931 #include <sys/types.h>
9932 #ifdef I_UNISTD
9933 #  include <unistd.h>
9934 #endif
9935 #$i_stdlib I_STDLIB
9936 #ifdef I_STDLIB
9937 #include <stdlib.h>
9938 #endif
9939 int main()
9940 {
9941         if (getuid() == 0) {
9942                 printf("(I see you are running Configure as super-user...)\n");
9943                 setuid(1);
9944         }
9945 #ifdef TRY_BSD_PGRP
9946         if (getpgrp(1) == 0)
9947                 exit(0);
9948 #else
9949         if (getpgrp() > 0)
9950                 exit(0);
9951 #endif
9952         exit(1);
9953 }
9954 EOP
9955         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9956                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9957                 val="$define"
9958         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9959                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9960                 val="$undef"
9961         else
9962                 echo "I can't seem to compile and run the test program."
9963                 if ./usg; then
9964                         xxx="a USG one, i.e. you use getpgrp()."
9965                 else
9966                         # SVR4 systems can appear rather BSD-ish.
9967                         case "$i_unistd" in
9968                         $undef)
9969                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9970                                 val="$define"
9971                                 ;;
9972                         $define)
9973                                 xxx="probably a USG one, i.e. you use getpgrp()."
9974                                 val="$undef"
9975                                 ;;
9976                         esac
9977                 fi
9978                 echo "Assuming your getpgrp is $xxx" >&4
9979         fi
9980         ;;
9981 *) val="$undef";;
9982 esac
9983 set d_bsdgetpgrp
9984 eval $setvar
9985 $rm -f try try.*
9986
9987 : see if setpgrp exists
9988 set setpgrp d_setpgrp
9989 eval $inlibc
9990
9991 case "$d_setpgrp" in
9992 "$define")
9993         echo " "
9994         echo "Checking to see which flavor of setpgrp is in use..."
9995         $cat >try.c <<EOP
9996 #$i_unistd I_UNISTD
9997 #include <sys/types.h>
9998 #ifdef I_UNISTD
9999 #  include <unistd.h>
10000 #endif
10001 #$i_stdlib I_STDLIB
10002 #ifdef I_STDLIB
10003 #include <stdlib.h>
10004 #endif
10005 int main()
10006 {
10007         if (getuid() == 0) {
10008                 printf("(I see you are running Configure as super-user...)\n");
10009                 setuid(1);
10010         }
10011 #ifdef TRY_BSD_PGRP
10012         if (-1 == setpgrp(1, 1))
10013                 exit(0);
10014 #else
10015         if (setpgrp() != -1)
10016                 exit(0);
10017 #endif
10018         exit(1);
10019 }
10020 EOP
10021         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10022                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10023                 val="$define"
10024         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10025                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10026                 val="$undef"
10027         else
10028                 echo "(I can't seem to compile and run the test program.)"
10029                 if ./usg; then
10030                         xxx="a USG one, i.e. you use setpgrp()."
10031                 else
10032                         # SVR4 systems can appear rather BSD-ish.
10033                         case "$i_unistd" in
10034                         $undef)
10035                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10036                                 val="$define"
10037                                 ;;
10038                         $define)
10039                                 xxx="probably a USG one, i.e. you use setpgrp()."
10040                                 val="$undef"
10041                                 ;;
10042                         esac
10043                 fi
10044                 echo "Assuming your setpgrp is $xxx" >&4
10045         fi
10046         ;;
10047 *) val="$undef";;
10048 esac
10049 set d_bsdsetpgrp
10050 eval $setvar
10051 $rm -f try try.*
10052 : see if bzero exists
10053 set bzero d_bzero
10054 eval $inlibc
10055
10056 : see if signal is declared as pointer to function returning int or void
10057 echo " "
10058 xxx=`./findhdr signal.h`
10059 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10060 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10061         echo "You have int (*signal())() instead of void." >&4
10062         val="$undef"
10063 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10064         echo "You have void (*signal())()." >&4
10065         val="$define"
10066 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10067         echo "You have int (*signal())() instead of void." >&4
10068         val="$undef"
10069 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10070         echo "You have void (*signal())()." >&4
10071         val="$define"
10072 else
10073         case "$d_voidsig" in
10074         '')
10075         echo "I can't determine whether signal handler returns void or int..." >&4
10076                 dflt=void
10077                 rp="What type does your signal handler return?"
10078                 . ./myread
10079                 case "$ans" in
10080                 v*) val="$define";;
10081                 *) val="$undef";;
10082                 esac;;
10083         "$define")
10084                 echo "As you already told me, signal handler returns void." >&4
10085                 val="$define"
10086                 ;;
10087         *)      echo "As you already told me, signal handler returns int." >&4
10088                 val="$undef"
10089                 ;;
10090         esac
10091 fi
10092 set d_voidsig
10093 eval $setvar
10094 case "$d_voidsig" in
10095 "$define") signal_t="void";;
10096 *) signal_t="int";;
10097 esac
10098 $rm -f $$.tmp
10099
10100 : check for ability to cast large floats to 32-bit ints.
10101 echo " "
10102 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10103 if $test "$intsize" -ge 4; then
10104         xxx=int
10105 else
10106         xxx=long
10107 fi
10108 $cat >try.c <<EOCP
10109 #include <stdio.h>
10110 #$i_stdlib I_STDLIB
10111 #ifdef I_STDLIB
10112 #include <stdlib.h>
10113 #endif
10114 #include <sys/types.h>
10115 #include <signal.h>
10116 $signal_t blech(s) int s; { exit(3); }
10117 int main()
10118 {
10119         $xxx i32;
10120         double f, g;
10121         int result = 0;
10122         char str[16];
10123         signal(SIGFPE, blech);
10124
10125         /* Don't let compiler optimize the test away.  Store the number 
10126            in a writable string for gcc to pass to sscanf under HP/UX.
10127         */
10128         sprintf(str, "2147483647");
10129         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10130         g = 10 * f;
10131         i32  = ($xxx) g;
10132
10133         /* x86 processors will probably give 0x8000 0000, which is a
10134            sign change.  We don't want that.  We want to mimic SPARC
10135            behavior here, which is to preserve the sign and give
10136            back 0x7fff ffff.
10137         */
10138         if (i32 != ($xxx) f)
10139                 result |= 1;
10140         exit(result);
10141 }
10142 EOCP
10143 set try
10144 if eval $compile_ok; then
10145         $run ./try
10146         yyy=$?
10147 else
10148         echo "(I can't seem to compile the test program--assuming it can't)"
10149         yyy=1
10150 fi
10151 case "$yyy" in
10152 0)      val="$define"
10153         echo "Yup, it can."
10154         ;;
10155 *)      val="$undef"
10156         echo "Nope, it can't."
10157         ;;
10158 esac
10159 set d_casti32
10160 eval $setvar
10161 $rm -f try try.*
10162
10163 : check for ability to cast negative floats to unsigned
10164 echo " "
10165 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10166 $cat >try.c <<EOCP
10167 #include <stdio.h>
10168 #$i_stdlib I_STDLIB
10169 #ifdef I_STDLIB
10170 #include <stdlib.h>
10171 #endif
10172 #include <sys/types.h>
10173 #include <signal.h>
10174 $signal_t blech(s) int s; { exit(7); }
10175 $signal_t blech_in_list(s) int s; { exit(4); }
10176 unsigned long dummy_long(p) unsigned long p; { return p; }
10177 unsigned int dummy_int(p) unsigned int p; { return p; }
10178 unsigned short dummy_short(p) unsigned short p; { return p; }
10179 int main()
10180 {
10181         double f;
10182         unsigned long along;
10183         unsigned int aint;
10184         unsigned short ashort;
10185         int result = 0;
10186         char str[16];
10187         
10188         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10189            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10190            optimized the whole file away
10191         */
10192         /* Store the number in a writable string for gcc to pass to 
10193            sscanf under HP/UX.
10194         */
10195         sprintf(str, "-123");
10196         sscanf(str, "%lf", &f);  /* f = -123.; */
10197
10198         signal(SIGFPE, blech);
10199         along = (unsigned long)f;
10200         aint = (unsigned int)f;
10201         ashort = (unsigned short)f;
10202         if (along != (unsigned long)-123)
10203                 result |= 1;
10204         if (aint != (unsigned int)-123)
10205                 result |= 1;
10206         if (ashort != (unsigned short)-123)
10207                 result |= 1;
10208         sprintf(str, "1073741824.");
10209         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10210         f = f + f;
10211         along = 0;
10212         along = (unsigned long)f;
10213         if (along != 0x80000000)
10214                 result |= 2;
10215         f -= 1.;
10216         along = 0;
10217         along = (unsigned long)f;
10218         if (along != 0x7fffffff)
10219                 result |= 1;
10220         f += 2.;
10221         along = 0;
10222         along = (unsigned long)f;
10223         if (along != 0x80000001)
10224                 result |= 2;
10225         if (result)
10226                 exit(result);
10227         signal(SIGFPE, blech_in_list);
10228         sprintf(str, "123.");
10229         sscanf(str, "%lf", &f);  /* f = 123.; */
10230         along = dummy_long((unsigned long)f);
10231         aint = dummy_int((unsigned int)f);
10232         ashort = dummy_short((unsigned short)f);
10233         if (along != (unsigned long)123)
10234                 result |= 4;
10235         if (aint != (unsigned int)123)
10236                 result |= 4;
10237         if (ashort != (unsigned short)123)
10238                 result |= 4;
10239         exit(result);
10240
10241 }
10242 EOCP
10243 set try
10244 if eval $compile_ok; then
10245         $run ./try
10246         castflags=$?
10247 else
10248         echo "(I can't seem to compile the test program--assuming it can't)"
10249         castflags=7
10250 fi
10251 case "$castflags" in
10252 0)      val="$define"
10253         echo "Yup, it can."
10254         ;;
10255 *)      val="$undef"
10256         echo "Nope, it can't."
10257         ;;
10258 esac
10259 set d_castneg
10260 eval $setvar
10261 $rm -f try.*
10262
10263 : see if vprintf exists
10264 echo " "
10265 if set vprintf val -f d_vprintf; eval $csym; $val; then
10266         echo 'vprintf() found.' >&4
10267         val="$define"
10268         $cat >try.c <<EOF
10269 #include <varargs.h>
10270 #$i_stdlib I_STDLIB
10271 #ifdef I_STDLIB
10272 #include <stdlib.h>
10273 #endif
10274
10275 int main() { xxx("foo"); }
10276
10277 xxx(va_alist)
10278 va_dcl
10279 {
10280         va_list args;
10281         char buf[10];
10282
10283         va_start(args);
10284         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10285 }
10286 EOF
10287         set try
10288         if eval $compile && $run ./try; then
10289                 echo "Your vsprintf() returns (int)." >&4
10290                 val2="$undef"
10291         else
10292                 echo "Your vsprintf() returns (char*)." >&4
10293                 val2="$define"
10294         fi
10295 else
10296         echo 'vprintf() NOT found.' >&4
10297                 val="$undef"
10298                 val2="$undef"
10299 fi
10300 $rm -f try try.*
10301 set d_vprintf
10302 eval $setvar
10303 val=$val2
10304 set d_charvspr
10305 eval $setvar
10306
10307 : see if chown exists
10308 set chown d_chown
10309 eval $inlibc
10310
10311 : see if chroot exists
10312 set chroot d_chroot
10313 eval $inlibc
10314
10315 : see if chsize exists
10316 set chsize d_chsize
10317 eval $inlibc
10318
10319 : see if class exists
10320 set class d_class
10321 eval $inlibc
10322
10323 hasstruct='varname=$1; struct=$2; shift; shift;
10324 while $test $# -ge 2; do
10325         case "$1" in
10326         $define) echo "#include <$2>";;
10327         esac ;
10328     shift 2;
10329 done > try.c;
10330 echo "int main () { struct $struct foo; }" >> try.c;
10331 set try;
10332 if eval $compile; then
10333         val="$define";
10334 else
10335         val="$undef";
10336 fi;
10337 set $varname;
10338 eval $setvar;
10339 $rm -f try.c try.o'
10340
10341 socketlib=''
10342 sockethdr=''
10343 : see whether socket exists
10344 echo " "
10345 $echo $n "Hmm... $c" >&4
10346 if set socket val -f d_socket; eval $csym; $val; then
10347         echo "Looks like you have Berkeley networking support." >&4
10348         d_socket="$define"
10349         if set setsockopt val -f; eval $csym; $val; then
10350                 d_oldsock="$undef"
10351         else
10352                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10353                 d_oldsock="$define"
10354         fi
10355 else
10356         if $contains socklib libc.list >/dev/null 2>&1; then
10357                 echo "Looks like you have Berkeley networking support." >&4
10358                 d_socket="$define"
10359                 : we will have to assume that it supports the 4.2 BSD interface
10360                 d_oldsock="$undef"
10361         else
10362                 echo "You don't have Berkeley networking in libc$_a..." >&4
10363                 if test "X$d_socket" = "X$define"; then
10364                    echo "...but you seem to believe that you have sockets." >&4
10365                 else
10366                         for net in net socket
10367                         do
10368                                 if test -f /usr/lib/lib$net$_a; then
10369                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10370                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10371                                         if $contains socket libc.list >/dev/null 2>&1; then
10372                                                 d_socket="$define"
10373                                                 socketlib="-l$net"
10374                                                 case "$net" in
10375                                                 net)
10376                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10377                                                         sockethdr="-I/usr/netinclude"
10378                                                         ;;
10379                                                 esac
10380                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10381                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10382                                                         d_oldsock="$undef"
10383                                                 else
10384                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10385                                                         d_oldsock="$define"
10386                                                 fi
10387                                                 break
10388                                         fi
10389                                 fi
10390                         done
10391                         if test "X$d_socket" != "X$define"; then
10392                            echo "or anywhere else I see." >&4
10393                            d_socket="$undef"
10394                            d_oldsock="$undef"
10395                         fi
10396                 fi
10397         fi
10398 fi
10399
10400 : see if socketpair exists
10401 set socketpair d_sockpair
10402 eval $inlibc
10403
10404
10405 echo " "
10406 echo "Checking the availability of certain socket constants..." >&4
10407 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10408         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10409         $cat >try.c <<EOF
10410 #include <sys/types.h>
10411 #include <sys/socket.h>
10412 int main() {
10413     int i = $ENUM;
10414 }
10415 EOF
10416         val="$undef"
10417         set try; if eval $compile; then
10418                 val="$define"
10419         fi
10420         set d_${enum}; eval $setvar
10421         $rm -f try.c try
10422 done
10423
10424 : see if this is a sys/uio.h system
10425 set sys/uio.h i_sysuio
10426 eval $inhdr
10427
10428
10429 echo " "
10430 echo "Checking to see if your system supports struct cmsghdr..." >&4
10431 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10432 eval $hasstruct
10433 case "$d_cmsghdr_s" in
10434 "$define")      echo "Yes, it does."   ;;
10435 *)              echo "No, it doesn't." ;;
10436 esac
10437
10438
10439 : check for const keyword
10440 echo " "
10441 echo 'Checking to see if your C compiler knows about "const"...' >&4
10442 $cat >const.c <<'EOCP'
10443 typedef struct spug { int drokk; } spug;
10444 int main()
10445 {
10446         const char *foo;
10447         const spug y;
10448 }
10449 EOCP
10450 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10451         val="$define"
10452         echo "Yup, it does."
10453 else
10454         val="$undef"
10455         echo "Nope, it doesn't."
10456 fi
10457 set d_const
10458 eval $setvar
10459
10460 : see if copysignl exists
10461 set copysignl d_copysignl
10462 eval $inlibc
10463
10464 : see if crypt exists
10465 echo " "
10466 set crypt d_crypt
10467 eval $inlibc
10468 case "$d_crypt" in
10469 $define) cryptlib='' ;;
10470 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10471                 echo 'crypt() found.' >&4
10472                 val="$define"
10473                 cryptlib=''
10474         else
10475                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10476                 if $test -z "$cryptlib"; then
10477                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10478                 else
10479                         cryptlib=-lcrypt
10480                 fi
10481                 if $test -z "$cryptlib"; then
10482                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10483                 else
10484                         cryptlib=-lcrypt
10485                 fi
10486                 if $test -z "$cryptlib"; then
10487                         cryptlib=`./loc libcrypt$_a "" $libpth`
10488                 else
10489                         cryptlib=-lcrypt
10490                 fi
10491                 if $test -z "$cryptlib"; then
10492                         echo 'crypt() NOT found.' >&4
10493                         val="$undef"
10494                 else
10495                         val="$define"
10496                 fi
10497         fi
10498         set d_crypt
10499         eval $setvar
10500         ;;
10501 esac
10502
10503 : see if this is a crypt.h system
10504 set crypt.h i_crypt
10505 eval $inhdr
10506
10507 : see if crypt_r exists
10508 set crypt_r d_crypt_r
10509 eval $inlibc
10510 case "$d_crypt_r" in
10511 "$define")
10512         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10513         case "$d_crypt_r_proto:$usethreads" in
10514         ":define")      d_crypt_r_proto=define
10515                 set d_crypt_r_proto crypt_r $hdrs
10516                 eval $hasproto ;;
10517         *)      ;;
10518         esac
10519         case "$d_crypt_r_proto" in
10520         define)
10521         case "$crypt_r_proto" in
10522         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10523         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10524         esac
10525         case "$crypt_r_proto" in
10526         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10527         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10528         esac
10529         case "$crypt_r_proto" in
10530         ''|0)   d_crypt_r=undef
10531                 crypt_r_proto=0
10532                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10533         * )     case "$crypt_r_proto" in
10534                 REENTRANT_PROTO*) ;;
10535                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10536                 esac
10537                 echo "Prototype: $try" ;;
10538         esac
10539         ;;
10540         *)      case "$usethreads" in
10541                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10542                 esac
10543                 d_crypt_r=undef
10544                 crypt_r_proto=0
10545                 ;;
10546         esac
10547         ;;
10548 *)      crypt_r_proto=0
10549         ;;
10550 esac
10551
10552 : get csh whereabouts
10553 case "$csh" in
10554 'csh') val="$undef" ;;
10555 *) val="$define" ;;
10556 esac
10557 set d_csh
10558 eval $setvar
10559 : Respect a hint or command line value for full_csh.
10560 case "$full_csh" in
10561 '') full_csh=$csh ;;
10562 esac
10563
10564 : see if ctermid_r exists
10565 set ctermid_r d_ctermid_r
10566 eval $inlibc
10567 case "$d_ctermid_r" in
10568 "$define")
10569         hdrs="$i_systypes sys/types.h define stdio.h "
10570         case "$d_ctermid_r_proto:$usethreads" in
10571         ":define")      d_ctermid_r_proto=define
10572                 set d_ctermid_r_proto ctermid_r $hdrs
10573                 eval $hasproto ;;
10574         *)      ;;
10575         esac
10576         case "$d_ctermid_r_proto" in
10577         define)
10578         case "$ctermid_r_proto" in
10579         ''|0) try='char* ctermid_r(char*);'
10580         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10581         esac
10582         case "$ctermid_r_proto" in
10583         ''|0)   d_ctermid_r=undef
10584                 ctermid_r_proto=0
10585                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10586         * )     case "$ctermid_r_proto" in
10587                 REENTRANT_PROTO*) ;;
10588                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10589                 esac
10590                 echo "Prototype: $try" ;;
10591         esac
10592         ;;
10593         *)      case "$usethreads" in
10594                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10595                 esac
10596                 d_ctermid_r=undef
10597                 ctermid_r_proto=0
10598                 ;;
10599         esac
10600         ;;
10601 *)      ctermid_r_proto=0
10602         ;;
10603 esac
10604
10605 : see if ctime_r exists
10606 set ctime_r d_ctime_r
10607 eval $inlibc
10608 case "$d_ctime_r" in
10609 "$define")
10610         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10611         case "$d_ctime_r_proto:$usethreads" in
10612         ":define")      d_ctime_r_proto=define
10613                 set d_ctime_r_proto ctime_r $hdrs
10614                 eval $hasproto ;;
10615         *)      ;;
10616         esac
10617         case "$d_ctime_r_proto" in
10618         define)
10619         case "$ctime_r_proto" in
10620         ''|0) try='char* ctime_r(const time_t*, char*);'
10621         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10622         esac
10623         case "$ctime_r_proto" in
10624         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10625         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10626         esac
10627         case "$ctime_r_proto" in
10628         ''|0) try='int ctime_r(const time_t*, char*);'
10629         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10630         esac
10631         case "$ctime_r_proto" in
10632         ''|0) try='int ctime_r(const time_t*, char*, int);'
10633         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10634         esac
10635         case "$ctime_r_proto" in
10636         ''|0)   d_ctime_r=undef
10637                 ctime_r_proto=0
10638                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10639         * )     case "$ctime_r_proto" in
10640                 REENTRANT_PROTO*) ;;
10641                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10642                 esac
10643                 echo "Prototype: $try" ;;
10644         esac
10645         ;;
10646         *)      case "$usethreads" in
10647                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10648                 esac
10649                 d_ctime_r=undef
10650                 ctime_r_proto=0
10651                 ;;
10652         esac
10653         ;;
10654 *)      ctime_r_proto=0
10655         ;;
10656 esac
10657
10658 : see if cuserid exists
10659 set cuserid d_cuserid
10660 eval $inlibc
10661
10662 : see if this is a limits.h system
10663 set limits.h i_limits
10664 eval $inhdr
10665
10666 : see if this is a float.h system
10667 set float.h i_float
10668 eval $inhdr
10669
10670 : See if number of significant digits in a double precision number is known
10671 echo " "
10672 $cat >dbl_dig.c <<EOM
10673 #$i_limits I_LIMITS
10674 #$i_float I_FLOAT
10675 #ifdef I_LIMITS
10676 #include <limits.h>
10677 #endif
10678 #ifdef I_FLOAT
10679 #include <float.h>
10680 #endif
10681 #ifdef DBL_DIG
10682 printf("Contains DBL_DIG");
10683 #endif
10684 EOM
10685 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10686 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10687         echo "DBL_DIG found." >&4
10688         val="$define"
10689 else
10690         echo "DBL_DIG NOT found." >&4
10691         val="$undef"
10692 fi
10693 $rm -f dbl_dig.?
10694 set d_dbl_dig
10695 eval $setvar
10696
10697 : see if dbm.h is available
10698 : see if dbmclose exists
10699 set dbmclose d_dbmclose
10700 eval $inlibc
10701
10702 case "$d_dbmclose" in
10703 $define)
10704         set dbm.h i_dbm
10705         eval $inhdr
10706         case "$i_dbm" in
10707         $define)
10708                 val="$undef"
10709                 set i_rpcsvcdbm
10710                 eval $setvar
10711                 ;;
10712         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10713                 eval $inhdr
10714                 ;;
10715         esac
10716         ;;
10717 *)      echo "We won't be including <dbm.h>"
10718         val="$undef"
10719         set i_dbm
10720         eval $setvar
10721         val="$undef"
10722         set i_rpcsvcdbm
10723         eval $setvar
10724         ;;
10725 esac
10726
10727 : see if prototype for dbminit is available
10728 echo " "
10729 set d_dbminitproto dbminit $i_dbm dbm.h
10730 eval $hasproto
10731
10732 : see if difftime exists
10733 set difftime d_difftime
10734 eval $inlibc
10735
10736 : see if this is a dirent system
10737 echo " "
10738 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10739         val="$define"
10740         echo "<dirent.h> found." >&4
10741 else
10742         val="$undef"
10743         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10744                 echo "<sys/dir.h> found." >&4
10745                 echo " "
10746         else
10747                 xinc=`./findhdr sys/ndir.h`
10748         fi
10749         echo "<dirent.h> NOT found." >&4
10750 fi
10751 set i_dirent
10752 eval $setvar
10753
10754 : Look for type of directory structure.
10755 echo " "
10756 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10757
10758 case "$direntrytype" in
10759 ''|' ')
10760         case "$i_dirent" in
10761         $define) guess1='struct dirent' ;;
10762         *) guess1='struct direct'  ;;
10763         esac
10764         ;;
10765 *)      guess1="$direntrytype"
10766         ;;
10767 esac
10768
10769 case "$guess1" in
10770 'struct dirent') guess2='struct direct' ;;
10771 *) guess2='struct dirent' ;;
10772 esac
10773                 
10774 if $contains "$guess1" try.c >/dev/null 2>&1; then
10775         direntrytype="$guess1"
10776         echo "Your directory entries are $direntrytype." >&4
10777 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10778         direntrytype="$guess2"
10779         echo "Your directory entries seem to be $direntrytype." >&4
10780 else
10781         echo "I don't recognize your system's directory entries." >&4
10782         rp="What type is used for directory entries on this system?"
10783         dflt="$guess1"
10784         . ./myread
10785         direntrytype="$ans"
10786 fi
10787 $rm -f try.c
10788
10789
10790 : see if the directory entry stores field length
10791 echo " "
10792 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10793 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10794         echo "Good, your directory entry keeps length information in d_namlen." >&4
10795         val="$define"
10796 else
10797         echo "Your directory entry does not know about the d_namlen field." >&4
10798         val="$undef"
10799 fi
10800 set d_dirnamlen
10801 eval $setvar
10802 $rm -f try.c
10803
10804 : see if this is an sysdir system
10805 set sys/dir.h i_sysdir
10806 eval $inhdr
10807
10808 : see if this is an sysndir system
10809 set sys/ndir.h i_sysndir
10810 eval $inhdr
10811
10812 : Look for dirfd
10813 echo " "
10814 $cat >dirfd.c <<EOM
10815 #include <stdio.h>
10816 #$i_stdlib I_STDLIB
10817 #ifdef I_STDLIB
10818 #include <stdlib.h>
10819 #endif
10820 #$i_dirent I_DIRENT             /**/
10821 #$i_sysdir I_SYS_DIR            /**/
10822 #$i_sysndir I_SYS_NDIR          /**/
10823 #$i_systypes I_SYS_TYPES        /**/
10824 #if defined(I_SYS_TYPES)
10825 #include <sys/types.h>
10826 #endif
10827 #if defined(I_DIRENT)
10828 #include <dirent.h>
10829 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10830 #include <sys/dir.h>
10831 #endif
10832 #else
10833 #ifdef I_SYS_NDIR
10834 #include <sys/ndir.h>
10835 #else
10836 #ifdef I_SYS_DIR
10837 #ifdef hp9000s500
10838 #include <ndir.h>       /* may be wrong in the future */
10839 #else
10840 #include <sys/dir.h>
10841 #endif
10842 #endif
10843 #endif
10844 #endif 
10845 int main() {
10846         DIR *dirp = opendir(".");
10847         if (dirfd(dirp) >= 0)
10848                 exit(0);
10849         else
10850                 exit(1);
10851 }
10852 EOM
10853 set dirfd
10854 if eval $compile; then
10855         val="$define"
10856 fi
10857 case "$val" in
10858 $define)        echo "dirfd() found." >&4       ;;
10859 *)              echo "dirfd() NOT found." >&4   ;;
10860 esac
10861 set d_dirfd
10862 eval $setvar
10863 $rm -f dirfd*
10864
10865 : see if dlerror exists
10866 xxx_runnm="$runnm"
10867 runnm=false
10868 set dlerror d_dlerror
10869 eval $inlibc
10870 runnm="$xxx_runnm"
10871
10872 : see if dlfcn is available
10873 set dlfcn.h i_dlfcn
10874 eval $inhdr
10875
10876 case "$usedl" in
10877 $define|y|true)
10878         $cat << EOM
10879
10880 On a few systems, the dynamically loaded modules that perl generates and uses
10881 will need a different extension than shared libs. The default will probably
10882 be appropriate.
10883
10884 EOM
10885         case "$dlext" in
10886         '')     dflt="$so" ;;
10887         *)      dflt="$dlext" ;;
10888         esac
10889         rp='What is the extension of dynamically loaded modules'
10890         . ./myread
10891         dlext="$ans"
10892         ;;
10893 *)
10894         dlext="none"
10895         ;;
10896 esac
10897
10898 : Check if dlsym need a leading underscore
10899 echo " "
10900 val="$undef"
10901
10902 case "$dlsrc" in
10903 dl_dlopen.xs)
10904         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10905         $cat >dyna.c <<'EOM'
10906 fred () { }
10907 EOM
10908
10909 $cat >fred.c<<EOM
10910
10911 #include <stdio.h>
10912 #$i_stdlib I_STDLIB
10913 #ifdef I_STDLIB
10914 #include <stdlib.h>
10915 #endif
10916 #$i_dlfcn I_DLFCN
10917 #ifdef I_DLFCN
10918 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10919 #else
10920 #include <sys/types.h>
10921 #include <nlist.h>
10922 #include <link.h>
10923 #endif
10924
10925 extern int fred() ;
10926
10927 int main()
10928 {
10929     void * handle ;
10930     void * symbol ;
10931 #ifndef RTLD_LAZY
10932     int mode = 1 ;
10933 #else
10934     int mode = RTLD_LAZY ;
10935 #endif
10936     handle = dlopen("./dyna.$dlext", mode) ;
10937     if (handle == NULL) {
10938         printf ("1\n") ;
10939         fflush (stdout) ;
10940         exit(0);
10941     }
10942     symbol = dlsym(handle, "fred") ;
10943     if (symbol == NULL) {
10944         /* try putting a leading underscore */
10945         symbol = dlsym(handle, "_fred") ;
10946         if (symbol == NULL) {
10947             printf ("2\n") ;
10948             fflush (stdout) ;
10949             exit(0);
10950         }
10951         printf ("3\n") ;
10952     }
10953     else
10954         printf ("4\n") ;
10955     fflush (stdout) ;
10956     exit(0);
10957 }
10958 EOM
10959         : Call the object file tmp-dyna.o in case dlext=o.
10960         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10961                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10962                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10963                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10964                 xxx=`$run ./fred`
10965                 case $xxx in
10966                 1)      echo "Test program failed using dlopen." >&4
10967                         echo "Perhaps you should not use dynamic loading." >&4;;
10968                 2)      echo "Test program failed using dlsym." >&4
10969                         echo "Perhaps you should not use dynamic loading." >&4;;
10970                 3)      echo "dlsym needs a leading underscore" >&4
10971                         val="$define" ;;
10972                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10973                 esac
10974         else
10975                 echo "I can't compile and run the test program." >&4
10976                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10977         fi
10978         ;;
10979 esac
10980                 
10981 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10982
10983 set d_dlsymun
10984 eval $setvar
10985
10986 : see if drand48_r exists
10987 set drand48_r d_drand48_r
10988 eval $inlibc
10989 case "$d_drand48_r" in
10990 "$define")
10991         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10992         case "$d_drand48_r_proto:$usethreads" in
10993         ":define")      d_drand48_r_proto=define
10994                 set d_drand48_r_proto drand48_r $hdrs
10995                 eval $hasproto ;;
10996         *)      ;;
10997         esac
10998         case "$d_drand48_r_proto" in
10999         define)
11000         case "$drand48_r_proto" in
11001         ''|0) try='int drand48_r(struct drand48_data*, double*);'
11002         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
11003         esac
11004         case "$drand48_r_proto" in
11005         ''|0)   d_drand48_r=undef
11006                 drand48_r_proto=0
11007                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
11008         * )     case "$drand48_r_proto" in
11009                 REENTRANT_PROTO*) ;;
11010                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
11011                 esac
11012                 echo "Prototype: $try" ;;
11013         esac
11014         ;;
11015         *)      case "$usethreads" in
11016                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11017                 esac
11018                 d_drand48_r=undef
11019                 drand48_r_proto=0
11020                 ;;
11021         esac
11022         ;;
11023 *)      drand48_r_proto=0
11024         ;;
11025 esac
11026
11027 : see if prototype for drand48 is available
11028 echo " "
11029 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11030 eval $hasproto
11031
11032 : see if dup2 exists
11033 set dup2 d_dup2
11034 eval $inlibc
11035
11036 : see if eaccess exists
11037 set eaccess d_eaccess
11038 eval $inlibc
11039
11040 : see if endgrent exists
11041 set endgrent d_endgrent
11042 eval $inlibc
11043
11044 : see if this is an grp system
11045 set grp.h i_grp
11046 eval $inhdr
11047
11048 case "$i_grp" in
11049 $define)
11050         xxx=`./findhdr grp.h`
11051         $cppstdin $cppflags $cppminus < $xxx >$$.h
11052
11053         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11054                 val="$define"
11055         else
11056                 val="$undef"
11057         fi
11058         set d_grpasswd
11059         eval $setvar
11060
11061         $rm -f $$.h
11062         ;;
11063 *)
11064         val="$undef";
11065         set d_grpasswd; eval $setvar
11066         ;;
11067 esac
11068
11069 : see if endgrent_r exists
11070 set endgrent_r d_endgrent_r
11071 eval $inlibc
11072 case "$d_endgrent_r" in
11073 "$define")
11074         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11075         case "$d_endgrent_r_proto:$usethreads" in
11076         ":define")      d_endgrent_r_proto=define
11077                 set d_endgrent_r_proto endgrent_r $hdrs
11078                 eval $hasproto ;;
11079         *)      ;;
11080         esac
11081         case "$d_endgrent_r_proto" in
11082         define)
11083         case "$endgrent_r_proto" in
11084         ''|0) try='int endgrent_r(FILE**);'
11085         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11086         esac
11087         case "$endgrent_r_proto" in
11088         ''|0) try='void endgrent_r(FILE**);'
11089         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11090         esac
11091         case "$endgrent_r_proto" in
11092         ''|0)   d_endgrent_r=undef
11093                 endgrent_r_proto=0
11094                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11095         * )     case "$endgrent_r_proto" in
11096                 REENTRANT_PROTO*) ;;
11097                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11098                 esac
11099                 echo "Prototype: $try" ;;
11100         esac
11101         ;;
11102         *)      case "$usethreads" in
11103                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11104                 esac
11105                 d_endgrent_r=undef
11106                 endgrent_r_proto=0
11107                 ;;
11108         esac
11109         ;;
11110 *)      endgrent_r_proto=0
11111         ;;
11112 esac
11113
11114 : see if endhostent exists
11115 set endhostent d_endhent
11116 eval $inlibc
11117
11118 : see if this is a netdb.h system
11119 set netdb.h i_netdb
11120 eval $inhdr
11121
11122 : see if endhostent_r exists
11123 set endhostent_r d_endhostent_r
11124 eval $inlibc
11125 case "$d_endhostent_r" in
11126 "$define")
11127         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11128         case "$d_endhostent_r_proto:$usethreads" in
11129         ":define")      d_endhostent_r_proto=define
11130                 set d_endhostent_r_proto endhostent_r $hdrs
11131                 eval $hasproto ;;
11132         *)      ;;
11133         esac
11134         case "$d_endhostent_r_proto" in
11135         define)
11136         case "$endhostent_r_proto" in
11137         ''|0) try='int endhostent_r(struct hostent_data*);'
11138         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11139         esac
11140         case "$endhostent_r_proto" in
11141         ''|0) try='void endhostent_r(struct hostent_data*);'
11142         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11143         esac
11144         case "$endhostent_r_proto" in
11145         ''|0)   d_endhostent_r=undef
11146                 endhostent_r_proto=0
11147                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11148         * )     case "$endhostent_r_proto" in
11149                 REENTRANT_PROTO*) ;;
11150                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11151                 esac
11152                 echo "Prototype: $try" ;;
11153         esac
11154         ;;
11155         *)      case "$usethreads" in
11156                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11157                 esac
11158                 d_endhostent_r=undef
11159                 endhostent_r_proto=0
11160                 ;;
11161         esac
11162         ;;
11163 *)      endhostent_r_proto=0
11164         ;;
11165 esac
11166
11167 : see if endnetent exists
11168 set endnetent d_endnent
11169 eval $inlibc
11170
11171 : see if endnetent_r exists
11172 set endnetent_r d_endnetent_r
11173 eval $inlibc
11174 case "$d_endnetent_r" in
11175 "$define")
11176         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11177         case "$d_endnetent_r_proto:$usethreads" in
11178         ":define")      d_endnetent_r_proto=define
11179                 set d_endnetent_r_proto endnetent_r $hdrs
11180                 eval $hasproto ;;
11181         *)      ;;
11182         esac
11183         case "$d_endnetent_r_proto" in
11184         define)
11185         case "$endnetent_r_proto" in
11186         ''|0) try='int endnetent_r(struct netent_data*);'
11187         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11188         esac
11189         case "$endnetent_r_proto" in
11190         ''|0) try='void endnetent_r(struct netent_data*);'
11191         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11192         esac
11193         case "$endnetent_r_proto" in
11194         ''|0)   d_endnetent_r=undef
11195                 endnetent_r_proto=0
11196                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11197         * )     case "$endnetent_r_proto" in
11198                 REENTRANT_PROTO*) ;;
11199                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11200                 esac
11201                 echo "Prototype: $try" ;;
11202         esac
11203         ;;
11204         *)      case "$usethreads" in
11205                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11206                 esac
11207                 d_endnetent_r=undef
11208                 endnetent_r_proto=0
11209                 ;;
11210         esac
11211         ;;
11212 *)      endnetent_r_proto=0
11213         ;;
11214 esac
11215
11216 : see if endprotoent exists
11217 set endprotoent d_endpent
11218 eval $inlibc
11219
11220 : see if endprotoent_r exists
11221 set endprotoent_r d_endprotoent_r
11222 eval $inlibc
11223 case "$d_endprotoent_r" in
11224 "$define")
11225         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11226         case "$d_endprotoent_r_proto:$usethreads" in
11227         ":define")      d_endprotoent_r_proto=define
11228                 set d_endprotoent_r_proto endprotoent_r $hdrs
11229                 eval $hasproto ;;
11230         *)      ;;
11231         esac
11232         case "$d_endprotoent_r_proto" in
11233         define)
11234         case "$endprotoent_r_proto" in
11235         ''|0) try='int endprotoent_r(struct protoent_data*);'
11236         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11237         esac
11238         case "$endprotoent_r_proto" in
11239         ''|0) try='void endprotoent_r(struct protoent_data*);'
11240         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11241         esac
11242         case "$endprotoent_r_proto" in
11243         ''|0)   d_endprotoent_r=undef
11244                 endprotoent_r_proto=0
11245                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11246         * )     case "$endprotoent_r_proto" in
11247                 REENTRANT_PROTO*) ;;
11248                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11249                 esac
11250                 echo "Prototype: $try" ;;
11251         esac
11252         ;;
11253         *)      case "$usethreads" in
11254                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11255                 esac
11256                 d_endprotoent_r=undef
11257                 endprotoent_r_proto=0
11258                 ;;
11259         esac
11260         ;;
11261 *)      endprotoent_r_proto=0
11262         ;;
11263 esac
11264
11265 : see if endpwent exists
11266 set endpwent d_endpwent
11267 eval $inlibc
11268
11269 : see if this is a pwd.h system
11270 set pwd.h i_pwd
11271 eval $inhdr
11272
11273 case "$i_pwd" in
11274 $define)
11275         xxx=`./findhdr pwd.h`
11276         $cppstdin $cppflags $cppminus < $xxx >$$.h
11277
11278         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11279                 val="$define"
11280         else
11281                 val="$undef"
11282         fi
11283         set d_pwquota
11284         eval $setvar
11285
11286         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11287                 val="$define"
11288         else
11289                 val="$undef"
11290         fi
11291         set d_pwage
11292         eval $setvar
11293
11294         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11295                 val="$define"
11296         else
11297                 val="$undef"
11298         fi
11299         set d_pwchange
11300         eval $setvar
11301
11302         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11303                 val="$define"
11304         else
11305                 val="$undef"
11306         fi
11307         set d_pwclass
11308         eval $setvar
11309
11310         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11311                 val="$define"
11312         else
11313                 val="$undef"
11314         fi
11315         set d_pwexpire
11316         eval $setvar
11317
11318         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11319                 val="$define"
11320         else
11321                 val="$undef"
11322         fi
11323         set d_pwcomment
11324         eval $setvar
11325
11326         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11327                 val="$define"
11328         else
11329                 val="$undef"
11330         fi
11331         set d_pwgecos
11332         eval $setvar
11333
11334         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11335                 val="$define"
11336         else
11337                 val="$undef"
11338         fi
11339         set d_pwpasswd
11340         eval $setvar
11341
11342         $rm -f $$.h
11343         ;;
11344 *)
11345         val="$undef"; 
11346         set d_pwquota; eval $setvar
11347         set d_pwage; eval $setvar
11348         set d_pwchange; eval $setvar
11349         set d_pwclass; eval $setvar
11350         set d_pwexpire; eval $setvar
11351         set d_pwcomment; eval $setvar
11352         set d_pwgecos; eval $setvar
11353         set d_pwpasswd; eval $setvar
11354         ;;
11355 esac
11356
11357 : see if endpwent_r exists
11358 set endpwent_r d_endpwent_r
11359 eval $inlibc
11360 case "$d_endpwent_r" in
11361 "$define")
11362         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11363         case "$d_endpwent_r_proto:$usethreads" in
11364         ":define")      d_endpwent_r_proto=define
11365                 set d_endpwent_r_proto endpwent_r $hdrs
11366                 eval $hasproto ;;
11367         *)      ;;
11368         esac
11369         case "$d_endpwent_r_proto" in
11370         define)
11371         case "$endpwent_r_proto" in
11372         ''|0) try='int endpwent_r(FILE**);'
11373         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11374         esac
11375         case "$endpwent_r_proto" in
11376         ''|0) try='void endpwent_r(FILE**);'
11377         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11378         esac
11379         case "$endpwent_r_proto" in
11380         ''|0)   d_endpwent_r=undef
11381                 endpwent_r_proto=0
11382                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11383         * )     case "$endpwent_r_proto" in
11384                 REENTRANT_PROTO*) ;;
11385                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11386                 esac
11387                 echo "Prototype: $try" ;;
11388         esac
11389         ;;
11390         *)      case "$usethreads" in
11391                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11392                 esac
11393                 d_endpwent_r=undef
11394                 endpwent_r_proto=0
11395                 ;;
11396         esac
11397         ;;
11398 *)      endpwent_r_proto=0
11399         ;;
11400 esac
11401
11402 : see if endservent exists
11403 set endservent d_endsent
11404 eval $inlibc
11405
11406 : see if endservent_r exists
11407 set endservent_r d_endservent_r
11408 eval $inlibc
11409 case "$d_endservent_r" in
11410 "$define")
11411         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11412         case "$d_endservent_r_proto:$usethreads" in
11413         ":define")      d_endservent_r_proto=define
11414                 set d_endservent_r_proto endservent_r $hdrs
11415                 eval $hasproto ;;
11416         *)      ;;
11417         esac
11418         case "$d_endservent_r_proto" in
11419         define)
11420         case "$endservent_r_proto" in
11421         ''|0) try='int endservent_r(struct servent_data*);'
11422         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11423         esac
11424         case "$endservent_r_proto" in
11425         ''|0) try='void endservent_r(struct servent_data*);'
11426         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11427         esac
11428         case "$endservent_r_proto" in
11429         ''|0)   d_endservent_r=undef
11430                 endservent_r_proto=0
11431                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11432         * )     case "$endservent_r_proto" in
11433                 REENTRANT_PROTO*) ;;
11434                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11435                 esac
11436                 echo "Prototype: $try" ;;
11437         esac
11438         ;;
11439         *)      case "$usethreads" in
11440                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11441                 esac
11442                 d_endservent_r=undef
11443                 endservent_r_proto=0
11444                 ;;
11445         esac
11446         ;;
11447 *)      endservent_r_proto=0
11448         ;;
11449 esac
11450
11451 : Locate the flags for 'open()'
11452 echo " "
11453 $cat >try.c <<EOCP
11454 #include <sys/types.h>
11455 #ifdef I_FCNTL
11456 #include <fcntl.h>
11457 #endif
11458 #ifdef I_SYS_FILE
11459 #include <sys/file.h>
11460 #endif
11461 #$i_stdlib I_STDLIB
11462 #ifdef I_STDLIB
11463 #include <stdlib.h>
11464 #endif
11465 int main() {
11466         if(O_RDONLY);
11467 #ifdef O_TRUNC
11468         exit(0);
11469 #else
11470         exit(1);
11471 #endif
11472 }
11473 EOCP
11474 : check sys/file.h first to get FREAD on Sun
11475 if $test `./findhdr sys/file.h` && \
11476                 set try -DI_SYS_FILE && eval $compile; then
11477         h_sysfile=true;
11478         echo "<sys/file.h> defines the O_* constants..." >&4
11479         if $run ./try; then
11480                 echo "and you have the 3 argument form of open()." >&4
11481                 val="$define"
11482         else
11483                 echo "but not the 3 argument form of open().  Oh, well." >&4
11484                 val="$undef"
11485         fi
11486 elif $test `./findhdr fcntl.h` && \
11487                 set try -DI_FCNTL && eval $compile; then
11488         h_fcntl=true;
11489         echo "<fcntl.h> defines the O_* constants..." >&4
11490         if $run ./try; then
11491                 echo "and you have the 3 argument form of open()." >&4
11492                 val="$define"
11493         else
11494                 echo "but not the 3 argument form of open().  Oh, well." >&4
11495                 val="$undef"
11496         fi
11497 else
11498         val="$undef"
11499         echo "I can't find the O_* constant definitions!  You got problems." >&4
11500 fi
11501 set d_open3
11502 eval $setvar
11503 $rm -f try try.*
11504
11505 : see which of string.h or strings.h is needed
11506 echo " "
11507 strings=`./findhdr string.h`
11508 if $test "$strings" && $test -r "$strings"; then
11509         echo "Using <string.h> instead of <strings.h>." >&4
11510         val="$define"
11511 else
11512         val="$undef"
11513         strings=`./findhdr strings.h`
11514         if $test "$strings" && $test -r "$strings"; then
11515                 echo "Using <strings.h> instead of <string.h>." >&4
11516         else
11517                 echo "No string header found -- You'll surely have problems." >&4
11518         fi
11519 fi
11520 set i_string
11521 eval $setvar
11522 case "$i_string" in
11523 "$undef") strings=`./findhdr strings.h`;;
11524 *)        strings=`./findhdr string.h`;;
11525 esac
11526
11527 : see if this is a sys/file.h system
11528 val=''
11529 set sys/file.h val
11530 eval $inhdr
11531
11532 : do we need to include sys/file.h ?
11533 case "$val" in
11534 "$define")
11535         echo " "
11536         if $h_sysfile; then
11537                 val="$define"
11538                 echo "We'll be including <sys/file.h>." >&4
11539         else
11540                 val="$undef"
11541                 echo "We won't be including <sys/file.h>." >&4
11542         fi
11543         ;;
11544 *)
11545         h_sysfile=false
11546         ;;
11547 esac
11548 set i_sysfile
11549 eval $setvar
11550
11551 : see if fcntl.h is there
11552 val=''
11553 set fcntl.h val
11554 eval $inhdr
11555
11556 : see if we can include fcntl.h
11557 case "$val" in
11558 "$define")
11559         echo " "
11560         if $h_fcntl; then
11561                 val="$define"
11562                 echo "We'll be including <fcntl.h>." >&4
11563         else
11564                 val="$undef"
11565                 if $h_sysfile; then
11566         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11567                 else
11568                         echo "We won't be including <fcntl.h>." >&4
11569                 fi
11570         fi
11571         ;;
11572 *)
11573         h_fcntl=false
11574         val="$undef"
11575         ;;
11576 esac
11577 set i_fcntl
11578 eval $setvar
11579
11580 : check for non-blocking I/O stuff
11581 case "$h_sysfile" in
11582 true) echo "#include <sys/file.h>" > head.c;;
11583 *)
11584        case "$h_fcntl" in
11585        true) echo "#include <fcntl.h>" > head.c;;
11586        *) echo "#include <sys/fcntl.h>" > head.c;;
11587        esac
11588        ;;
11589 esac
11590 echo " "
11591 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11592 case "$o_nonblock" in
11593 '')
11594         $cat head.c > try.c
11595         $cat >>try.c <<EOCP
11596 #include <stdio.h>
11597 #$i_stdlib I_STDLIB
11598 #ifdef I_STDLIB
11599 #include <stdlib.h>
11600 #endif
11601 #$i_fcntl I_FCNTL
11602 #ifdef I_FCNTL
11603 #include <fcntl.h>
11604 #endif
11605 int main() {
11606 #ifdef O_NONBLOCK
11607         printf("O_NONBLOCK\n");
11608         exit(0);
11609 #endif
11610 #ifdef O_NDELAY
11611         printf("O_NDELAY\n");
11612         exit(0);
11613 #endif
11614 #ifdef FNDELAY
11615         printf("FNDELAY\n");
11616         exit(0);
11617 #endif
11618         exit(0);
11619 }
11620 EOCP
11621         set try
11622         if eval $compile_ok; then
11623                 o_nonblock=`$run ./try`
11624                 case "$o_nonblock" in
11625                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11626                 *) echo "Seems like we can use $o_nonblock.";;
11627                 esac
11628         else
11629                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11630         fi
11631         ;;
11632 *) echo "Using $hint value $o_nonblock.";;
11633 esac
11634 $rm -f try try.* .out core
11635
11636 echo " "
11637 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11638 case "$eagain" in
11639 '')
11640         $cat head.c > try.c
11641         $cat >>try.c <<EOCP
11642 #include <errno.h>
11643 #include <sys/types.h>
11644 #include <signal.h>
11645 #include <stdio.h> 
11646 #$i_stdlib I_STDLIB
11647 #ifdef I_STDLIB
11648 #include <stdlib.h>
11649 #endif
11650 #$i_fcntl I_FCNTL
11651 #ifdef I_FCNTL
11652 #include <fcntl.h>
11653 #endif
11654 #define MY_O_NONBLOCK $o_nonblock
11655 #ifndef errno  /* XXX need better Configure test */
11656 extern int errno;
11657 #endif
11658 #$i_unistd I_UNISTD
11659 #ifdef I_UNISTD
11660 #include <unistd.h>
11661 #endif
11662 #$i_string I_STRING
11663 #ifdef I_STRING
11664 #include <string.h>
11665 #else
11666 #include <strings.h>
11667 #endif
11668 $signal_t blech(x) int x; { exit(3); }
11669 EOCP
11670         $cat >> try.c <<'EOCP'
11671 int main()
11672 {
11673         int pd[2];
11674         int pu[2];
11675         char buf[1];
11676         char string[100];
11677
11678         pipe(pd);       /* Down: child -> parent */
11679         pipe(pu);       /* Up: parent -> child */
11680         if (0 != fork()) {
11681                 int ret;
11682                 close(pd[1]);   /* Parent reads from pd[0] */
11683                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11684 #ifdef F_SETFL
11685                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11686                         exit(1);
11687 #else
11688                 exit(4);
11689 #endif
11690                 signal(SIGALRM, blech);
11691                 alarm(5);
11692                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11693                         exit(2);
11694                 sprintf(string, "%d\n", ret);
11695                 write(2, string, strlen(string));
11696                 alarm(0);
11697 #ifdef EAGAIN
11698                 if (errno == EAGAIN) {
11699                         printf("EAGAIN\n");
11700                         goto ok;
11701                 }
11702 #endif
11703 #ifdef EWOULDBLOCK
11704                 if (errno == EWOULDBLOCK)
11705                         printf("EWOULDBLOCK\n");
11706 #endif
11707         ok:
11708                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11709                 sleep(2);                               /* Give it time to close our pipe */
11710                 alarm(5);
11711                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11712                 alarm(0);
11713                 sprintf(string, "%d\n", ret);
11714                 write(4, string, strlen(string));
11715                 exit(0);
11716         }
11717
11718         close(pd[0]);                   /* We write to pd[1] */
11719         close(pu[1]);                   /* We read from pu[0] */
11720         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11721         close(pd[1]);                   /* Pipe pd is now fully closed! */
11722         exit(0);                                /* Bye bye, thank you for playing! */
11723 }
11724 EOCP
11725         set try
11726         if eval $compile_ok; then
11727                 echo "$startsh" >mtry
11728                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11729                 chmod +x mtry
11730                 ./mtry >/dev/null 2>&1
11731                 case $? in
11732                 0) eagain=`$cat try.out`;;
11733                 1) echo "Could not perform non-blocking setting!";;
11734                 2) echo "I did a successful read() for something that was not there!";;
11735                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11736                 4) echo "Could not find F_SETFL!";;
11737                 *) echo "Something terribly wrong happened during testing.";;
11738                 esac
11739                 rd_nodata=`$cat try.ret`
11740                 echo "A read() system call with no data present returns $rd_nodata."
11741                 case "$rd_nodata" in
11742                 0|-1) ;;
11743                 *)
11744                         echo "(That's peculiar, fixing that to be -1.)"
11745                         rd_nodata=-1
11746                         ;;
11747                 esac
11748                 case "$eagain" in
11749                 '')
11750                         echo "Forcing errno EAGAIN on read() with no data available."
11751                         eagain=EAGAIN
11752                         ;;
11753                 *)
11754                         echo "Your read() sets errno to $eagain when no data is available."
11755                         ;;
11756                 esac
11757                 status=`$cat try.err`
11758                 case "$status" in
11759                 0) echo "And it correctly returns 0 to signal EOF.";;
11760                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11761                 *) echo "However, your read() returns '$status' on EOF??";;
11762                 esac
11763                 val="$define"
11764                 if test "$status" = "$rd_nodata"; then
11765                         echo "WARNING: you can't distinguish between EOF and no data!"
11766                         val="$undef"
11767                 fi
11768         else
11769                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11770                 eagain=EAGAIN
11771         fi
11772         set d_eofnblk
11773         eval $setvar
11774         ;;
11775 *)
11776         echo "Using $hint value $eagain."
11777         echo "Your read() returns $rd_nodata when no data is present."
11778         case "$d_eofnblk" in
11779         "$define") echo "And you can see EOF because read() returns 0.";;
11780         "$undef") echo "But you can't see EOF status from read() returned value.";;
11781         *)
11782                 echo "(Assuming you can't see EOF status from read anyway.)"
11783                 d_eofnblk=$undef
11784                 ;;
11785         esac
11786         ;;
11787 esac
11788 $rm -f try try.* .out core head.c mtry
11789
11790 : see if _ptr and _cnt from stdio act std
11791 echo " "
11792
11793 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11794         echo "(Looks like you have stdio.h from BSD.)"
11795         case "$stdio_ptr" in
11796         '') stdio_ptr='((fp)->_p)'
11797                 ptr_lval=$define
11798                 ;;
11799         *)      ptr_lval=$d_stdio_ptr_lval;;
11800         esac
11801         case "$stdio_cnt" in
11802         '') stdio_cnt='((fp)->_r)'
11803                 cnt_lval=$define
11804                 ;;
11805         *)      cnt_lval=$d_stdio_cnt_lval;;
11806         esac
11807         case "$stdio_base" in
11808         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11809         esac
11810         case "$stdio_bufsiz" in
11811         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11812         esac
11813 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11814         echo "(Looks like you have stdio.h from Linux.)"
11815         case "$stdio_ptr" in
11816         '') stdio_ptr='((fp)->_IO_read_ptr)'
11817                 ptr_lval=$define
11818                 ;;
11819         *)      ptr_lval=$d_stdio_ptr_lval;;
11820         esac
11821         case "$stdio_cnt" in
11822         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11823                 cnt_lval=$undef
11824                 ;;
11825         *)      cnt_lval=$d_stdio_cnt_lval;;
11826         esac
11827         case "$stdio_base" in
11828         '') stdio_base='((fp)->_IO_read_base)';;
11829         esac
11830         case "$stdio_bufsiz" in
11831         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11832         esac
11833 else
11834         case "$stdio_ptr" in
11835         '') stdio_ptr='((fp)->_ptr)'
11836                 ptr_lval=$define
11837                 ;;
11838         *)      ptr_lval=$d_stdio_ptr_lval;;
11839         esac
11840         case "$stdio_cnt" in
11841         '') stdio_cnt='((fp)->_cnt)'
11842                 cnt_lval=$define
11843                 ;;
11844         *)      cnt_lval=$d_stdio_cnt_lval;;
11845         esac
11846         case "$stdio_base" in
11847         '') stdio_base='((fp)->_base)';;
11848         esac
11849         case "$stdio_bufsiz" in
11850         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11851         esac
11852 fi
11853
11854 : test whether _ptr and _cnt really work
11855 echo "Checking how std your stdio is..." >&4
11856 $cat >try.c <<EOP
11857 #include <stdio.h>
11858 #$i_stdlib I_STDLIB
11859 #ifdef I_STDLIB
11860 #include <stdlib.h>
11861 #endif
11862 #define FILE_ptr(fp)    $stdio_ptr
11863 #define FILE_cnt(fp)    $stdio_cnt
11864 int main() {
11865         FILE *fp = fopen("try.c", "r");
11866         char c = getc(fp);
11867         if (
11868                 18 <= FILE_cnt(fp) &&
11869                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11870         )
11871                 exit(0);
11872         exit(1);
11873 }
11874 EOP
11875 val="$undef"
11876 set try
11877 if eval $compile && $to try.c; then
11878         if $run ./try; then
11879                 echo "Your stdio acts pretty std."
11880                 val="$define"
11881         else
11882                 echo "Your stdio isn't very std."
11883         fi
11884 else
11885         echo "Your stdio doesn't appear very std."
11886 fi
11887 $rm -f try.c try
11888
11889 # glibc 2.2.90 and above apparently change stdio streams so Perl's
11890 # direct buffer manipulation no longer works.  The Configure tests
11891 # should be changed to correctly detect this, but until then,
11892 # the following check should at least let perl compile and run.
11893 # (This quick fix should be updated before 5.8.1.)
11894 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
11895 # A. Dougherty, June 3, 2002.
11896 case "$d_gnulibc" in
11897 $define)
11898         case "$gnulibc_version" in
11899         2.[01]*)  ;;
11900         2.2) ;;
11901         2.2.[0-9]) ;;
11902         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11903                 val="$undef"
11904                 ;;
11905         esac
11906         ;;
11907 esac
11908 set d_stdstdio
11909 eval $setvar
11910
11911 : Can _ptr be used as an lvalue?
11912 case "$d_stdstdio$ptr_lval" in
11913 $define$define) val=$define ;;
11914 *) val=$undef ;;
11915 esac
11916 set d_stdio_ptr_lval
11917 eval $setvar
11918
11919 : Can _cnt be used as an lvalue?
11920 case "$d_stdstdio$cnt_lval" in
11921 $define$define) val=$define ;;
11922 *) val=$undef ;;
11923 esac
11924 set d_stdio_cnt_lval
11925 eval $setvar
11926
11927
11928 : test whether setting _ptr sets _cnt as a side effect
11929 d_stdio_ptr_lval_sets_cnt="$undef"
11930 d_stdio_ptr_lval_nochange_cnt="$undef"
11931 case "$d_stdio_ptr_lval$d_stdstdio" in
11932 $define$define)
11933         echo "Checking to see what happens if we set the stdio ptr..." >&4
11934 $cat >try.c <<EOP
11935 #include <stdio.h>
11936 /* Can we scream? */
11937 /* Eat dust sed :-) */
11938 /* In the buffer space, no one can hear you scream. */
11939 #$i_stdlib I_STDLIB
11940 #ifdef I_STDLIB
11941 #include <stdlib.h>
11942 #endif
11943 #define FILE_ptr(fp)    $stdio_ptr
11944 #define FILE_cnt(fp)    $stdio_cnt
11945 #include <sys/types.h>
11946 int main() {
11947         FILE *fp = fopen("try.c", "r");
11948         int c;
11949         char *ptr;
11950         size_t cnt;
11951         if (!fp) {
11952             puts("Fail even to read");
11953             exit(1);
11954         }
11955         c = getc(fp); /* Read away the first # */
11956         if (c == EOF) {
11957             puts("Fail even to read");
11958             exit(1);
11959         }
11960         if (!(
11961                 18 <= FILE_cnt(fp) &&
11962                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11963         )) {
11964                 puts("Fail even to read");
11965                 exit (1);
11966         }
11967         ptr = (char*) FILE_ptr(fp);
11968         cnt = (size_t)FILE_cnt(fp);
11969
11970         FILE_ptr(fp) += 42;
11971
11972         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11973                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11974                 exit (1);
11975         }
11976         if (FILE_cnt(fp) <= 20) {
11977                 printf ("Fail (<20 chars to test)");
11978                 exit (1);
11979         }
11980         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11981                 puts("Fail compare");
11982                 exit (1);
11983         }
11984         if (cnt == FILE_cnt(fp)) {
11985                 puts("Pass_unchanged");
11986                 exit (0);
11987         }       
11988         if (FILE_cnt(fp) == (cnt - 42)) {
11989                 puts("Pass_changed");
11990                 exit (0);
11991         }
11992         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11993         return 1;
11994
11995 }
11996 EOP
11997         set try
11998         if eval $compile && $to try.c; then
11999                 case `$run ./try` in
12000                 Pass_changed)
12001                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12002                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12003                 Pass_unchanged)
12004                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12005                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12006                 Fail*)
12007                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12008                 *)
12009                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12010         esac
12011         else
12012                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12013         fi
12014         $rm -f try.c try
12015         ;;
12016 esac
12017
12018 : see if _base is also standard
12019 val="$undef"
12020 case "$d_stdstdio" in
12021 $define)
12022         $cat >try.c <<EOP
12023 #include <stdio.h>
12024 #$i_stdlib I_STDLIB
12025 #ifdef I_STDLIB
12026 #include <stdlib.h>
12027 #endif
12028 #define FILE_base(fp)   $stdio_base
12029 #define FILE_bufsiz(fp) $stdio_bufsiz
12030 int main() {
12031         FILE *fp = fopen("try.c", "r");
12032         char c = getc(fp);
12033         if (
12034                 19 <= FILE_bufsiz(fp) &&
12035                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12036         )
12037                 exit(0);
12038         exit(1);
12039 }
12040 EOP
12041         set try
12042         if eval $compile && $to try.c; then
12043                 if $run ./try; then
12044                         echo "And its _base field acts std."
12045                         val="$define"
12046                 else
12047                         echo "But its _base field isn't std."
12048                 fi
12049         else
12050                 echo "However, it seems to be lacking the _base field."
12051         fi
12052         $rm -f try.c try
12053         ;;
12054 esac
12055 set d_stdiobase
12056 eval $setvar
12057
12058 : see if fast_stdio exists
12059 val="$undef"
12060 case "$d_stdstdio:$d_stdio_ptr_lval" in
12061 "$define:$define")
12062         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12063         *$define*)
12064                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12065                 val="$define"
12066                 ;;
12067         esac
12068         ;;
12069 esac
12070 set d_faststdio
12071 eval $setvar
12072
12073
12074
12075 : see if fchdir exists
12076 set fchdir d_fchdir
12077 eval $inlibc
12078
12079 : see if fchmod exists
12080 set fchmod d_fchmod
12081 eval $inlibc
12082
12083 : see if fchown exists
12084 set fchown d_fchown
12085 eval $inlibc
12086
12087 : see if this is an fcntl system
12088 set fcntl d_fcntl
12089 eval $inlibc
12090
12091 echo " "
12092 : See if fcntl-based locking works.
12093 $cat >try.c <<EOCP
12094 #$i_stdlib I_STDLIB
12095 #ifdef I_STDLIB
12096 #include <stdlib.h>
12097 #endif
12098 #include <unistd.h>
12099 #include <fcntl.h>
12100 #include <signal.h>
12101 $signal_t blech(x) int x; { exit(3); }
12102 int main() {
12103 #if defined(F_SETLK) && defined(F_SETLKW)
12104      struct flock flock;
12105      int retval, fd;
12106      fd = open("try.c", O_RDONLY);
12107      flock.l_type = F_RDLCK;
12108      flock.l_whence = SEEK_SET;
12109      flock.l_start = flock.l_len = 0;
12110      signal(SIGALRM, blech);
12111      alarm(10);
12112      retval = fcntl(fd, F_SETLK, &flock);
12113      close(fd);
12114      (retval < 0 ? exit(2) : exit(0));
12115 #else
12116      exit(2);
12117 #endif
12118 }
12119 EOCP
12120 echo "Checking if fcntl-based file locking works... "
12121 case "$d_fcntl" in
12122 "$define")
12123         set try
12124         if eval $compile_ok; then
12125                 if $run ./try; then
12126                         echo "Yes, it seems to work."
12127                         val="$define"
12128                 else
12129                         echo "Nope, it didn't work."
12130                         val="$undef"
12131                         case "$?" in
12132                         3) $cat >&4 <<EOM
12133 ***
12134 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12135 *** This is (almost) impossible.
12136 *** If your NFS lock daemons are not feeling well, something like
12137 *** this may happen, please investigate.  Cannot continue, aborting.
12138 ***
12139 EOM
12140                                 exit 1
12141                                 ;;
12142                         esac
12143                 fi
12144         else
12145                 echo "I'm unable to compile the test program, so I'll assume not."
12146                 val="$undef"
12147         fi
12148         ;;
12149 *) val="$undef";
12150         echo "Nope, since you don't even have fcntl()."
12151         ;;
12152 esac
12153 set d_fcntl_can_lock
12154 eval $setvar
12155 $rm -f try*
12156
12157
12158 : check for fd_set items
12159 $cat <<EOM
12160
12161 Checking to see how well your C compiler handles fd_set and friends ...
12162 EOM
12163 $cat >try.c <<EOCP
12164 #$i_stdlib I_STDLIB
12165 #ifdef I_STDLIB
12166 #include <stdlib.h>
12167 #endif
12168 #$i_systime I_SYS_TIME
12169 #$i_sysselct I_SYS_SELECT
12170 #$d_socket HAS_SOCKET
12171 #include <sys/types.h>
12172 #ifdef HAS_SOCKET
12173 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12174 #endif
12175 #ifdef I_SYS_TIME
12176 #include <sys/time.h>
12177 #endif
12178 #ifdef I_SYS_SELECT
12179 #include <sys/select.h>
12180 #endif
12181 int main() {
12182         fd_set fds;
12183
12184 #ifdef TRYBITS
12185         if(fds.fds_bits);
12186 #endif
12187
12188 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12189         exit(0);
12190 #else
12191         exit(1);
12192 #endif
12193 }
12194 EOCP
12195 set try -DTRYBITS
12196 if eval $compile; then
12197         d_fds_bits="$define"
12198         d_fd_set="$define"
12199         echo "Well, your system knows about the normal fd_set typedef..." >&4
12200         if $run ./try; then
12201                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12202                 d_fd_macros="$define"
12203         else
12204                 $cat >&4 <<'EOM'
12205 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12206 EOM
12207                 d_fd_macros="$undef"
12208         fi
12209 else
12210         $cat <<'EOM'
12211 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12212 EOM
12213         set try
12214         if eval $compile; then
12215                 d_fds_bits="$undef"
12216                 d_fd_set="$define"
12217                 echo "Well, your system has some sort of fd_set available..." >&4
12218                 if $run ./try; then
12219                         echo "and you have the normal fd_set macros." >&4
12220                         d_fd_macros="$define"
12221                 else
12222                         $cat <<'EOM'
12223 but not the normal fd_set macros!  Gross!  More work for me...
12224 EOM
12225                         d_fd_macros="$undef"
12226                 fi
12227         else
12228         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12229                 d_fd_set="$undef"
12230                 d_fds_bits="$undef"
12231                 d_fd_macros="$undef"
12232         fi
12233 fi
12234 $rm -f try try.*
12235
12236 : see if fgetpos exists
12237 set fgetpos d_fgetpos
12238 eval $inlibc
12239
12240 : see if finite exists
12241 set finite d_finite
12242 eval $inlibc
12243
12244 : see if finitel exists
12245 set finitel d_finitel
12246 eval $inlibc
12247
12248 : see if flock exists
12249 set flock d_flock
12250 eval $inlibc
12251
12252 : see if prototype for flock is available
12253 echo " "
12254 set d_flockproto flock $i_sysfile sys/file.h
12255 eval $hasproto
12256
12257 : see if fork exists
12258 set fork d_fork
12259 eval $inlibc
12260
12261 : see if fp_class exists
12262 set fp_class d_fp_class
12263 eval $inlibc
12264
12265 : see if pathconf exists
12266 set pathconf d_pathconf
12267 eval $inlibc
12268
12269 : see if fpathconf exists
12270 set fpathconf d_fpathconf
12271 eval $inlibc
12272
12273 : see if fpclass exists
12274 set fpclass d_fpclass
12275 eval $inlibc
12276
12277 : see if fpclassify exists
12278 set fpclassify d_fpclassify
12279 eval $inlibc
12280
12281 : see if fpclassl exists
12282 set fpclassl d_fpclassl
12283 eval $inlibc
12284
12285
12286 : check for fpos64_t
12287 echo " "
12288 echo "Checking to see if you have fpos64_t..." >&4
12289 $cat >try.c <<EOCP
12290 #include <stdio.h>
12291 int main() { fpos64_t x = 7; }
12292 EOCP
12293 set try
12294 if eval $compile; then
12295         val="$define"
12296         echo "You have fpos64_t."
12297 else
12298         val="$undef"
12299         echo "You do not have fpos64_t."
12300         case "$fpossize" in
12301         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12302         esac
12303 fi
12304 $rm -f try.* try
12305 set d_fpos64_t
12306 eval $setvar
12307
12308 : see if frexpl exists
12309 set frexpl d_frexpl
12310 eval $inlibc
12311
12312 : see if this is a sys/param system
12313 set sys/param.h i_sysparam
12314 eval $inhdr
12315
12316 : see if this is a sys/mount.h system
12317 set sys/mount.h i_sysmount
12318 eval $inhdr
12319
12320
12321 echo " "
12322 echo "Checking to see if your system supports struct fs_data..." >&4
12323 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12324 eval $hasstruct
12325 case "$d_fs_data_s" in
12326 "$define")      echo "Yes, it does."   ;;
12327 *)              echo "No, it doesn't." ;;
12328 esac
12329
12330 : see if fseeko exists
12331 set fseeko d_fseeko
12332 eval $inlibc
12333 case "$longsize" in
12334 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12335 esac
12336
12337 : see if fsetpos exists
12338 set fsetpos d_fsetpos
12339 eval $inlibc
12340
12341
12342 : see if fstatfs exists
12343 set fstatfs d_fstatfs
12344 eval $inlibc
12345
12346
12347 : see if statvfs exists
12348 set statvfs d_statvfs
12349 eval $inlibc
12350
12351 : see if fstatvfs exists
12352 set fstatvfs d_fstatvfs
12353 eval $inlibc
12354
12355
12356 : see if fsync exists
12357 set fsync d_fsync
12358 eval $inlibc
12359
12360 : see if ftello exists
12361 set ftello d_ftello
12362 eval $inlibc
12363 case "$longsize" in
12364 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12365 esac
12366
12367 : see if getcwd exists
12368 set getcwd d_getcwd
12369 eval $inlibc
12370
12371 : see if getespwnam exists
12372 set getespwnam d_getespwnam
12373 eval $inlibc
12374
12375
12376 : see if getfsstat exists
12377 set getfsstat d_getfsstat
12378 eval $inlibc
12379
12380 : see if getgrent exists
12381 set getgrent d_getgrent
12382 eval $inlibc
12383
12384 : see if getgrent_r exists
12385 set getgrent_r d_getgrent_r
12386 eval $inlibc
12387 case "$d_getgrent_r" in
12388 "$define")
12389         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12390         case "$d_getgrent_r_proto:$usethreads" in
12391         ":define")      d_getgrent_r_proto=define
12392                 set d_getgrent_r_proto getgrent_r $hdrs
12393                 eval $hasproto ;;
12394         *)      ;;
12395         esac
12396         case "$d_getgrent_r_proto" in
12397         define)
12398         case "$getgrent_r_proto" in
12399         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12400         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12401         esac
12402         case "$getgrent_r_proto" in
12403         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12404         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12405         esac
12406         case "$getgrent_r_proto" in
12407         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12408         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12409         esac
12410         case "$getgrent_r_proto" in
12411         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12412         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12413         esac
12414         case "$getgrent_r_proto" in
12415         ''|0) try='int getgrent_r(struct group*, char*, int);'
12416         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12417         esac
12418         case "$getgrent_r_proto" in
12419         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12420         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12421         esac
12422         case "$getgrent_r_proto" in
12423         ''|0)   d_getgrent_r=undef
12424                 getgrent_r_proto=0
12425                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12426         * )     case "$getgrent_r_proto" in
12427                 REENTRANT_PROTO*) ;;
12428                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12429                 esac
12430                 echo "Prototype: $try" ;;
12431         esac
12432         ;;
12433         *)      case "$usethreads" in
12434                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12435                 esac
12436                 d_getgrent_r=undef
12437                 getgrent_r_proto=0
12438                 ;;
12439         esac
12440         ;;
12441 *)      getgrent_r_proto=0
12442         ;;
12443 esac
12444
12445 : see if getgrgid_r exists
12446 set getgrgid_r d_getgrgid_r
12447 eval $inlibc
12448 case "$d_getgrgid_r" in
12449 "$define")
12450         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12451         case "$d_getgrgid_r_proto:$usethreads" in
12452         ":define")      d_getgrgid_r_proto=define
12453                 set d_getgrgid_r_proto getgrgid_r $hdrs
12454                 eval $hasproto ;;
12455         *)      ;;
12456         esac
12457         case "$d_getgrgid_r_proto" in
12458         define)
12459         case "$getgrgid_r_proto" in
12460         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12461         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12462         esac
12463         case "$getgrgid_r_proto" in
12464         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12465         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12466         esac
12467         case "$getgrgid_r_proto" in
12468         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12469         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12470         esac
12471         case "$getgrgid_r_proto" in
12472         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12473         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12474         esac
12475         case "$getgrgid_r_proto" in
12476         ''|0)   d_getgrgid_r=undef
12477                 getgrgid_r_proto=0
12478                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12479         * )     case "$getgrgid_r_proto" in
12480                 REENTRANT_PROTO*) ;;
12481                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12482                 esac
12483                 echo "Prototype: $try" ;;
12484         esac
12485         ;;
12486         *)      case "$usethreads" in
12487                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12488                 esac
12489                 d_getgrgid_r=undef
12490                 getgrgid_r_proto=0
12491                 ;;
12492         esac
12493         ;;
12494 *)      getgrgid_r_proto=0
12495         ;;
12496 esac
12497
12498 : see if getgrnam_r exists
12499 set getgrnam_r d_getgrnam_r
12500 eval $inlibc
12501 case "$d_getgrnam_r" in
12502 "$define")
12503         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12504         case "$d_getgrnam_r_proto:$usethreads" in
12505         ":define")      d_getgrnam_r_proto=define
12506                 set d_getgrnam_r_proto getgrnam_r $hdrs
12507                 eval $hasproto ;;
12508         *)      ;;
12509         esac
12510         case "$d_getgrnam_r_proto" in
12511         define)
12512         case "$getgrnam_r_proto" in
12513         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12514         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12515         esac
12516         case "$getgrnam_r_proto" in
12517         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12518         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12519         esac
12520         case "$getgrnam_r_proto" in
12521         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12522         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12523         esac
12524         case "$getgrnam_r_proto" in
12525         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12526         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12527         esac
12528         case "$getgrnam_r_proto" in
12529         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12530         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12531         esac
12532         case "$getgrnam_r_proto" in
12533         ''|0)   d_getgrnam_r=undef
12534                 getgrnam_r_proto=0
12535                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12536         * )     case "$getgrnam_r_proto" in
12537                 REENTRANT_PROTO*) ;;
12538                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12539                 esac
12540                 echo "Prototype: $try" ;;
12541         esac
12542         ;;
12543         *)      case "$usethreads" in
12544                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12545                 esac
12546                 d_getgrnam_r=undef
12547                 getgrnam_r_proto=0
12548                 ;;
12549         esac
12550         ;;
12551 *)      getgrnam_r_proto=0
12552         ;;
12553 esac
12554
12555 : see if gethostbyaddr exists
12556 set gethostbyaddr d_gethbyaddr
12557 eval $inlibc
12558
12559 : see if gethostbyname exists
12560 set gethostbyname d_gethbyname
12561 eval $inlibc
12562
12563 : see if gethostent exists
12564 set gethostent d_gethent
12565 eval $inlibc
12566
12567 : see how we will look up host name
12568 echo " "
12569 call=''
12570 if set gethostname val -f d_gethname; eval $csym; $val; then
12571         echo 'gethostname() found.' >&4
12572         d_gethname="$define"
12573         call=gethostname
12574 fi
12575 if set uname val -f d_uname; eval $csym; $val; then
12576         if ./xenix; then
12577                 $cat <<'EOM'
12578 uname() was found, but you're running xenix, and older versions of xenix
12579 have a broken uname(). If you don't really know whether your xenix is old
12580 enough to have a broken system call, use the default answer.
12581
12582 EOM
12583                 dflt=y
12584                 case "$d_uname" in
12585                 "$define") dflt=n;;
12586                 esac
12587                 rp='Is your uname() broken?'
12588                 . ./myread
12589                 case "$ans" in
12590                 n*) d_uname="$define"; call=uname;;
12591                 esac
12592         else
12593                 echo 'uname() found.' >&4
12594                 d_uname="$define"
12595                 case "$call" in
12596                 '') call=uname ;;
12597                 esac
12598         fi
12599 fi
12600 case "$d_gethname" in
12601 '') d_gethname="$undef";;
12602 esac
12603 case "$d_uname" in
12604 '') d_uname="$undef";;
12605 esac
12606 case "$d_uname$d_gethname" in
12607 *define*)
12608         dflt=n
12609         cat <<EOM
12610  
12611 Every now and then someone has a $call() that lies about the hostname
12612 but can't be fixed for political or economic reasons.  If you wish, I can
12613 pretend $call() isn't there and maybe compute hostname at run-time
12614 thanks to the '$phostname' command.
12615
12616 EOM
12617         rp="Shall I ignore $call() from now on?"
12618         . ./myread
12619         case "$ans" in
12620         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12621         esac;;
12622 esac
12623 case "$phostname" in
12624 '') aphostname='';;
12625 *) case "$aphostname" in
12626         /*) ;;
12627         *) set X $phostname
12628                 shift
12629                 file=$1
12630                 shift
12631                 file=`./loc $file $file $pth`
12632                 aphostname=`echo $file $*`
12633                 ;;
12634         esac
12635         ;;
12636 esac
12637 case "$d_uname$d_gethname" in
12638 *define*) ;;
12639 *)
12640         case "$phostname" in
12641         '')
12642                 echo "There will be no way for $package to get your hostname." >&4;;
12643         *)
12644         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12645                 ;;
12646         esac;;
12647 esac
12648 case "$d_phostname" in
12649 '') d_phostname="$undef";;
12650 esac
12651
12652 : see if gethostbyaddr_r exists
12653 set gethostbyaddr_r d_gethostbyaddr_r
12654 eval $inlibc
12655 case "$d_gethostbyaddr_r" in
12656 "$define")
12657         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12658         case "$d_gethostbyaddr_r_proto:$usethreads" in
12659         ":define")      d_gethostbyaddr_r_proto=define
12660                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12661                 eval $hasproto ;;
12662         *)      ;;
12663         esac
12664         case "$d_gethostbyaddr_r_proto" in
12665         define)
12666         case "$gethostbyaddr_r_proto" in
12667         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12668         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12669         esac
12670         case "$gethostbyaddr_r_proto" in
12671         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12672         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12673         esac
12674         case "$gethostbyaddr_r_proto" in
12675         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12676         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12677         esac
12678         case "$gethostbyaddr_r_proto" in
12679         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12680         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12681         esac
12682         case "$gethostbyaddr_r_proto" in
12683         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12684         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12685         esac
12686         case "$gethostbyaddr_r_proto" in
12687         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12688         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12689         esac
12690         case "$gethostbyaddr_r_proto" in
12691         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12692         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12693         esac
12694         case "$gethostbyaddr_r_proto" in
12695         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12696         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12697         esac
12698         case "$gethostbyaddr_r_proto" in
12699         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12700         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12701         esac
12702         case "$gethostbyaddr_r_proto" in
12703         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12704         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12705         esac
12706         case "$gethostbyaddr_r_proto" in
12707         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12708         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12709         esac
12710         case "$gethostbyaddr_r_proto" in
12711         ''|0)   d_gethostbyaddr_r=undef
12712                 gethostbyaddr_r_proto=0
12713                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12714         * )     case "$gethostbyaddr_r_proto" in
12715                 REENTRANT_PROTO*) ;;
12716                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12717                 esac
12718                 echo "Prototype: $try" ;;
12719         esac
12720         ;;
12721         *)      case "$usethreads" in
12722                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12723                 esac
12724                 d_gethostbyaddr_r=undef
12725                 gethostbyaddr_r_proto=0
12726                 ;;
12727         esac
12728         ;;
12729 *)      gethostbyaddr_r_proto=0
12730         ;;
12731 esac
12732
12733 : see if gethostbyname_r exists
12734 set gethostbyname_r d_gethostbyname_r
12735 eval $inlibc
12736 case "$d_gethostbyname_r" in
12737 "$define")
12738         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12739         case "$d_gethostbyname_r_proto:$usethreads" in
12740         ":define")      d_gethostbyname_r_proto=define
12741                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12742                 eval $hasproto ;;
12743         *)      ;;
12744         esac
12745         case "$d_gethostbyname_r_proto" in
12746         define)
12747         case "$gethostbyname_r_proto" in
12748         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12749         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12750         esac
12751         case "$gethostbyname_r_proto" in
12752         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12753         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12754         esac
12755         case "$gethostbyname_r_proto" in
12756         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12757         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12758         esac
12759         case "$gethostbyname_r_proto" in
12760         ''|0)   d_gethostbyname_r=undef
12761                 gethostbyname_r_proto=0
12762                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12763         * )     case "$gethostbyname_r_proto" in
12764                 REENTRANT_PROTO*) ;;
12765                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12766                 esac
12767                 echo "Prototype: $try" ;;
12768         esac
12769         ;;
12770         *)      case "$usethreads" in
12771                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12772                 esac
12773                 d_gethostbyname_r=undef
12774                 gethostbyname_r_proto=0
12775                 ;;
12776         esac
12777         ;;
12778 *)      gethostbyname_r_proto=0
12779         ;;
12780 esac
12781
12782 : see if gethostent_r exists
12783 set gethostent_r d_gethostent_r
12784 eval $inlibc
12785 case "$d_gethostent_r" in
12786 "$define")
12787         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12788         case "$d_gethostent_r_proto:$usethreads" in
12789         ":define")      d_gethostent_r_proto=define
12790                 set d_gethostent_r_proto gethostent_r $hdrs
12791                 eval $hasproto ;;
12792         *)      ;;
12793         esac
12794         case "$d_gethostent_r_proto" in
12795         define)
12796         case "$gethostent_r_proto" in
12797         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12798         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12799         esac
12800         case "$gethostent_r_proto" in
12801         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12802         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12803         esac
12804         case "$gethostent_r_proto" in
12805         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12806         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12807         esac
12808         case "$gethostent_r_proto" in
12809         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12810         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12811         esac
12812         case "$gethostent_r_proto" in
12813         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12814         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12815         esac
12816         case "$gethostent_r_proto" in
12817         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12818         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12819         esac
12820         case "$gethostent_r_proto" in
12821         ''|0)   d_gethostent_r=undef
12822                 gethostent_r_proto=0
12823                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12824         * )     case "$gethostent_r_proto" in
12825                 REENTRANT_PROTO*) ;;
12826                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12827                 esac
12828                 echo "Prototype: $try" ;;
12829         esac
12830         ;;
12831         *)      case "$usethreads" in
12832                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12833                 esac
12834                 d_gethostent_r=undef
12835                 gethostent_r_proto=0
12836                 ;;
12837         esac
12838         ;;
12839 *)      gethostent_r_proto=0
12840         ;;
12841 esac
12842
12843 : see if prototypes for various gethostxxx netdb.h functions are available
12844 echo " "
12845 set d_gethostprotos gethostent $i_netdb netdb.h
12846 eval $hasproto
12847
12848 : see if getitimer exists
12849 set getitimer d_getitimer
12850 eval $inlibc
12851
12852 : see if getlogin exists
12853 set getlogin d_getlogin
12854 eval $inlibc
12855
12856 : see if getlogin_r exists
12857 set getlogin_r d_getlogin_r
12858 eval $inlibc
12859 case "$d_getlogin_r" in
12860 "$define")
12861         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12862         case "$d_getlogin_r_proto:$usethreads" in
12863         ":define")      d_getlogin_r_proto=define
12864                 set d_getlogin_r_proto getlogin_r $hdrs
12865                 eval $hasproto ;;
12866         *)      ;;
12867         esac
12868         case "$d_getlogin_r_proto" in
12869         define)
12870         case "$getlogin_r_proto" in
12871         ''|0) try='int getlogin_r(char*, size_t);'
12872         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12873         esac
12874         case "$getlogin_r_proto" in
12875         ''|0) try='int getlogin_r(char*, int);'
12876         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12877         esac
12878         case "$getlogin_r_proto" in
12879         ''|0) try='char* getlogin_r(char*, size_t);'
12880         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12881         esac
12882         case "$getlogin_r_proto" in
12883         ''|0) try='char* getlogin_r(char*, int);'
12884         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12885         esac
12886         case "$getlogin_r_proto" in
12887         ''|0)   d_getlogin_r=undef
12888                 getlogin_r_proto=0
12889                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12890         * )     case "$getlogin_r_proto" in
12891                 REENTRANT_PROTO*) ;;
12892                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12893                 esac
12894                 echo "Prototype: $try" ;;
12895         esac
12896         ;;
12897         *)      case "$usethreads" in
12898                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12899                 esac
12900                 d_getlogin_r=undef
12901                 getlogin_r_proto=0
12902                 ;;
12903         esac
12904         ;;
12905 *)      getlogin_r_proto=0
12906         ;;
12907 esac
12908
12909 : see if getmnt exists
12910 set getmnt d_getmnt
12911 eval $inlibc
12912
12913 : see if getmntent exists
12914 set getmntent d_getmntent
12915 eval $inlibc
12916
12917 : see if getnetbyaddr exists
12918 set getnetbyaddr d_getnbyaddr
12919 eval $inlibc
12920
12921 : see if getnetbyname exists
12922 set getnetbyname d_getnbyname
12923 eval $inlibc
12924
12925 : see if getnetent exists
12926 set getnetent d_getnent
12927 eval $inlibc
12928
12929 : see if getnetbyaddr_r exists
12930 set getnetbyaddr_r d_getnetbyaddr_r
12931 eval $inlibc
12932 case "$d_getnetbyaddr_r" in
12933 "$define")
12934         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12935         case "$d_getnetbyaddr_r_proto:$usethreads" in
12936         ":define")      d_getnetbyaddr_r_proto=define
12937                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12938                 eval $hasproto ;;
12939         *)      ;;
12940         esac
12941         case "$d_getnetbyaddr_r_proto" in
12942         define)
12943         case "$getnetbyaddr_r_proto" in
12944         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12945         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12946         esac
12947         case "$getnetbyaddr_r_proto" in
12948         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12949         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12950         esac
12951         case "$getnetbyaddr_r_proto" in
12952         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12953         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12954         esac
12955         case "$getnetbyaddr_r_proto" in
12956         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12957         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12958         esac
12959         case "$getnetbyaddr_r_proto" in
12960         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12961         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12962         esac
12963         case "$getnetbyaddr_r_proto" in
12964         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12965         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12966         esac
12967         case "$getnetbyaddr_r_proto" in
12968         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12969         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12970         esac
12971         case "$getnetbyaddr_r_proto" in
12972         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12973         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12974         esac
12975         case "$getnetbyaddr_r_proto" in
12976         ''|0)   d_getnetbyaddr_r=undef
12977                 getnetbyaddr_r_proto=0
12978                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12979         * )     case "$getnetbyaddr_r_proto" in
12980                 REENTRANT_PROTO*) ;;
12981                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12982                 esac
12983                 echo "Prototype: $try" ;;
12984         esac
12985         ;;
12986         *)      case "$usethreads" in
12987                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12988                 esac
12989                 d_getnetbyaddr_r=undef
12990                 getnetbyaddr_r_proto=0
12991                 ;;
12992         esac
12993         ;;
12994 *)      getnetbyaddr_r_proto=0
12995         ;;
12996 esac
12997
12998 : see if getnetbyname_r exists
12999 set getnetbyname_r d_getnetbyname_r
13000 eval $inlibc
13001 case "$d_getnetbyname_r" in
13002 "$define")
13003         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13004         case "$d_getnetbyname_r_proto:$usethreads" in
13005         ":define")      d_getnetbyname_r_proto=define
13006                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
13007                 eval $hasproto ;;
13008         *)      ;;
13009         esac
13010         case "$d_getnetbyname_r_proto" in
13011         define)
13012         case "$getnetbyname_r_proto" in
13013         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
13014         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
13015         esac
13016         case "$getnetbyname_r_proto" in
13017         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13018         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13019         esac
13020         case "$getnetbyname_r_proto" in
13021         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13022         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13023         esac
13024         case "$getnetbyname_r_proto" in
13025         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13026         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13027         esac
13028         case "$getnetbyname_r_proto" in
13029         ''|0)   d_getnetbyname_r=undef
13030                 getnetbyname_r_proto=0
13031                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13032         * )     case "$getnetbyname_r_proto" in
13033                 REENTRANT_PROTO*) ;;
13034                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13035                 esac
13036                 echo "Prototype: $try" ;;
13037         esac
13038         ;;
13039         *)      case "$usethreads" in
13040                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13041                 esac
13042                 d_getnetbyname_r=undef
13043                 getnetbyname_r_proto=0
13044                 ;;
13045         esac
13046         ;;
13047 *)      getnetbyname_r_proto=0
13048         ;;
13049 esac
13050
13051 : see if getnetent_r exists
13052 set getnetent_r d_getnetent_r
13053 eval $inlibc
13054 case "$d_getnetent_r" in
13055 "$define")
13056         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13057         case "$d_getnetent_r_proto:$usethreads" in
13058         ":define")      d_getnetent_r_proto=define
13059                 set d_getnetent_r_proto getnetent_r $hdrs
13060                 eval $hasproto ;;
13061         *)      ;;
13062         esac
13063         case "$d_getnetent_r_proto" in
13064         define)
13065         case "$getnetent_r_proto" in
13066         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13067         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13068         esac
13069         case "$getnetent_r_proto" in
13070         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13071         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13072         esac
13073         case "$getnetent_r_proto" in
13074         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13075         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13076         esac
13077         case "$getnetent_r_proto" in
13078         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13079         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13080         esac
13081         case "$getnetent_r_proto" in
13082         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13083         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13084         esac
13085         case "$getnetent_r_proto" in
13086         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13087         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13088         esac
13089         case "$getnetent_r_proto" in
13090         ''|0)   d_getnetent_r=undef
13091                 getnetent_r_proto=0
13092                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13093         * )     case "$getnetent_r_proto" in
13094                 REENTRANT_PROTO*) ;;
13095                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13096                 esac
13097                 echo "Prototype: $try" ;;
13098         esac
13099         ;;
13100         *)      case "$usethreads" in
13101                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13102                 esac
13103                 d_getnetent_r=undef
13104                 getnetent_r_proto=0
13105                 ;;
13106         esac
13107         ;;
13108 *)      getnetent_r_proto=0
13109         ;;
13110 esac
13111
13112 : see if prototypes for various getnetxxx netdb.h functions are available
13113 echo " "
13114 set d_getnetprotos getnetent $i_netdb netdb.h
13115 eval $hasproto
13116
13117 : see if getpagesize exists
13118 set getpagesize d_getpagsz
13119 eval $inlibc
13120
13121
13122 : see if getprotobyname exists
13123 set getprotobyname d_getpbyname
13124 eval $inlibc
13125
13126 : see if getprotobynumber exists
13127 set getprotobynumber d_getpbynumber
13128 eval $inlibc
13129
13130 : see if getprotoent exists
13131 set getprotoent d_getpent
13132 eval $inlibc
13133
13134 : see if getpgid exists
13135 set getpgid d_getpgid
13136 eval $inlibc
13137
13138 : see if getpgrp2 exists
13139 set getpgrp2 d_getpgrp2
13140 eval $inlibc
13141
13142 : see if getppid exists
13143 set getppid d_getppid
13144 eval $inlibc
13145
13146 : see if getpriority exists
13147 set getpriority d_getprior
13148 eval $inlibc
13149
13150 : see if getprotobyname_r exists
13151 set getprotobyname_r d_getprotobyname_r
13152 eval $inlibc
13153 case "$d_getprotobyname_r" in
13154 "$define")
13155         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13156         case "$d_getprotobyname_r_proto:$usethreads" in
13157         ":define")      d_getprotobyname_r_proto=define
13158                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13159                 eval $hasproto ;;
13160         *)      ;;
13161         esac
13162         case "$d_getprotobyname_r_proto" in
13163         define)
13164         case "$getprotobyname_r_proto" in
13165         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13166         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13167         esac
13168         case "$getprotobyname_r_proto" in
13169         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13170         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13171         esac
13172         case "$getprotobyname_r_proto" in
13173         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13174         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13175         esac
13176         case "$getprotobyname_r_proto" in
13177         ''|0)   d_getprotobyname_r=undef
13178                 getprotobyname_r_proto=0
13179                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13180         * )     case "$getprotobyname_r_proto" in
13181                 REENTRANT_PROTO*) ;;
13182                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13183                 esac
13184                 echo "Prototype: $try" ;;
13185         esac
13186         ;;
13187         *)      case "$usethreads" in
13188                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13189                 esac
13190                 d_getprotobyname_r=undef
13191                 getprotobyname_r_proto=0
13192                 ;;
13193         esac
13194         ;;
13195 *)      getprotobyname_r_proto=0
13196         ;;
13197 esac
13198
13199 : see if getprotobynumber_r exists
13200 set getprotobynumber_r d_getprotobynumber_r
13201 eval $inlibc
13202 case "$d_getprotobynumber_r" in
13203 "$define")
13204         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13205         case "$d_getprotobynumber_r_proto:$usethreads" in
13206         ":define")      d_getprotobynumber_r_proto=define
13207                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13208                 eval $hasproto ;;
13209         *)      ;;
13210         esac
13211         case "$d_getprotobynumber_r_proto" in
13212         define)
13213         case "$getprotobynumber_r_proto" in
13214         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13215         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13216         esac
13217         case "$getprotobynumber_r_proto" in
13218         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13219         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13220         esac
13221         case "$getprotobynumber_r_proto" in
13222         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13223         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13224         esac
13225         case "$getprotobynumber_r_proto" in
13226         ''|0)   d_getprotobynumber_r=undef
13227                 getprotobynumber_r_proto=0
13228                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13229         * )     case "$getprotobynumber_r_proto" in
13230                 REENTRANT_PROTO*) ;;
13231                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13232                 esac
13233                 echo "Prototype: $try" ;;
13234         esac
13235         ;;
13236         *)      case "$usethreads" in
13237                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13238                 esac
13239                 d_getprotobynumber_r=undef
13240                 getprotobynumber_r_proto=0
13241                 ;;
13242         esac
13243         ;;
13244 *)      getprotobynumber_r_proto=0
13245         ;;
13246 esac
13247
13248 : see if getprotoent_r exists
13249 set getprotoent_r d_getprotoent_r
13250 eval $inlibc
13251 case "$d_getprotoent_r" in
13252 "$define")
13253         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13254         case "$d_getprotoent_r_proto:$usethreads" in
13255         ":define")      d_getprotoent_r_proto=define
13256                 set d_getprotoent_r_proto getprotoent_r $hdrs
13257                 eval $hasproto ;;
13258         *)      ;;
13259         esac
13260         case "$d_getprotoent_r_proto" in
13261         define)
13262         case "$getprotoent_r_proto" in
13263         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13264         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13265         esac
13266         case "$getprotoent_r_proto" in
13267         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13268         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13269         esac
13270         case "$getprotoent_r_proto" in
13271         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13272         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13273         esac
13274         case "$getprotoent_r_proto" in
13275         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13276         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13277         esac
13278         case "$getprotoent_r_proto" in
13279         ''|0)   d_getprotoent_r=undef
13280                 getprotoent_r_proto=0
13281                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13282         * )     case "$getprotoent_r_proto" in
13283                 REENTRANT_PROTO*) ;;
13284                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13285                 esac
13286                 echo "Prototype: $try" ;;
13287         esac
13288         ;;
13289         *)      case "$usethreads" in
13290                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13291                 esac
13292                 d_getprotoent_r=undef
13293                 getprotoent_r_proto=0
13294                 ;;
13295         esac
13296         ;;
13297 *)      getprotoent_r_proto=0
13298         ;;
13299 esac
13300
13301 : see if prototypes for various getprotoxxx netdb.h functions are available
13302 echo " "
13303 set d_getprotoprotos getprotoent $i_netdb netdb.h
13304 eval $hasproto
13305
13306 : see if getprpwnam exists
13307 set getprpwnam d_getprpwnam
13308 eval $inlibc
13309
13310 : see if getpwent exists
13311 set getpwent d_getpwent
13312 eval $inlibc
13313
13314 : see if getpwent_r exists
13315 set getpwent_r d_getpwent_r
13316 eval $inlibc
13317 case "$d_getpwent_r" in
13318 "$define")
13319         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13320         case "$d_getpwent_r_proto:$usethreads" in
13321         ":define")      d_getpwent_r_proto=define
13322                 set d_getpwent_r_proto getpwent_r $hdrs
13323                 eval $hasproto ;;
13324         *)      ;;
13325         esac
13326         case "$d_getpwent_r_proto" in
13327         define)
13328         case "$getpwent_r_proto" in
13329         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13330         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13331         esac
13332         case "$getpwent_r_proto" in
13333         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13334         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13335         esac
13336         case "$getpwent_r_proto" in
13337         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13338         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13339         esac
13340         case "$getpwent_r_proto" in
13341         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13342         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13343         esac
13344         case "$getpwent_r_proto" in
13345         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13346         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13347         esac
13348         case "$getpwent_r_proto" in
13349         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13350         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13351         esac
13352         case "$getpwent_r_proto" in
13353         ''|0)   d_getpwent_r=undef
13354                 getpwent_r_proto=0
13355                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13356         * )     case "$getpwent_r_proto" in
13357                 REENTRANT_PROTO*) ;;
13358                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13359                 esac
13360                 echo "Prototype: $try" ;;
13361         esac
13362         ;;
13363         *)      case "$usethreads" in
13364                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13365                 esac
13366                 d_getpwent_r=undef
13367                 getpwent_r_proto=0
13368                 ;;
13369         esac
13370         ;;
13371 *)      getpwent_r_proto=0
13372         ;;
13373 esac
13374
13375 : see if getpwnam_r exists
13376 set getpwnam_r d_getpwnam_r
13377 eval $inlibc
13378 case "$d_getpwnam_r" in
13379 "$define")
13380         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13381         case "$d_getpwnam_r_proto:$usethreads" in
13382         ":define")      d_getpwnam_r_proto=define
13383                 set d_getpwnam_r_proto getpwnam_r $hdrs
13384                 eval $hasproto ;;
13385         *)      ;;
13386         esac
13387         case "$d_getpwnam_r_proto" in
13388         define)
13389         case "$getpwnam_r_proto" in
13390         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13391         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13392         esac
13393         case "$getpwnam_r_proto" in
13394         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13395         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13396         esac
13397         case "$getpwnam_r_proto" in
13398         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13399         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13400         esac
13401         case "$getpwnam_r_proto" in
13402         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13403         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13404         esac
13405         case "$getpwnam_r_proto" in
13406         ''|0)   d_getpwnam_r=undef
13407                 getpwnam_r_proto=0
13408                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13409         * )     case "$getpwnam_r_proto" in
13410                 REENTRANT_PROTO*) ;;
13411                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13412                 esac
13413                 echo "Prototype: $try" ;;
13414         esac
13415         ;;
13416         *)      case "$usethreads" in
13417                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13418                 esac
13419                 d_getpwnam_r=undef
13420                 getpwnam_r_proto=0
13421                 ;;
13422         esac
13423         ;;
13424 *)      getpwnam_r_proto=0
13425         ;;
13426 esac
13427
13428 : see if getpwuid_r exists
13429 set getpwuid_r d_getpwuid_r
13430 eval $inlibc
13431 case "$d_getpwuid_r" in
13432 "$define")
13433         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13434         case "$d_getpwuid_r_proto:$usethreads" in
13435         ":define")      d_getpwuid_r_proto=define
13436                 set d_getpwuid_r_proto getpwuid_r $hdrs
13437                 eval $hasproto ;;
13438         *)      ;;
13439         esac
13440         case "$d_getpwuid_r_proto" in
13441         define)
13442         case "$getpwuid_r_proto" in
13443         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13444         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13445         esac
13446         case "$getpwuid_r_proto" in
13447         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13448         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13449         esac
13450         case "$getpwuid_r_proto" in
13451         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13452         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13453         esac
13454         case "$getpwuid_r_proto" in
13455         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13456         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13457         esac
13458         case "$getpwuid_r_proto" in
13459         ''|0)   d_getpwuid_r=undef
13460                 getpwuid_r_proto=0
13461                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13462         * )     case "$getpwuid_r_proto" in
13463                 REENTRANT_PROTO*) ;;
13464                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13465                 esac
13466                 echo "Prototype: $try" ;;
13467         esac
13468         ;;
13469         *)      case "$usethreads" in
13470                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13471                 esac
13472                 d_getpwuid_r=undef
13473                 getpwuid_r_proto=0
13474                 ;;
13475         esac
13476         ;;
13477 *)      getpwuid_r_proto=0
13478         ;;
13479 esac
13480
13481
13482 : see if getservbyname exists
13483 set getservbyname d_getsbyname
13484 eval $inlibc
13485
13486 : see if getservbyport exists
13487 set getservbyport d_getsbyport
13488 eval $inlibc
13489
13490 : see if getservent exists
13491 set getservent d_getsent
13492 eval $inlibc
13493
13494 : see if getservbyname_r exists
13495 set getservbyname_r d_getservbyname_r
13496 eval $inlibc
13497 case "$d_getservbyname_r" in
13498 "$define")
13499         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13500         case "$d_getservbyname_r_proto:$usethreads" in
13501         ":define")      d_getservbyname_r_proto=define
13502                 set d_getservbyname_r_proto getservbyname_r $hdrs
13503                 eval $hasproto ;;
13504         *)      ;;
13505         esac
13506         case "$d_getservbyname_r_proto" in
13507         define)
13508         case "$getservbyname_r_proto" in
13509         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13510         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13511         esac
13512         case "$getservbyname_r_proto" in
13513         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13514         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13515         esac
13516         case "$getservbyname_r_proto" in
13517         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13518         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13519         esac
13520         case "$getservbyname_r_proto" in
13521         ''|0)   d_getservbyname_r=undef
13522                 getservbyname_r_proto=0
13523                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13524         * )     case "$getservbyname_r_proto" in
13525                 REENTRANT_PROTO*) ;;
13526                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13527                 esac
13528                 echo "Prototype: $try" ;;
13529         esac
13530         ;;
13531         *)      case "$usethreads" in
13532                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13533                 esac
13534                 d_getservbyname_r=undef
13535                 getservbyname_r_proto=0
13536                 ;;
13537         esac
13538         ;;
13539 *)      getservbyname_r_proto=0
13540         ;;
13541 esac
13542
13543 : see if getservbyport_r exists
13544 set getservbyport_r d_getservbyport_r
13545 eval $inlibc
13546 case "$d_getservbyport_r" in
13547 "$define")
13548         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13549         case "$d_getservbyport_r_proto:$usethreads" in
13550         ":define")      d_getservbyport_r_proto=define
13551                 set d_getservbyport_r_proto getservbyport_r $hdrs
13552                 eval $hasproto ;;
13553         *)      ;;
13554         esac
13555         case "$d_getservbyport_r_proto" in
13556         define)
13557         case "$getservbyport_r_proto" in
13558         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13559         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13560         esac
13561         case "$getservbyport_r_proto" in
13562         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13563         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13564         esac
13565         case "$getservbyport_r_proto" in
13566         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13567         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13568         esac
13569         case "$getservbyport_r_proto" in
13570         ''|0)   d_getservbyport_r=undef
13571                 getservbyport_r_proto=0
13572                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13573         * )     case "$getservbyport_r_proto" in
13574                 REENTRANT_PROTO*) ;;
13575                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13576                 esac
13577                 echo "Prototype: $try" ;;
13578         esac
13579         ;;
13580         *)      case "$usethreads" in
13581                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13582                 esac
13583                 d_getservbyport_r=undef
13584                 getservbyport_r_proto=0
13585                 ;;
13586         esac
13587         ;;
13588 *)      getservbyport_r_proto=0
13589         ;;
13590 esac
13591
13592 : see if getservent_r exists
13593 set getservent_r d_getservent_r
13594 eval $inlibc
13595 case "$d_getservent_r" in
13596 "$define")
13597         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13598         case "$d_getservent_r_proto:$usethreads" in
13599         ":define")      d_getservent_r_proto=define
13600                 set d_getservent_r_proto getservent_r $hdrs
13601                 eval $hasproto ;;
13602         *)      ;;
13603         esac
13604         case "$d_getservent_r_proto" in
13605         define)
13606         case "$getservent_r_proto" in
13607         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13608         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13609         esac
13610         case "$getservent_r_proto" in
13611         ''|0) try='int getservent_r(struct servent*, char*, int);'
13612         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13613         esac
13614         case "$getservent_r_proto" in
13615         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13616         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13617         esac
13618         case "$getservent_r_proto" in
13619         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13620         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13621         esac
13622         case "$getservent_r_proto" in
13623         ''|0)   d_getservent_r=undef
13624                 getservent_r_proto=0
13625                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13626         * )     case "$getservent_r_proto" in
13627                 REENTRANT_PROTO*) ;;
13628                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13629                 esac
13630                 echo "Prototype: $try" ;;
13631         esac
13632         ;;
13633         *)      case "$usethreads" in
13634                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13635                 esac
13636                 d_getservent_r=undef
13637                 getservent_r_proto=0
13638                 ;;
13639         esac
13640         ;;
13641 *)      getservent_r_proto=0
13642         ;;
13643 esac
13644
13645 : see if prototypes for various getservxxx netdb.h functions are available
13646 echo " "
13647 set d_getservprotos getservent $i_netdb netdb.h
13648 eval $hasproto
13649
13650 : see if getspnam exists
13651 set getspnam d_getspnam
13652 eval $inlibc
13653
13654 : see if this is a shadow.h system
13655 set shadow.h i_shadow
13656 eval $inhdr
13657
13658 : see if getspnam_r exists
13659 set getspnam_r d_getspnam_r
13660 eval $inlibc
13661 case "$d_getspnam_r" in
13662 "$define")
13663         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13664         case "$d_getspnam_r_proto:$usethreads" in
13665         ":define")      d_getspnam_r_proto=define
13666                 set d_getspnam_r_proto getspnam_r $hdrs
13667                 eval $hasproto ;;
13668         *)      ;;
13669         esac
13670         case "$d_getspnam_r_proto" in
13671         define)
13672         case "$getspnam_r_proto" in
13673         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13674         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13675         esac
13676         case "$getspnam_r_proto" in
13677         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13678         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13679         esac
13680         case "$getspnam_r_proto" in
13681         ''|0)   d_getspnam_r=undef
13682                 getspnam_r_proto=0
13683                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13684         * )     case "$getspnam_r_proto" in
13685                 REENTRANT_PROTO*) ;;
13686                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13687                 esac
13688                 echo "Prototype: $try" ;;
13689         esac
13690         ;;
13691         *)      case "$usethreads" in
13692                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13693                 esac
13694                 d_getspnam_r=undef
13695                 getspnam_r_proto=0
13696                 ;;
13697         esac
13698         ;;
13699 *)      getspnam_r_proto=0
13700         ;;
13701 esac
13702
13703 : see if gettimeofday or ftime exists
13704 set gettimeofday d_gettimeod
13705 eval $inlibc
13706 case "$d_gettimeod" in
13707 "$undef")
13708         set ftime d_ftime 
13709         eval $inlibc
13710         ;;
13711 *)
13712         val="$undef"; set d_ftime; eval $setvar
13713         ;;
13714 esac
13715 case "$d_gettimeod$d_ftime" in
13716 "$undef$undef")
13717         echo " "
13718         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13719         ;;
13720 esac
13721
13722 : see if gmtime_r exists
13723 set gmtime_r d_gmtime_r
13724 eval $inlibc
13725 case "$d_gmtime_r" in
13726 "$define")
13727         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13728         case "$d_gmtime_r_proto:$usethreads" in
13729         ":define")      d_gmtime_r_proto=define
13730                 set d_gmtime_r_proto gmtime_r $hdrs
13731                 eval $hasproto ;;
13732         *)      ;;
13733         esac
13734         case "$d_gmtime_r_proto" in
13735         define)
13736         case "$gmtime_r_proto" in
13737         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13738         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13739         esac
13740         case "$gmtime_r_proto" in
13741         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13742         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13743         esac
13744         case "$gmtime_r_proto" in
13745         ''|0)   d_gmtime_r=undef
13746                 gmtime_r_proto=0
13747                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13748         * )     case "$gmtime_r_proto" in
13749                 REENTRANT_PROTO*) ;;
13750                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13751                 esac
13752                 echo "Prototype: $try" ;;
13753         esac
13754         ;;
13755         *)      case "$usethreads" in
13756                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13757                 esac
13758                 d_gmtime_r=undef
13759                 gmtime_r_proto=0
13760                 ;;
13761         esac
13762         ;;
13763 *)      gmtime_r_proto=0
13764         ;;
13765 esac
13766
13767 : see if hasmntopt exists
13768 set hasmntopt d_hasmntopt
13769 eval $inlibc
13770
13771 : see if this is a netinet/in.h or sys/in.h system
13772 set netinet/in.h i_niin sys/in.h i_sysin
13773 eval $inhdr
13774
13775 : see if arpa/inet.h has to be included
13776 set arpa/inet.h i_arpainet
13777 eval $inhdr
13778
13779 : see if htonl --and friends-- exists
13780 val=''
13781 set htonl val
13782 eval $inlibc
13783
13784 : Maybe they are macros.
13785 case "$val" in
13786 $undef)
13787         $cat >htonl.c <<EOM
13788 #include <stdio.h>
13789 #include <sys/types.h>
13790 #$i_niin I_NETINET_IN
13791 #$i_sysin I_SYS_IN
13792 #$i_arpainet I_ARPA_INET
13793 #ifdef I_NETINET_IN
13794 #include <netinet/in.h>
13795 #endif
13796 #ifdef I_SYS_IN
13797 #include <sys/in.h>
13798 #endif
13799 #ifdef I_ARPA_INET
13800 #include <arpa/inet.h>
13801 #endif
13802 #ifdef htonl
13803 printf("Defined as a macro.");
13804 #endif
13805 EOM
13806         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13807         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13808                 val="$define"
13809                 echo "But it seems to be defined as a macro." >&4
13810         fi
13811         $rm -f htonl.?
13812         ;;
13813 esac
13814 set d_htonl
13815 eval $setvar
13816
13817 : see if ilogbl exists
13818 set ilogbl d_ilogbl
13819 eval $inlibc
13820
13821 : index or strchr
13822 echo " "
13823 if set index val -f; eval $csym; $val; then
13824         if set strchr val -f d_strchr; eval $csym; $val; then
13825                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13826                         val="$define"
13827                         vali="$undef"
13828                         echo "strchr() found." >&4
13829                 else
13830                         val="$undef"
13831                         vali="$define"
13832                         echo "index() found." >&4
13833                 fi
13834         else
13835                 val="$undef"
13836                 vali="$define"
13837                 echo "index() found." >&4
13838         fi
13839 else
13840         if set strchr val -f d_strchr; eval $csym; $val; then
13841                 val="$define"
13842                 vali="$undef"
13843                 echo "strchr() found." >&4
13844         else
13845                 echo "No index() or strchr() found!" >&4
13846                 val="$undef"
13847                 vali="$undef"
13848         fi
13849 fi
13850 set d_strchr; eval $setvar
13851 val="$vali"
13852 set d_index; eval $setvar
13853
13854 : check whether inet_aton exists
13855 set inet_aton d_inetaton
13856 eval $inlibc
13857
13858 : Look for isascii
13859 echo " "
13860 $cat >isascii.c <<EOCP
13861 #include <stdio.h>
13862 #include <ctype.h>
13863 #$i_stdlib I_STDLIB
13864 #ifdef I_STDLIB
13865 #include <stdlib.h>
13866 #endif
13867 int main() {
13868         int c = 'A';
13869         if (isascii(c))
13870                 exit(0);
13871         else
13872                 exit(1);
13873 }
13874 EOCP
13875 set isascii
13876 if eval $compile; then
13877         echo "isascii() found." >&4
13878         val="$define"
13879 else
13880         echo "isascii() NOT found." >&4
13881         val="$undef"
13882 fi
13883 set d_isascii
13884 eval $setvar
13885 $rm -f isascii*
13886
13887 : see if isfinite exists
13888 set isfinite d_isfinite
13889 eval $inlibc
13890
13891 : see if isinf exists
13892 set isinf d_isinf
13893 eval $inlibc
13894
13895 : see if isnan exists
13896 set isnan d_isnan
13897 eval $inlibc
13898
13899 : see if isnanl exists
13900 set isnanl d_isnanl
13901 eval $inlibc
13902
13903 : see if killpg exists
13904 set killpg d_killpg
13905 eval $inlibc
13906
13907 : see if lchown exists
13908 echo " "
13909 $cat > try.c <<'EOCP'
13910 /* System header to define __stub macros and hopefully few prototypes,
13911     which can conflict with char lchown(); below.  */
13912 #include <assert.h>
13913 /* Override any gcc2 internal prototype to avoid an error.  */
13914 /* We use char because int might match the return type of a gcc2
13915    builtin and then its argument prototype would still apply.  */
13916 char lchown();
13917 int main() {
13918     /*  The GNU C library defines this for functions which it implements
13919         to always fail with ENOSYS.  Some functions are actually named
13920         something starting with __ and the normal name is an alias.  */
13921 #if defined (__stub_lchown) || defined (__stub___lchown)
13922 choke me
13923 #else
13924 lchown();
13925 #endif
13926 ; return 0; }
13927 EOCP
13928 set try
13929 if eval $compile; then
13930     $echo "lchown() found." >&4
13931     val="$define"
13932 else
13933     $echo "lchown() NOT found." >&4
13934     val="$undef"
13935 fi
13936 set d_lchown
13937 eval $setvar
13938
13939 : See if number of significant digits in a double precision number is known
13940 echo " "
13941 $cat >ldbl_dig.c <<EOM
13942 #$i_limits I_LIMITS
13943 #$i_float I_FLOAT
13944 #ifdef I_LIMITS
13945 #include <limits.h>
13946 #endif
13947 #ifdef I_FLOAT
13948 #include <float.h>
13949 #endif
13950 #ifdef LDBL_DIG
13951 printf("Contains LDBL_DIG");
13952 #endif
13953 EOM
13954 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13955 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13956         echo "LDBL_DIG found." >&4
13957         val="$define"
13958 else
13959         echo "LDBL_DIG NOT found." >&4
13960         val="$undef"
13961 fi
13962 $rm -f ldbl_dig.?
13963 set d_ldbl_dig
13964 eval $setvar
13965
13966 : see if this is a math.h system
13967 set math.h i_math
13968 eval $inhdr
13969
13970 d_libm_lib_version="$undef"
13971 case $i_math in
13972     $define)
13973         : check to see if math.h defines _LIB_VERSION
13974         echo " "
13975         echo "Checking to see if your libm supports _LIB_VERSION..." >&4
13976         $cat >try.c <<EOCP
13977 #include <unistd.h>
13978 #include <math.h>
13979 int main (int argc, char *argv[])
13980 {
13981     printf ("%d\n", _LIB_VERSION);
13982     return (0);
13983     } /* main */
13984 EOCP
13985         set try
13986         if eval $compile; then
13987             foo=`$run ./try`
13988             echo "Yes, it does ($foo)" >&4
13989             d_libm_lib_version="$define"
13990         else
13991             echo "No, it does not (probably harmless)\n" >&4
13992             fi
13993         $rm -f try.* try core core.try.*
13994         ;;
13995
13996     esac
13997
13998 : see if link exists
13999 set link d_link
14000 eval $inlibc
14001
14002 : see if localtime_r exists
14003 set localtime_r d_localtime_r
14004 eval $inlibc
14005 case "$d_localtime_r" in
14006 "$define")
14007         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14008         case "$d_localtime_r_proto:$usethreads" in
14009         ":define")      d_localtime_r_proto=define
14010                 set d_localtime_r_proto localtime_r $hdrs
14011                 eval $hasproto ;;
14012         *)      ;;
14013         esac
14014         case "$d_localtime_r_proto" in
14015         define)
14016         case "$localtime_r_proto" in
14017         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
14018         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
14019         esac
14020         case "$localtime_r_proto" in
14021         ''|0) try='int localtime_r(const time_t*, struct tm*);'
14022         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
14023         esac
14024         case "$localtime_r_proto" in
14025         ''|0)   d_localtime_r=undef
14026                 localtime_r_proto=0
14027                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
14028         * )     case "$localtime_r_proto" in
14029                 REENTRANT_PROTO*) ;;
14030                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
14031                 esac
14032                 echo "Prototype: $try" ;;
14033         esac
14034         ;;
14035         *)      case "$usethreads" in
14036                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
14037                 esac
14038                 d_localtime_r=undef
14039                 localtime_r_proto=0
14040                 ;;
14041         esac
14042         ;;
14043 *)      localtime_r_proto=0
14044         ;;
14045 esac
14046
14047 : see if localeconv exists
14048 set localeconv d_locconv
14049 eval $inlibc
14050
14051 : see if lockf exists
14052 set lockf d_lockf
14053 eval $inlibc
14054
14055 : see if prototype for lseek is available
14056 echo " "
14057 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
14058 eval $hasproto
14059
14060 : see if lstat exists
14061 set lstat d_lstat
14062 eval $inlibc
14063
14064 : see if madvise exists
14065 set madvise d_madvise
14066 eval $inlibc
14067
14068 : see if mblen exists
14069 set mblen d_mblen
14070 eval $inlibc
14071
14072 : see if mbstowcs exists
14073 set mbstowcs d_mbstowcs
14074 eval $inlibc
14075
14076 : see if mbtowc exists
14077 set mbtowc d_mbtowc
14078 eval $inlibc
14079
14080 : see if memchr exists
14081 set memchr d_memchr
14082 eval $inlibc
14083
14084 : see if memcmp exists
14085 set memcmp d_memcmp
14086 eval $inlibc
14087
14088 : see if memcpy exists
14089 set memcpy d_memcpy
14090 eval $inlibc
14091
14092 : see if memmove exists
14093 set memmove d_memmove
14094 eval $inlibc
14095
14096 : see if memset exists
14097 set memset d_memset
14098 eval $inlibc
14099
14100 : see if mkdir exists
14101 set mkdir d_mkdir
14102 eval $inlibc
14103
14104 : see if mkdtemp exists
14105 set mkdtemp d_mkdtemp
14106 eval $inlibc
14107
14108 : see if mkfifo exists
14109 set mkfifo d_mkfifo
14110 eval $inlibc
14111
14112 : see if mkstemp exists
14113 set mkstemp d_mkstemp
14114 eval $inlibc
14115
14116 : see if mkstemps exists
14117 set mkstemps d_mkstemps
14118 eval $inlibc
14119
14120 : see if mktime exists
14121 set mktime d_mktime
14122 eval $inlibc
14123
14124 : see if this is a sys/mman.h system
14125 set sys/mman.h i_sysmman
14126 eval $inhdr
14127
14128 : see if mmap exists
14129 set mmap d_mmap
14130 eval $inlibc
14131 : see what shmat returns
14132 : default to something harmless
14133 mmaptype='void *'
14134 case "$i_sysmman$d_mmap" in
14135 "$define$define")
14136         $cat >mmap.c <<'END'
14137 #include <sys/mman.h>
14138 void *mmap();
14139 END
14140         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14141                 mmaptype='void *'
14142         else
14143                 mmaptype='caddr_t'
14144         fi
14145         echo "and it returns ($mmaptype)." >&4
14146         ;;
14147 esac
14148
14149
14150
14151 : see if sqrtl exists
14152 set sqrtl d_sqrtl
14153 eval $inlibc
14154
14155 : see if scalbnl exists
14156 set scalbnl d_scalbnl
14157 eval $inlibc
14158
14159 : see if modfl exists
14160 set modfl d_modfl
14161 eval $inlibc
14162
14163 : see if prototype for modfl is available
14164 echo " "
14165 set d_modflproto modfl $i_math math.h
14166 eval $hasproto
14167
14168 d_modfl_pow32_bug="$undef"
14169
14170 case "$d_longdbl$d_modfl" in
14171 $define$define)
14172         $cat <<EOM
14173 Checking to see whether your modfl() is okay for large values...
14174 EOM
14175 $cat >try.c <<EOCP
14176 #include <math.h> 
14177 #include <stdio.h>
14178 EOCP
14179 if $test "X$d_modflproto" != "X$define"; then
14180         $cat >>try.c <<EOCP
14181 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
14182 long double modfl (long double, long double *);
14183 EOCP
14184 fi
14185 $cat >>try.c <<EOCP
14186 int main() {
14187     long double nv = 4294967303.15;
14188     long double v, w;
14189     v = modfl(nv, &w);         
14190 #ifdef __GLIBC__
14191     printf("glibc");
14192 #endif
14193     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14194     return 0;
14195 }
14196 EOCP
14197         case "$osname:$gccversion" in
14198         aix:)   saveccflags="$ccflags"
14199                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14200         esac
14201         set try
14202         if eval $compile; then
14203                 foo=`$run ./try`
14204                 case "$foo" in
14205                 *" 4294967303.150000 1.150000 4294967302.000000")
14206                         echo >&4 "Your modfl() is broken for large values."
14207                         d_modfl_pow32_bug="$define"
14208                         case "$foo" in
14209                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14210                         ;;
14211                         esac
14212                         ;;
14213                 *" 4294967303.150000 0.150000 4294967303.000000")
14214                         echo >&4 "Your modfl() seems okay for large values."
14215                         ;;
14216                 *)      echo >&4 "I don't understand your modfl() at all."
14217                         d_modfl="$undef"
14218                         ;;
14219                 esac
14220                 $rm -f try.* try core core.try.*
14221         else
14222                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14223                 d_modfl="$undef"
14224         fi
14225         case "$osname:$gccversion" in
14226         aix:)   ccflags="$saveccflags" ;; # restore
14227         esac
14228         ;;
14229 esac
14230
14231 if $test "$uselongdouble" = "$define"; then
14232     message=""
14233     if $test "$d_sqrtl" != "$define"; then
14234         message="$message sqrtl"
14235     fi
14236     if $test "$d_modfl" != "$define"; then
14237         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14238             echo "You have both aintl and copysignl, so I can emulate modfl."
14239         else
14240             message="$message modfl"
14241         fi
14242     fi
14243     if $test "$d_frexpl" != "$define"; then
14244         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14245             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14246         else
14247             message="$message frexpl"
14248         fi
14249     fi
14250
14251     if $test "$message" != ""; then
14252         $cat <<EOM >&4
14253
14254 *** You requested the use of long doubles but you do not seem to have
14255 *** the following mathematical functions needed for long double support:
14256 ***    $message
14257 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14258 *** Cannot continue, aborting.
14259
14260 EOM
14261
14262         exit 1
14263     fi
14264 fi
14265
14266 : see if mprotect exists
14267 set mprotect d_mprotect
14268 eval $inlibc
14269
14270 : see if msgctl exists
14271 set msgctl d_msgctl
14272 eval $inlibc
14273
14274 : see if msgget exists
14275 set msgget d_msgget
14276 eval $inlibc
14277
14278 : see if msgsnd exists
14279 set msgsnd d_msgsnd
14280 eval $inlibc
14281
14282 : see if msgrcv exists
14283 set msgrcv d_msgrcv
14284 eval $inlibc
14285
14286 : see how much of the 'msg*(2)' library is present.
14287 h_msg=true
14288 echo " "
14289 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14290 *"$undef"*) h_msg=false;;
14291 esac
14292 case "$osname" in
14293 freebsd)
14294     case "`ipcs 2>&1`" in
14295     "SVID messages"*"not configured"*)
14296         echo "Your $osname does not have the msg*(2) configured." >&4
14297         h_msg=false
14298         val="$undef"
14299         set msgctl d_msgctl
14300         eval $setvar
14301         set msgget d_msgget
14302         eval $setvar
14303         set msgsnd d_msgsnd
14304         eval $setvar
14305         set msgrcv d_msgrcv
14306         eval $setvar
14307         ;;
14308     esac
14309     ;;
14310 esac
14311 : we could also check for sys/ipc.h ...
14312 if $h_msg && $test `./findhdr sys/msg.h`; then
14313         echo "You have the full msg*(2) library." >&4
14314         val="$define"
14315 else
14316         echo "You don't have the full msg*(2) library." >&4
14317         val="$undef"
14318 fi
14319 set d_msg
14320 eval $setvar
14321
14322
14323 echo " "
14324 echo "Checking to see if your system supports struct msghdr..." >&4
14325 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14326 eval $hasstruct
14327 case "$d_msghdr_s" in
14328 "$define")      echo "Yes, it does."   ;;
14329 *)              echo "No, it doesn't." ;;
14330 esac
14331
14332
14333 : see if msync exists
14334 set msync d_msync
14335 eval $inlibc
14336
14337 : see if munmap exists
14338 set munmap d_munmap
14339 eval $inlibc
14340
14341 : see if nice exists
14342 set nice d_nice
14343 eval $inlibc
14344
14345 : see if this is a langinfo.h system
14346 set langinfo.h i_langinfo
14347 eval $inhdr
14348
14349 : see if nl_langinfo exists
14350 set nl_langinfo d_nl_langinfo
14351 eval $inlibc
14352
14353 : check for length of character
14354 echo " "
14355 case "$charsize" in
14356 '')
14357         echo "Checking to see how big your characters are (hey, you never know)..." >&4
14358         $cat >try.c <<EOCP
14359 #include <stdio.h>
14360 #$i_stdlib I_STDLIB
14361 #ifdef I_STDLIB
14362 #include <stdlib.h>
14363 #endif
14364 int main()
14365 {
14366     printf("%d\n", (int)sizeof(char));
14367     exit(0);
14368 }
14369 EOCP
14370         set try
14371         if eval $compile_ok; then
14372                 dflt=`$run ./try`
14373         else
14374                 dflt='1'
14375                 echo "(I can't seem to compile the test program.  Guessing...)"
14376         fi
14377         ;;
14378 *)
14379         dflt="$charsize"
14380         ;;
14381 esac
14382 rp="What is the size of a character (in bytes)?"
14383 . ./myread
14384 charsize="$ans"
14385 $rm -f try.c try
14386
14387 : check for volatile keyword
14388 echo " "
14389 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14390 $cat >try.c <<'EOCP'
14391 int main()
14392 {
14393         typedef struct _goo_struct goo_struct;
14394         goo_struct * volatile goo = ((goo_struct *)0);
14395         struct _goo_struct {
14396                 long long_int;
14397                 int reg_int;
14398                 char char_var;
14399         };
14400         typedef unsigned short foo_t;
14401         char *volatile foo;
14402         volatile int bar;
14403         volatile foo_t blech;
14404         foo = foo;
14405 }
14406 EOCP
14407 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14408         val="$define"
14409         echo "Yup, it does."
14410 else
14411         val="$undef"
14412         echo "Nope, it doesn't."
14413 fi
14414 set d_volatile
14415 eval $setvar
14416 $rm -f try.*
14417
14418
14419 echo " "
14420 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14421
14422 case "$use64bitint:$d_quad:$quadtype" in
14423 define:define:?*)
14424         ivtype="$quadtype"
14425         uvtype="$uquadtype"
14426         ivsize=8
14427         uvsize=8
14428         ;;
14429 *)      ivtype="long"
14430         uvtype="unsigned long"
14431         ivsize=$longsize
14432         uvsize=$longsize
14433         ;;
14434 esac
14435
14436 case "$uselongdouble:$d_longdbl" in
14437 define:define)
14438         nvtype="long double"
14439         nvsize=$longdblsize
14440         ;;
14441 *)      nvtype=double
14442         nvsize=$doublesize
14443         ;;
14444 esac
14445
14446 $echo "(IV will be "$ivtype", $ivsize bytes)"
14447 $echo "(UV will be "$uvtype", $uvsize bytes)"
14448 $echo "(NV will be "$nvtype", $nvsize bytes)"
14449
14450 $cat >try.c <<EOCP
14451 #$i_inttypes I_INTTYPES
14452 #ifdef I_INTTYPES
14453 #include <inttypes.h>
14454 #endif
14455 #include <stdio.h>
14456 int main() {
14457 #ifdef INT8
14458    int8_t i =  INT8_MAX;
14459   uint8_t u = UINT8_MAX;
14460   printf("int8_t\n");
14461 #endif
14462 #ifdef INT16
14463    int16_t i =  INT16_MAX;
14464   uint16_t i = UINT16_MAX;
14465   printf("int16_t\n");
14466 #endif
14467 #ifdef INT32
14468    int32_t i =  INT32_MAX;
14469   uint32_t u = UINT32_MAX;
14470   printf("int32_t\n");
14471 #endif
14472 }
14473 EOCP
14474
14475 case "$i8type" in
14476 '')     case "$charsize" in
14477         1)      i8type=char
14478                 u8type="unsigned char"
14479                 i8size=$charsize
14480                 u8size=$charsize
14481                 ;;
14482         esac
14483         ;;
14484 esac
14485 case "$i8type" in
14486 '')     set try -DINT8
14487         if eval $compile; then
14488                 case "`$run ./try`" in
14489                 int8_t) i8type=int8_t
14490                         u8type=uint8_t
14491                         i8size=1
14492                         u8size=1
14493                         ;;
14494                 esac
14495         fi
14496         ;;
14497 esac
14498 case "$i8type" in
14499 '')     if $test $charsize -ge 1; then
14500                 i8type=char
14501                 u8type="unsigned char"
14502                 i8size=$charsize
14503                 u8size=$charsize
14504         fi
14505         ;;
14506 esac
14507
14508 case "$i16type" in
14509 '')     case "$shortsize" in
14510         2)      i16type=short
14511                 u16type="unsigned short"
14512                 i16size=$shortsize
14513                 u16size=$shortsize
14514                 ;;
14515         esac
14516         ;;
14517 esac
14518 case "$i16type" in
14519 '')     set try -DINT16
14520         if eval $compile; then
14521                 case "`$run ./try`" in
14522                 int16_t)
14523                         i16type=int16_t
14524                         u16type=uint16_t
14525                         i16size=2
14526                         u16size=2
14527                         ;;
14528                 esac
14529         fi
14530         ;;
14531 esac
14532 case "$i16type" in
14533 '')     if $test $shortsize -ge 2; then
14534                 i16type=short
14535                 u16type="unsigned short"
14536                 i16size=$shortsize
14537                 u16size=$shortsize
14538         fi
14539         ;;
14540 esac
14541
14542 case "$i32type" in
14543 '')     case "$longsize" in
14544         4)      i32type=long
14545                 u32type="unsigned long"
14546                 i32size=$longsize
14547                 u32size=$longsize
14548                 ;;
14549         *)      case "$intsize" in
14550                 4)      i32type=int
14551                         u32type="unsigned int"
14552                         i32size=$intsize
14553                         u32size=$intsize
14554                         ;;
14555                 esac
14556                 ;;
14557         esac
14558         ;;
14559 esac
14560 case "$i32type" in
14561 '')     set try -DINT32
14562         if eval $compile; then
14563                 case "`$run ./try`" in
14564                 int32_t)
14565                         i32type=int32_t
14566                         u32type=uint32_t
14567                         i32size=4
14568                         u32size=4
14569                         ;;
14570                 esac
14571         fi
14572         ;;
14573 esac
14574 case "$i32type" in
14575 '')     if $test $intsize -ge 4; then
14576                 i32type=int
14577                 u32type="unsigned int"
14578                 i32size=$intsize
14579                 u32size=$intsize
14580         fi
14581         ;;
14582 esac
14583
14584 case "$i64type" in
14585 '')     case "$d_quad:$quadtype" in
14586         define:?*)
14587                 i64type="$quadtype"
14588                 u64type="$uquadtype"
14589                 i64size=8
14590                 u64size=8
14591                 ;;
14592         esac
14593         ;;
14594 esac
14595
14596 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14597 : volatile so that the compiler has to store it out to memory.
14598 if test X"$d_volatile" = X"$define"; then
14599         volatile=volatile
14600 fi
14601 $cat <<EOP >try.c
14602 #include <stdio.h>
14603 #$i_stdlib I_STDLIB
14604 #ifdef I_STDLIB
14605 #include <stdlib.h>
14606 #endif
14607 #include <sys/types.h>
14608 #include <signal.h>
14609 #ifdef SIGFPE
14610 $volatile int bletched = 0;
14611 $signal_t blech(s) int s; { bletched = 1; }
14612 #endif
14613 int main() {
14614     $uvtype u = 0;
14615     $nvtype d;
14616     int     n = 8 * $uvsize;
14617     int     i;
14618 #ifdef SIGFPE
14619     signal(SIGFPE, blech);
14620 #endif
14621
14622     for (i = 0; i < n; i++) {
14623       u = u << 1 | ($uvtype)1;
14624       d = ($nvtype)u;
14625       if (($uvtype)d != u)
14626         break;
14627       if (d <= 0)
14628         break;
14629       d = ($nvtype)(u - 1);
14630       if (($uvtype)d != (u - 1))
14631         break;
14632 #ifdef SIGFPE
14633       if (bletched) {
14634         break;
14635 #endif
14636       } 
14637     }
14638     printf("%d\n", ((i == n) ? -n : i));
14639     exit(0);
14640 }
14641 EOP
14642 set try
14643
14644 d_nv_preserves_uv="$undef"
14645 if eval $compile; then
14646         nv_preserves_uv_bits="`$run ./try`"
14647 fi
14648 case "$nv_preserves_uv_bits" in
14649 \-[1-9]*)       
14650         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14651         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14652         d_nv_preserves_uv="$define"
14653         ;;
14654 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14655         d_nv_preserves_uv="$undef" ;;
14656 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14657         nv_preserves_uv_bits="$undef" ;;
14658 esac
14659
14660 $rm -f try.* try
14661
14662
14663 : check for off64_t
14664 echo " "
14665 echo "Checking to see if you have off64_t..." >&4
14666 $cat >try.c <<EOCP
14667 #include <sys/types.h>
14668 #include <unistd.h>
14669 int main() { off64_t x = 7; }
14670 EOCP
14671 set try
14672 if eval $compile; then
14673         val="$define"
14674         echo "You have off64_t."
14675 else
14676         val="$undef"
14677         echo "You do not have off64_t."
14678         case "$lseeksize" in
14679         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14680         esac
14681 fi
14682 $rm -f try.* try
14683 set d_off64_t
14684 eval $setvar
14685
14686 : how to create joinable pthreads
14687 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14688         echo " "
14689         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14690         $cat >try.c <<'EOCP'
14691 #include <pthread.h>
14692 int main() {
14693     int detachstate = JOINABLE;
14694 }
14695 EOCP
14696         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14697         if eval $compile; then
14698                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14699                 val="$undef" # Yes, undef.
14700                 set d_old_pthread_create_joinable
14701                 eval $setvar
14702                 val=""
14703                 set old_pthread_create_joinable
14704                 eval $setvar
14705         else
14706                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14707                 if eval $compile; then
14708                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14709                         val="$define"
14710                         set d_old_pthread_create_joinable
14711                         eval $setvar
14712                         val=PTHREAD_CREATE_UNDETACHED
14713                         set old_pthread_create_joinable
14714                         eval $setvar
14715                 else            
14716                         set try -DJOINABLE=__UNDETACHED
14717                         if eval $compile; then
14718                                 echo "You seem to use __UNDETACHED." >&4
14719                                 val="$define"
14720                                 set d_old_pthread_create_joinable
14721                                 eval $setvar
14722                                 val=__UNDETACHED
14723                                 set old_pthread_create_joinable
14724                                 eval $setvar
14725                         else
14726                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14727                                 val="$define"
14728                                 set d_old_pthread_create_joinable
14729                                 eval $setvar
14730                                 val=0
14731                                 set old_pthread_create_joinable
14732                                 eval $setvar
14733                         fi
14734                 fi
14735         fi
14736         $rm -f try try.*
14737 else
14738     d_old_pthread_create_joinable="$undef"
14739     old_pthread_create_joinable=""
14740 fi
14741
14742 : see if pause exists
14743 set pause d_pause
14744 eval $inlibc
14745
14746 : see if pipe exists
14747 set pipe d_pipe
14748 eval $inlibc
14749
14750 : see if poll exists
14751 set poll d_poll
14752 eval $inlibc
14753
14754 : see if readlink exists
14755 set readlink d_readlink
14756 eval $inlibc
14757
14758 echo " "
14759 procselfexe=''
14760 val="$undef"
14761 case "$d_readlink" in
14762 "$define")
14763         if $issymlink /proc/self/exe ; then
14764                 $ls -l /proc/self/exe > reflect
14765                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14766                         echo "You have Linux-like /proc/self/exe."
14767                         procselfexe='"/proc/self/exe"'
14768                         val="$define"
14769                 fi
14770         fi
14771         if $issymlink /proc/curproc/file ; then
14772                 $ls -l /proc/curproc/file > reflect
14773                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14774                         echo "You have BSD-like /proc/curproc/file."
14775                         procselfexe='"/proc/curproc/file"'
14776                         val="$define"
14777                 fi
14778         fi
14779         ;;
14780 esac
14781 $rm -f reflect
14782 set d_procselfexe
14783 eval $setvar
14784
14785 : see whether the pthread_atfork exists
14786 $cat >try.c <<EOP
14787 #include <pthread.h>
14788 #include <stdio.h>
14789 int main() {
14790 #ifdef  PTHREAD_ATFORK
14791         pthread_atfork(NULL,NULL,NULL);
14792 #endif
14793 }
14794 EOP
14795
14796 : see if pthread_atfork exists
14797 set try -DPTHREAD_ATFORK
14798 if eval $compile; then
14799     val="$define"
14800 else
14801     val="$undef"
14802 fi
14803 case "$usethreads" in
14804 $define)
14805         case "$val" in
14806         $define) echo 'pthread_atfork found.' >&4        ;;
14807         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14808         esac
14809 esac
14810 set d_pthread_atfork
14811 eval $setvar
14812
14813 : see if pthread_attr_setscope exists
14814 set pthread_attr_setscope d_pthread_attr_setscope
14815 eval $inlibc
14816
14817
14818 : see whether the various POSIXish _yields exist
14819 $cat >try.c <<EOP
14820 #include <pthread.h>
14821 #include <stdio.h>
14822 int main() {
14823 #ifdef SCHED_YIELD
14824         sched_yield();
14825 #else
14826 #ifdef PTHREAD_YIELD
14827         pthread_yield();
14828 #else
14829 #ifdef PTHREAD_YIELD_NULL
14830         pthread_yield(NULL);
14831 #endif
14832 #endif
14833 #endif
14834 }
14835 EOP
14836 : see if sched_yield exists
14837 set try -DSCHED_YIELD
14838 if eval $compile; then
14839     val="$define"
14840     sched_yield='sched_yield()'
14841 else
14842     val="$undef"
14843 fi
14844 case "$usethreads" in
14845 $define)
14846         case "$val" in
14847         $define) echo 'sched_yield() found.' >&4        ;;
14848         *)       echo 'sched_yield() NOT found.' >&4    ;;
14849         esac
14850 esac
14851 set d_sched_yield
14852 eval $setvar
14853
14854 : see if pthread_yield exists
14855 set try -DPTHREAD_YIELD
14856 if eval $compile; then
14857     val="$define"
14858     case "$sched_yield" in
14859     '') sched_yield='pthread_yield()' ;;
14860     esac
14861 else
14862     set try -DPTHREAD_YIELD_NULL
14863     if eval $compile; then
14864         val="$define"
14865         case "$sched_yield" in
14866         '') sched_yield='pthread_yield(NULL)' ;;
14867         esac
14868     else
14869         val="$undef"
14870     fi
14871 fi
14872 case "$usethreads" in
14873 $define)
14874         case "$val" in
14875         $define) echo 'pthread_yield() found.' >&4      ;;
14876         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14877         esac
14878         ;;
14879 esac
14880 set d_pthread_yield
14881 eval $setvar
14882
14883 case "$sched_yield" in
14884 '') sched_yield=undef ;;
14885 esac
14886
14887 $rm -f try try.*
14888
14889 : see if random_r exists
14890 set random_r d_random_r
14891 eval $inlibc
14892 case "$d_random_r" in
14893 "$define")
14894         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14895         case "$d_random_r_proto:$usethreads" in
14896         ":define")      d_random_r_proto=define
14897                 set d_random_r_proto random_r $hdrs
14898                 eval $hasproto ;;
14899         *)      ;;
14900         esac
14901         case "$d_random_r_proto" in
14902         define)
14903         case "$random_r_proto" in
14904         ''|0) try='int random_r(int*, struct random_data*);'
14905         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14906         esac
14907         case "$random_r_proto" in
14908         ''|0) try='int random_r(long*, struct random_data*);'
14909         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14910         esac
14911         case "$random_r_proto" in
14912         ''|0) try='int random_r(struct random_data*, int32_t*);'
14913         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14914         esac
14915         case "$random_r_proto" in
14916         ''|0)   d_random_r=undef
14917                 random_r_proto=0
14918                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14919         * )     case "$random_r_proto" in
14920                 REENTRANT_PROTO*) ;;
14921                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14922                 esac
14923                 echo "Prototype: $try" ;;
14924         esac
14925         ;;
14926         *)      case "$usethreads" in
14927                 define) echo "random_r has no prototype, not using it." >&4 ;;
14928                 esac
14929                 d_random_r=undef
14930                 random_r_proto=0
14931                 ;;
14932         esac
14933         ;;
14934 *)      random_r_proto=0
14935         ;;
14936 esac
14937
14938 : see if readdir and friends exist
14939 set readdir d_readdir
14940 eval $inlibc
14941 set seekdir d_seekdir
14942 eval $inlibc
14943 set telldir d_telldir
14944 eval $inlibc
14945 set rewinddir d_rewinddir
14946 eval $inlibc
14947
14948 : see if readdir64_r exists
14949 set readdir64_r d_readdir64_r
14950 eval $inlibc
14951 case "$d_readdir64_r" in
14952 "$define")
14953         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14954         case "$d_readdir64_r_proto:$usethreads" in
14955         ":define")      d_readdir64_r_proto=define
14956                 set d_readdir64_r_proto readdir64_r $hdrs
14957                 eval $hasproto ;;
14958         *)      ;;
14959         esac
14960         case "$d_readdir64_r_proto" in
14961         define)
14962         case "$readdir64_r_proto" in
14963         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14964         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14965         esac
14966         case "$readdir64_r_proto" in
14967         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14968         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14969         esac
14970         case "$readdir64_r_proto" in
14971         ''|0)   d_readdir64_r=undef
14972                 readdir64_r_proto=0
14973                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14974         * )     case "$readdir64_r_proto" in
14975                 REENTRANT_PROTO*) ;;
14976                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14977                 esac
14978                 echo "Prototype: $try" ;;
14979         esac
14980         ;;
14981         *)      case "$usethreads" in
14982                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14983                 esac
14984                 d_readdir64_r=undef
14985                 readdir64_r_proto=0
14986                 ;;
14987         esac
14988         ;;
14989 *)      readdir64_r_proto=0
14990         ;;
14991 esac
14992
14993 : see if readdir_r exists
14994 set readdir_r d_readdir_r
14995 eval $inlibc
14996 case "$d_readdir_r" in
14997 "$define")
14998         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14999         case "$d_readdir_r_proto:$usethreads" in
15000         ":define")      d_readdir_r_proto=define
15001                 set d_readdir_r_proto readdir_r $hdrs
15002                 eval $hasproto ;;
15003         *)      ;;
15004         esac
15005         case "$d_readdir_r_proto" in
15006         define)
15007         case "$readdir_r_proto" in
15008         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
15009         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
15010         esac
15011         case "$readdir_r_proto" in
15012         ''|0) try='int readdir_r(DIR*, struct dirent*);'
15013         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
15014         esac
15015         case "$readdir_r_proto" in
15016         ''|0)   d_readdir_r=undef
15017                 readdir_r_proto=0
15018                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
15019         * )     case "$readdir_r_proto" in
15020                 REENTRANT_PROTO*) ;;
15021                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
15022                 esac
15023                 echo "Prototype: $try" ;;
15024         esac
15025         ;;
15026         *)      case "$usethreads" in
15027                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
15028                 esac
15029                 d_readdir_r=undef
15030                 readdir_r_proto=0
15031                 ;;
15032         esac
15033         ;;
15034 *)      readdir_r_proto=0
15035         ;;
15036 esac
15037
15038 : see if readv exists
15039 set readv d_readv
15040 eval $inlibc
15041
15042 : see if recvmsg exists
15043 set recvmsg d_recvmsg
15044 eval $inlibc
15045
15046 : see if rename exists
15047 set rename d_rename
15048 eval $inlibc
15049
15050 : see if rmdir exists
15051 set rmdir d_rmdir
15052 eval $inlibc
15053
15054 : see if memory.h is available.
15055 val=''
15056 set memory.h val
15057 eval $inhdr
15058
15059 : See if it conflicts with string.h
15060 case "$val" in
15061 $define)
15062         case "$strings" in
15063         '') ;;
15064         *)
15065                 $cppstdin $cppflags $cppminus < $strings > mem.h
15066                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
15067                         echo " "
15068                         echo "We won't be including <memory.h>."
15069                         val="$undef"
15070                 fi
15071                 $rm -f mem.h
15072                 ;;
15073         esac
15074 esac
15075 set i_memory
15076 eval $setvar
15077
15078 : can bcopy handle overlapping blocks?
15079 echo " "
15080 val="$undef"
15081 case "$d_memmove" in
15082 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
15083 *)      case "$d_bcopy" in
15084         "$define")
15085                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15086                 $cat >try.c <<EOCP
15087 #$i_memory I_MEMORY
15088 #$i_stdlib I_STDLIB
15089 #$i_string I_STRING
15090 #$i_unistd I_UNISTD
15091 EOCP
15092         $cat >>try.c <<'EOCP'
15093 #include <stdio.h>
15094 #ifdef I_MEMORY
15095 #  include <memory.h>
15096 #endif
15097 #ifdef I_STDLIB
15098 #  include <stdlib.h>
15099 #endif
15100 #ifdef I_STRING
15101 #  include <string.h>
15102 #else
15103 #  include <strings.h>
15104 #endif
15105 #ifdef I_UNISTD
15106 #  include <unistd.h>  /* Needed for NetBSD */
15107 #endif
15108 int main()
15109 {
15110 char buf[128], abc[128];
15111 char *b;
15112 int len;
15113 int off;
15114 int align;
15115
15116 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15117    try to store the string in read-only memory. */
15118 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15119
15120 for (align = 7; align >= 0; align--) {
15121         for (len = 36; len; len--) {
15122                 b = buf+align;
15123                 bcopy(abc, b, len);
15124                 for (off = 1; off <= len; off++) {
15125                         bcopy(b, b+off, len);
15126                         bcopy(b+off, b, len);
15127                         if (bcmp(b, abc, len))
15128                                 exit(1);
15129                 }
15130         }
15131 }
15132 exit(0);
15133 }
15134 EOCP
15135                 set try
15136                 if eval $compile_ok; then
15137                         if ./try 2>/dev/null; then
15138                                 echo "Yes, it can."
15139                                 val="$define"
15140                         else
15141                                 echo "It can't, sorry."
15142                         fi
15143                 else
15144                         echo "(I can't compile the test program, so we'll assume not...)"
15145                 fi
15146                 ;;
15147         esac
15148         $rm -f try.* try core
15149         ;;
15150 esac
15151 set d_safebcpy
15152 eval $setvar
15153
15154 : can memcpy handle overlapping blocks?
15155 echo " "
15156 val="$undef"
15157 case "$d_memmove" in
15158 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15159 *)      case "$d_memcpy" in
15160         "$define")
15161                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15162                 $cat >try.c <<EOCP
15163 #$i_memory I_MEMORY
15164 #$i_stdlib I_STDLIB
15165 #$i_string I_STRING
15166 #$i_unistd I_UNISTD
15167 EOCP
15168         $cat >>try.c <<'EOCP'
15169 #include <stdio.h>
15170 #ifdef I_MEMORY
15171 #  include <memory.h>
15172 #endif
15173 #ifdef I_STDLIB
15174 #  include <stdlib.h>
15175 #endif
15176 #ifdef I_STRING
15177 #  include <string.h>
15178 #else
15179 #  include <strings.h>
15180 #endif
15181 #ifdef I_UNISTD
15182 #  include <unistd.h>  /* Needed for NetBSD */
15183 #endif
15184 int main()
15185 {
15186 char buf[128], abc[128];
15187 char *b;
15188 int len;
15189 int off;
15190 int align;
15191
15192 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15193    try to store the string in read-only memory. */
15194 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15195
15196 for (align = 7; align >= 0; align--) {
15197         for (len = 36; len; len--) {
15198                 b = buf+align;
15199                 memcpy(b, abc, len);
15200                 for (off = 1; off <= len; off++) {
15201                         memcpy(b+off, b, len);
15202                         memcpy(b, b+off, len);
15203                         if (memcmp(b, abc, len))
15204                                 exit(1);
15205                 }
15206         }
15207 }
15208 exit(0);
15209 }
15210 EOCP
15211                 set try
15212                 if eval $compile_ok; then
15213                         if ./try 2>/dev/null; then
15214                                 echo "Yes, it can."
15215                                 val="$define"
15216                         else
15217                                 echo "It can't, sorry."
15218                         fi
15219                 else
15220                         echo "(I can't compile the test program, so we'll assume not...)"
15221                 fi
15222                 ;;
15223         esac
15224         $rm -f try.* try core
15225         ;;
15226 esac
15227 set d_safemcpy
15228 eval $setvar
15229
15230 : can memcmp be trusted to compare relative magnitude?
15231 val="$undef"
15232 case "$d_memcmp" in
15233 "$define")
15234         echo " "
15235         echo "Checking if your memcmp() can compare relative magnitude..." >&4
15236         $cat >try.c <<EOCP
15237 #$i_memory I_MEMORY
15238 #$i_stdlib I_STDLIB
15239 #$i_string I_STRING
15240 #$i_unistd I_UNISTD
15241 EOCP
15242         $cat >>try.c <<'EOCP'
15243 #include <stdio.h>
15244 #ifdef I_MEMORY
15245 #  include <memory.h>
15246 #endif
15247 #ifdef I_STDLIB
15248 #  include <stdlib.h>
15249 #endif
15250 #ifdef I_STRING
15251 #  include <string.h>
15252 #else
15253 #  include <strings.h>
15254 #endif
15255 #ifdef I_UNISTD
15256 #  include <unistd.h>  /* Needed for NetBSD */
15257 #endif
15258 int main()
15259 {
15260 char a = -1;
15261 char b = 0;
15262 if ((a < b) && memcmp(&a, &b, 1) < 0)
15263         exit(1);
15264 exit(0);
15265 }
15266 EOCP
15267         set try
15268         if eval $compile_ok; then
15269                 if $run ./try 2>/dev/null; then
15270                         echo "Yes, it can."
15271                         val="$define"
15272                 else
15273                         echo "No, it can't (it uses signed chars)."
15274                 fi
15275         else
15276                 echo "(I can't compile the test program, so we'll assume not...)"
15277         fi
15278         ;;
15279 esac
15280 $rm -f try.* try core
15281 set d_sanemcmp
15282 eval $setvar
15283
15284 : see if prototype for sbrk is available
15285 echo " "
15286 set d_sbrkproto sbrk $i_unistd unistd.h
15287 eval $hasproto
15288
15289 : see if select exists
15290 set select d_select
15291 eval $inlibc
15292
15293 : see if semctl exists
15294 set semctl d_semctl
15295 eval $inlibc
15296
15297 : see if semget exists
15298 set semget d_semget
15299 eval $inlibc
15300
15301 : see if semop exists
15302 set semop d_semop
15303 eval $inlibc
15304
15305 : see how much of the 'sem*(2)' library is present.
15306 h_sem=true
15307 echo " "
15308 case "$d_semctl$d_semget$d_semop" in
15309 *"$undef"*) h_sem=false;;
15310 esac
15311 case "$osname" in
15312 freebsd)
15313     case "`ipcs 2>&1`" in
15314     "SVID messages"*"not configured"*)
15315         echo "Your $osname does not have the sem*(2) configured." >&4
15316         h_sem=false
15317         val="$undef"
15318         set semctl d_semctl
15319         eval $setvar
15320         set semget d_semget
15321         eval $setvar
15322         set semop d_semop
15323         eval $setvar
15324         ;;
15325     esac
15326     ;;
15327 esac
15328 : we could also check for sys/ipc.h ...
15329 if $h_sem && $test `./findhdr sys/sem.h`; then
15330         echo "You have the full sem*(2) library." >&4
15331         val="$define"
15332 else
15333         echo "You don't have the full sem*(2) library." >&4
15334         val="$undef"
15335 fi
15336 set d_sem
15337 eval $setvar
15338
15339 : see whether sys/sem.h defines union semun
15340 echo " "
15341 $cat > try.c <<'END'
15342 #include <sys/types.h>
15343 #include <sys/ipc.h>
15344 #include <sys/sem.h>
15345 int main () { union semun semun; semun.buf = 0; }
15346 END
15347 set try
15348 if eval $compile; then
15349     echo "You have union semun in <sys/sem.h>." >&4
15350     val="$define"
15351 else
15352     echo "You do not have union semun in <sys/sem.h>." >&4
15353     val="$undef"
15354 fi
15355 $rm -f try try.c
15356 set d_union_semun
15357 eval $setvar
15358
15359 : see how to do semctl IPC_STAT
15360 case "$d_sem" in
15361 $define)
15362     echo " "
15363     $cat > try.h <<END
15364 #ifndef S_IRUSR
15365 #   ifdef S_IREAD
15366 #       define S_IRUSR S_IREAD
15367 #       define S_IWUSR S_IWRITE
15368 #       define S_IXUSR S_IEXEC
15369 #   else
15370 #       define S_IRUSR 0400
15371 #       define S_IWUSR 0200
15372 #       define S_IXUSR 0100
15373 #   endif
15374 #   define S_IRGRP (S_IRUSR>>3)
15375 #   define S_IWGRP (S_IWUSR>>3)
15376 #   define S_IXGRP (S_IXUSR>>3)
15377 #   define S_IROTH (S_IRUSR>>6)
15378 #   define S_IWOTH (S_IWUSR>>6)
15379 #   define S_IXOTH (S_IXUSR>>6)
15380 #endif
15381 #ifndef S_IRWXU
15382 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15383 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15384 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15385 #endif
15386 END
15387     : see whether semctl IPC_STAT can use union semun
15388     val="$undef"
15389     case "$d_semctl_semun" in
15390     '')
15391       $cat > try.c <<END
15392 #include <sys/types.h>
15393 #include <sys/ipc.h>
15394 #include <sys/sem.h>
15395 #include <sys/stat.h>
15396 #include <stdio.h>
15397 #include <errno.h>
15398 #include "try.h"
15399 #ifndef errno
15400 extern int errno;
15401 #endif
15402 #$d_union_semun HAS_UNION_SEMUN
15403 int main() {
15404     union semun
15405 #ifndef HAS_UNION_SEMUN
15406     {
15407         int val;
15408         struct semid_ds *buf;
15409         unsigned short *array;
15410     }
15411 #endif
15412     arg;
15413     int sem, st;
15414
15415 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15416     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15417     if (sem > -1) {
15418         struct semid_ds argbuf;
15419         arg.buf = &argbuf;
15420 #       ifdef IPC_STAT
15421         st = semctl(sem, 0, IPC_STAT, arg);
15422         if (st == 0)
15423             printf("semun\n");
15424         else
15425 #       endif /* IPC_STAT */
15426             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15427 #       ifdef IPC_RMID
15428         if (semctl(sem, 0, IPC_RMID, arg) != 0)
15429 #       endif /* IPC_RMID */
15430             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15431     } else
15432 #endif /* IPC_PRIVATE && ... */
15433         printf("semget failed: errno = %d\n", errno);
15434   return 0;
15435 }
15436 END
15437       set try
15438       if eval $compile; then
15439           xxx=`$run ./try`
15440           case "$xxx" in
15441           semun) val="$define" ;;
15442           esac
15443       fi
15444       $rm -f try try.c
15445       ;;
15446     esac
15447     set d_semctl_semun
15448     eval $setvar
15449     case "$d_semctl_semun" in
15450     $define)
15451         echo "You can use union semun for semctl IPC_STAT." >&4
15452         also='also'
15453         ;;
15454     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15455         also=''
15456         ;;
15457     esac
15458
15459     : see whether semctl IPC_STAT can use struct semid_ds pointer
15460     val="$undef"
15461     case "$d_semctl_semid_ds" in
15462     '')
15463       $cat > try.c <<'END'
15464 #include <sys/types.h>
15465 #include <sys/ipc.h>
15466 #include <sys/sem.h>
15467 #include <sys/stat.h>
15468 #include "try.h"
15469 #include <stdio.h>
15470 #include <errno.h>
15471 #ifndef errno
15472 extern int errno;
15473 #endif
15474 int main() {
15475     struct semid_ds arg;
15476     int sem, st;
15477
15478 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15479     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15480     if (sem > -1) {
15481 #       ifdef IPC_STAT
15482         st = semctl(sem, 0, IPC_STAT, &arg);
15483         if (st == 0)
15484             printf("semid_ds\n");
15485         else
15486 #       endif /* IPC_STAT */
15487             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15488 #       ifdef IPC_RMID
15489         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15490 #       endif /* IPC_RMID */
15491             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15492     } else
15493 #endif /* IPC_PRIVATE && ... */
15494         printf("semget failed: errno = %d\n", errno);
15495
15496     return 0;
15497 }
15498 END
15499       set try
15500       if eval $compile; then
15501           xxx=`$run ./try`
15502           case "$xxx" in
15503           semid_ds) val="$define" ;;
15504           esac
15505       fi
15506       $rm -f try try.c
15507       ;;
15508     esac
15509     set d_semctl_semid_ds
15510     eval $setvar
15511     case "$d_semctl_semid_ds" in
15512     $define)
15513         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15514         ;;
15515     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15516         ;;
15517     esac
15518     $rm -f try.h
15519     ;;
15520 *)  val="$undef"
15521
15522     # We do not have the full sem*(2) library, so assume we can not
15523     # use either.
15524
15525     set d_semctl_semun
15526     eval $setvar
15527
15528     set d_semctl_semid_ds
15529     eval $setvar
15530     ;;
15531 esac
15532
15533 : see if sendmsg exists
15534 set sendmsg d_sendmsg
15535 eval $inlibc
15536
15537 : see if setegid exists
15538 set setegid d_setegid
15539 eval $inlibc
15540
15541 : see if seteuid exists
15542 set seteuid d_seteuid
15543 eval $inlibc
15544
15545 : see if setgrent exists
15546 set setgrent d_setgrent
15547 eval $inlibc
15548
15549 : see if setgrent_r exists
15550 set setgrent_r d_setgrent_r
15551 eval $inlibc
15552 case "$d_setgrent_r" in
15553 "$define")
15554         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15555         case "$d_setgrent_r_proto:$usethreads" in
15556         ":define")      d_setgrent_r_proto=define
15557                 set d_setgrent_r_proto setgrent_r $hdrs
15558                 eval $hasproto ;;
15559         *)      ;;
15560         esac
15561         case "$d_setgrent_r_proto" in
15562         define)
15563         case "$setgrent_r_proto" in
15564         ''|0) try='int setgrent_r(FILE**);'
15565         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15566         esac
15567         case "$setgrent_r_proto" in
15568         ''|0) try='void setgrent_r(FILE**);'
15569         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15570         esac
15571         case "$setgrent_r_proto" in
15572         ''|0)   d_setgrent_r=undef
15573                 setgrent_r_proto=0
15574                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15575         * )     case "$setgrent_r_proto" in
15576                 REENTRANT_PROTO*) ;;
15577                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15578                 esac
15579                 echo "Prototype: $try" ;;
15580         esac
15581         ;;
15582         *)      case "$usethreads" in
15583                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15584                 esac
15585                 d_setgrent_r=undef
15586                 setgrent_r_proto=0
15587                 ;;
15588         esac
15589         ;;
15590 *)      setgrent_r_proto=0
15591         ;;
15592 esac
15593
15594 : see if sethostent exists
15595 set sethostent d_sethent
15596 eval $inlibc
15597
15598 : see if sethostent_r exists
15599 set sethostent_r d_sethostent_r
15600 eval $inlibc
15601 case "$d_sethostent_r" in
15602 "$define")
15603         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15604         case "$d_sethostent_r_proto:$usethreads" in
15605         ":define")      d_sethostent_r_proto=define
15606                 set d_sethostent_r_proto sethostent_r $hdrs
15607                 eval $hasproto ;;
15608         *)      ;;
15609         esac
15610         case "$d_sethostent_r_proto" in
15611         define)
15612         case "$sethostent_r_proto" in
15613         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15614         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15615         esac
15616         case "$sethostent_r_proto" in
15617         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15618         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15619         esac
15620         case "$sethostent_r_proto" in
15621         ''|0)   d_sethostent_r=undef
15622                 sethostent_r_proto=0
15623                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15624         * )     case "$sethostent_r_proto" in
15625                 REENTRANT_PROTO*) ;;
15626                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15627                 esac
15628                 echo "Prototype: $try" ;;
15629         esac
15630         ;;
15631         *)      case "$usethreads" in
15632                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15633                 esac
15634                 d_sethostent_r=undef
15635                 sethostent_r_proto=0
15636                 ;;
15637         esac
15638         ;;
15639 *)      sethostent_r_proto=0
15640         ;;
15641 esac
15642
15643 : see if setitimer exists
15644 set setitimer d_setitimer
15645 eval $inlibc
15646
15647 : see if setlinebuf exists
15648 set setlinebuf d_setlinebuf
15649 eval $inlibc
15650
15651 : see if setlocale exists
15652 set setlocale d_setlocale
15653 eval $inlibc
15654
15655 : see if locale.h is available
15656 set locale.h i_locale
15657 eval $inhdr
15658
15659 : see if setlocale_r exists
15660 set setlocale_r d_setlocale_r
15661 eval $inlibc
15662 case "$d_setlocale_r" in
15663 "$define")
15664         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15665         case "$d_setlocale_r_proto:$usethreads" in
15666         ":define")      d_setlocale_r_proto=define
15667                 set d_setlocale_r_proto setlocale_r $hdrs
15668                 eval $hasproto ;;
15669         *)      ;;
15670         esac
15671         case "$d_setlocale_r_proto" in
15672         define)
15673         case "$setlocale_r_proto" in
15674         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15675         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15676         esac
15677         case "$setlocale_r_proto" in
15678         ''|0)   d_setlocale_r=undef
15679                 setlocale_r_proto=0
15680                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15681         * )     case "$setlocale_r_proto" in
15682                 REENTRANT_PROTO*) ;;
15683                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15684                 esac
15685                 echo "Prototype: $try" ;;
15686         esac
15687         ;;
15688         *)      case "$usethreads" in
15689                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15690                 esac
15691                 d_setlocale_r=undef
15692                 setlocale_r_proto=0
15693                 ;;
15694         esac
15695         ;;
15696 *)      setlocale_r_proto=0
15697         ;;
15698 esac
15699
15700 : see if setnetent exists
15701 set setnetent d_setnent
15702 eval $inlibc
15703
15704 : see if setnetent_r exists
15705 set setnetent_r d_setnetent_r
15706 eval $inlibc
15707 case "$d_setnetent_r" in
15708 "$define")
15709         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15710         case "$d_setnetent_r_proto:$usethreads" in
15711         ":define")      d_setnetent_r_proto=define
15712                 set d_setnetent_r_proto setnetent_r $hdrs
15713                 eval $hasproto ;;
15714         *)      ;;
15715         esac
15716         case "$d_setnetent_r_proto" in
15717         define)
15718         case "$setnetent_r_proto" in
15719         ''|0) try='int setnetent_r(int, struct netent_data*);'
15720         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15721         esac
15722         case "$setnetent_r_proto" in
15723         ''|0) try='void setnetent_r(int, struct netent_data*);'
15724         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15725         esac
15726         case "$setnetent_r_proto" in
15727         ''|0)   d_setnetent_r=undef
15728                 setnetent_r_proto=0
15729                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15730         * )     case "$setnetent_r_proto" in
15731                 REENTRANT_PROTO*) ;;
15732                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15733                 esac
15734                 echo "Prototype: $try" ;;
15735         esac
15736         ;;
15737         *)      case "$usethreads" in
15738                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15739                 esac
15740                 d_setnetent_r=undef
15741                 setnetent_r_proto=0
15742                 ;;
15743         esac
15744         ;;
15745 *)      setnetent_r_proto=0
15746         ;;
15747 esac
15748
15749 : see if setprotoent exists
15750 set setprotoent d_setpent
15751 eval $inlibc
15752
15753 : see if setpgid exists
15754 set setpgid d_setpgid
15755 eval $inlibc
15756
15757 : see if setpgrp2 exists
15758 set setpgrp2 d_setpgrp2
15759 eval $inlibc
15760
15761 : see if setpriority exists
15762 set setpriority d_setprior
15763 eval $inlibc
15764
15765 : see if setproctitle exists
15766 set setproctitle d_setproctitle
15767 eval $inlibc
15768
15769 : see if setprotoent_r exists
15770 set setprotoent_r d_setprotoent_r
15771 eval $inlibc
15772 case "$d_setprotoent_r" in
15773 "$define")
15774         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15775         case "$d_setprotoent_r_proto:$usethreads" in
15776         ":define")      d_setprotoent_r_proto=define
15777                 set d_setprotoent_r_proto setprotoent_r $hdrs
15778                 eval $hasproto ;;
15779         *)      ;;
15780         esac
15781         case "$d_setprotoent_r_proto" in
15782         define)
15783         case "$setprotoent_r_proto" in
15784         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15785         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15786         esac
15787         case "$setprotoent_r_proto" in
15788         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15789         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15790         esac
15791         case "$setprotoent_r_proto" in
15792         ''|0)   d_setprotoent_r=undef
15793                 setprotoent_r_proto=0
15794                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15795         * )     case "$setprotoent_r_proto" in
15796                 REENTRANT_PROTO*) ;;
15797                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15798                 esac
15799                 echo "Prototype: $try" ;;
15800         esac
15801         ;;
15802         *)      case "$usethreads" in
15803                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15804                 esac
15805                 d_setprotoent_r=undef
15806                 setprotoent_r_proto=0
15807                 ;;
15808         esac
15809         ;;
15810 *)      setprotoent_r_proto=0
15811         ;;
15812 esac
15813
15814 : see if setpwent exists
15815 set setpwent d_setpwent
15816 eval $inlibc
15817
15818 : see if setpwent_r exists
15819 set setpwent_r d_setpwent_r
15820 eval $inlibc
15821 case "$d_setpwent_r" in
15822 "$define")
15823         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15824         case "$d_setpwent_r_proto:$usethreads" in
15825         ":define")      d_setpwent_r_proto=define
15826                 set d_setpwent_r_proto setpwent_r $hdrs
15827                 eval $hasproto ;;
15828         *)      ;;
15829         esac
15830         case "$d_setpwent_r_proto" in
15831         define)
15832         case "$setpwent_r_proto" in
15833         ''|0) try='int setpwent_r(FILE**);'
15834         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15835         esac
15836         case "$setpwent_r_proto" in
15837         ''|0) try='void setpwent_r(FILE**);'
15838         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15839         esac
15840         case "$setpwent_r_proto" in
15841         ''|0)   d_setpwent_r=undef
15842                 setpwent_r_proto=0
15843                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15844         * )     case "$setpwent_r_proto" in
15845                 REENTRANT_PROTO*) ;;
15846                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15847                 esac
15848                 echo "Prototype: $try" ;;
15849         esac
15850         ;;
15851         *)      case "$usethreads" in
15852                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15853                 esac
15854                 d_setpwent_r=undef
15855                 setpwent_r_proto=0
15856                 ;;
15857         esac
15858         ;;
15859 *)      setpwent_r_proto=0
15860         ;;
15861 esac
15862
15863 : see if setregid exists
15864 set setregid d_setregid
15865 eval $inlibc
15866 set setresgid d_setresgid
15867 eval $inlibc
15868
15869 : see if setreuid exists
15870 set setreuid d_setreuid
15871 eval $inlibc
15872 set setresuid d_setresuid
15873 eval $inlibc
15874
15875 : see if setrgid exists
15876 set setrgid d_setrgid
15877 eval $inlibc
15878
15879 : see if setruid exists
15880 set setruid d_setruid
15881 eval $inlibc
15882
15883 : see if setservent exists
15884 set setservent d_setsent
15885 eval $inlibc
15886
15887 : see if setservent_r exists
15888 set setservent_r d_setservent_r
15889 eval $inlibc
15890 case "$d_setservent_r" in
15891 "$define")
15892         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15893         case "$d_setservent_r_proto:$usethreads" in
15894         ":define")      d_setservent_r_proto=define
15895                 set d_setservent_r_proto setservent_r $hdrs
15896                 eval $hasproto ;;
15897         *)      ;;
15898         esac
15899         case "$d_setservent_r_proto" in
15900         define)
15901         case "$setservent_r_proto" in
15902         ''|0) try='int setservent_r(int, struct servent_data*);'
15903         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15904         esac
15905         case "$setservent_r_proto" in
15906         ''|0) try='void setservent_r(int, struct servent_data*);'
15907         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15908         esac
15909         case "$setservent_r_proto" in
15910         ''|0)   d_setservent_r=undef
15911                 setservent_r_proto=0
15912                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15913         * )     case "$setservent_r_proto" in
15914                 REENTRANT_PROTO*) ;;
15915                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15916                 esac
15917                 echo "Prototype: $try" ;;
15918         esac
15919         ;;
15920         *)      case "$usethreads" in
15921                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15922                 esac
15923                 d_setservent_r=undef
15924                 setservent_r_proto=0
15925                 ;;
15926         esac
15927         ;;
15928 *)      setservent_r_proto=0
15929         ;;
15930 esac
15931
15932 : see if setsid exists
15933 set setsid d_setsid
15934 eval $inlibc
15935
15936 : see if setvbuf exists
15937 set setvbuf d_setvbuf
15938 eval $inlibc
15939
15940 : see if sfio.h is available
15941 set sfio.h i_sfio
15942 eval $inhdr
15943
15944
15945 : see if sfio library is available
15946 case "$i_sfio" in
15947 $define)
15948         val=''
15949         set sfreserve val
15950         eval $inlibc
15951         ;;
15952 *)
15953         val="$undef"
15954         ;;
15955 esac
15956 : Ok, but do we want to use it.
15957 case "$val" in
15958 $define)
15959         case "$usesfio" in
15960         true|$define|[yY]*) dflt='y';;
15961         *) dflt='n';;
15962         esac
15963         echo "$package can use the sfio library, but it is experimental."
15964         case "$useperlio" in
15965         "$undef")
15966             echo "For sfio also the PerlIO abstraction layer is needed."
15967             echo "Earlier you said you wouldn't want that."
15968             ;;
15969         esac
15970         rp="You seem to have sfio available, do you want to try using it?"
15971         . ./myread
15972         case "$ans" in
15973         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15974                 useperlio="$define"
15975                 val="$define"
15976                 ;;
15977         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15978                 val="$undef"
15979                 ;;
15980         esac
15981         ;;
15982 *)      case "$usesfio" in
15983         true|$define|[yY]*)
15984                 echo "Sorry, cannot find sfio on this machine." >&4
15985                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15986                 val="$undef"
15987                 ;;
15988         esac
15989         ;;
15990 esac
15991 set d_sfio
15992 eval $setvar
15993 case "$d_sfio" in
15994 $define) usesfio='true';;
15995 *) usesfio='false';;
15996 esac
15997 case "$d_sfio" in
15998 $define) ;;
15999 *)      : Remove sfio from list of libraries to use
16000         case "$libs" in
16001         *-lsfio*)
16002                 echo "Removing unneeded -lsfio from library list" >&4
16003                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
16004                 shift
16005                 libs="$*"
16006                 echo "libs = $libs" >&4
16007                 ;;
16008         esac
16009 ;;
16010 esac
16011
16012
16013 : see if shmctl exists
16014 set shmctl d_shmctl
16015 eval $inlibc
16016
16017 : see if shmget exists
16018 set shmget d_shmget
16019 eval $inlibc
16020
16021 : see if shmat exists
16022 set shmat d_shmat
16023 eval $inlibc
16024 : see what shmat returns
16025 case "$d_shmat" in
16026 "$define")
16027         $cat >shmat.c <<'END'
16028 #include <sys/shm.h>
16029 void *shmat();
16030 END
16031         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
16032                 shmattype='void *'
16033         else
16034                 shmattype='char *'
16035         fi
16036         echo "and it returns ($shmattype)." >&4
16037         : see if a prototype for shmat is available
16038         xxx=`./findhdr sys/shm.h`
16039         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
16040         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
16041                 val="$define"
16042         else
16043                 val="$undef"
16044         fi
16045         $rm -f shmat.[co]
16046         ;;
16047 *)
16048         val="$undef"
16049         ;;
16050 esac
16051 set d_shmatprototype
16052 eval $setvar
16053
16054 : see if shmdt exists
16055 set shmdt d_shmdt
16056 eval $inlibc
16057
16058 : see how much of the 'shm*(2)' library is present.
16059 h_shm=true
16060 echo " "
16061 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
16062 *"$undef"*) h_shm=false;;
16063 esac
16064 case "$osname" in
16065 freebsd)
16066     case "`ipcs 2>&1`" in
16067     "SVID shared memory"*"not configured"*)
16068         echo "Your $osname does not have the shm*(2) configured." >&4
16069         h_shm=false
16070         val="$undef"
16071         set shmctl d_shmctl
16072         evat $setvar
16073         set shmget d_shmget
16074         evat $setvar
16075         set shmat d_shmat
16076         evat $setvar
16077         set shmdt d_shmdt
16078         evat $setvar
16079         ;;
16080     esac
16081     ;;
16082 esac
16083 : we could also check for sys/ipc.h ...
16084 if $h_shm && $test `./findhdr sys/shm.h`; then
16085         echo "You have the full shm*(2) library." >&4
16086         val="$define"
16087 else
16088         echo "You don't have the full shm*(2) library." >&4
16089         val="$undef"
16090 fi
16091 set d_shm
16092 eval $setvar
16093
16094 echo " "
16095 : see if we have sigaction
16096 if set sigaction val -f d_sigaction; eval $csym; $val; then
16097         echo 'sigaction() found.' >&4
16098         $cat > try.c <<EOP
16099 #include <stdio.h>
16100 #include <sys/types.h>
16101 #include <signal.h>
16102 #$i_stdlib I_STDLIB
16103 #ifdef I_STDLIB
16104 #include <stdlib.h>
16105 #endif
16106 int main()
16107 {
16108     struct sigaction act, oact;
16109     act.sa_flags = 0;
16110     oact.sa_handler = 0;
16111     /* so that act and oact are used */
16112     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16113 }
16114 EOP
16115         set try
16116         if eval $compile_ok; then
16117                 val="$define"
16118         else
16119                 echo "But you don't seem to have a useable struct sigaction." >&4
16120                 val="$undef"
16121         fi
16122 else
16123         echo 'sigaction NOT found.' >&4
16124         val="$undef"
16125 fi
16126 set d_sigaction; eval $setvar
16127 $rm -f try try$_o try.c
16128
16129 : see if sigprocmask exists
16130 set sigprocmask d_sigprocmask
16131 eval $inlibc
16132
16133 : see if sigsetjmp exists
16134 echo " "
16135 case "$d_sigsetjmp" in
16136 '')
16137         $cat >try.c <<EOP
16138 #include <setjmp.h>
16139 #$i_stdlib I_STDLIB
16140 #ifdef I_STDLIB
16141 #include <stdlib.h>
16142 #endif
16143 sigjmp_buf env;
16144 int set = 1;
16145 int main()
16146 {
16147         if (sigsetjmp(env,1))
16148                 exit(set);
16149         set = 0;
16150         siglongjmp(env, 1);
16151         exit(1);
16152 }
16153 EOP
16154         set try
16155         if eval $compile; then
16156                 if $run ./try >/dev/null 2>&1; then
16157                         echo "POSIX sigsetjmp found." >&4
16158                         val="$define"
16159                 else
16160                         $cat >&4 <<EOM
16161 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16162 I'll ignore them.
16163 EOM
16164                         val="$undef"
16165                 fi
16166         else
16167                 echo "sigsetjmp not found." >&4
16168                 val="$undef"
16169         fi
16170         ;;
16171 *) val="$d_sigsetjmp"
16172         case "$d_sigsetjmp" in
16173         $define) echo "POSIX sigsetjmp found." >&4;;
16174         $undef) echo "sigsetjmp not found." >&4;;
16175         esac
16176         ;;
16177 esac
16178 set d_sigsetjmp
16179 eval $setvar
16180 $rm -f try.c try
16181
16182 : see if sockatmark exists
16183 set sockatmark d_sockatmark
16184 eval $inlibc
16185
16186 : see if prototype for sockatmark is available
16187 echo " "
16188 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16189 eval $hasproto
16190
16191 : see if socks5_init exists
16192 set socks5_init d_socks5_init
16193 eval $inlibc
16194
16195 : see if srand48_r exists
16196 set srand48_r d_srand48_r
16197 eval $inlibc
16198 case "$d_srand48_r" in
16199 "$define")
16200         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16201         case "$d_srand48_r_proto:$usethreads" in
16202         ":define")      d_srand48_r_proto=define
16203                 set d_srand48_r_proto srand48_r $hdrs
16204                 eval $hasproto ;;
16205         *)      ;;
16206         esac
16207         case "$d_srand48_r_proto" in
16208         define)
16209         case "$srand48_r_proto" in
16210         ''|0) try='int srand48_r(long, struct drand48_data*);'
16211         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16212         esac
16213         case "$srand48_r_proto" in
16214         ''|0)   d_srand48_r=undef
16215                 srand48_r_proto=0
16216                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16217         * )     case "$srand48_r_proto" in
16218                 REENTRANT_PROTO*) ;;
16219                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16220                 esac
16221                 echo "Prototype: $try" ;;
16222         esac
16223         ;;
16224         *)      case "$usethreads" in
16225                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16226                 esac
16227                 d_srand48_r=undef
16228                 srand48_r_proto=0
16229                 ;;
16230         esac
16231         ;;
16232 *)      srand48_r_proto=0
16233         ;;
16234 esac
16235
16236 : see if srandom_r exists
16237 set srandom_r d_srandom_r
16238 eval $inlibc
16239 case "$d_srandom_r" in
16240 "$define")
16241         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16242         case "$d_srandom_r_proto:$usethreads" in
16243         ":define")      d_srandom_r_proto=define
16244                 set d_srandom_r_proto srandom_r $hdrs
16245                 eval $hasproto ;;
16246         *)      ;;
16247         esac
16248         case "$d_srandom_r_proto" in
16249         define)
16250         case "$srandom_r_proto" in
16251         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16252         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16253         esac
16254         case "$srandom_r_proto" in
16255         ''|0)   d_srandom_r=undef
16256                 srandom_r_proto=0
16257                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16258         * )     case "$srandom_r_proto" in
16259                 REENTRANT_PROTO*) ;;
16260                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16261                 esac
16262                 echo "Prototype: $try" ;;
16263         esac
16264         ;;
16265         *)      case "$usethreads" in
16266                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16267                 esac
16268                 d_srandom_r=undef
16269                 srandom_r_proto=0
16270                 ;;
16271         esac
16272         ;;
16273 *)      srandom_r_proto=0
16274         ;;
16275 esac
16276
16277 : see if prototype for setresgid is available
16278 echo " "
16279 set d_sresgproto setresgid $i_unistd unistd.h
16280 eval $hasproto
16281
16282 : see if prototype for setresuid is available
16283 echo " "
16284 set d_sresuproto setresuid $i_unistd unistd.h
16285 eval $hasproto
16286
16287 : see if sys/stat.h is available
16288 set sys/stat.h i_sysstat
16289 eval $inhdr
16290
16291
16292 : see if stat knows about block sizes
16293 echo " "
16294 echo "Checking to see if your struct stat has st_blocks field..." >&4
16295 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16296 eval $hasfield
16297
16298
16299 : see if this is a sys/vfs.h system
16300 set sys/vfs.h i_sysvfs
16301 eval $inhdr
16302
16303
16304 : see if this is a sys/statfs.h system
16305 set sys/statfs.h i_sysstatfs
16306 eval $inhdr
16307
16308
16309 echo " "
16310 echo "Checking to see if your system supports struct statfs..." >&4
16311 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
16312 eval $hasstruct
16313 case "$d_statfs_s" in
16314 "$define")      echo "Yes, it does."   ;;
16315 *)              echo "No, it doesn't." ;;
16316 esac
16317
16318
16319
16320 : see if struct statfs knows about f_flags
16321 case "$d_statfs_s" in
16322 define) 
16323         echo " "
16324         echo "Checking to see if your struct statfs has f_flags field..." >&4
16325         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
16326         eval $hasfield
16327         ;;
16328 *)      val="$undef"
16329         set d_statfs_f_flags
16330         eval $setvar
16331         ;;
16332 esac
16333 case "$d_statfs_f_flags" in
16334 "$define")      echo "Yes, it does."   ;;
16335 *)              echo "No, it doesn't." ;;
16336 esac
16337
16338 $cat >&4 <<EOM
16339 Checking how to access stdio streams by file descriptor number...
16340 EOM
16341 case "$stdio_stream_array" in
16342 '')     $cat >try.c <<EOCP
16343 #include <stdio.h>
16344 int main() {
16345   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16346     printf("yes\n");
16347 }
16348 EOCP
16349         for s in _iob __iob __sF
16350         do
16351                 set try -DSTDIO_STREAM_ARRAY=$s
16352                 if eval $compile; then
16353                         case "`$run ./try`" in
16354                         yes)    stdio_stream_array=$s; break ;;
16355                         esac
16356                 fi
16357         done
16358         $rm -f try.* try$exe_ext
16359 esac
16360 case "$stdio_stream_array" in
16361 '')     $cat >&4 <<EOM
16362 I can't figure out how to access stdio streams by file descriptor number.
16363 EOM
16364         d_stdio_stream_array="$undef"
16365         ;;
16366 *)      $cat >&4 <<EOM
16367 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16368 EOM
16369         d_stdio_stream_array="$define"
16370         ;;
16371 esac
16372
16373 : see if strcoll exists
16374 set strcoll d_strcoll
16375 eval $inlibc
16376
16377 : check for structure copying
16378 echo " "
16379 echo "Checking to see if your C compiler can copy structs..." >&4
16380 $cat >try.c <<'EOCP'
16381 int main()
16382 {
16383         struct blurfl {
16384                 int dyick;
16385         } foo, bar;
16386
16387         foo = bar;
16388 }
16389 EOCP
16390 if $cc -c try.c >/dev/null 2>&1 ; then
16391         val="$define"
16392         echo "Yup, it can."
16393 else
16394         val="$undef"
16395         echo "Nope, it can't."
16396 fi
16397 set d_strctcpy
16398 eval $setvar
16399 $rm -f try.*
16400
16401 : see if strerror and/or sys_errlist[] exist
16402 echo " "
16403 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16404     if set strerror val -f d_strerror; eval $csym; $val; then
16405                 echo 'strerror() found.' >&4
16406                 d_strerror="$define"
16407                 d_strerrm='strerror(e)'
16408                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16409                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16410                         d_syserrlst="$define"
16411                 else
16412                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16413                         d_syserrlst="$undef"
16414                 fi
16415     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16416                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16417                 echo 'strerror() found in string header.' >&4
16418                 d_strerror="$define"
16419                 d_strerrm='strerror(e)'
16420                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16421                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16422                                 d_syserrlst="$define"
16423                 else
16424                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16425                         d_syserrlst="$undef"
16426                 fi
16427     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16428                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16429                 d_strerror="$undef"
16430                 d_syserrlst="$define"
16431                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16432     else
16433                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16434                 d_strerror="$undef"
16435                 d_syserrlst="$undef"
16436                 d_strerrm='"unknown"'
16437     fi
16438 fi
16439
16440 : see if strerror_r exists
16441 set strerror_r d_strerror_r
16442 eval $inlibc
16443 case "$d_strerror_r" in
16444 "$define")
16445         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16446         case "$d_strerror_r_proto:$usethreads" in
16447         ":define")      d_strerror_r_proto=define
16448                 set d_strerror_r_proto strerror_r $hdrs
16449                 eval $hasproto ;;
16450         *)      ;;
16451         esac
16452         case "$d_strerror_r_proto" in
16453         define)
16454         case "$strerror_r_proto" in
16455         ''|0) try='int strerror_r(int, char*, size_t);'
16456         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16457         esac
16458         case "$strerror_r_proto" in
16459         ''|0) try='int strerror_r(int, char*, int);'
16460         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16461         esac
16462         case "$strerror_r_proto" in
16463         ''|0) try='char* strerror_r(int, char*, size_t);'
16464         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16465         esac
16466         case "$strerror_r_proto" in
16467         ''|0)   d_strerror_r=undef
16468                 strerror_r_proto=0
16469                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16470         * )     case "$strerror_r_proto" in
16471                 REENTRANT_PROTO*) ;;
16472                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16473                 esac
16474                 echo "Prototype: $try" ;;
16475         esac
16476         ;;
16477         *)      case "$usethreads" in
16478                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16479                 esac
16480                 d_strerror_r=undef
16481                 strerror_r_proto=0
16482                 ;;
16483         esac
16484         ;;
16485 *)      strerror_r_proto=0
16486         ;;
16487 esac
16488
16489 : see if strftime exists
16490 set strftime d_strftime
16491 eval $inlibc
16492
16493 : see if strlcat exists
16494 set strlcat d_strlcat
16495 eval $inlibc
16496
16497 : see if strlcpy exists
16498 set strlcpy d_strlcpy
16499 eval $inlibc
16500
16501 : see if strtod exists
16502 set strtod d_strtod
16503 eval $inlibc
16504
16505 : see if strtol exists
16506 set strtol d_strtol
16507 eval $inlibc
16508
16509 : see if strtold exists
16510 set strtold d_strtold
16511 eval $inlibc
16512
16513 : see if strtoll exists
16514 set strtoll d_strtoll
16515 eval $inlibc
16516
16517 case "$d_longlong-$d_strtoll" in
16518 "$define-$define")
16519         $cat <<EOM
16520 Checking whether your strtoll() works okay...
16521 EOM
16522         $cat >try.c <<'EOCP'
16523 #include <errno.h>
16524 #ifdef __hpux
16525 #define strtoll __strtoll
16526 #endif
16527 #ifdef __EMX__
16528 #define strtoll _strtoll
16529 #endif
16530 #include <stdio.h>
16531 extern long long int strtoll(char *s, char **, int); 
16532 static int bad = 0;
16533 int check(char *s, long long ell, int een) {
16534         long long gll;
16535         errno = 0;
16536         gll = strtoll(s, 0, 10);
16537         if (!((gll == ell) && (errno == een)))
16538                 bad++;
16539 }
16540 int main() {
16541         check(" 1",                                      1LL, 0);
16542         check(" 0",                                      0LL, 0);
16543         check("-1",                                     -1LL, 0);
16544         check("-9223372036854775808", -9223372036854775808LL, 0);
16545         check("-9223372036854775808", -9223372036854775808LL, 0);
16546         check(" 9223372036854775807",  9223372036854775807LL, 0);
16547         check("-9223372036854775808", -9223372036854775808LL, 0);
16548         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16549         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16550         if (!bad)
16551                 printf("ok\n");
16552 }
16553 EOCP
16554         set try
16555         if eval $compile; then
16556                 yyy=`$run ./try`
16557                 case "$yyy" in
16558                 ok) echo "Your strtoll() seems to be working okay." ;;
16559                 *) cat <<EOM >&4
16560 Your strtoll() doesn't seem to be working okay.
16561 EOM
16562                    d_strtoll="$undef"
16563                    ;;
16564                 esac
16565         else
16566                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16567                 d_strtoll="$undef"
16568         fi
16569         ;;
16570 esac
16571
16572 : see if strtoq exists
16573 set strtoq d_strtoq
16574 eval $inlibc
16575
16576 : see if strtoul exists
16577 set strtoul d_strtoul
16578 eval $inlibc
16579
16580 case "$d_strtoul" in
16581 "$define")
16582         $cat <<EOM
16583 Checking whether your strtoul() works okay...
16584 EOM
16585         $cat >try.c <<'EOCP'
16586 #include <errno.h>
16587 #include <stdio.h>
16588 extern unsigned long int strtoul(char *s, char **, int); 
16589 static int bad = 0;
16590 void check(char *s, unsigned long eul, int een) {
16591         unsigned long gul;
16592         errno = 0;
16593         gul = strtoul(s, 0, 10);
16594         if (!((gul == eul) && (errno == een)))
16595                 bad++;
16596 }
16597 int main() {
16598         check(" 1", 1L, 0);
16599         check(" 0", 0L, 0);
16600 EOCP
16601         case "$longsize" in
16602         8)
16603             $cat >>try.c <<'EOCP'
16604         check("18446744073709551615", 18446744073709551615UL, 0);
16605         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16606 #if 0 /* strtoul() for /^-/ strings is undefined. */
16607         check("-1", 18446744073709551615UL, 0);
16608         check("-18446744073709551614", 2, 0);
16609         check("-18446744073709551615", 1, 0);
16610         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16611         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16612 #endif
16613 EOCP
16614                 ;;
16615         4)
16616                     $cat >>try.c <<'EOCP'
16617         check("4294967295", 4294967295UL, 0);
16618         check("4294967296", 4294967295UL, ERANGE);
16619 #if 0 /* strtoul() for /^-/ strings is undefined. */
16620         check("-1", 4294967295UL, 0);
16621         check("-4294967294", 2, 0);
16622         check("-4294967295", 1, 0);
16623         check("-4294967296", 4294967295UL, ERANGE);
16624         check("-4294967297", 4294967295UL, ERANGE);
16625 #endif
16626 EOCP
16627                 ;;
16628         *)
16629 : Should we write these tests to be more portable by sprintf-ing
16630 : ~0 and then manipulating that char string as input for strtol?
16631                 ;;
16632         esac
16633         $cat >>try.c <<'EOCP'
16634         if (!bad)
16635                 printf("ok\n");
16636         return 0;
16637 }
16638 EOCP
16639         set try
16640         if eval $compile; then
16641                 case "`$run ./try`" in
16642                 ok) echo "Your strtoul() seems to be working okay." ;;
16643                 *) cat <<EOM >&4
16644 Your strtoul() doesn't seem to be working okay.
16645 EOM
16646                    d_strtoul="$undef"
16647                    ;;
16648                 esac
16649         fi
16650         ;;
16651 esac
16652
16653 : see if strtoull exists
16654 set strtoull d_strtoull
16655 eval $inlibc
16656
16657 case "$d_longlong-$d_strtoull" in
16658 "$define-$define")
16659         $cat <<EOM
16660 Checking whether your strtoull() works okay...
16661 EOM
16662         $cat >try.c <<'EOCP'
16663 #include <errno.h>
16664 #ifdef __hpux
16665 #define strtoull __strtoull
16666 #endif
16667 #include <stdio.h>
16668 extern unsigned long long int strtoull(char *s, char **, int); 
16669 static int bad = 0;
16670 int check(char *s, long long eull, int een) {
16671         long long gull;
16672         errno = 0;
16673         gull = strtoull(s, 0, 10);
16674         if (!((gull == eull) && (errno == een)))
16675                 bad++;
16676 }
16677 int main() {
16678         check(" 1",                                        1LL, 0);
16679         check(" 0",                                        0LL, 0);
16680         check("18446744073709551615",  18446744073709551615ULL, 0);
16681         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16682 #if 0 /* strtoull() for /^-/ strings is undefined. */
16683         check("-1",                    18446744073709551615ULL, 0);
16684         check("-18446744073709551614",                     2LL, 0);
16685         check("-18446744073709551615",                     1LL, 0);
16686         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16687         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16688 #endif
16689         if (!bad)
16690                 printf("ok\n");
16691 }
16692 EOCP
16693         set try
16694         if eval $compile; then
16695                 case "`$run ./try`" in
16696                 ok) echo "Your strtoull() seems to be working okay." ;;
16697                 *) cat <<EOM >&4
16698 Your strtoull() doesn't seem to be working okay.
16699 EOM
16700                    d_strtoull="$undef"
16701                    ;;
16702                 esac
16703         fi
16704         ;;
16705 esac
16706
16707 : see if strtouq exists
16708 set strtouq d_strtouq
16709 eval $inlibc
16710
16711 case "$d_strtouq" in
16712 "$define")
16713         $cat <<EOM
16714 Checking whether your strtouq() works okay...
16715 EOM
16716         $cat >try.c <<'EOCP'
16717 #include <errno.h>
16718 #include <stdio.h>
16719 extern unsigned long long int strtouq(char *s, char **, int); 
16720 static int bad = 0;
16721 void check(char *s, unsigned long long eull, int een) {
16722         unsigned long long gull;
16723         errno = 0;
16724         gull = strtouq(s, 0, 10);
16725         if (!((gull == eull) && (errno == een)))
16726                 bad++;
16727 }
16728 int main() {
16729         check(" 1",                                        1LL, 0);
16730         check(" 0",                                        0LL, 0);
16731         check("18446744073709551615",  18446744073709551615ULL, 0);
16732         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16733 #if 0 /* strtouq() for /^-/ strings is undefined. */
16734         check("-1",                    18446744073709551615ULL, 0);
16735         check("-18446744073709551614",                     2LL, 0);
16736         check("-18446744073709551615",                     1LL, 0);
16737         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16738         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16739 #endif
16740         if (!bad)
16741                 printf("ok\n");
16742         return 0;
16743 }
16744 EOCP
16745         set try
16746         if eval $compile; then
16747                 case "`$run ./try`" in
16748                 ok) echo "Your strtouq() seems to be working okay." ;;
16749                 *) cat <<EOM >&4
16750 Your strtouq() doesn't seem to be working okay.
16751 EOM
16752                    d_strtouq="$undef"
16753                    ;;
16754                 esac
16755         fi
16756         ;;
16757 esac
16758
16759 : see if strxfrm exists
16760 set strxfrm d_strxfrm
16761 eval $inlibc
16762
16763 : see if symlink exists
16764 set symlink d_symlink
16765 eval $inlibc
16766
16767 : see if syscall exists
16768 set syscall d_syscall
16769 eval $inlibc
16770
16771 : see if prototype for syscall is available
16772 echo " "
16773 set d_syscallproto syscall $i_unistd unistd.h
16774 eval $hasproto
16775
16776 : see if sysconf exists
16777 set sysconf d_sysconf
16778 eval $inlibc
16779
16780 : see if system exists
16781 set system d_system
16782 eval $inlibc
16783
16784 : see if tcgetpgrp exists
16785 set tcgetpgrp d_tcgetpgrp
16786 eval $inlibc
16787
16788 : see if tcsetpgrp exists
16789 set tcsetpgrp d_tcsetpgrp
16790 eval $inlibc
16791
16792 : see if prototype for telldir is available
16793 echo " "
16794 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16795 eval $hasproto
16796
16797 : see if time exists
16798 echo " "
16799 if test "X$d_time" = X -o X"$timetype" = X; then
16800     if set time val -f d_time; eval $csym; $val; then
16801                 echo 'time() found.' >&4
16802                 val="$define"
16803                 rp="What is the type returned by time() on this system?"
16804                 set time_t timetype long stdio.h sys/types.h
16805                 eval $typedef_ask
16806     else
16807                 echo 'time() not found, hope that will do.' >&4
16808                 val="$undef"
16809                 timetype='int';
16810     fi
16811     set d_time
16812     eval $setvar
16813 fi
16814
16815 : see if this is a sys/times.h system
16816 set sys/times.h i_systimes
16817 eval $inhdr
16818
16819 : see if times exists
16820 echo " "
16821 if set times val -f d_times; eval $csym; $val; then
16822         echo 'times() found.' >&4
16823         d_times="$define"
16824         inc=''
16825         case "$i_systimes" in
16826         "$define") inc='sys/times.h';;
16827         esac
16828         rp="What is the type returned by times() on this system?"
16829         set clock_t clocktype long stdio.h sys/types.h $inc
16830         eval $typedef_ask
16831 else
16832         echo 'times() NOT found, hope that will do.' >&4
16833         d_times="$undef"
16834         clocktype='int'
16835 fi
16836
16837 : see if tmpnam_r exists
16838 set tmpnam_r d_tmpnam_r
16839 eval $inlibc
16840 case "$d_tmpnam_r" in
16841 "$define")
16842         hdrs="$i_systypes sys/types.h define stdio.h "
16843         case "$d_tmpnam_r_proto:$usethreads" in
16844         ":define")      d_tmpnam_r_proto=define
16845                 set d_tmpnam_r_proto tmpnam_r $hdrs
16846                 eval $hasproto ;;
16847         *)      ;;
16848         esac
16849         case "$d_tmpnam_r_proto" in
16850         define)
16851         case "$tmpnam_r_proto" in
16852         ''|0) try='char* tmpnam_r(char*);'
16853         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16854         esac
16855         case "$tmpnam_r_proto" in
16856         ''|0)   d_tmpnam_r=undef
16857                 tmpnam_r_proto=0
16858                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16859         * )     case "$tmpnam_r_proto" in
16860                 REENTRANT_PROTO*) ;;
16861                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16862                 esac
16863                 echo "Prototype: $try" ;;
16864         esac
16865         ;;
16866         *)      case "$usethreads" in
16867                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16868                 esac
16869                 d_tmpnam_r=undef
16870                 tmpnam_r_proto=0
16871                 ;;
16872         esac
16873         ;;
16874 *)      tmpnam_r_proto=0
16875         ;;
16876 esac
16877
16878 : see if truncate exists
16879 set truncate d_truncate
16880 eval $inlibc
16881
16882 : see if ttyname_r exists
16883 set ttyname_r d_ttyname_r
16884 eval $inlibc
16885 case "$d_ttyname_r" in
16886 "$define")
16887         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16888         case "$d_ttyname_r_proto:$usethreads" in
16889         ":define")      d_ttyname_r_proto=define
16890                 set d_ttyname_r_proto ttyname_r $hdrs
16891                 eval $hasproto ;;
16892         *)      ;;
16893         esac
16894         case "$d_ttyname_r_proto" in
16895         define)
16896         case "$ttyname_r_proto" in
16897         ''|0) try='int ttyname_r(int, char*, size_t);'
16898         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16899         esac
16900         case "$ttyname_r_proto" in
16901         ''|0) try='int ttyname_r(int, char*, int);'
16902         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16903         esac
16904         case "$ttyname_r_proto" in
16905         ''|0) try='char* ttyname_r(int, char*, int);'
16906         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16907         esac
16908         case "$ttyname_r_proto" in
16909         ''|0)   d_ttyname_r=undef
16910                 ttyname_r_proto=0
16911                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16912         * )     case "$ttyname_r_proto" in
16913                 REENTRANT_PROTO*) ;;
16914                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16915                 esac
16916                 echo "Prototype: $try" ;;
16917         esac
16918         ;;
16919         *)      case "$usethreads" in
16920                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16921                 esac
16922                 d_ttyname_r=undef
16923                 ttyname_r_proto=0
16924                 ;;
16925         esac
16926         ;;
16927 *)      ttyname_r_proto=0
16928         ;;
16929 esac
16930
16931 : see if tzname[] exists
16932 echo " "
16933 if set tzname val -a d_tzname; eval $csym; $val; then
16934         val="$define"
16935         echo 'tzname[] found.' >&4
16936 else
16937         val="$undef"
16938         echo 'tzname[] NOT found.' >&4
16939 fi
16940 set d_tzname
16941 eval $setvar
16942
16943 case "$osname" in
16944 next|rhapsody|darwin) multiarch="$define" ;;
16945 esac
16946 case "$multiarch" in
16947 ''|[nN]*) multiarch="$undef" ;;
16948 esac
16949
16950 : check for ordering of bytes in a UV
16951 echo " "
16952 case "$usecrosscompile$multiarch" in
16953 *$define*)
16954         $cat <<EOM
16955 You seem to be either cross-compiling or doing a multiarchitecture build,
16956 skipping the byteorder check.
16957
16958 EOM
16959         byteorder='ffff'
16960         ;;
16961 *)
16962         case "$byteorder" in
16963         '')
16964                 $cat <<'EOM'
16965 In the following, larger digits indicate more significance.  A big-endian
16966 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16967 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16968 machines may have weird orders like 3412.  A Cray will report 87654321,
16969 an Alpha will report 12345678. If the test program works the default is
16970 probably right.
16971 I'm now running the test program...
16972 EOM
16973                 $cat >try.c <<EOCP
16974 #include <stdio.h>
16975 #$i_stdlib I_STDLIB
16976 #ifdef I_STDLIB
16977 #include <stdlib.h>
16978 #endif
16979 #include <sys/types.h>
16980 typedef $uvtype UV;
16981 int main()
16982 {
16983         int i;
16984         union {
16985                 UV l;
16986                 char c[$uvsize];
16987         } u;
16988
16989         if ($uvsize > 4)
16990                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16991         else
16992                 u.l = (UV)0x04030201;
16993         for (i = 0; i < $uvsize; i++)
16994                 printf("%c", u.c[i]+'0');
16995         printf("\n");
16996         exit(0);
16997 }
16998 EOCP
16999                 xxx_prompt=y
17000                 set try
17001                 if eval $compile && ./try > /dev/null; then
17002                         dflt=`$run ./try`
17003                         case "$dflt" in
17004                         [1-4][1-4][1-4][1-4]|12345678|87654321)
17005                                 echo "(The test program ran ok.)"
17006                                 echo "byteorder=$dflt"
17007                                 xxx_prompt=n
17008                         ;;
17009                         ????|????????) echo "(The test program ran ok.)" ;;
17010                         *) echo "(The test program didn't run right for some reason.)" ;;
17011                         esac
17012                 else
17013                         dflt='4321'
17014                         cat <<'EOM'
17015 (I can't seem to compile the test program.  Guessing big-endian...)
17016 EOM
17017                 fi
17018                 case "$xxx_prompt" in
17019                 y)
17020                         rp="What is the order of bytes in $uvtype?"
17021                         . ./myread
17022                         byteorder="$ans"
17023                         ;;
17024                 *)      byteorder=$dflt
17025                         ;;
17026                 esac
17027                 ;;
17028         esac
17029         $rm -f try.c try
17030         ;;
17031 esac
17032
17033
17034 $cat <<EOM
17035
17036 Checking to see whether you can access character data unalignedly...
17037 EOM
17038 case "$d_u32align" in
17039 '')   $cat >try.c <<EOCP
17040 #include <stdio.h>
17041 #$i_stdlib I_STDLIB
17042 #ifdef I_STDLIB
17043 #include <stdlib.h>
17044 #endif
17045 #define U32 $u32type
17046 #define BYTEORDER 0x$byteorder
17047 #define U8 $u8type
17048 #include <signal.h>
17049 #ifdef SIGBUS
17050 $signal_t bletch(s) int s; { exit(4); }
17051 #endif
17052 int main() {
17053 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
17054     U8 buf[8];
17055     U32 *up;
17056     int i;
17057
17058     if (sizeof(U32) != 4) {
17059         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
17060         exit(1);
17061     }
17062
17063     fflush(stdout);
17064
17065 #ifdef SIGBUS
17066     signal(SIGBUS, bletch);
17067 #endif
17068
17069     buf[0] = 0;
17070     buf[1] = 0;
17071     buf[2] = 0;
17072     buf[3] = 1;
17073     buf[4] = 0;
17074     buf[5] = 0;
17075     buf[6] = 0;
17076     buf[7] = 1;
17077
17078     for (i = 0; i < 4; i++) {
17079         up = (U32*)(buf + i);
17080         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
17081                (*up == 1 << (8*(3-i)))  /* little-endian */
17082               )
17083            )
17084         {
17085             printf("read failed (%x)\n", *up);
17086             exit(2);
17087         }
17088     }
17089
17090     /* write test */
17091     for (i = 0; i < 4; i++) {
17092         up = (U32*)(buf + i);
17093         *up = 0xBeef;
17094         if (*up != 0xBeef) {
17095             printf("write failed (%x)\n", *up);
17096             exit(3);
17097         }
17098     }
17099
17100     exit(0);
17101 #else
17102     printf("1\n");
17103     exit(1);
17104 #endif
17105     return 0;
17106 }
17107 EOCP
17108 set try
17109 if eval $compile_ok; then
17110         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
17111         $run ./try 2>&1 >/dev/null
17112         case "$?" in
17113         0)      cat >&4 <<EOM
17114 You can access character data pretty unalignedly.
17115 EOM
17116                 d_u32align="$undef"
17117                 ;;
17118         *)      cat >&4 <<EOM
17119 It seems that you must access character data in an aligned manner.
17120 EOM
17121                 d_u32align="$define"
17122                 ;;
17123         esac
17124 else
17125         rp='Can you access character data at unaligned addresses?'
17126         dflt='n'
17127         . ./myread
17128         case "$ans" in
17129         [yY]*)  d_u32align="$undef"  ;;
17130         *)      d_u32align="$define" ;;
17131         esac
17132 fi
17133 $rm -f core core.try.* try.core
17134 ;;
17135 esac
17136
17137 : see if ualarm exists
17138 set ualarm d_ualarm
17139 eval $inlibc
17140
17141 : see if umask exists
17142 set umask d_umask
17143 eval $inlibc
17144
17145 : see if unordered exists
17146 set unordered d_unordered
17147 eval $inlibc
17148
17149 : see if usleep exists
17150 set usleep d_usleep
17151 eval $inlibc
17152
17153 : see if prototype for usleep is available
17154 echo " "
17155 set d_usleepproto usleep $i_unistd unistd.h
17156 eval $hasproto
17157
17158 : see if ustat exists
17159 set ustat d_ustat
17160 eval $inlibc
17161
17162 : backward compatibility for d_hvfork
17163 if test X$d_hvfork != X; then
17164         d_vfork="$d_hvfork"
17165         d_hvfork=''
17166 fi
17167 : see if there is a vfork
17168 val=''
17169 set vfork val
17170 eval $inlibc
17171
17172 : Ok, but do we want to use it. vfork is reportedly unreliable in 
17173 : perl on Solaris 2.x, and probably elsewhere.
17174 case "$val" in
17175 $define)
17176         echo " "
17177         case "$usevfork" in
17178         false) dflt='n';;
17179         *) dflt='y';;
17180         esac
17181         cat <<'EOM'
17182  
17183 Perl can only use a vfork() that doesn't suffer from strict
17184 restrictions on calling functions or modifying global data in
17185 the child.  For example, glibc-2.1 contains such a vfork()
17186 that is unsuitable.  If your system provides a proper fork()
17187 call, chances are that you do NOT want perl to use vfork().
17188
17189 EOM
17190         rp="Do you still want to use vfork()?"
17191         . ./myread
17192         case "$ans" in
17193         y|Y) ;;
17194         *)
17195                 echo "Ok, we won't use vfork()."
17196                 val="$undef"
17197                 ;;
17198         esac
17199         ;;
17200 esac
17201 set d_vfork
17202 eval $setvar
17203 case "$d_vfork" in
17204 $define) usevfork='true';;
17205 *) usevfork='false';;
17206 esac
17207
17208 : see if closedir exists
17209 set closedir d_closedir
17210 eval $inlibc
17211
17212 case "$d_closedir" in
17213 "$define")
17214         echo " "
17215         echo "Checking whether closedir() returns a status..." >&4
17216         cat > try.c <<EOM
17217 #$i_dirent I_DIRENT             /**/
17218 #$i_sysdir I_SYS_DIR            /**/
17219 #$i_sysndir I_SYS_NDIR          /**/
17220 #$i_systypes I_SYS_TYPES        /**/
17221
17222 #if defined(I_SYS_TYPES)
17223 #include <sys/types.h>
17224 #endif
17225 #if defined(I_DIRENT)
17226 #include <dirent.h>
17227 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17228 #include <sys/dir.h>
17229 #endif
17230 #else
17231 #ifdef I_SYS_NDIR
17232 #include <sys/ndir.h>
17233 #else
17234 #ifdef I_SYS_DIR
17235 #ifdef hp9000s500
17236 #include <ndir.h>       /* may be wrong in the future */
17237 #else
17238 #include <sys/dir.h>
17239 #endif
17240 #endif
17241 #endif
17242 #endif 
17243 int main() { return closedir(opendir(".")); }
17244 EOM
17245         set try
17246         if eval $compile_ok; then
17247                 if $run ./try > /dev/null 2>&1 ; then
17248                         echo "Yes, it does."
17249                         val="$undef"
17250                 else
17251                         echo "No, it doesn't."
17252                         val="$define"
17253                 fi
17254         else
17255                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17256                 val="$define"
17257         fi
17258         ;;
17259 *)
17260         val="$undef";
17261         ;;
17262 esac
17263 set d_void_closedir
17264 eval $setvar
17265 $rm -f try try.*
17266 : see if there is a wait4
17267 set wait4 d_wait4
17268 eval $inlibc
17269
17270 : see if waitpid exists
17271 set waitpid d_waitpid
17272 eval $inlibc
17273
17274 : see if wcstombs exists
17275 set wcstombs d_wcstombs
17276 eval $inlibc
17277
17278 : see if wctomb exists
17279 set wctomb d_wctomb
17280 eval $inlibc
17281
17282 : see if writev exists
17283 set writev d_writev
17284 eval $inlibc
17285
17286 : preserve RCS keywords in files with variable substitution, grrr
17287 Date='$Date'
17288 Id='$Id'
17289 Log='$Log'
17290 RCSfile='$RCSfile'
17291 Revision='$Revision'
17292
17293 : check for alignment requirements
17294 echo " "
17295 case "$usecrosscompile$multiarch" in
17296 *$define*)
17297         $cat <<EOM
17298 You seem to be either cross-compiling or doing a multiarchitecture build,
17299 skipping the memory alignment check.
17300
17301 EOM
17302         case "$alignbytes" in
17303         '') alignbytes=8 ;;
17304         esac
17305         ;;
17306 *)
17307         case "$alignbytes" in
17308         '') echo "Checking alignment constraints..." >&4
17309                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17310                         $cat >try.c <<'EOCP'
17311 typedef long double NV;
17312 EOCP
17313                 else
17314                         $cat >try.c <<'EOCP'
17315 typedef double NV;
17316 EOCP
17317                 fi
17318                 $cat >>try.c <<'EOCP'
17319 #include <stdio.h>
17320 struct foobar {
17321         char foo;
17322         NV bar;
17323 } try_algn;
17324 int main()
17325 {
17326     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17327     return(0);
17328 }
17329 EOCP
17330                 set try
17331                 if eval $compile_ok; then
17332                         dflt=`$run ./try`
17333                 else
17334                         dflt='8'
17335                         echo "(I can't seem to compile the test program...)"
17336                 fi
17337                 ;;
17338         *) dflt="$alignbytes"
17339                 ;;
17340         esac
17341         rp="Doubles must be aligned on a how-many-byte boundary?"
17342         . ./myread
17343         alignbytes="$ans"
17344         $rm -f try.c try
17345         ;;
17346 esac
17347
17348
17349 : set the base revision
17350 baserev=5.0
17351
17352 : how do we concatenate cpp tokens here?
17353 echo " "
17354 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
17355 $cat >cpp_stuff.c <<'EOCP'
17356 #define RCAT(a,b)a/**/b
17357 #define ACAT(a,b)a ## b
17358 RCAT(Rei,ser)
17359 ACAT(Cir,cus)
17360 EOCP
17361 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17362 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17363         echo "Oh!  Smells like ANSI's been here." >&4
17364         echo "We can catify or stringify, separately or together!"
17365         cpp_stuff=42
17366 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17367         echo "Ah, yes!  The good old days!" >&4
17368         echo "However, in the good old days we don't know how to stringify and"
17369         echo "catify at the same time."
17370         cpp_stuff=1
17371 else
17372         $cat >&4 <<EOM
17373 Hmm, I don't seem to be able to concatenate tokens with your cpp.
17374 You're going to have to edit the values of CAT[2-5] in config.h...
17375 EOM
17376         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17377 fi
17378 $rm -f cpp_stuff.*
17379
17380 : see if this is a db.h system
17381 set db.h i_db
17382 eval $inhdr
17383
17384 case "$i_db" in
17385 $define)
17386         : Check db version.
17387         echo " "
17388         echo "Checking Berkeley DB version ..." >&4
17389         $cat >try.c <<EOCP
17390 #$d_const HASCONST
17391 #ifndef HASCONST
17392 #define const
17393 #endif
17394 #include <sys/types.h>
17395 #include <stdio.h>
17396 #$i_stdlib I_STDLIB
17397 #ifdef I_STDLIB
17398 #include <stdlib.h>
17399 #endif
17400 #include <db.h>
17401 int main(int argc, char *argv[])
17402 {
17403 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17404     int Major, Minor, Patch ;
17405     unsigned long Version ;
17406     (void)db_version(&Major, &Minor, &Patch) ;
17407     if (argc == 2) {
17408         printf("%d %d %d %d %d %d\n",
17409                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17410                Major, Minor, Patch);
17411         exit(0);
17412     }
17413     printf("You have Berkeley DB Version 2 or greater.\n");
17414
17415     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17416                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17417     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17418                 Major, Minor, Patch) ;
17419
17420     /* check that db.h & libdb are compatible */
17421     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17422         printf("db.h and libdb are incompatible.\n") ;
17423         exit(3);        
17424     }
17425
17426     printf("db.h and libdb are compatible.\n") ;
17427
17428     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17429                 + DB_VERSION_PATCH ;
17430
17431     /* needs to be >= 2.3.4 */
17432     if (Version < 2003004) {
17433     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17434         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17435         exit(2);        
17436     }
17437
17438     exit(0);
17439 #else
17440 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17441     if (argc == 2) {
17442         printf("1 0 0\n");
17443         exit(0);
17444     }
17445     printf("You have Berkeley DB Version 1.\n");
17446     exit(0);    /* DB version < 2: the coast is clear. */
17447 #else
17448     exit(1);    /* <db.h> not Berkeley DB? */
17449 #endif
17450 #endif
17451 }
17452 EOCP
17453         set try
17454         if eval $compile_ok && $run ./try; then
17455                 echo 'Looks OK.' >&4
17456                 set `$run ./try 1`
17457                 db_version_major=$1
17458                 db_version_minor=$2
17459                 db_version_patch=$3
17460         else
17461                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17462                 i_db=$undef
17463                 case " $libs " in
17464                 *"-ldb "*)
17465                         : Remove db from list of libraries to use
17466                         echo "Removing unusable -ldb from library list" >&4
17467                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17468                         shift
17469                         libs="$*"
17470                         echo "libs = $libs" >&4
17471                         ;;
17472                 esac
17473         fi
17474         $rm -f try.*
17475         ;;
17476 esac
17477
17478 case "$i_db" in
17479 define)
17480         : Check the return type needed for hash 
17481         echo " "
17482         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17483         $cat >try.c <<EOCP
17484 #$d_const HASCONST
17485 #ifndef HASCONST
17486 #define const
17487 #endif
17488 #include <sys/types.h>
17489 #include <db.h>
17490
17491 #ifndef DB_VERSION_MAJOR
17492 u_int32_t hash_cb (ptr, size)
17493 const void *ptr;
17494 size_t size;
17495 {
17496 }
17497 HASHINFO info;
17498 int main()
17499 {
17500         info.hash = hash_cb;
17501 }
17502 #endif
17503 EOCP
17504         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17505                 if $contains warning try.out >>/dev/null 2>&1 ; then
17506                         db_hashtype='int'
17507                 else
17508                         db_hashtype='u_int32_t'
17509                 fi
17510         else
17511                 : XXX Maybe we should just give up here.
17512                 db_hashtype=u_int32_t
17513                 $cat try.out >&4
17514                 echo "Help:  I can't seem to compile the db test program." >&4
17515                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17516         fi
17517         $rm -f try.*
17518         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17519         ;;
17520 *)      db_hashtype=u_int32_t
17521         ;;
17522 esac
17523 case "$i_db" in
17524 define)
17525         : Check the return type needed for prefix 
17526         echo " "
17527         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17528         cat >try.c <<EOCP
17529 #$d_const HASCONST
17530 #ifndef HASCONST
17531 #define const
17532 #endif
17533 #include <sys/types.h>
17534 #include <db.h>
17535
17536 #ifndef DB_VERSION_MAJOR
17537 size_t prefix_cb (key1, key2)
17538 const DBT *key1;
17539 const DBT *key2;
17540 {
17541 }
17542 BTREEINFO info;
17543 int main()
17544 {
17545         info.prefix = prefix_cb;
17546 }
17547 #endif
17548 EOCP
17549         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17550                 if $contains warning try.out >>/dev/null 2>&1 ; then
17551                         db_prefixtype='int'
17552                 else
17553                         db_prefixtype='size_t'
17554                 fi
17555         else
17556                 db_prefixtype='size_t'
17557                 : XXX Maybe we should just give up here.
17558                 $cat try.out >&4
17559                 echo "Help:  I can't seem to compile the db test program." >&4
17560                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17561         fi
17562         $rm -f try.*
17563         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17564         ;;
17565 *)      db_prefixtype='size_t'
17566         ;;
17567 esac
17568
17569
17570 : How can we generate normalized random numbers ?
17571 echo " "
17572 echo "Looking for a random number function..." >&4
17573 case "$randfunc" in
17574 '')
17575         if set drand48 val -f; eval $csym; $val; then
17576                 dflt="drand48"
17577                 echo "Good, found drand48()." >&4
17578         elif set random val -f; eval $csym; $val; then
17579                 dflt="random"
17580                 echo "OK, found random()." >&4
17581         else
17582                 dflt="rand"
17583                 echo "Yick, looks like I have to use rand()." >&4
17584         fi
17585         echo " "
17586         ;;
17587 *)
17588         dflt="$randfunc"
17589         ;;
17590 esac
17591 cont=true
17592
17593 case "$ccflags" in
17594 *-Dmy_rand=*|*-Dmy_srand=*)
17595         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17596         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17597         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17598         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17599         ;;
17600 esac
17601
17602 while $test "$cont"; do
17603         rp="Use which function to generate random numbers?"
17604         . ./myread
17605         if $test "$ans" = "$dflt"; then
17606                 : null
17607         else
17608                 randbits=''
17609         fi
17610         randfunc="$ans"
17611         if set $ans val -f; eval $csym; $val; then
17612                 cont=''
17613         else
17614                 dflt=y
17615                 rp="I cannot find function $ans. Use that name anyway?"
17616                 . ./myread
17617                 dflt=rand
17618                 case "$ans" in
17619                         [yY]*) cont='';;
17620                 esac
17621         fi
17622         case "$cont" in
17623         '')
17624                 case "$randfunc" in
17625                 drand48)
17626                         drand01="drand48()"
17627                         seedfunc="srand48"
17628                         randbits=48
17629                         randseedtype=long
17630                         ;;
17631                 rand|random)
17632                         case "$randbits" in
17633                         '')
17634 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17635                                 $cat >try.c <<EOCP
17636 #$i_unistd I_UNISTD
17637 #$i_stdlib I_STDLIB
17638 #include <stdio.h>
17639 #ifdef I_UNISTD
17640 #  include <unistd.h>
17641 #endif
17642 #ifdef I_STDLIB
17643 #  include <stdlib.h>
17644 #endif
17645 int main()
17646 {
17647         register int i;
17648         register unsigned long tmp;
17649         register unsigned long max = 0L;
17650
17651         for (i = 1000; i; i--) {
17652                 tmp = (unsigned long) $randfunc();
17653                 if (tmp > max) max = tmp;
17654         }
17655         for (i = 0; max; i++)
17656                 max /= 2;
17657         printf("%d\n",i);
17658 }
17659 EOCP
17660                                 set try
17661                                 if eval $compile_ok; then
17662                                         dflt=`try`
17663                                 else
17664                                         dflt='?'
17665                                         echo "(I can't seem to compile the test program...)"
17666                                 fi
17667                                 ;;
17668                         *)
17669                                 dflt="$randbits"
17670                                 ;;
17671                         esac
17672                         rp="How many bits does your $randfunc() function produce?"
17673                         . ./myread
17674                         randbits="$ans"
17675                         $rm -f try.c try
17676                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17677                         seedfunc="s$randfunc"
17678                         randseedtype=unsigned
17679                         ;;
17680                 *)
17681                         dflt="31"
17682                         rp="How many bits does your $randfunc() function produce?"
17683                         . ./myread
17684                         randbits="$ans"
17685                         seedfunc="s$randfunc"
17686                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17687                         if set $seedfunc val -f; eval $csym; $val; then
17688                                 echo "(Using $seedfunc() to seed random generator)"
17689                         else
17690                                 echo "(Warning: no $seedfunc() to seed random generator)"
17691                                 seedfunc=rand
17692                         fi
17693                         randseedtype=unsigned
17694                         ;;
17695                 esac
17696                 ;;
17697         esac
17698 done
17699
17700 echo " "
17701 echo "Determining whether or not we are on an EBCDIC system..." >&4
17702 $cat >try.c <<'EOM'
17703 int main()
17704 {
17705   if ('M'==0xd4) return 0;
17706   return 1;
17707 }
17708 EOM
17709
17710 val=$undef
17711 set try
17712 if eval $compile_ok; then
17713         if $run ./try; then
17714                 echo "You seem to speak EBCDIC." >&4
17715                 val="$define"
17716         else
17717                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17718         fi
17719 else
17720         echo "I'm unable to compile the test program." >&4
17721         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17722 fi
17723 $rm -f try try.*
17724 set ebcdic
17725 eval $setvar
17726
17727 echo " "
17728 $cat >&4 <<EOM
17729 Checking how to flush all pending stdio output...
17730 EOM
17731 # I only know how to find the first 32 possibly open files on SunOS.
17732 # See also hints/sunos_4_1.sh and util.c  --AD
17733 case "$osname" in
17734 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17735 esac
17736 $cat >>try.c <<EOCP
17737 #include <stdio.h>
17738 #$i_stdlib I_STDLIB
17739 #ifdef I_STDLIB
17740 #include <stdlib.h>
17741 #endif
17742 #$i_unistd I_UNISTD
17743 #ifdef I_UNISTD
17744 # include <unistd.h>
17745 #endif
17746 #$d_sysconf HAS_SYSCONF
17747 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17748 #ifdef HAS_STDIO_STREAM_ARRAY
17749 # define STDIO_STREAM_ARRAY $stdio_stream_array
17750 #endif
17751 int main() {
17752   FILE* p;
17753   unlink("try.out");
17754   p = fopen("try.out", "w");
17755 #ifdef TRY_FPUTC
17756   fputc('x', p);
17757 #else
17758 # ifdef TRY_FPRINTF
17759   fprintf(p, "x");
17760 # endif
17761 #endif
17762 #ifdef TRY_FFLUSH_NULL
17763   fflush(NULL);
17764 #endif
17765 #ifdef TRY_FFLUSH_ALL
17766   {
17767     long open_max = -1;
17768 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17769     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17770 # else
17771 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17772     open_max = sysconf(_SC_OPEN_MAX);
17773 #  else
17774 #   ifdef FOPEN_MAX
17775     open_max = FOPEN_MAX;
17776 #   else
17777 #    ifdef OPEN_MAX
17778     open_max = OPEN_MAX;
17779 #    else
17780 #     ifdef _NFILE
17781     open_max = _NFILE;
17782 #     endif
17783 #    endif
17784 #   endif
17785 #  endif
17786 # endif 
17787 # ifdef HAS_STDIO_STREAM_ARRAY
17788     if (open_max > 0) {
17789       long i;
17790       for (i = 0; i < open_max; i++)
17791             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17792                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17793                 STDIO_STREAM_ARRAY[i]._flag)
17794                 fflush(&STDIO_STREAM_ARRAY[i]);
17795     }   
17796   }
17797 # endif
17798 #endif
17799   _exit(42);
17800 }
17801 EOCP
17802 : first we have to find out how _not_ to flush
17803 $to try.c
17804 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17805     output=''
17806     set try -DTRY_FPUTC
17807     if eval $compile; then
17808             $run ./try 2>/dev/null
17809             code="$?"
17810             $from try.out
17811             if $test ! -s try.out -a "X$code" = X42; then
17812                 output=-DTRY_FPUTC
17813             fi
17814     fi
17815     case "$output" in
17816     '')
17817             set try -DTRY_FPRINTF
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                         output=-DTRY_FPRINTF
17824                     fi
17825             fi
17826         ;;
17827     esac
17828 fi
17829 : check for fflush NULL behaviour
17830 case "$fflushNULL" in
17831 '')     set try -DTRY_FFLUSH_NULL $output
17832         if eval $compile; then
17833                 $run ./try 2>/dev/null
17834                 code="$?"
17835                 $from try.out
17836                 if $test -s try.out -a "X$code" = X42; then
17837                         fflushNULL="`$cat try.out`"
17838                 else
17839                         if $test "X$code" != X42; then
17840                                 $cat >&4 <<EOM
17841 (If this test failed, don't worry, we'll try another method shortly.)
17842 EOM
17843                         fi
17844                 fi
17845         fi
17846         $rm -f core try.core core.try.*
17847         case "$fflushNULL" in
17848         x)      $cat >&4 <<EOM
17849 Your fflush(NULL) works okay for output streams.
17850 Let's see if it clobbers input pipes...
17851 EOM
17852 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17853 # bug that improperly flushes the input end of pipes.  So we avoid the
17854 # autoflush on fork/system/exec support for now. :-(
17855 $cat >tryp.c <<EOCP
17856 #include <stdio.h>
17857 int
17858 main(int argc, char **argv)
17859 {
17860     char buf[1024];
17861     int i;
17862     char *bp = buf;
17863     while (1) {
17864         while ((i = getc(stdin)) != -1
17865                && (*bp++ = i) != '\n'
17866                && bp < &buf[1024])
17867         /* DO NOTHING */ ;
17868         *bp = '\0';
17869         fprintf(stdout, "%s", buf);
17870         fflush(NULL);
17871         if (i == -1)
17872             return 0;
17873         bp = buf;
17874     }
17875 }
17876 EOCP
17877                 fflushNULL="$define"
17878                 set tryp
17879                 if eval $compile; then
17880                     $rm -f tryp.out
17881                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17882                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17883                        $cat >&4 <<EOM
17884 fflush(NULL) seems to behave okay with input streams.
17885 EOM
17886                         fflushNULL="$define"
17887                     else
17888                         $cat >&4 <<EOM
17889 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17890 EOM
17891                         fflushNULL="$undef"
17892                     fi
17893                 fi
17894                 $rm -f core tryp.c tryp.core core.tryp.*
17895                 ;;
17896         '')     $cat >&4 <<EOM
17897 Your fflush(NULL) isn't working (contrary to ANSI C).
17898 EOM
17899                 fflushNULL="$undef"
17900                 ;;
17901         *)      $cat >&4 <<EOM
17902 Cannot figure out whether your fflush(NULL) works or not.
17903 I'm assuming it doesn't (contrary to ANSI C).
17904 EOM
17905                 fflushNULL="$undef"
17906                 ;;
17907         esac
17908         ;;
17909 $define|true|[yY]*)
17910         fflushNULL="$define"
17911         ;;
17912 *)
17913         fflushNULL="$undef"
17914         ;;
17915 esac
17916 : check explicit looping only if NULL did not work, and if the pipe
17917 : bug does not show up on an explicit flush too
17918 case "$fflushNULL" in
17919 "$undef")
17920         $cat >tryp.c <<EOCP
17921 #include <stdio.h>
17922 int
17923 main(int argc, char **argv)
17924 {
17925     char buf[1024];
17926     int i;
17927     char *bp = buf;
17928     while (1) {
17929         while ((i = getc(stdin)) != -1
17930                && (*bp++ = i) != '\n'
17931                && bp < &buf[1024])
17932         /* DO NOTHING */ ;
17933         *bp = '\0';
17934         fprintf(stdout, "%s", buf);
17935         fflush(stdin);
17936         if (i == -1)
17937             return 0;
17938         bp = buf;
17939     }
17940 }
17941 EOCP
17942         set tryp
17943         if eval $compile; then
17944             $rm -f tryp.out
17945             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17946             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17947                $cat >&4 <<EOM
17948 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17949 EOM
17950                 : now check for fflushall behaviour
17951                 case "$fflushall" in
17952                 '')     set try -DTRY_FFLUSH_ALL $output
17953                         if eval $compile; then
17954                                 $cat >&4 <<EOM
17955 (Now testing the other method--but note that this also may fail.)
17956 EOM
17957                                 $run ./try 2>/dev/null
17958                                 code=$?
17959                                 $from try.out
17960                                 if $test -s try.out -a "X$code" = X42; then
17961                                         fflushall="`$cat try.out`"
17962                                 fi
17963                         fi
17964                         $rm -f core try.core core.try.*
17965                         case "$fflushall" in
17966                         x)      $cat >&4 <<EOM
17967 Whew. Flushing explicitly all the stdio streams works.
17968 EOM
17969                                 fflushall="$define"
17970                                 ;;
17971                         '')     $cat >&4 <<EOM
17972 Sigh. Flushing explicitly all the stdio streams doesn't work.
17973 EOM
17974                                 fflushall="$undef"
17975                                 ;;
17976                         *)      $cat >&4 <<EOM
17977 Cannot figure out whether flushing stdio streams explicitly works or not.
17978 I'm assuming it doesn't.
17979 EOM
17980                                 fflushall="$undef"
17981                                 ;;
17982                         esac
17983                         ;;
17984                 "$define"|true|[yY]*)
17985                         fflushall="$define"
17986                         ;;
17987                 *)
17988                         fflushall="$undef"
17989                         ;;
17990                 esac
17991             else
17992                 $cat >&4 <<EOM
17993 All is futile.  Even fflush(stdin) clobbers input pipes!
17994 EOM
17995                 fflushall="$undef"
17996             fi
17997         else
17998             fflushall="$undef"
17999         fi
18000         $rm -f core tryp.c tryp.core core.tryp.*
18001         ;;
18002 *)      fflushall="$undef"
18003         ;;
18004 esac
18005
18006 case "$fflushNULL$fflushall" in
18007 undefundef)
18008         $cat <<EOM
18009 OK, I give up.  I cannot figure out how to flush pending stdio output.
18010 We won't be flushing handles at all before fork/exec/popen.
18011 EOM
18012         ;;
18013 esac
18014 $rm -f try.* try$exe_ext
18015
18016 : Store the full pathname to the ar program for use in the C program
18017 : Respect a hint or command line value for full_ar.
18018 case "$full_ar" in
18019 '') full_ar=$ar ;;
18020 esac
18021
18022 : Store the full pathname to the sed program for use in the C program
18023 full_sed=$sed
18024
18025 : see what type gids are declared as in the kernel
18026 echo " "
18027 echo "Looking for the type for group ids returned by getgid()."
18028 set gid_t gidtype xxx stdio.h sys/types.h
18029 eval $typedef
18030 case "$gidtype" in
18031 xxx)
18032         xxx=`./findhdr sys/user.h`
18033         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
18034         case $1 in
18035         unsigned) dflt="$1 $2" ;;
18036         *) dflt="$1" ;;
18037         esac
18038         ;;
18039 *) dflt="$gidtype";;
18040 esac
18041 case "$gidtype" in
18042 gid_t) echo "gid_t found." ;;
18043 *)      rp="What is the type for group ids returned by getgid()?"
18044         . ./myread
18045         gidtype="$ans"
18046         ;;
18047 esac
18048
18049 echo " "
18050 case "$gidtype" in
18051 *_t) zzz="$gidtype"     ;;
18052 *)   zzz="gid"          ;;
18053 esac
18054 echo "Checking the size of $zzz..." >&4 
18055 cat > try.c <<EOCP
18056 #include <sys/types.h>
18057 #include <stdio.h>
18058 #$i_stdlib I_STDLIB
18059 #ifdef I_STDLIB
18060 #include <stdlib.h>
18061 #endif
18062 int main() {
18063     printf("%d\n", (int)sizeof($gidtype));
18064     exit(0);
18065 }
18066 EOCP
18067 set try
18068 if eval $compile_ok; then
18069         yyy=`$run ./try`
18070         case "$yyy" in
18071         '')     gidsize=4
18072                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
18073                 ;;
18074         *)      gidsize=$yyy
18075                 echo "Your $zzz is $gidsize bytes long."
18076                 ;;
18077         esac
18078 else
18079         gidsize=4
18080         echo "(I can't compile the test program--guessing $gidsize.)" >&4
18081 fi
18082
18083
18084 echo " "
18085 case "$gidtype" in
18086 *_t) zzz="$gidtype"     ;;
18087 *)   zzz="gid"          ;;
18088 esac
18089 echo "Checking the sign of $zzz..." >&4 
18090 cat > try.c <<EOCP
18091 #include <sys/types.h>
18092 #include <stdio.h>
18093 int main() {
18094         $gidtype foo = -1;
18095         if (foo < 0)
18096                 printf("-1\n");
18097         else
18098                 printf("1\n");
18099 }
18100 EOCP
18101 set try
18102 if eval $compile; then
18103         yyy=`$run ./try`
18104         case "$yyy" in
18105         '')     gidsign=1
18106                 echo "(I can't execute the test program--guessing unsigned.)" >&4
18107                 ;;
18108         *)      gidsign=$yyy
18109                 case "$gidsign" in
18110                  1) echo "Your $zzz is unsigned." ;;
18111                 -1) echo "Your $zzz is signed."   ;;
18112                 esac
18113                 ;;
18114         esac
18115 else
18116         gidsign=1
18117         echo "(I can't compile the test program--guessing unsigned.)" >&4
18118 fi
18119
18120
18121 echo " "
18122
18123 if $test X"$quadtype" != X; then
18124
18125 echo "Checking how to print 64-bit integers..." >&4
18126
18127 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18128         $cat >try.c <<'EOCP'
18129 #include <sys/types.h>
18130 #include <stdio.h>
18131 int main() {
18132   int q = 12345678901;
18133   printf("%ld\n", q);
18134 }
18135 EOCP
18136         set try
18137         if eval $compile; then
18138                 yyy=`$run ./try`
18139                 case "$yyy" in
18140                 12345678901)
18141                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18142                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18143                         echo "We will use %d."
18144                         ;;
18145                 esac
18146         fi
18147 fi
18148
18149 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18150         $cat >try.c <<'EOCP'
18151 #include <sys/types.h>
18152 #include <stdio.h>
18153 int main() {
18154   long q = 12345678901;
18155   printf("%ld\n", q);
18156 }
18157 EOCP
18158         set try
18159         if eval $compile; then
18160                 yyy=`$run ./try`
18161                 case "$yyy" in
18162                 12345678901)
18163                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18164                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18165                         echo "We will use %ld."
18166                         ;;
18167                 esac
18168         fi
18169 fi
18170
18171 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18172         $cat >try.c <<'EOCP'
18173 #include <sys/types.h>
18174 #include <inttypes.h>
18175 #include <stdio.h>
18176 int main() {
18177   int64_t q = 12345678901;
18178   printf("%" PRId64 "\n", q);
18179 }
18180 EOCP
18181         set try
18182         if eval $compile; then
18183                 yyy=`$run ./try`
18184                 case "$yyy" in
18185                 12345678901)
18186                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18187                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18188                         echo "We will use the C9X style."
18189                         ;;
18190                 esac
18191         fi
18192 fi
18193
18194 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18195         $cat >try.c <<EOCP
18196 #include <sys/types.h>
18197 #include <stdio.h>
18198 int main() {
18199   $quadtype q = 12345678901;
18200   printf("%Ld\n", q);
18201 }
18202 EOCP
18203         set try
18204         if eval $compile; then
18205                 yyy=`$run ./try`
18206                 case "$yyy" in
18207                 12345678901)
18208                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18209                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18210                         echo "We will use %Ld."
18211                         ;;
18212                 esac
18213         fi
18214 fi
18215
18216 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18217         $cat >try.c <<'EOCP'
18218 #include <sys/types.h>
18219 #include <stdio.h>
18220 int main() {
18221   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18222   printf("%lld\n", q);
18223 }
18224 EOCP
18225         set try
18226         if eval $compile; then
18227                 yyy=`$run ./try`
18228                 case "$yyy" in
18229                 12345678901)
18230                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18231                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18232                         echo "We will use the %lld style."
18233                         ;;
18234                 esac
18235         fi
18236 fi
18237
18238 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18239         $cat >try.c <<EOCP
18240 #include <sys/types.h>
18241 #include <stdio.h>
18242 int main() {
18243   $quadtype q = 12345678901;
18244   printf("%qd\n", q);
18245 }
18246 EOCP
18247         set try
18248         if eval $compile; then
18249                 yyy=`$run ./try`
18250                 case "$yyy" in
18251                 12345678901)
18252                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18253                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18254                         echo "We will use %qd."
18255                         ;;
18256                 esac
18257         fi
18258 fi
18259
18260 if $test X"$sPRId64" = X; then
18261         echo "Cannot figure out how to print 64-bit integers." >&4
18262 fi
18263
18264 $rm -f try try.*
18265
18266 fi
18267
18268 case "$sPRId64" in
18269 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18270         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18271         ;;
18272 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18273         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18274         ;;
18275 esac
18276
18277
18278 echo " "
18279 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18280
18281 if $test X"$ivsize" = X8; then
18282         ivdformat="$sPRId64"
18283         uvuformat="$sPRIu64"
18284         uvoformat="$sPRIo64"
18285         uvxformat="$sPRIx64"
18286         uvXUformat="$sPRIXU64"
18287 else
18288         if $test X"$ivsize" = X"$longsize"; then
18289                 ivdformat='"ld"'
18290                 uvuformat='"lu"'
18291                 uvoformat='"lo"'
18292                 uvxformat='"lx"'
18293                 uvXUformat='"lX"'
18294         else
18295                 if $test X"$ivsize" = X"$intsize"; then
18296                         ivdformat='"d"'
18297                         uvuformat='"u"'
18298                         uvoformat='"o"'
18299                         uvxformat='"x"'
18300                         uvXUformat='"X"'
18301                 else
18302                         : far out
18303                         if $test X"$ivsize" = X"$shortsize"; then
18304                                 ivdformat='"hd"'
18305                                 uvuformat='"hu"'
18306                                 uvoformat='"ho"'
18307                                 uvxformat='"hx"'
18308                                 uvXUformat='"hX"'
18309                         fi
18310                 fi
18311         fi
18312 fi
18313
18314 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18315         nveformat="$sPRIeldbl"
18316         nvfformat="$sPRIfldbl"
18317         nvgformat="$sPRIgldbl"
18318         nvEUformat="$sPRIEUldbl"
18319         nvFUformat="$sPRIFUldbl"
18320         nvGUformat="$sPRIGUldbl"
18321 else
18322         nveformat='"e"'
18323         nvfformat='"f"'
18324         nvgformat='"g"'
18325         nvEUformat='"E"'
18326         nvFUformat='"F"'
18327         nvGUformat='"G"'
18328 fi
18329
18330 case "$ivdformat" in
18331 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18332     exit 1
18333     ;;
18334 esac
18335
18336
18337 echo " "
18338 $echo "Checking the format string to be used for gids..." >&4
18339
18340 case "$gidsign" in
18341 -1)     if $test X"$gidsize" = X"$ivsize"; then
18342                 gidformat="$ivdformat"
18343         else
18344                 if $test X"$gidsize" = X"$longsize"; then
18345                         gidformat='"ld"'
18346                 else
18347                         if $test X"$gidsize" = X"$intsize"; then
18348                                 gidformat='"d"'
18349                         else
18350                                 if $test X"$gidsize" = X"$shortsize"; then
18351                                         gidformat='"hd"'
18352                                 fi
18353                         fi
18354                 fi
18355         fi
18356         ;;
18357 *)      if $test X"$gidsize" = X"$uvsize"; then
18358                 gidformat="$uvuformat"
18359         else
18360                 if $test X"$gidsize" = X"$longsize"; then
18361                         gidformat='"lu"'
18362                 else
18363                         if $test X"$gidsize" = X"$intsize"; then
18364                                 gidformat='"u"'
18365                         else
18366                                 if $test X"$gidsize" = X"$shortsize"; then
18367                                         gidformat='"hu"'
18368                                 fi
18369                         fi
18370                 fi
18371         fi
18372         ;;
18373 esac
18374
18375 : see if getgroups exists
18376 set getgroups d_getgrps
18377 eval $inlibc
18378
18379 : see if setgroups exists
18380 set setgroups d_setgrps
18381 eval $inlibc
18382
18383
18384 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18385 echo " "
18386 case "$d_getgrps$d_setgrps" in
18387 *define*)
18388         case "$groupstype" in
18389         '') dflt="$gidtype" ;;
18390         *)  dflt="$groupstype" ;;
18391         esac
18392         $cat <<EOM
18393 What type of pointer is the second argument to getgroups() and setgroups()?
18394 Usually this is the same as group ids, $gidtype, but not always.
18395
18396 EOM
18397         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18398         . ./myread
18399         groupstype="$ans"
18400         ;;
18401 *)  groupstype="$gidtype";;
18402 esac
18403
18404 echo " "
18405 echo "Checking if your $make program sets \$(MAKE)..." >&4
18406 case "$make_set_make" in
18407 '')
18408         $sed 's/^X //' > testmake.mak << 'EOF'
18409 Xall:
18410 X       @echo 'maketemp="$(MAKE)"'
18411 EOF
18412         case "`$make -f testmake.mak 2>/dev/null`" in
18413         *maketemp=*) make_set_make='#' ;;
18414         *)      make_set_make="MAKE=$make" ;;
18415         esac
18416         $rm -f testmake.mak
18417         ;;
18418 esac
18419 case "$make_set_make" in
18420 '#') echo "Yup, it does.";;
18421 *) echo "Nope, it doesn't.";;
18422 esac
18423
18424 : see what type is used for mode_t
18425 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18426 set mode_t modetype int stdio.h sys/types.h
18427 eval $typedef_ask
18428
18429 : see if stdarg is available
18430 echo " "
18431 if $test `./findhdr stdarg.h`; then
18432         echo "<stdarg.h> found." >&4
18433         valstd="$define"
18434 else
18435         echo "<stdarg.h> NOT found." >&4
18436         valstd="$undef"
18437 fi
18438
18439 : see if varags is available
18440 echo " "
18441 if $test `./findhdr varargs.h`; then
18442         echo "<varargs.h> found." >&4
18443 else
18444         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18445 fi
18446
18447 : set up the varargs testing programs
18448 $cat > varargs.c <<EOP
18449 #ifdef I_STDARG
18450 #include <stdarg.h>
18451 #endif
18452 #ifdef I_VARARGS
18453 #include <varargs.h>
18454 #endif
18455
18456 #ifdef I_STDARG
18457 int f(char *p, ...)
18458 #else
18459 int f(va_alist)
18460 va_dcl
18461 #endif
18462 {
18463         va_list ap;
18464 #ifndef I_STDARG
18465         char *p;
18466 #endif
18467 #ifdef I_STDARG
18468         va_start(ap,p);
18469 #else
18470         va_start(ap);
18471         p = va_arg(ap, char *);
18472 #endif
18473         va_end(ap);
18474 }
18475 EOP
18476 $cat > varargs <<EOP
18477 $startsh
18478 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18479         echo "true"
18480 else
18481         echo "false"
18482 fi
18483 $rm -f varargs$_o
18484 EOP
18485 chmod +x varargs
18486
18487 : now check which varargs header should be included
18488 echo " "
18489 i_varhdr=''
18490 case "$valstd" in
18491 "$define")
18492         if `./varargs I_STDARG`; then
18493                 val='stdarg.h'
18494         elif `./varargs I_VARARGS`; then
18495                 val='varargs.h'
18496         fi
18497         ;;
18498 *)
18499         if `./varargs I_VARARGS`; then
18500                 val='varargs.h'
18501         fi
18502         ;;
18503 esac
18504 case "$val" in
18505 '')
18506 echo "I could not find the definition for va_dcl... You have problems..." >&4
18507         val="$undef"; set i_stdarg; eval $setvar
18508         val="$undef"; set i_varargs; eval $setvar
18509         ;;
18510 *) 
18511         set i_varhdr
18512         eval $setvar
18513         case "$i_varhdr" in
18514         stdarg.h)
18515                 val="$define"; set i_stdarg; eval $setvar
18516                 val="$undef"; set i_varargs; eval $setvar
18517                 ;;
18518         varargs.h)
18519                 val="$undef"; set i_stdarg; eval $setvar
18520                 val="$define"; set i_varargs; eval $setvar
18521                 ;;
18522         esac
18523         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18524 esac
18525 $rm -f varargs*
18526
18527 : see if we need va_copy
18528 echo " "
18529 case "$i_stdarg" in
18530 "$define")
18531         $cat >try.c <<EOCP
18532 #include <stdarg.h>
18533 #include <stdio.h>
18534 #$i_stdlib I_STDLIB
18535 #ifdef I_STDLIB
18536 #include <stdlib.h>
18537 #endif
18538 #include <signal.h>
18539
18540 int
18541 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18542 {
18543   return vfprintf(f, fmt, *valp);
18544 }
18545  
18546 int    
18547 myvfprintf(FILE *f, const  char *fmt, va_list val)
18548 {
18549   return ivfprintf(f, fmt, &val);
18550 }
18551       
18552 int
18553 myprintf(char *fmt, ...) 
18554 {
18555   va_list val;
18556   va_start(val, fmt);
18557   return myvfprintf(stdout, fmt, val); 
18558 }         
18559
18560 int
18561 main(int ac, char **av)
18562 {
18563   signal(SIGSEGV, exit);
18564
18565   myprintf("%s%cs all right, then\n", "that", '\'');                            
18566   exit(0);      
18567 }
18568 EOCP
18569         set try
18570         if eval $compile && $run ./try 2>&1 >/dev/null; then
18571                 case "`$run ./try`" in
18572                 "that's all right, then")
18573                         okay=yes
18574                         ;;
18575                 esac
18576         fi
18577         case "$okay" in
18578         yes)    echo "It seems that you don't need va_copy()." >&4
18579                 need_va_copy="$undef"
18580                 ;;
18581         *)      echo "It seems that va_copy() or similar will be needed." >&4
18582                 need_va_copy="$define"
18583                 ;;
18584         esac
18585         $rm -f try.* core core.* *.core *.core.*
18586         ;;
18587 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18588         ;;
18589 esac
18590
18591 : see what type is used for size_t
18592 rp="What is the type used for the length parameter for string functions?"
18593 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18594 eval $typedef_ask
18595
18596 : check for type of arguments to gethostbyaddr. 
18597 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18598         case "$d_gethbyaddr" in
18599         $define)
18600                 $cat <<EOM
18601
18602 Checking to see what type of arguments are accepted by gethostbyaddr().
18603 EOM
18604                 hdrs="$define sys/types.h
18605                         $d_socket sys/socket.h 
18606                         $i_niin netinet/in.h 
18607                         $i_netdb netdb.h
18608                         $i_unistd unistd.h"
18609                 : The first arg can 'char *' or 'void *'
18610                 : The second arg is some of integral type
18611                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18612                         for yyy in size_t long int; do
18613                                 case "$netdb_host_type" in
18614                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18615                                         if ./protochk "$try" $hdrs; then
18616                                                 echo "Your system accepts $xxx for the first arg."
18617                                                 echo "...and $yyy for the second arg."
18618                                                 netdb_host_type="$xxx"
18619                                                 netdb_hlen_type="$yyy"
18620                                         fi
18621                                         ;;
18622                                 esac
18623                         done
18624                 done
18625                 : In case none of those worked, prompt the user.
18626                 case "$netdb_host_type" in
18627                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18628                         dflt='char *'
18629                         . ./myread
18630                         netdb_host_type=$ans
18631                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18632                         dflt="$sizetype"
18633                         . ./myread
18634                         netdb_hlen_type=$ans
18635                         ;;
18636                 esac
18637                 ;;
18638         *)      : no gethostbyaddr, so pick harmless defaults
18639                 netdb_host_type='char *'
18640                 netdb_hlen_type="$sizetype"
18641                 ;;
18642         esac
18643         # Remove the "const" if needed. -- but then we'll have a 
18644         # prototype clash!
18645         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18646 fi
18647
18648 : check for type of argument to gethostbyname. 
18649 if test "X$netdb_name_type" = X ; then
18650         case "$d_gethbyname" in
18651         $define)
18652                 $cat <<EOM
18653
18654 Checking to see what type of argument is accepted by gethostbyname().
18655 EOM
18656                 hdrs="$define sys/types.h
18657                         $d_socket sys/socket.h 
18658                         $i_niin netinet/in.h 
18659                         $i_netdb netdb.h
18660                         $i_unistd unistd.h"
18661                 for xxx in "const char *" "char *"; do
18662                         case "$netdb_name_type" in
18663                         '')     try="extern struct hostent *gethostbyname($xxx);"
18664                                 if ./protochk "$try" $hdrs; then
18665                                         echo "Your system accepts $xxx."
18666                                         netdb_name_type="$xxx"
18667                                 fi
18668                                 ;;
18669                         esac
18670                 done
18671                 : In case none of those worked, prompt the user.
18672                 case "$netdb_name_type" in
18673                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18674                         dflt='char *'
18675                         . ./myread
18676                         netdb_name_type=$ans
18677                         ;;
18678                 esac
18679                 ;;
18680         *)      : no gethostbyname, so pick harmless default
18681                 netdb_name_type='char *'
18682                 ;;
18683         esac
18684 fi
18685
18686 : check for type of 1st argument to getnetbyaddr. 
18687 if test "X$netdb_net_type" = X ; then
18688         case "$d_getnbyaddr" in
18689         $define)
18690                 $cat <<EOM
18691
18692 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18693 EOM
18694                 hdrs="$define sys/types.h
18695                         $d_socket sys/socket.h 
18696                         $i_niin netinet/in.h 
18697                         $i_netdb netdb.h
18698                         $i_unistd unistd.h"
18699                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18700                         case "$netdb_net_type" in
18701                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18702                                 if ./protochk "$try" $hdrs; then
18703                                         echo "Your system accepts $xxx."
18704                                         netdb_net_type="$xxx"
18705                                 fi
18706                                 ;;
18707                         esac
18708                 done
18709                 : In case none of those worked, prompt the user.
18710                 case "$netdb_net_type" in
18711                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18712                         dflt='long'
18713                         . ./myread
18714                         netdb_net_type=$ans
18715                         ;;
18716                 esac
18717                 ;;
18718         *)      : no getnetbyaddr, so pick harmless default
18719                 netdb_net_type='long'
18720                 ;;
18721         esac
18722 fi
18723 : locate the preferred pager for this system
18724 fn=f/
18725 case "$pager" in
18726 '')
18727         dflt=''
18728         case "$pg" in
18729         /*) dflt=$pg;;
18730         [a-zA-Z]:/*) dflt=$pg;;
18731         esac
18732         case "$more" in
18733         /*) dflt=$more;;
18734         [a-zA-Z]:/*) dflt=$more;;
18735         esac
18736         case "$less" in
18737         /*) dflt=$less;;
18738         [a-zA-Z]:/*) dflt=$less;;
18739         esac
18740         case "$dflt" in
18741         '') dflt=/usr/ucb/more;;
18742         esac
18743         ;;
18744 *)      dflt="$pager"
18745         : Instruct ./getfile to trust the hinted or previous pager value,
18746         : even if it does not begin with a slash.  For example, on os2,
18747         : pager might be cmd /c more.  See comments in UU/getfile.
18748         fn="f/($pager)"
18749         ;;
18750 esac
18751 echo " "
18752 rp='What pager is used on your system?'
18753 . ./getfile
18754 pager="$ans"
18755
18756 : see what type pids are declared as in the kernel
18757 rp="What is the type of process ids on this system?"
18758 set pid_t pidtype int stdio.h sys/types.h
18759 eval $typedef_ask
18760
18761 : see if ar generates random libraries by itself
18762 echo " "
18763 echo "Checking how to generate random libraries on your machine..." >&4
18764 echo 'int bar1() { return bar2(); }' > bar1.c
18765 echo 'int bar2() { return 2; }' > bar2.c
18766 $cat > foo.c <<EOP
18767 #$i_stdlib I_STDLIB
18768 #ifdef I_STDLIB
18769 #include <stdlib.h>
18770 #endif
18771 int main() { printf("%d\n", bar1()); exit(0); }
18772 EOP
18773 $cc $ccflags -c bar1.c >/dev/null 2>&1
18774 $cc $ccflags -c bar2.c >/dev/null 2>&1
18775 $cc $ccflags -c foo.c >/dev/null 2>&1
18776 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18777 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18778         $run ./foobar >/dev/null 2>&1; then
18779         echo "$ar appears to generate random libraries itself."
18780         orderlib=false
18781         ranlib=":"
18782 elif $ar ts bar$_a >/dev/null 2>&1 &&
18783         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18784         $run ./foobar >/dev/null 2>&1; then
18785                 echo "a table of contents needs to be added with '$ar ts'."
18786                 orderlib=false
18787                 ranlib="$ar ts"
18788 else
18789         case "$ranlib" in
18790         :) ranlib='';;
18791         '')
18792                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18793                 $test -f $ranlib || ranlib=''
18794                 ;;
18795         esac
18796         if $test -n "$ranlib"; then
18797                 echo "your system has '$ranlib'; we'll use that."
18798                 orderlib=false
18799         else
18800                 echo "your system doesn't seem to support random libraries"
18801                 echo "so we'll use lorder and tsort to order the libraries."
18802                 orderlib=true
18803                 ranlib=":"
18804         fi
18805 fi
18806 $rm -f foo* bar* 
18807
18808 : check for type of arguments to select. 
18809 case "$selecttype" in
18810 '') case "$d_select" in
18811         $define)
18812                 echo " "
18813                 $cat <<EOM
18814 Checking to see what type of arguments are accepted by select().
18815 EOM
18816                 hdrs="$define sys/types.h
18817                         $i_systime sys/time.h 
18818                         $i_sysselct sys/select.h
18819                         $d_socket sys/socket.h"
18820                 : The first arg can be int, unsigned, or size_t
18821                 : The last arg may or may not be 'const'
18822                 val=''
18823                 : void pointer has been seen but using that
18824                 : breaks the selectminbits test
18825                 for xxx in 'fd_set *' 'int *'; do
18826                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18827                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18828                                         case "$val" in
18829                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18830                                                 if ./protochk "$try" $hdrs; then
18831                                                         echo "Your system accepts $xxx."
18832                                                         val="$xxx"
18833                                                 fi
18834                                                 ;;
18835                                         esac
18836                                 done
18837                         done
18838                 done
18839                 case "$val" in
18840                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18841                         case "$d_fd_set" in
18842                                 $define) dflt="fd_set *" ;;
18843                                 *)              dflt="int *" ;;
18844                         esac
18845                         . ./myread
18846                         val=$ans
18847                         ;;
18848                 esac
18849                 selecttype="$val"
18850                 ;;
18851         *)      : no select, so pick a harmless default
18852                 selecttype='int *'
18853                 ;;
18854         esac
18855         ;;
18856 esac
18857
18858 : check for the select 'width'
18859 case "$selectminbits" in
18860 '') safebits=`expr $ptrsize \* 8`
18861     case "$d_select" in
18862         $define)
18863                 $cat <<EOM
18864
18865 Checking to see on how many bits at a time your select() operates...
18866 EOM
18867                 $cat >try.c <<EOCP
18868 #include <sys/types.h>
18869 #$i_time I_TIME
18870 #$i_systime I_SYS_TIME
18871 #$i_systimek I_SYS_TIME_KERNEL
18872 #ifdef I_TIME
18873 #   include <time.h>
18874 #endif
18875 #ifdef I_SYS_TIME
18876 #   ifdef I_SYS_TIME_KERNEL
18877 #       define KERNEL
18878 #   endif
18879 #   include <sys/time.h>
18880 #   ifdef I_SYS_TIME_KERNEL
18881 #       undef KERNEL
18882 #   endif
18883 #endif
18884 #$i_sysselct I_SYS_SELECT
18885 #ifdef I_SYS_SELECT
18886 #include <sys/select.h>
18887 #endif
18888 #$d_socket HAS_SOCKET
18889 #ifdef HAS_SOCKET
18890 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18891 #endif
18892 #include <stdio.h>
18893 #$i_stdlib I_STDLIB
18894 #ifdef I_STDLIB
18895 #include <stdlib.h>
18896 #endif
18897 $selecttype b;
18898 #define S sizeof(*(b))
18899 #define MINBITS 64
18900 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18901 #define NBITS  (NBYTES * 8)
18902 int main() {
18903     char *s = malloc(NBYTES);
18904     struct timeval t;
18905     int i;
18906     FILE* fp;
18907     int fd;
18908
18909     if (!s)
18910         exit(1);
18911     fclose(stdin);
18912     fp = fopen("try.c", "r");
18913     if (fp == 0)
18914       exit(2);
18915     fd = fileno(fp);
18916     if (fd < 0)
18917       exit(3);
18918     b = ($selecttype)s;
18919     for (i = 0; i < NBITS; i++)
18920         FD_SET(i, b);
18921     t.tv_sec  = 0;
18922     t.tv_usec = 0;
18923     select(fd + 1, b, 0, 0, &t);
18924     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18925     free(s);
18926     printf("%d\n", i + 1);
18927     return 0;
18928 }
18929 EOCP
18930                 set try
18931                 if eval $compile_ok; then
18932                         selectminbits=`$run ./try`
18933                         case "$selectminbits" in
18934                         '')     cat >&4 <<EOM
18935 Cannot figure out on how many bits at a time your select() operates.
18936 I'll play safe and guess it is $safebits bits.
18937 EOM
18938                                 selectminbits=$safebits
18939                                 bits="$safebits bits"
18940                                 ;;
18941                         1)      bits="1 bit" ;;
18942                         *)      bits="$selectminbits bits" ;;
18943                         esac
18944                         echo "Your select() operates on $bits at a time." >&4
18945                 else
18946                         rp='What is the minimum number of bits your select() operates on?'
18947                         case "$byteorder" in
18948                         12345678)       dflt=64 ;;
18949                         1234)           dflt=32 ;;
18950                         *)              dflt=1  ;;
18951                         esac
18952                         . ./myread
18953                         val=$ans
18954                         selectminbits="$val"
18955                 fi
18956                 $rm -f try.* try
18957                 ;;
18958         *)      : no select, so pick a harmless default
18959                 selectminbits=$safebits
18960                 ;;
18961         esac
18962         ;;
18963 esac
18964
18965 : Trace out the files included by signal.h, then look for SIGxxx names.
18966 : Remove SIGARRAYSIZE used by HPUX.
18967 : Remove SIGSTKSIZE used by Linux.
18968 : Remove SIGSTKSZ used by Posix.
18969 : Remove SIGTYP void lines used by OS2.
18970 : Some cpps, like os390, dont give the file name anywhere
18971 if [ "X$fieldn" = X ]; then
18972         : Just make some guesses.  We check them later.
18973         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18974 else
18975         xxx=`echo '#include <signal.h>' |
18976         $cppstdin $cppminus $cppflags 2>/dev/null |
18977         $grep '^[       ]*#.*include' | 
18978         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18979 fi
18980 : Check this list of files to be sure we have parsed the cpp output ok.
18981 : This will also avoid potentially non-existent files, such 
18982 : as ../foo/bar.h
18983 xxxfiles=''
18984 for xx in $xxx /dev/null ; do
18985         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18986 done
18987 : If we have found no files, at least try signal.h
18988 case "$xxxfiles" in
18989 '')     xxxfiles=`./findhdr signal.h` ;;
18990 esac
18991 xxx=`awk '
18992 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18993         print substr($2, 4, 20)
18994 }
18995 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18996         print substr($3, 4, 20)
18997 }' $xxxfiles`
18998 : Append some common names just in case the awk scan failed.
18999 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
19000 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
19001 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
19002 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
19003 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
19004
19005 : generate a few handy files for later
19006 $cat > signal.c <<EOCP
19007 #include <sys/types.h>
19008 #include <signal.h>
19009 #$i_stdlib I_STDLIB
19010 #ifdef I_STDLIB
19011 #include <stdlib.h>
19012 #endif
19013 #include <stdio.h>
19014 int main() {
19015
19016 /* Strange style to avoid deeply-nested #if/#else/#endif */
19017 #ifndef NSIG
19018 #  ifdef _NSIG
19019 #    define NSIG (_NSIG)
19020 #  endif
19021 #endif
19022
19023 #ifndef NSIG
19024 #  ifdef SIGMAX
19025 #    define NSIG (SIGMAX+1)
19026 #  endif
19027 #endif
19028
19029 #ifndef NSIG
19030 #  ifdef SIG_MAX
19031 #    define NSIG (SIG_MAX+1)
19032 #  endif
19033 #endif
19034
19035 #ifndef NSIG
19036 #  ifdef MAXSIG
19037 #    define NSIG (MAXSIG+1)
19038 #  endif
19039 #endif
19040
19041 #ifndef NSIG
19042 #  ifdef MAX_SIG
19043 #    define NSIG (MAX_SIG+1)
19044 #  endif
19045 #endif
19046
19047 #ifndef NSIG
19048 #  ifdef SIGARRAYSIZE
19049 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
19050 #  endif
19051 #endif
19052
19053 #ifndef NSIG
19054 #  ifdef _sys_nsig
19055 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
19056 #  endif
19057 #endif
19058
19059 /* Default to some arbitrary number that's big enough to get most
19060    of the common signals.
19061 */
19062 #ifndef NSIG
19063 #    define NSIG 50
19064 #endif
19065
19066 printf("NSIG %d\n", NSIG);
19067
19068 #ifndef JUST_NSIG
19069
19070 EOCP
19071
19072 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
19073 {
19074         printf "#ifdef SIG"; printf $1; printf "\n"
19075         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
19076         printf $1; printf ");\n"
19077         printf "#endif\n"
19078 }
19079 END {
19080         printf "#endif /* JUST_NSIG */\n";
19081         printf "exit(0);\n}\n";
19082 }
19083 ' >>signal.c
19084 $cat >signal.awk <<'EOP'
19085 BEGIN { ndups = 0 }
19086 $1 ~ /^NSIG$/ { nsig = $2 }
19087 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
19088     if ($2 > maxsig) { maxsig = $2 }
19089     if (sig_name[$2]) {
19090         dup_name[ndups] = $1
19091         dup_num[ndups] = $2
19092         ndups++ 
19093     }
19094     else {
19095         sig_name[$2] = $1
19096         sig_num[$2] = $2
19097     }
19098 }
19099 END { 
19100     if (nsig == 0) {
19101         nsig = maxsig + 1
19102     }
19103     printf("NSIG %d\n", nsig);
19104     for (n = 1; n < nsig; n++) {
19105         if (sig_name[n]) {
19106             printf("%s %d\n", sig_name[n], sig_num[n])
19107         }
19108         else {
19109             printf("NUM%d %d\n", n, n) 
19110         }
19111     }
19112     for (n = 0; n < ndups; n++) {
19113         printf("%s %d\n", dup_name[n], dup_num[n])
19114     }
19115 }
19116 EOP
19117 $cat >signal_cmd <<EOS
19118 $startsh
19119 if $test -s signal.lst; then
19120     echo "Using your existing signal.lst file"
19121         exit 0
19122 fi
19123 xxx="$xxx"
19124 EOS
19125 $cat >>signal_cmd <<'EOS'
19126
19127 set signal
19128 if eval $compile_ok; then
19129         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19130 else
19131         echo "(I can't seem be able to compile the whole test program)" >&4
19132         echo "(I'll try it in little pieces.)" >&4
19133         set signal -DJUST_NSIG
19134         if eval $compile_ok; then
19135                 $run ./signal$_exe > signal.nsg
19136                 $cat signal.nsg
19137         else
19138                 echo "I can't seem to figure out how many signals you have." >&4
19139                 echo "Guessing 50." >&4
19140                 echo 'NSIG 50' > signal.nsg
19141         fi
19142         : Now look at all the signal names, one at a time.
19143         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19144                 $cat > signal.c <<EOCP
19145 #include <sys/types.h>
19146 #include <signal.h>
19147 #include <stdio.h>
19148 int main() {
19149 printf("$xx %d\n", SIG${xx});
19150 return 0;
19151 }
19152 EOCP
19153                 set signal
19154                 if eval $compile; then
19155                         echo "SIG${xx} found."
19156                         $run ./signal$_exe  >> signal.ls1
19157                 else
19158                         echo "SIG${xx} NOT found."
19159                 fi
19160         done
19161         if $test -s signal.ls1; then
19162                 $cat signal.nsg signal.ls1 |
19163                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
19164         fi
19165
19166 fi
19167 if $test -s signal.lst; then
19168         :
19169 else
19170         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19171         echo 'kill -l' >signal
19172         set X `csh -f <signal`
19173         $rm -f signal
19174         shift
19175         case $# in
19176         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19177         esac
19178         echo $@ | $tr ' ' $trnl | \
19179             $awk '{ printf "%s %d\n", $1, ++s; }
19180                   END { printf "NSIG %d\n", ++s }' >signal.lst
19181 fi
19182 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19183 EOS
19184 chmod a+x signal_cmd
19185 $eunicefix signal_cmd
19186
19187 : generate list of signal names
19188 echo " "
19189 case "$sig_name_init" in
19190 '') doinit=yes ;;
19191 *)  case "$sig_num_init" in
19192     ''|*,*) doinit=yes ;;
19193     esac ;;
19194 esac
19195 case "$doinit" in
19196 yes)
19197         echo "Generating a list of signal names and numbers..." >&4
19198         . ./signal_cmd
19199         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19200         sig_name=`$awk 'BEGIN { printf "ZERO " }
19201                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19202         sig_num=`$awk  'BEGIN { printf "0 " }
19203                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19204         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19205                              !/^NSIG/   { printf "\"%s\", ", $1 }
19206                              END        { printf "0\n" }' signal.lst`
19207         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19208                              !/^NSIG/   { printf "%d, ", $2}
19209                              END        { printf "0\n"}' signal.lst`
19210         ;;
19211 esac
19212 echo "The following $sig_count signals are available:"
19213 echo " "
19214 echo $sig_name | $awk \
19215 'BEGIN { linelen = 0 }
19216 {
19217         for (i = 1; i <= NF; i++) {
19218                 name = "SIG" $i " "
19219                 linelen = linelen + length(name)
19220                 if (linelen > 70) {
19221                         printf "\n"
19222                         linelen = length(name)
19223                 }
19224                 printf "%s", name
19225         }
19226         printf "\n"
19227 }'
19228 sig_size=`echo $sig_name | awk '{print NF}'`
19229 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19230
19231 echo " "
19232 case "$sizetype" in
19233 *_t) zzz="$sizetype"    ;;
19234 *)   zzz="filesize"     ;;
19235 esac
19236 echo "Checking the size of $zzz..." >&4 
19237 cat > try.c <<EOCP
19238 #include <sys/types.h>
19239 #include <stdio.h>
19240 #$i_stdlib I_STDLIB
19241 #ifdef I_STDLIB
19242 #include <stdlib.h>
19243 #endif
19244 int main() {
19245     printf("%d\n", (int)sizeof($sizetype));
19246     exit(0);
19247 }
19248 EOCP
19249 set try
19250 if eval $compile_ok; then
19251         yyy=`$run ./try`
19252         case "$yyy" in
19253         '')     sizesize=4
19254                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19255                 ;;
19256         *)      sizesize=$yyy
19257                 echo "Your $zzz size is $sizesize bytes."
19258                 ;;
19259         esac
19260 else
19261         sizesize=4
19262         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19263 fi
19264
19265
19266 : check for socklen_t
19267 echo " "
19268 echo "Checking to see if you have socklen_t..." >&4
19269 $cat >try.c <<EOCP
19270 #include <sys/types.h>
19271 #$d_socket HAS_SOCKET
19272 #ifdef HAS_SOCKET
19273 #include <sys/socket.h>
19274 #endif
19275 int main() { socklen_t x = 16; }
19276 EOCP
19277 set try
19278 if eval $compile; then
19279         val="$define"
19280         echo "You have socklen_t."
19281 else
19282         val="$undef"
19283         echo "You do not have socklen_t."
19284         case "$sizetype" in
19285         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19286         esac
19287 fi
19288 $rm -f try try.*
19289 set d_socklen_t
19290 eval $setvar
19291
19292 : see if this is a socks.h system
19293 set socks.h i_socks
19294 eval $inhdr
19295
19296 : check for type of the size argument to socket calls
19297 case "$d_socket" in
19298 "$define")
19299         $cat <<EOM
19300
19301 Checking to see what type is the last argument of accept().
19302 EOM
19303         yyy=''
19304         case "$d_socklen_t" in
19305         "$define") yyy="$yyy socklen_t"
19306         esac
19307         yyy="$yyy $sizetype int long unsigned"
19308         for xxx in $yyy; do
19309                 case "$socksizetype" in
19310                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19311                         case "$usesocks" in
19312                         "$define")
19313                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19314                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19315                                         socksizetype="$xxx"
19316                                 fi
19317                                 ;;
19318                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19319                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19320                                         socksizetype="$xxx"
19321                                 fi
19322                                 ;;
19323                         esac
19324                         ;;
19325                 esac
19326         done
19327 : In case none of those worked, prompt the user.
19328         case "$socksizetype" in
19329         '')     rp='What is the type for socket address structure sizes?'
19330                 dflt='int'
19331                 . ./myread
19332                 socksizetype=$ans
19333                 ;;
19334         esac
19335         ;;
19336 *)      : no sockets, so pick relatively harmless default
19337         socksizetype='int'
19338         ;;
19339 esac
19340
19341 : see what type is used for signed size_t
19342 set ssize_t ssizetype int stdio.h sys/types.h
19343 eval $typedef
19344 dflt="$ssizetype"
19345 $cat > try.c <<EOM
19346 #include <stdio.h>
19347 #$i_stdlib I_STDLIB
19348 #ifdef I_STDLIB
19349 #include <stdlib.h>
19350 #endif
19351 #include <sys/types.h>
19352 #define Size_t $sizetype
19353 #define SSize_t $dflt
19354 int main()
19355 {
19356         if (sizeof(Size_t) == sizeof(SSize_t))
19357                 printf("$dflt\n");
19358         else if (sizeof(Size_t) == sizeof(int))
19359                 printf("int\n");
19360         else 
19361                 printf("long\n");
19362         exit(0);
19363 }
19364 EOM
19365 echo " "
19366 set try
19367 if eval $compile_ok && $run ./try > /dev/null; then
19368         ssizetype=`$run ./try`
19369         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19370 else
19371         $cat >&4 <<EOM
19372 Help! I can't compile and run the ssize_t test program: please enlighten me!
19373 (This is probably a misconfiguration in your system or libraries, and
19374 you really ought to fix it.  Still, I'll try anyway.)
19375
19376 I need a type that is the same size as $sizetype, but is guaranteed to
19377 be signed.  Common values are ssize_t, int and long.
19378
19379 EOM
19380         rp="What signed type is the same size as $sizetype?"
19381         . ./myread
19382         ssizetype="$ans"
19383 fi
19384 $rm -f try try.*
19385
19386 : see what type of char stdio uses.
19387 echo " "
19388 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19389 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19390         echo "Your stdio uses unsigned chars." >&4
19391         stdchar="unsigned char"
19392 else
19393         echo "Your stdio uses signed chars." >&4
19394         stdchar="char"
19395 fi
19396 $rm -f stdioh
19397
19398
19399
19400 : see what type uids are declared as in the kernel
19401 echo " "
19402 echo "Looking for the type for user ids returned by getuid()."
19403 set uid_t uidtype xxx stdio.h sys/types.h
19404 eval $typedef
19405 case "$uidtype" in
19406 xxx)
19407         xxx=`./findhdr sys/user.h`
19408         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19409         case $1 in
19410         unsigned) dflt="$1 $2" ;;
19411         *) dflt="$1" ;;
19412         esac
19413         ;;
19414 *) dflt="$uidtype";;
19415 esac
19416 case "$uidtype" in
19417 uid_t)  echo "uid_t found." ;;
19418 *)      rp="What is the type for user ids returned by getuid()?"
19419         . ./myread
19420         uidtype="$ans"
19421         ;;
19422 esac
19423
19424 echo " "
19425 case "$uidtype" in
19426 *_t) zzz="$uidtype"     ;;
19427 *)   zzz="uid"          ;;
19428 esac
19429 echo "Checking the size of $zzz..." >&4 
19430 cat > try.c <<EOCP
19431 #include <sys/types.h>
19432 #include <stdio.h>
19433 #$i_stdlib I_STDLIB
19434 #ifdef I_STDLIB
19435 #include <stdlib.h>
19436 #endif
19437 int main() {
19438     printf("%d\n", (int)sizeof($uidtype));
19439     exit(0);
19440 }
19441 EOCP
19442 set try
19443 if eval $compile_ok; then
19444         yyy=`$run ./try`
19445         case "$yyy" in
19446         '')     uidsize=4
19447                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19448                 ;;
19449         *)      uidsize=$yyy
19450                 echo "Your $zzz is $uidsize bytes long."
19451                 ;;
19452         esac
19453 else
19454         uidsize=4
19455         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19456 fi
19457
19458 echo " "
19459 case "$uidtype" in
19460 *_t) zzz="$uidtype"     ;;
19461 *)   zzz="uid"          ;;
19462 esac
19463 echo "Checking the sign of $zzz..." >&4
19464 cat > try.c <<EOCP
19465 #include <sys/types.h>
19466 #include <stdio.h>
19467 int main() {
19468         $uidtype foo = -1;
19469         if (foo < 0)
19470                 printf("-1\n");
19471         else
19472                 printf("1\n");
19473 }
19474 EOCP
19475 set try
19476 if eval $compile; then
19477         yyy=`$run ./try`
19478         case "$yyy" in
19479         '')     uidsign=1
19480                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19481                 ;;
19482         *)      uidsign=$yyy
19483                 case "$uidsign" in
19484                  1) echo "Your $zzz is unsigned." ;;
19485                 -1) echo "Your $zzz is signed."   ;;
19486                 esac
19487                 ;;
19488         esac
19489 else
19490         uidsign=1
19491         echo "(I can't compile the test program--guessing unsigned.)" >&4
19492 fi
19493
19494
19495
19496 echo " "
19497 $echo "Checking the format string to be used for uids..." >&4
19498
19499 case "$uidsign" in
19500 -1)     if $test X"$uidsize" = X"$ivsize"; then
19501                 uidformat="$ivdformat"
19502         else
19503                 if $test X"$uidsize" = X"$longsize"; then
19504                         uidformat='"ld"'
19505                 else
19506                         if $test X"$uidsize" = X"$intsize"; then
19507                                 uidformat='"d"'
19508                         else
19509                                 if $test X"$uidsize" = X"$shortsize"; then
19510                                         uidformat='"hd"'
19511                                 fi
19512                         fi
19513                 fi
19514         fi
19515         ;;
19516 *)      if $test X"$uidsize" = X"$uvsize"; then
19517                 uidformat="$uvuformat"
19518         else
19519                 if $test X"$uidsize" = X"$longsize"; then
19520                         uidformat='"lu"'
19521                 else
19522                         if $test X"$uidsize" = X"$intsize"; then
19523                                 uidformat='"u"'
19524                         else
19525                                 if $test X"$uidsize" = X"$shortsize"; then
19526                                         uidformat='"hu"'
19527                                 fi
19528                         fi
19529                 fi
19530         fi
19531         ;;
19532 esac
19533
19534
19535 case "$usesitecustomize" in
19536     $define|true|[Yy]*)
19537         usesitecustomize="$define"
19538         ;;
19539     *)
19540         usesitecustomize="$undef"
19541         ;;
19542     esac
19543
19544 : determine compiler compiler
19545 case "$yacc" in
19546 '')
19547         dflt=yacc;;
19548 *)
19549         dflt="$yacc";;
19550 esac
19551 echo " "
19552 comp='yacc'
19553 if $test -f "$byacc$_exe"; then
19554         dflt="$byacc"
19555         comp="byacc or $comp"
19556 fi
19557 if $test -f "$bison$_exe"; then
19558         comp="$comp or bison -y"
19559 fi
19560 rp="Which compiler compiler ($comp) shall I use?"
19561 . ./myread
19562 yacc="$ans"
19563 case "$yacc" in
19564 *bis*)
19565         case "$yacc" in
19566         *-y*) ;;
19567         *)
19568                 yacc="$yacc -y"
19569                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19570                 ;;
19571         esac
19572         ;;
19573 esac
19574
19575 : see if this is a fp.h system
19576 set fp.h i_fp
19577 eval $inhdr
19578
19579 : see if this is a fp_class.h system
19580 set fp_class.h i_fp_class
19581 eval $inhdr
19582
19583 : see if this is a ieeefp.h system
19584 case "$i_ieeefp" in
19585 '' ) set ieeefp.h i_ieeefp
19586      eval $inhdr
19587      ;;
19588 esac
19589
19590 : see if this is a libutil.h system
19591 set libutil.h i_libutil
19592 eval $inhdr
19593
19594 : see if mach cthreads are available
19595 if test "X$usethreads" = "X$define"; then
19596         set mach/cthreads.h i_machcthr
19597         eval $inhdr
19598 else
19599         i_machcthr="$undef"
19600 fi
19601
19602
19603
19604 : see if this is a mntent.h system
19605 set mntent.h i_mntent
19606 eval $inhdr
19607
19608 : see if ndbm.h is available
19609 set ndbm.h t_ndbm
19610 eval $inhdr
19611
19612 case "$t_ndbm" in
19613 $undef)
19614     # Some Linux distributions such as RedHat 7.1 put the
19615     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19616     if $test -f /usr/include/gdbm/ndbm.h; then
19617         echo '<gdbm/ndbm.h> found.'
19618         ccflags="$ccflags -I/usr/include/gdbm"
19619         cppflags="$cppflags -I/usr/include/gdbm"
19620         t_ndbm=$define
19621     fi
19622     ;;
19623 esac
19624
19625 case "$t_ndbm" in
19626 $define)
19627         : see if dbm_open exists
19628         set dbm_open d_dbm_open
19629         eval $inlibc
19630         case "$d_dbm_open" in
19631         $undef)
19632                 t_ndbm="$undef"
19633                 echo "We won't be including <ndbm.h>"
19634                 ;;
19635         esac
19636         ;;
19637 esac
19638 val="$t_ndbm"
19639 set i_ndbm
19640 eval $setvar
19641
19642 : see if net/errno.h is available
19643 val=''
19644 set net/errno.h val
19645 eval $inhdr
19646
19647 : Unfortunately, it causes problems on some systems.  Arrgh.
19648 case "$val" in
19649 $define)
19650         cat > try.c <<'EOM'
19651 #include <stdio.h>
19652 #include <errno.h>
19653 #include <net/errno.h>
19654 int func()
19655 {
19656         return ENOTSOCK;
19657 }
19658 EOM
19659         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19660                 echo "We'll be including <net/errno.h>." >&4
19661         else
19662                 echo "We won't be including <net/errno.h>." >&4
19663                 val="$undef"
19664         fi
19665         $rm -f try.* try
19666         ;;
19667 esac
19668 set i_neterrno
19669 eval $setvar
19670
19671 : see if netinet/tcp.h is available
19672 set netinet/tcp.h i_netinettcp
19673 eval $inhdr
19674
19675 : see if this is a poll.h system
19676 set poll.h i_poll
19677 eval $inhdr
19678
19679 : see if this is a prot.h system
19680 set prot.h i_prot
19681 eval $inhdr
19682
19683 echo " "
19684 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19685 $cat <<'EOSH' > Cppsym.know
19686 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19687 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19688 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19689 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19690 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19691 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19692 bull c cadmus clipper CMU COFF COMPILER_VERSION
19693 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19694 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19695 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19696 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19697 GLIBC GLIBC_MINOR
19698 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19699 H3050R H3050RX hbullx20 hcx host_mips
19700 hp200 hp300 hp700 HP700 hp800 hp9000
19701 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19702 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19703 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19704 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19705 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19706 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19707 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19708 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19709 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19710 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19711 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19712 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19713 MATH_HAS_NO_SIDE_EFFECTS
19714 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19715 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19716 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19717 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19718 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19719 NetBSD news1500 news1700 news1800 news1900 news3700
19720 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19721 ns32016 ns32332 ns32k nsc32000
19722 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19723 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19724 pc532 pdp11 PGC PIC plexus PORTAR posix
19725 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19726 POSIX_C_SOURCE POSIX_SOURCE POWER
19727 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19728 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19729 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19730 sony sony_news sonyrisc sparc sparclite spectrum
19731 stardent stdc STDC_EXT stratos sun sun3 sun386
19732 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19733 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19734 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19735 sysV68 sysV88 Tek4132 Tek4300 titan
19736 TM3200 TM5400 TM5600
19737 tower tower32 tower32_200 tower32_600 tower32_700
19738 tower32_800 tower32_850 tss
19739 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19740 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19741 unix UNIX95 UNIX99 unixpc unos
19742 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19743 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19744 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19745 USGr4 USGr4_2
19746 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19747 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19748 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19749 z8000
19750 EOSH
19751 # Maybe put other stuff here too.
19752 cat <<EOSH >>Cppsym.know
19753 $osname
19754 EOSH
19755 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19756 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19757 $cat Cppsym.know > Cppsym.c
19758 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19759 $rm -f Cppsym.a Cppsym.b Cppsym.c
19760 cat <<EOSH > Cppsym
19761 $startsh
19762 if $test \$# -gt 0; then
19763     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19764     if $test -s Cppsym.got; then
19765         $rm -f Cppsym.got
19766         exit 0
19767     fi
19768     $rm -f Cppsym.got
19769     exit 1
19770 else
19771     $tr " " "$trnl" | ./Cppsym.try
19772     exit 0
19773 fi
19774 EOSH
19775 chmod +x Cppsym
19776 $eunicefix Cppsym
19777 cat <<EOSH > Cppsym.try
19778 $startsh
19779 cat <<'EOCP' > try.c
19780 #include <stdio.h>
19781 int main() {
19782 EOCP
19783 $awk \\
19784 EOSH
19785 cat <<'EOSH' >> Cppsym.try
19786 'length($1) > 0 {
19787     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
19788     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
19789     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
19790     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
19791 }'       >> try.c
19792 echo 'return 0;}' >> try.c
19793 EOSH
19794 cat <<EOSH >> Cppsym.try
19795 ccflags="$ccflags"
19796 case "$osname-$gccversion" in
19797 irix-) ccflags="\$ccflags -woff 1178" ;;
19798 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19799 esac
19800 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19801 EOSH
19802 chmod +x Cppsym.try
19803 $eunicefix Cppsym.try
19804 ./Cppsym < Cppsym.know > Cppsym.true
19805 : now check the C compiler for additional symbols
19806 postprocess_cc_v=''
19807 case "$osname" in
19808 aix) postprocess_cc_v="|$tr , ' '" ;;
19809 esac
19810 $cat >ccsym <<EOS
19811 $startsh
19812 $cat >tmp.c <<EOF
19813 extern int foo;
19814 EOF
19815 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19816 do
19817         case "\$i" in
19818         -D*) echo "\$i" | $sed 's/^-D//';;
19819         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19820         esac
19821 done
19822 $rm -f try.c
19823 EOS
19824 postprocess_cc_v=''
19825 chmod +x ccsym
19826 $eunicefix ccsym
19827 ./ccsym > ccsym1.raw
19828 if $test -s ccsym1.raw; then
19829        $sort ccsym1.raw | $uniq >ccsym.raw
19830 else
19831        mv ccsym1.raw ccsym.raw
19832 fi
19833
19834 $awk '/\=/ { print $0; next }
19835         { print $0"=1" }' ccsym.raw >ccsym.list
19836 $awk '/\=/ { print $0; next }
19837         { print $0"=1" }' Cppsym.true >ccsym.true
19838 $comm -13 ccsym.true ccsym.list >ccsym.own
19839 $comm -12 ccsym.true ccsym.list >ccsym.com
19840 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19841 also=''
19842 if $test -z ccsym.raw; then
19843         echo "Your C compiler doesn't seem to define any symbols!" >&4
19844         echo " "
19845         echo "However, your C preprocessor defines the following symbols:"
19846         $cat Cppsym.true
19847         ccsymbols=''
19848         cppsymbols=`$cat Cppsym.true`
19849         cppsymbols=`echo $cppsymbols`
19850         cppccsymbols="$cppsymbols"
19851 else
19852         if $test -s ccsym.com; then
19853                 echo "Your C compiler and pre-processor define these symbols:"
19854                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19855                 also='also '
19856                 symbols='ones'
19857                 cppccsymbols=`$cat ccsym.com`
19858                 cppccsymbols=`echo $cppccsymbols`
19859                 $test "$silent" || sleep 1
19860         fi
19861         if $test -s ccsym.cpp; then
19862                 $test "$also" && echo " "
19863                 echo "Your C pre-processor ${also}defines the following symbols:"
19864                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19865                 also='further '
19866                 cppsymbols=`$cat ccsym.cpp`
19867                 cppsymbols=`echo $cppsymbols`
19868                 $test "$silent" || sleep 1
19869         fi
19870         if $test -s ccsym.own; then
19871                 $test "$also" && echo " "
19872                 echo "Your C compiler ${also}defines the following cpp symbols:"
19873                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19874                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19875                 ccsymbols=`$cat ccsym.own`
19876                 ccsymbols=`echo $ccsymbols`
19877                 $test "$silent" || sleep 1
19878         fi
19879 fi
19880
19881 : see if this is a termio system
19882 val="$undef"
19883 val2="$undef"
19884 val3="$undef"
19885 if $test `./findhdr termios.h`; then
19886         set tcsetattr i_termios
19887         eval $inlibc
19888         val3="$i_termios"
19889 fi
19890 echo " "
19891 case "$val3" in
19892 "$define") echo "You have POSIX termios.h... good!" >&4;;
19893 *) if ./Cppsym pyr; then
19894                 case "`/bin/universe`" in
19895                 ucb) if $test `./findhdr sgtty.h`; then
19896                                 val2="$define"
19897                                 echo "<sgtty.h> found." >&4
19898                         else
19899                                 echo "System is pyramid with BSD universe."
19900                                 echo "<sgtty.h> not found--you could have problems." >&4
19901                         fi;;
19902                 *) if $test `./findhdr termio.h`; then
19903                                 val="$define"
19904                                 echo "<termio.h> found." >&4
19905                         else
19906                                 echo "System is pyramid with USG universe."
19907                                 echo "<termio.h> not found--you could have problems." >&4
19908                         fi;;
19909                 esac
19910         elif ./usg; then
19911                 if $test `./findhdr termio.h`; then
19912                         echo "<termio.h> found." >&4
19913                         val="$define"
19914                 elif $test `./findhdr sgtty.h`; then
19915                         echo "<sgtty.h> found." >&4
19916                         val2="$define"
19917                 else
19918 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19919                 fi
19920         else
19921                 if $test `./findhdr sgtty.h`; then
19922                         echo "<sgtty.h> found." >&4
19923                         val2="$define"
19924                 elif $test `./findhdr termio.h`; then
19925                         echo "<termio.h> found." >&4
19926                         val="$define"
19927                 else
19928 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19929                 fi
19930         fi;;
19931 esac
19932 set i_termio; eval $setvar
19933 val=$val2; set i_sgtty; eval $setvar
19934 val=$val3; set i_termios; eval $setvar
19935
19936 : see if stddef is available
19937 set stddef.h i_stddef
19938 eval $inhdr
19939
19940 : see if this is a sunmath.h system
19941 set sunmath.h i_sunmath
19942 eval $inhdr
19943
19944 : see if sys/access.h is available
19945 set sys/access.h i_sysaccess
19946 eval $inhdr
19947
19948 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19949 set sys/filio.h i_sysfilio
19950 eval $inhdr
19951 echo " "
19952 if $test `./findhdr sys/ioctl.h`; then
19953         val="$define"
19954         echo '<sys/ioctl.h> found.' >&4
19955 else
19956         val="$undef"
19957         if $test $i_sysfilio = "$define"; then
19958             echo '<sys/ioctl.h> NOT found.' >&4
19959         else
19960                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19961                 $test $i_termio = "$define" && xxx="termio.h"
19962                 $test $i_termios = "$define" && xxx="termios.h"
19963 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19964         fi
19965 fi
19966 set i_sysioctl
19967 eval $setvar
19968
19969 : see if socket ioctl defs are in sys/sockio.h
19970 echo " "
19971 xxx=`./findhdr sys/sockio.h`
19972 if $test "$xxx"; then
19973         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19974                 val="$define"
19975                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19976         else
19977                 val="$undef"
19978                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19979         fi
19980 else
19981         val="$undef"
19982         $cat <<EOM
19983 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19984 EOM
19985 fi
19986 set i_syssockio
19987 eval $setvar
19988
19989
19990 : see if this is a syslog.h system
19991 set syslog.h i_syslog
19992 eval $inhdr
19993
19994
19995 : see if this is a sys/mode.h system
19996 set sys/mode.h i_sysmode
19997 eval $inhdr
19998
19999 : see if sys/resource.h has to be included
20000 set sys/resource.h i_sysresrc
20001 eval $inhdr
20002
20003 : see if sys/security.h is available
20004 set sys/security.h i_syssecrt
20005 eval $inhdr
20006
20007 : see if this is a sys/statvfs.h system
20008 set sys/statvfs.h i_sysstatvfs
20009 eval $inhdr
20010
20011 : see if this is a sys/un.h system
20012 set sys/un.h i_sysun
20013 eval $inhdr
20014
20015
20016 : see if this is a sys/utsname.h system
20017 set sys/utsname.h i_sysutsname
20018 eval $inhdr
20019
20020 : see if this is a syswait system
20021 set sys/wait.h i_syswait
20022 eval $inhdr
20023
20024 : see if this is a ustat.h system
20025 set ustat.h i_ustat
20026 eval $inhdr
20027
20028 : see if this is an utime system
20029 set utime.h i_utime
20030 eval $inhdr
20031
20032 : see if this is a values.h system
20033 set values.h i_values
20034 eval $inhdr
20035
20036 : see if this is a vfork system
20037 case "$d_vfork" in
20038 "$define")
20039         set vfork.h i_vfork
20040         eval $inhdr
20041         ;;
20042 *)
20043         i_vfork="$undef"
20044         ;;
20045 esac
20046
20047 : see if gdbm.h is available
20048 set gdbm.h t_gdbm
20049 eval $inhdr
20050 case "$t_gdbm" in
20051 $define)
20052         : see if gdbm_open exists
20053         set gdbm_open d_gdbm_open
20054         eval $inlibc
20055         case "$d_gdbm_open" in
20056         $undef)
20057                 t_gdbm="$undef"
20058                 echo "We won't be including <gdbm.h>"
20059                 ;;
20060         esac
20061         ;;
20062 esac
20063 val="$t_gdbm"
20064 set i_gdbm
20065 eval $setvar
20066
20067 echo " "
20068 echo "Looking for extensions..." >&4
20069 : If we are using the old config.sh, known_extensions may contain
20070 : old or inaccurate or duplicate values.
20071 known_extensions=''
20072 nonxs_extensions=''
20073 : We do not use find because it might not be available.
20074 : We do not just use MANIFEST because the user may have dropped
20075 : some additional extensions into the source tree and expect them
20076 : to be built.
20077
20078 : Function to recursively find available extensions, ignoring DynaLoader
20079 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
20080 find_extensions='
20081     for xxx in *; do
20082        case "$xxx" in
20083            DynaLoader|dynaload) ;;
20084            *)
20085            if $test -f $xxx/$xxx.xs; then
20086                known_extensions="$known_extensions $1$xxx";
20087            elif $test -f $xxx/Makefile.PL; then
20088                nonxs_extensions="$nonxs_extensions $1$xxx";
20089            else
20090                if $test -d $xxx -a $# -lt 10; then
20091                    set $1$xxx/ $*;
20092                    cd "$xxx";
20093                    eval $find_extensions;
20094                    cd ..;
20095                    shift;
20096                fi;
20097            fi
20098            ;;
20099        esac;
20100     done'
20101 tdir=`pwd`
20102 cd "$rsrc/ext"
20103 set X
20104 shift
20105 eval $find_extensions
20106 # Special case:  Add in threads/shared since it is not picked up by the
20107 # recursive find above (and adding in general recursive finding breaks
20108 # SDBM_File/sdbm).  A.D.  10/25/2001.
20109 known_extensions="$known_extensions threads/shared"
20110 set X $nonxs_extensions
20111 shift
20112 nonxs_extensions="$*"
20113 set X $known_extensions
20114 shift
20115 known_extensions="$*"
20116 cd "$tdir"
20117
20118 : Now see which are supported on this system.
20119 avail_ext=''
20120 for xxx in $known_extensions ; do
20121         case "$xxx" in
20122         DB_File|db_file)
20123                 case "$i_db" in
20124                 $define) avail_ext="$avail_ext $xxx" ;;
20125                 esac
20126                 ;;
20127         GDBM_File|gdbm_fil)
20128                 case "$i_gdbm" in 
20129                 $define) avail_ext="$avail_ext $xxx" ;;
20130                 esac
20131                 ;;
20132         I18N/Langinfo|i18n_lan)
20133                 case "$i_langinfo$d_nl_langinfo" in 
20134                 $define$define) avail_ext="$avail_ext $xxx" ;;
20135                 esac
20136                 ;;
20137         NDBM_File|ndbm_fil)
20138                 case "$i_ndbm" in
20139                 $define)
20140                     case "$osname-$use64bitint" in
20141                     hpux-define)
20142                         case "$libs" in
20143                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20144                         esac
20145                         ;;
20146                     *) avail_ext="$avail_ext $xxx" ;;
20147                     esac
20148                     ;;
20149                 esac
20150                 ;;
20151         ODBM_File|odbm_fil) 
20152                 case "${i_dbm}${i_rpcsvcdbm}" in
20153                 *"${define}"*)
20154                     case "$osname-$use64bitint" in
20155                     hpux-define)
20156                         case "$libs" in
20157                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20158                         esac
20159                         ;;
20160                     *) avail_ext="$avail_ext $xxx" ;;
20161                     esac
20162                     ;;
20163                 esac
20164                 ;;
20165         POSIX|posix)
20166                 case "$useposix" in
20167                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20168                 esac
20169                 ;;
20170         Opcode|opcode)
20171                 case "$useopcode" in
20172                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20173                 esac
20174                 ;;
20175         Socket|socket)
20176                 case "$d_socket" in 
20177                 true|$define|y)
20178                     case "$osname" in
20179                     beos) ;; # not unless BONE
20180                     *) avail_ext="$avail_ext $xxx" ;;
20181                     esac
20182                     ;;
20183                 esac
20184                 ;;
20185         Sys/Syslog|sys/syslog)
20186                 : XXX syslog requires socket
20187                 case "$d_socket" in 
20188                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20189                 esac
20190                 ;;
20191         Thread|thread)
20192                 case "$usethreads" in
20193                 true|$define|y)
20194                         case "$useithreads" in
20195                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20196                         esac
20197                 esac
20198                 ;;
20199         XS/APItest|xs/apitest)
20200                 # This is just for testing.  Skip it unless we have dynamic loading.
20201
20202                 case "$usedl" in
20203                 $define) avail_ext="$avail_ext $xxx" ;;
20204                 esac
20205                 ;;
20206         XS/Typemap|xs/typemap)
20207                 # This is just for testing.  Skip it unless we have dynamic loading.
20208                 case "$usedl" in
20209                 $define) avail_ext="$avail_ext $xxx" ;;
20210                 esac
20211                 ;;
20212         threads|threads/shared)
20213                 # threads and threads::shared are special cases.
20214                 # To stop people from asking "Perl 5.8.0 was supposed
20215                 # to have this new fancy threads implementation but my
20216                 # perl doesn't have it" and from people trying to
20217                 # (re)install the threads module using CPAN.pm and
20218                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20219                 # the threads.pm and threads/shared.pm will always be
20220                 # there, croaking informatively ("you need to rebuild
20221                 # all of Perl with threads, sorry") when threads haven't
20222                 # been compiled in.
20223                 # --jhi
20224                 avail_ext="$avail_ext $xxx"
20225                 ;;
20226         IPC/SysV|ipc/sysv)
20227                 : XXX Do we need a useipcsysv variable here
20228                 case "${d_msg}${d_sem}${d_shm}" in 
20229                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20230                 esac
20231                 ;;
20232         *)      avail_ext="$avail_ext $xxx"
20233                 ;;
20234         esac
20235 done
20236
20237 set X $avail_ext
20238 shift
20239 avail_ext="$*"
20240
20241 case "$onlyextensions" in
20242 '') ;;
20243 *)  keepextensions=''
20244     echo "You have requested that only certains extensions be included..." >&4
20245     for i in $onlyextensions; do
20246         case " $avail_ext " in
20247         *" $i "*)
20248             echo "Keeping extension $i."
20249             keepextensions="$keepextensions $i"
20250             ;;
20251         *) echo "Ignoring extension $i." ;;
20252         esac
20253     done
20254     avail_ext="$keepextensions"
20255     ;;
20256 esac
20257
20258 case "$noextensions" in
20259 '') ;;
20260 *)  keepextensions=''
20261     echo "You have requested that certain extensions be ignored..." >&4
20262     for i in $avail_ext; do
20263         case " $noextensions " in
20264         *" $i "*) echo "Ignoring extension $i." ;;
20265         *) echo "Keeping extension $i.";
20266            keepextensions="$keepextensions $i"
20267            ;;
20268         esac
20269     done
20270     avail_ext="$keepextensions"
20271     ;;
20272 esac
20273
20274 : Now see which nonxs extensions are supported on this system.
20275 : For now assume all are.
20276 nonxs_ext=''
20277 for xxx in $nonxs_extensions ; do
20278         case "$xxx" in
20279         *)      nonxs_ext="$nonxs_ext $xxx"
20280                 ;;
20281         esac
20282 done
20283
20284 set X $nonxs_ext
20285 shift
20286 nonxs_ext="$*"
20287
20288 case $usedl in
20289 $define)
20290         $cat <<EOM
20291 A number of extensions are supplied with $package.  You may choose to
20292 compile these extensions for dynamic loading (the default), compile
20293 them into the $package executable (static loading), or not include
20294 them at all.  Answer "none" to include no extensions.
20295 Note that DynaLoader is always built and need not be mentioned here.
20296
20297 EOM
20298         case "$dynamic_ext" in
20299         '')
20300                 : Exclude those listed in static_ext
20301                 dflt=''
20302                 for xxx in $avail_ext; do
20303                         case " $static_ext " in
20304                         *" $xxx "*) ;;
20305                         *) dflt="$dflt $xxx" ;;
20306                         esac
20307                 done
20308                 set X $dflt
20309                 shift
20310                 dflt="$*"
20311                 ;;
20312         *)      dflt="$dynamic_ext"
20313                 # Perhaps we are reusing an old out-of-date config.sh.
20314                 case "$hint" in
20315                 previous)
20316                         if test X"$dynamic_ext" != X"$avail_ext"; then
20317                                 $cat <<EOM
20318 NOTICE:  Your previous config.sh list may be incorrect. 
20319 The extensions now available to you are 
20320         ${avail_ext}
20321 but the default list from your previous config.sh is
20322         ${dynamic_ext} 
20323
20324 EOM
20325                         fi
20326                         ;;
20327                 esac
20328                 ;;
20329         esac
20330         case "$dflt" in
20331         '')     dflt=none;;
20332         esac
20333         rp="What extensions do you wish to load dynamically?"
20334         . ./myread
20335         case "$ans" in
20336         none) dynamic_ext=' ' ;;
20337         *) dynamic_ext="$ans" ;;
20338         esac
20339
20340         case "$static_ext" in
20341         '')
20342                 : Exclude those already listed in dynamic linking
20343                 dflt=''
20344                 for xxx in $avail_ext; do
20345                         case " $dynamic_ext " in
20346                         *" $xxx "*) ;;
20347                         *) dflt="$dflt $xxx" ;;
20348                         esac
20349                 done
20350                 set X $dflt
20351                 shift
20352                 dflt="$*"
20353                 ;;
20354         *)  dflt="$static_ext" 
20355                 ;;
20356         esac
20357
20358         case "$dflt" in
20359         '')     dflt=none;;
20360         esac
20361         rp="What extensions do you wish to load statically?"
20362         . ./myread
20363         case "$ans" in
20364         none) static_ext=' ' ;;
20365         *) static_ext="$ans" ;;
20366         esac
20367         ;;
20368 *)
20369         $cat <<EOM
20370 A number of extensions are supplied with $package.  Answer "none" 
20371 to include no extensions. 
20372 Note that DynaLoader is always built and need not be mentioned here.
20373
20374 EOM
20375         case "$static_ext" in
20376         '') dflt="$avail_ext" ;;
20377         *)      dflt="$static_ext"
20378                 # Perhaps we are reusing an old out-of-date config.sh.
20379                 case "$hint" in
20380                 previous)
20381                         if test X"$static_ext" != X"$avail_ext"; then
20382                                 $cat <<EOM
20383 NOTICE:  Your previous config.sh list may be incorrect. 
20384 The extensions now available to you are 
20385         ${avail_ext}
20386 but the default list from your previous config.sh is
20387         ${static_ext} 
20388
20389 EOM
20390                         fi
20391                         ;;
20392                 esac
20393                 ;;
20394         esac
20395         : Exclude those that are not xs extensions
20396         case "$dflt" in
20397         '')     dflt=none;;
20398         esac
20399         rp="What extensions do you wish to include?"
20400         . ./myread
20401         case "$ans" in
20402         none) static_ext=' ' ;;
20403         *) static_ext="$ans" ;;
20404         esac
20405         ;;
20406 esac
20407 #        
20408 # Encode is a special case.  If we are building Encode as a static
20409 # extension, we need to explicitly list its subextensions as well.
20410 # For other nested extensions, this is handled automatically by
20411 # the appropriate Makefile.PL.
20412 case " $static_ext " in
20413         *" Encode "*) # Add the subextensions of Encode
20414         cd "$rsrc/ext"
20415         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20416                 static_ext="$static_ext Encode/$xxx"
20417         done
20418         cd "$tdir"
20419         ;;
20420 esac
20421
20422 set X $dynamic_ext $static_ext $nonxs_ext
20423 shift
20424 extensions="$*"
20425
20426 # Sanity check:  We require an extension suitable for use with
20427 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
20428 # should show up as failures in the test suite, but it's helpful to
20429 # catch them now.) The 'extensions' list is normally sorted
20430 # alphabetically, so we need to accept either
20431 #    DB_File ... Fcntl ... IO  ....
20432 # or something like
20433 #    Fcntl ... NDBM_File ... IO  ....
20434 case " $extensions"  in
20435 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
20436 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20437 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
20438 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20439    echo "WARNING: The Perl you are building will be quite crippled." >& 4
20440    ;;
20441 esac
20442
20443 : Remove libraries needed only for extensions
20444 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20445 : The exception is SunOS 4.x, which needs them.
20446 case "${osname}X${osvers}" in
20447 sunos*X4*)
20448     perllibs="$libs"
20449     ;;
20450 *) case "$usedl" in
20451     $define|true|[yY]*)
20452             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20453             shift
20454             perllibs="$*"
20455             ;;
20456     *)  perllibs="$libs"
20457             ;;
20458     esac
20459     ;;
20460 esac
20461
20462 : Remove build directory name from cppstdin so it can be used from
20463 : either the present location or the final installed location.
20464 echo " "
20465 : Get out of the UU directory to get correct path name.
20466 cd ..
20467 case "$cppstdin" in
20468 `pwd`/cppstdin)
20469         echo "Stripping down cppstdin path name"
20470         cppstdin=cppstdin
20471         ;;
20472 esac
20473 cd UU
20474
20475 : end of configuration questions
20476 echo " "
20477 echo "End of configuration questions."
20478 echo " "
20479
20480 : back to where it started
20481 if test -d ../UU; then
20482         cd ..
20483 fi
20484
20485 : configuration may be patched via a 'config.arch' file
20486 if $test -f config.arch; then
20487         echo "I see a config.arch file, loading it."
20488         . ./config.arch
20489 fi
20490
20491 : configuration may be patched via a 'config.over' file
20492 if $test -f config.over; then
20493         echo " "
20494         dflt=y
20495         rp='I see a config.over file.  Do you wish to load it?'
20496         . UU/myread
20497         case "$ans" in
20498         n*) echo "OK, I'll ignore it.";;
20499         *)      . ./config.over
20500                 echo "Configuration override changes have been loaded."
20501                 ;;
20502         esac
20503 fi
20504
20505 : in case they want portability, strip down executable paths
20506 case "$d_portable" in
20507 "$define")
20508         echo " "
20509         echo "Stripping down executable paths..." >&4
20510         for file in $loclist $trylist; do
20511                 eval temp=\$$file
20512                 eval $file=`basename $temp`
20513         done
20514         ;;
20515 esac
20516
20517 : create config.sh file
20518 echo " "
20519 echo "Creating config.sh..." >&4
20520 $spitshell <<EOT >config.sh
20521 $startsh
20522 #
20523 # This file was produced by running the Configure script. It holds all the
20524 # definitions figured out by Configure. Should you modify one of these values,
20525 # do not forget to propagate your changes by running "Configure -der". You may
20526 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20527 #
20528
20529 # Package name      : $package
20530 # Source directory  : $src
20531 # Configuration time: $cf_time
20532 # Configured by     : $cf_by
20533 # Target system     : $myuname
20534
20535 Author='$Author'
20536 Date='$Date'
20537 Header='$Header'
20538 Id='$Id'
20539 Locker='$Locker'
20540 Log='$Log'
20541 Mcc='$Mcc'
20542 RCSfile='$RCSfile'
20543 Revision='$Revision'
20544 Source='$Source'
20545 State='$State'
20546 _a='$_a'
20547 _exe='$_exe'
20548 _o='$_o'
20549 afs='$afs'
20550 afsroot='$afsroot'
20551 alignbytes='$alignbytes'
20552 ansi2knr='$ansi2knr'
20553 aphostname='$aphostname'
20554 api_revision='$api_revision'
20555 api_subversion='$api_subversion'
20556 api_version='$api_version'
20557 api_versionstring='$api_versionstring'
20558 ar='$ar'
20559 archlib='$archlib'
20560 archlibexp='$archlibexp'
20561 archname64='$archname64'
20562 archname='$archname'
20563 archobjs='$archobjs'
20564 asctime_r_proto='$asctime_r_proto'
20565 awk='$awk'
20566 baserev='$baserev'
20567 bash='$bash'
20568 bin='$bin'
20569 binexp='$binexp'
20570 bison='$bison'
20571 byacc='$byacc'
20572 byteorder='$byteorder'
20573 c='$c'
20574 castflags='$castflags'
20575 cat='$cat'
20576 cc='$cc'
20577 cccdlflags='$cccdlflags'
20578 ccdlflags='$ccdlflags'
20579 ccflags='$ccflags'
20580 ccflags_uselargefiles='$ccflags_uselargefiles'
20581 ccname='$ccname'
20582 ccsymbols='$ccsymbols'
20583 ccversion='$ccversion'
20584 cf_by='$cf_by'
20585 cf_email='$cf_email'
20586 cf_time='$cf_time'
20587 charsize='$charsize'
20588 chgrp='$chgrp'
20589 chmod='$chmod'
20590 chown='$chown'
20591 clocktype='$clocktype'
20592 comm='$comm'
20593 compress='$compress'
20594 contains='$contains'
20595 cp='$cp'
20596 cpio='$cpio'
20597 cpp='$cpp'
20598 cpp_stuff='$cpp_stuff'
20599 cppccsymbols='$cppccsymbols'
20600 cppflags='$cppflags'
20601 cpplast='$cpplast'
20602 cppminus='$cppminus'
20603 cpprun='$cpprun'
20604 cppstdin='$cppstdin'
20605 cppsymbols='$cppsymbols'
20606 crypt_r_proto='$crypt_r_proto'
20607 cryptlib='$cryptlib'
20608 csh='$csh'
20609 ctermid_r_proto='$ctermid_r_proto'
20610 ctime_r_proto='$ctime_r_proto'
20611 d_Gconvert='$d_Gconvert'
20612 d_PRIEUldbl='$d_PRIEUldbl'
20613 d_PRIFUldbl='$d_PRIFUldbl'
20614 d_PRIGUldbl='$d_PRIGUldbl'
20615 d_PRIXU64='$d_PRIXU64'
20616 d_PRId64='$d_PRId64'
20617 d_PRIeldbl='$d_PRIeldbl'
20618 d_PRIfldbl='$d_PRIfldbl'
20619 d_PRIgldbl='$d_PRIgldbl'
20620 d_PRIi64='$d_PRIi64'
20621 d_PRIo64='$d_PRIo64'
20622 d_PRIu64='$d_PRIu64'
20623 d_PRIx64='$d_PRIx64'
20624 d_SCNfldbl='$d_SCNfldbl'
20625 d__fwalk='$d__fwalk'
20626 d_access='$d_access'
20627 d_accessx='$d_accessx'
20628 d_aintl='$d_aintl'
20629 d_alarm='$d_alarm'
20630 d_archlib='$d_archlib'
20631 d_asctime_r='$d_asctime_r'
20632 d_atolf='$d_atolf'
20633 d_atoll='$d_atoll'
20634 d_attribut='$d_attribut'
20635 d_bcmp='$d_bcmp'
20636 d_bcopy='$d_bcopy'
20637 d_bsd='$d_bsd'
20638 d_bsdgetpgrp='$d_bsdgetpgrp'
20639 d_bsdsetpgrp='$d_bsdsetpgrp'
20640 d_bzero='$d_bzero'
20641 d_casti32='$d_casti32'
20642 d_castneg='$d_castneg'
20643 d_charvspr='$d_charvspr'
20644 d_chown='$d_chown'
20645 d_chroot='$d_chroot'
20646 d_chsize='$d_chsize'
20647 d_class='$d_class'
20648 d_closedir='$d_closedir'
20649 d_cmsghdr_s='$d_cmsghdr_s'
20650 d_const='$d_const'
20651 d_copysignl='$d_copysignl'
20652 d_crypt='$d_crypt'
20653 d_crypt_r='$d_crypt_r'
20654 d_csh='$d_csh'
20655 d_ctermid_r='$d_ctermid_r'
20656 d_ctime_r='$d_ctime_r'
20657 d_cuserid='$d_cuserid'
20658 d_dbl_dig='$d_dbl_dig'
20659 d_dbminitproto='$d_dbminitproto'
20660 d_difftime='$d_difftime'
20661 d_dirfd='$d_dirfd'
20662 d_dirnamlen='$d_dirnamlen'
20663 d_dlerror='$d_dlerror'
20664 d_dlopen='$d_dlopen'
20665 d_dlsymun='$d_dlsymun'
20666 d_dosuid='$d_dosuid'
20667 d_drand48_r='$d_drand48_r'
20668 d_drand48proto='$d_drand48proto'
20669 d_dup2='$d_dup2'
20670 d_eaccess='$d_eaccess'
20671 d_endgrent='$d_endgrent'
20672 d_endgrent_r='$d_endgrent_r'
20673 d_endhent='$d_endhent'
20674 d_endhostent_r='$d_endhostent_r'
20675 d_endnent='$d_endnent'
20676 d_endnetent_r='$d_endnetent_r'
20677 d_endpent='$d_endpent'
20678 d_endprotoent_r='$d_endprotoent_r'
20679 d_endpwent='$d_endpwent'
20680 d_endpwent_r='$d_endpwent_r'
20681 d_endsent='$d_endsent'
20682 d_endservent_r='$d_endservent_r'
20683 d_eofnblk='$d_eofnblk'
20684 d_eunice='$d_eunice'
20685 d_faststdio='$d_faststdio'
20686 d_fchdir='$d_fchdir'
20687 d_fchmod='$d_fchmod'
20688 d_fchown='$d_fchown'
20689 d_fcntl='$d_fcntl'
20690 d_fcntl_can_lock='$d_fcntl_can_lock'
20691 d_fd_macros='$d_fd_macros'
20692 d_fd_set='$d_fd_set'
20693 d_fds_bits='$d_fds_bits'
20694 d_fgetpos='$d_fgetpos'
20695 d_finite='$d_finite'
20696 d_finitel='$d_finitel'
20697 d_flexfnam='$d_flexfnam'
20698 d_flock='$d_flock'
20699 d_flockproto='$d_flockproto'
20700 d_fork='$d_fork'
20701 d_fp_class='$d_fp_class'
20702 d_fpathconf='$d_fpathconf'
20703 d_fpclass='$d_fpclass'
20704 d_fpclassify='$d_fpclassify'
20705 d_fpclassl='$d_fpclassl'
20706 d_fpos64_t='$d_fpos64_t'
20707 d_frexpl='$d_frexpl'
20708 d_fs_data_s='$d_fs_data_s'
20709 d_fseeko='$d_fseeko'
20710 d_fsetpos='$d_fsetpos'
20711 d_fstatfs='$d_fstatfs'
20712 d_fstatvfs='$d_fstatvfs'
20713 d_fsync='$d_fsync'
20714 d_ftello='$d_ftello'
20715 d_ftime='$d_ftime'
20716 d_getcwd='$d_getcwd'
20717 d_getespwnam='$d_getespwnam'
20718 d_getfsstat='$d_getfsstat'
20719 d_getgrent='$d_getgrent'
20720 d_getgrent_r='$d_getgrent_r'
20721 d_getgrgid_r='$d_getgrgid_r'
20722 d_getgrnam_r='$d_getgrnam_r'
20723 d_getgrps='$d_getgrps'
20724 d_gethbyaddr='$d_gethbyaddr'
20725 d_gethbyname='$d_gethbyname'
20726 d_gethent='$d_gethent'
20727 d_gethname='$d_gethname'
20728 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20729 d_gethostbyname_r='$d_gethostbyname_r'
20730 d_gethostent_r='$d_gethostent_r'
20731 d_gethostprotos='$d_gethostprotos'
20732 d_getitimer='$d_getitimer'
20733 d_getlogin='$d_getlogin'
20734 d_getlogin_r='$d_getlogin_r'
20735 d_getmnt='$d_getmnt'
20736 d_getmntent='$d_getmntent'
20737 d_getnbyaddr='$d_getnbyaddr'
20738 d_getnbyname='$d_getnbyname'
20739 d_getnent='$d_getnent'
20740 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20741 d_getnetbyname_r='$d_getnetbyname_r'
20742 d_getnetent_r='$d_getnetent_r'
20743 d_getnetprotos='$d_getnetprotos'
20744 d_getpagsz='$d_getpagsz'
20745 d_getpbyname='$d_getpbyname'
20746 d_getpbynumber='$d_getpbynumber'
20747 d_getpent='$d_getpent'
20748 d_getpgid='$d_getpgid'
20749 d_getpgrp2='$d_getpgrp2'
20750 d_getpgrp='$d_getpgrp'
20751 d_getppid='$d_getppid'
20752 d_getprior='$d_getprior'
20753 d_getprotobyname_r='$d_getprotobyname_r'
20754 d_getprotobynumber_r='$d_getprotobynumber_r'
20755 d_getprotoent_r='$d_getprotoent_r'
20756 d_getprotoprotos='$d_getprotoprotos'
20757 d_getprpwnam='$d_getprpwnam'
20758 d_getpwent='$d_getpwent'
20759 d_getpwent_r='$d_getpwent_r'
20760 d_getpwnam_r='$d_getpwnam_r'
20761 d_getpwuid_r='$d_getpwuid_r'
20762 d_getsbyname='$d_getsbyname'
20763 d_getsbyport='$d_getsbyport'
20764 d_getsent='$d_getsent'
20765 d_getservbyname_r='$d_getservbyname_r'
20766 d_getservbyport_r='$d_getservbyport_r'
20767 d_getservent_r='$d_getservent_r'
20768 d_getservprotos='$d_getservprotos'
20769 d_getspnam='$d_getspnam'
20770 d_getspnam_r='$d_getspnam_r'
20771 d_gettimeod='$d_gettimeod'
20772 d_gmtime_r='$d_gmtime_r'
20773 d_gnulibc='$d_gnulibc'
20774 d_grpasswd='$d_grpasswd'
20775 d_hasmntopt='$d_hasmntopt'
20776 d_htonl='$d_htonl'
20777 d_ilogbl='$d_ilogbl'
20778 d_index='$d_index'
20779 d_inetaton='$d_inetaton'
20780 d_int64_t='$d_int64_t'
20781 d_isascii='$d_isascii'
20782 d_isfinite='$d_isfinite'
20783 d_isinf='$d_isinf'
20784 d_isnan='$d_isnan'
20785 d_isnanl='$d_isnanl'
20786 d_killpg='$d_killpg'
20787 d_lchown='$d_lchown'
20788 d_ldbl_dig='$d_ldbl_dig'
20789 d_libm_lib_version='$d_libm_lib_version'
20790 d_link='$d_link'
20791 d_localtime_r='$d_localtime_r'
20792 d_locconv='$d_locconv'
20793 d_lockf='$d_lockf'
20794 d_longdbl='$d_longdbl'
20795 d_longlong='$d_longlong'
20796 d_lseekproto='$d_lseekproto'
20797 d_lstat='$d_lstat'
20798 d_madvise='$d_madvise'
20799 d_mblen='$d_mblen'
20800 d_mbstowcs='$d_mbstowcs'
20801 d_mbtowc='$d_mbtowc'
20802 d_memchr='$d_memchr'
20803 d_memcmp='$d_memcmp'
20804 d_memcpy='$d_memcpy'
20805 d_memmove='$d_memmove'
20806 d_memset='$d_memset'
20807 d_mkdir='$d_mkdir'
20808 d_mkdtemp='$d_mkdtemp'
20809 d_mkfifo='$d_mkfifo'
20810 d_mkstemp='$d_mkstemp'
20811 d_mkstemps='$d_mkstemps'
20812 d_mktime='$d_mktime'
20813 d_mmap='$d_mmap'
20814 d_modfl='$d_modfl'
20815 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20816 d_modflproto='$d_modflproto'
20817 d_mprotect='$d_mprotect'
20818 d_msg='$d_msg'
20819 d_msg_ctrunc='$d_msg_ctrunc'
20820 d_msg_dontroute='$d_msg_dontroute'
20821 d_msg_oob='$d_msg_oob'
20822 d_msg_peek='$d_msg_peek'
20823 d_msg_proxy='$d_msg_proxy'
20824 d_msgctl='$d_msgctl'
20825 d_msgget='$d_msgget'
20826 d_msghdr_s='$d_msghdr_s'
20827 d_msgrcv='$d_msgrcv'
20828 d_msgsnd='$d_msgsnd'
20829 d_msync='$d_msync'
20830 d_munmap='$d_munmap'
20831 d_mymalloc='$d_mymalloc'
20832 d_nice='$d_nice'
20833 d_nl_langinfo='$d_nl_langinfo'
20834 d_nv_preserves_uv='$d_nv_preserves_uv'
20835 d_off64_t='$d_off64_t'
20836 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20837 d_oldpthreads='$d_oldpthreads'
20838 d_oldsock='$d_oldsock'
20839 d_open3='$d_open3'
20840 d_pathconf='$d_pathconf'
20841 d_pause='$d_pause'
20842 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20843 d_phostname='$d_phostname'
20844 d_pipe='$d_pipe'
20845 d_poll='$d_poll'
20846 d_portable='$d_portable'
20847 d_procselfexe='$d_procselfexe'
20848 d_pthread_atfork='$d_pthread_atfork'
20849 d_pthread_attr_setscope='$d_pthread_attr_setscope'
20850 d_pthread_yield='$d_pthread_yield'
20851 d_pwage='$d_pwage'
20852 d_pwchange='$d_pwchange'
20853 d_pwclass='$d_pwclass'
20854 d_pwcomment='$d_pwcomment'
20855 d_pwexpire='$d_pwexpire'
20856 d_pwgecos='$d_pwgecos'
20857 d_pwpasswd='$d_pwpasswd'
20858 d_pwquota='$d_pwquota'
20859 d_qgcvt='$d_qgcvt'
20860 d_quad='$d_quad'
20861 d_random_r='$d_random_r'
20862 d_readdir64_r='$d_readdir64_r'
20863 d_readdir='$d_readdir'
20864 d_readdir_r='$d_readdir_r'
20865 d_readlink='$d_readlink'
20866 d_readv='$d_readv'
20867 d_recvmsg='$d_recvmsg'
20868 d_rename='$d_rename'
20869 d_rewinddir='$d_rewinddir'
20870 d_rmdir='$d_rmdir'
20871 d_safebcpy='$d_safebcpy'
20872 d_safemcpy='$d_safemcpy'
20873 d_sanemcmp='$d_sanemcmp'
20874 d_sbrkproto='$d_sbrkproto'
20875 d_scalbnl='$d_scalbnl'
20876 d_sched_yield='$d_sched_yield'
20877 d_scm_rights='$d_scm_rights'
20878 d_seekdir='$d_seekdir'
20879 d_select='$d_select'
20880 d_sem='$d_sem'
20881 d_semctl='$d_semctl'
20882 d_semctl_semid_ds='$d_semctl_semid_ds'
20883 d_semctl_semun='$d_semctl_semun'
20884 d_semget='$d_semget'
20885 d_semop='$d_semop'
20886 d_sendmsg='$d_sendmsg'
20887 d_setegid='$d_setegid'
20888 d_seteuid='$d_seteuid'
20889 d_setgrent='$d_setgrent'
20890 d_setgrent_r='$d_setgrent_r'
20891 d_setgrps='$d_setgrps'
20892 d_sethent='$d_sethent'
20893 d_sethostent_r='$d_sethostent_r'
20894 d_setitimer='$d_setitimer'
20895 d_setlinebuf='$d_setlinebuf'
20896 d_setlocale='$d_setlocale'
20897 d_setlocale_r='$d_setlocale_r'
20898 d_setnent='$d_setnent'
20899 d_setnetent_r='$d_setnetent_r'
20900 d_setpent='$d_setpent'
20901 d_setpgid='$d_setpgid'
20902 d_setpgrp2='$d_setpgrp2'
20903 d_setpgrp='$d_setpgrp'
20904 d_setprior='$d_setprior'
20905 d_setproctitle='$d_setproctitle'
20906 d_setprotoent_r='$d_setprotoent_r'
20907 d_setpwent='$d_setpwent'
20908 d_setpwent_r='$d_setpwent_r'
20909 d_setregid='$d_setregid'
20910 d_setresgid='$d_setresgid'
20911 d_setresuid='$d_setresuid'
20912 d_setreuid='$d_setreuid'
20913 d_setrgid='$d_setrgid'
20914 d_setruid='$d_setruid'
20915 d_setsent='$d_setsent'
20916 d_setservent_r='$d_setservent_r'
20917 d_setsid='$d_setsid'
20918 d_setvbuf='$d_setvbuf'
20919 d_sfio='$d_sfio'
20920 d_shm='$d_shm'
20921 d_shmat='$d_shmat'
20922 d_shmatprototype='$d_shmatprototype'
20923 d_shmctl='$d_shmctl'
20924 d_shmdt='$d_shmdt'
20925 d_shmget='$d_shmget'
20926 d_sigaction='$d_sigaction'
20927 d_sigprocmask='$d_sigprocmask'
20928 d_sigsetjmp='$d_sigsetjmp'
20929 d_sockatmark='$d_sockatmark'
20930 d_sockatmarkproto='$d_sockatmarkproto'
20931 d_socket='$d_socket'
20932 d_socklen_t='$d_socklen_t'
20933 d_sockpair='$d_sockpair'
20934 d_socks5_init='$d_socks5_init'
20935 d_sqrtl='$d_sqrtl'
20936 d_srand48_r='$d_srand48_r'
20937 d_srandom_r='$d_srandom_r'
20938 d_sresgproto='$d_sresgproto'
20939 d_sresuproto='$d_sresuproto'
20940 d_statblks='$d_statblks'
20941 d_statfs_f_flags='$d_statfs_f_flags'
20942 d_statfs_s='$d_statfs_s'
20943 d_statvfs='$d_statvfs'
20944 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20945 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20946 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20947 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20948 d_stdio_stream_array='$d_stdio_stream_array'
20949 d_stdiobase='$d_stdiobase'
20950 d_stdstdio='$d_stdstdio'
20951 d_strchr='$d_strchr'
20952 d_strcoll='$d_strcoll'
20953 d_strctcpy='$d_strctcpy'
20954 d_strerrm='$d_strerrm'
20955 d_strerror='$d_strerror'
20956 d_strerror_r='$d_strerror_r'
20957 d_strftime='$d_strftime'
20958 d_strlcat='$d_strlcat'
20959 d_strlcpy='$d_strlcpy'
20960 d_strtod='$d_strtod'
20961 d_strtol='$d_strtol'
20962 d_strtold='$d_strtold'
20963 d_strtoll='$d_strtoll'
20964 d_strtoq='$d_strtoq'
20965 d_strtoul='$d_strtoul'
20966 d_strtoull='$d_strtoull'
20967 d_strtouq='$d_strtouq'
20968 d_strxfrm='$d_strxfrm'
20969 d_suidsafe='$d_suidsafe'
20970 d_symlink='$d_symlink'
20971 d_syscall='$d_syscall'
20972 d_syscallproto='$d_syscallproto'
20973 d_sysconf='$d_sysconf'
20974 d_sysernlst='$d_sysernlst'
20975 d_syserrlst='$d_syserrlst'
20976 d_system='$d_system'
20977 d_tcgetpgrp='$d_tcgetpgrp'
20978 d_tcsetpgrp='$d_tcsetpgrp'
20979 d_telldir='$d_telldir'
20980 d_telldirproto='$d_telldirproto'
20981 d_time='$d_time'
20982 d_times='$d_times'
20983 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20984 d_tm_tm_zone='$d_tm_tm_zone'
20985 d_tmpnam_r='$d_tmpnam_r'
20986 d_truncate='$d_truncate'
20987 d_ttyname_r='$d_ttyname_r'
20988 d_tzname='$d_tzname'
20989 d_u32align='$d_u32align'
20990 d_ualarm='$d_ualarm'
20991 d_umask='$d_umask'
20992 d_uname='$d_uname'
20993 d_union_semun='$d_union_semun'
20994 d_unordered='$d_unordered'
20995 d_usleep='$d_usleep'
20996 d_usleepproto='$d_usleepproto'
20997 d_ustat='$d_ustat'
20998 d_vendorarch='$d_vendorarch'
20999 d_vendorbin='$d_vendorbin'
21000 d_vendorlib='$d_vendorlib'
21001 d_vendorscript='$d_vendorscript'
21002 d_vfork='$d_vfork'
21003 d_void_closedir='$d_void_closedir'
21004 d_voidsig='$d_voidsig'
21005 d_voidtty='$d_voidtty'
21006 d_volatile='$d_volatile'
21007 d_vprintf='$d_vprintf'
21008 d_wait4='$d_wait4'
21009 d_waitpid='$d_waitpid'
21010 d_wcstombs='$d_wcstombs'
21011 d_wctomb='$d_wctomb'
21012 d_writev='$d_writev'
21013 d_xenix='$d_xenix'
21014 date='$date'
21015 db_hashtype='$db_hashtype'
21016 db_prefixtype='$db_prefixtype'
21017 db_version_major='$db_version_major'
21018 db_version_minor='$db_version_minor'
21019 db_version_patch='$db_version_patch'
21020 defvoidused='$defvoidused'
21021 direntrytype='$direntrytype'
21022 dlext='$dlext'
21023 dlsrc='$dlsrc'
21024 doublesize='$doublesize'
21025 drand01='$drand01'
21026 drand48_r_proto='$drand48_r_proto'
21027 dynamic_ext='$dynamic_ext'
21028 eagain='$eagain'
21029 ebcdic='$ebcdic'
21030 echo='$echo'
21031 egrep='$egrep'
21032 emacs='$emacs'
21033 endgrent_r_proto='$endgrent_r_proto'
21034 endhostent_r_proto='$endhostent_r_proto'
21035 endnetent_r_proto='$endnetent_r_proto'
21036 endprotoent_r_proto='$endprotoent_r_proto'
21037 endpwent_r_proto='$endpwent_r_proto'
21038 endservent_r_proto='$endservent_r_proto'
21039 eunicefix='$eunicefix'
21040 exe_ext='$exe_ext'
21041 expr='$expr'
21042 extensions='$extensions'
21043 extras='$extras'
21044 fflushNULL='$fflushNULL'
21045 fflushall='$fflushall'
21046 find='$find'
21047 firstmakefile='$firstmakefile'
21048 flex='$flex'
21049 fpossize='$fpossize'
21050 fpostype='$fpostype'
21051 freetype='$freetype'
21052 from='$from'
21053 full_ar='$full_ar'
21054 full_csh='$full_csh'
21055 full_sed='$full_sed'
21056 gccansipedantic='$gccansipedantic'
21057 gccosandvers='$gccosandvers'
21058 gccversion='$gccversion'
21059 getgrent_r_proto='$getgrent_r_proto'
21060 getgrgid_r_proto='$getgrgid_r_proto'
21061 getgrnam_r_proto='$getgrnam_r_proto'
21062 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
21063 gethostbyname_r_proto='$gethostbyname_r_proto'
21064 gethostent_r_proto='$gethostent_r_proto'
21065 getlogin_r_proto='$getlogin_r_proto'
21066 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
21067 getnetbyname_r_proto='$getnetbyname_r_proto'
21068 getnetent_r_proto='$getnetent_r_proto'
21069 getprotobyname_r_proto='$getprotobyname_r_proto'
21070 getprotobynumber_r_proto='$getprotobynumber_r_proto'
21071 getprotoent_r_proto='$getprotoent_r_proto'
21072 getpwent_r_proto='$getpwent_r_proto'
21073 getpwnam_r_proto='$getpwnam_r_proto'
21074 getpwuid_r_proto='$getpwuid_r_proto'
21075 getservbyname_r_proto='$getservbyname_r_proto'
21076 getservbyport_r_proto='$getservbyport_r_proto'
21077 getservent_r_proto='$getservent_r_proto'
21078 getspnam_r_proto='$getspnam_r_proto'
21079 gidformat='$gidformat'
21080 gidsign='$gidsign'
21081 gidsize='$gidsize'
21082 gidtype='$gidtype'
21083 glibpth='$glibpth'
21084 gmake='$gmake'
21085 gmtime_r_proto='$gmtime_r_proto'
21086 gnulibc_version='$gnulibc_version'
21087 grep='$grep'
21088 groupcat='$groupcat'
21089 groupstype='$groupstype'
21090 gzip='$gzip'
21091 h_fcntl='$h_fcntl'
21092 h_sysfile='$h_sysfile'
21093 hint='$hint'
21094 hostcat='$hostcat'
21095 html1dir='$html1dir'
21096 html1direxp='$html1direxp'
21097 html3dir='$html3dir'
21098 html3direxp='$html3direxp'
21099 i16size='$i16size'
21100 i16type='$i16type'
21101 i32size='$i32size'
21102 i32type='$i32type'
21103 i64size='$i64size'
21104 i64type='$i64type'
21105 i8size='$i8size'
21106 i8type='$i8type'
21107 i_arpainet='$i_arpainet'
21108 i_bsdioctl='$i_bsdioctl'
21109 i_crypt='$i_crypt'
21110 i_db='$i_db'
21111 i_dbm='$i_dbm'
21112 i_dirent='$i_dirent'
21113 i_dld='$i_dld'
21114 i_dlfcn='$i_dlfcn'
21115 i_fcntl='$i_fcntl'
21116 i_float='$i_float'
21117 i_fp='$i_fp'
21118 i_fp_class='$i_fp_class'
21119 i_gdbm='$i_gdbm'
21120 i_grp='$i_grp'
21121 i_ieeefp='$i_ieeefp'
21122 i_inttypes='$i_inttypes'
21123 i_langinfo='$i_langinfo'
21124 i_libutil='$i_libutil'
21125 i_limits='$i_limits'
21126 i_locale='$i_locale'
21127 i_machcthr='$i_machcthr'
21128 i_malloc='$i_malloc'
21129 i_math='$i_math'
21130 i_memory='$i_memory'
21131 i_mntent='$i_mntent'
21132 i_ndbm='$i_ndbm'
21133 i_netdb='$i_netdb'
21134 i_neterrno='$i_neterrno'
21135 i_netinettcp='$i_netinettcp'
21136 i_niin='$i_niin'
21137 i_poll='$i_poll'
21138 i_prot='$i_prot'
21139 i_pthread='$i_pthread'
21140 i_pwd='$i_pwd'
21141 i_rpcsvcdbm='$i_rpcsvcdbm'
21142 i_sfio='$i_sfio'
21143 i_sgtty='$i_sgtty'
21144 i_shadow='$i_shadow'
21145 i_socks='$i_socks'
21146 i_stdarg='$i_stdarg'
21147 i_stddef='$i_stddef'
21148 i_stdlib='$i_stdlib'
21149 i_string='$i_string'
21150 i_sunmath='$i_sunmath'
21151 i_sysaccess='$i_sysaccess'
21152 i_sysdir='$i_sysdir'
21153 i_sysfile='$i_sysfile'
21154 i_sysfilio='$i_sysfilio'
21155 i_sysin='$i_sysin'
21156 i_sysioctl='$i_sysioctl'
21157 i_syslog='$i_syslog'
21158 i_sysmman='$i_sysmman'
21159 i_sysmode='$i_sysmode'
21160 i_sysmount='$i_sysmount'
21161 i_sysndir='$i_sysndir'
21162 i_sysparam='$i_sysparam'
21163 i_sysresrc='$i_sysresrc'
21164 i_syssecrt='$i_syssecrt'
21165 i_sysselct='$i_sysselct'
21166 i_syssockio='$i_syssockio'
21167 i_sysstat='$i_sysstat'
21168 i_sysstatfs='$i_sysstatfs'
21169 i_sysstatvfs='$i_sysstatvfs'
21170 i_systime='$i_systime'
21171 i_systimek='$i_systimek'
21172 i_systimes='$i_systimes'
21173 i_systypes='$i_systypes'
21174 i_sysuio='$i_sysuio'
21175 i_sysun='$i_sysun'
21176 i_sysutsname='$i_sysutsname'
21177 i_sysvfs='$i_sysvfs'
21178 i_syswait='$i_syswait'
21179 i_termio='$i_termio'
21180 i_termios='$i_termios'
21181 i_time='$i_time'
21182 i_unistd='$i_unistd'
21183 i_ustat='$i_ustat'
21184 i_utime='$i_utime'
21185 i_values='$i_values'
21186 i_varargs='$i_varargs'
21187 i_varhdr='$i_varhdr'
21188 i_vfork='$i_vfork'
21189 ignore_versioned_solibs='$ignore_versioned_solibs'
21190 inc_version_list='$inc_version_list'
21191 inc_version_list_init='$inc_version_list_init'
21192 incpath='$incpath'
21193 inews='$inews'
21194 installarchlib='$installarchlib'
21195 installbin='$installbin'
21196 installhtml1dir='$installhtml1dir'
21197 installhtml3dir='$installhtml3dir'
21198 installman1dir='$installman1dir'
21199 installman3dir='$installman3dir'
21200 installprefix='$installprefix'
21201 installprefixexp='$installprefixexp'
21202 installprivlib='$installprivlib'
21203 installscript='$installscript'
21204 installsitearch='$installsitearch'
21205 installsitebin='$installsitebin'
21206 installsitehtml1dir='$installsitehtml1dir'
21207 installsitehtml3dir='$installsitehtml3dir'
21208 installsitelib='$installsitelib'
21209 installsiteman1dir='$installsiteman1dir'
21210 installsiteman3dir='$installsiteman3dir'
21211 installsitescript='$installsitescript'
21212 installstyle='$installstyle'
21213 installusrbinperl='$installusrbinperl'
21214 installvendorarch='$installvendorarch'
21215 installvendorbin='$installvendorbin'
21216 installvendorhtml1dir='$installvendorhtml1dir'
21217 installvendorhtml3dir='$installvendorhtml3dir'
21218 installvendorlib='$installvendorlib'
21219 installvendorman1dir='$installvendorman1dir'
21220 installvendorman3dir='$installvendorman3dir'
21221 installvendorscript='$installvendorscript'
21222 intsize='$intsize'
21223 issymlink='$issymlink'
21224 ivdformat='$ivdformat'
21225 ivsize='$ivsize'
21226 ivtype='$ivtype'
21227 known_extensions='$known_extensions'
21228 ksh='$ksh'
21229 ld='$ld'
21230 lddlflags='$lddlflags'
21231 ldflags='$ldflags'
21232 ldflags_uselargefiles='$ldflags_uselargefiles'
21233 ldlibpthname='$ldlibpthname'
21234 less='$less'
21235 lib_ext='$lib_ext'
21236 libc='$libc'
21237 libperl='$libperl'
21238 libpth='$libpth'
21239 libs='$libs'
21240 libsdirs='$libsdirs'
21241 libsfiles='$libsfiles'
21242 libsfound='$libsfound'
21243 libspath='$libspath'
21244 libswanted='$libswanted'
21245 libswanted_uselargefiles='$libswanted_uselargefiles'
21246 line='$line'
21247 lint='$lint'
21248 lkflags='$lkflags'
21249 ln='$ln'
21250 lns='$lns'
21251 localtime_r_proto='$localtime_r_proto'
21252 locincpth='$locincpth'
21253 loclibpth='$loclibpth'
21254 longdblsize='$longdblsize'
21255 longlongsize='$longlongsize'
21256 longsize='$longsize'
21257 lp='$lp'
21258 lpr='$lpr'
21259 ls='$ls'
21260 lseeksize='$lseeksize'
21261 lseektype='$lseektype'
21262 mail='$mail'
21263 mailx='$mailx'
21264 make='$make'
21265 make_set_make='$make_set_make'
21266 mallocobj='$mallocobj'
21267 mallocsrc='$mallocsrc'
21268 malloctype='$malloctype'
21269 man1dir='$man1dir'
21270 man1direxp='$man1direxp'
21271 man1ext='$man1ext'
21272 man3dir='$man3dir'
21273 man3direxp='$man3direxp'
21274 man3ext='$man3ext'
21275 mips_type='$mips_type'
21276 mistrustnm='$mistrustnm'
21277 mkdir='$mkdir'
21278 mmaptype='$mmaptype'
21279 modetype='$modetype'
21280 more='$more'
21281 multiarch='$multiarch'
21282 mv='$mv'
21283 myarchname='$myarchname'
21284 mydomain='$mydomain'
21285 myhostname='$myhostname'
21286 myuname='$myuname'
21287 n='$n'
21288 need_va_copy='$need_va_copy'
21289 netdb_hlen_type='$netdb_hlen_type'
21290 netdb_host_type='$netdb_host_type'
21291 netdb_name_type='$netdb_name_type'
21292 netdb_net_type='$netdb_net_type'
21293 nm='$nm'
21294 nm_opt='$nm_opt'
21295 nm_so_opt='$nm_so_opt'
21296 nonxs_ext='$nonxs_ext'
21297 nroff='$nroff'
21298 nvEUformat='$nvEUformat'
21299 nvFUformat='$nvFUformat'
21300 nvGUformat='$nvGUformat'
21301 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21302 nveformat='$nveformat'
21303 nvfformat='$nvfformat'
21304 nvgformat='$nvgformat'
21305 nvsize='$nvsize'
21306 nvtype='$nvtype'
21307 o_nonblock='$o_nonblock'
21308 obj_ext='$obj_ext'
21309 old_pthread_create_joinable='$old_pthread_create_joinable'
21310 optimize='$optimize'
21311 orderlib='$orderlib'
21312 osname='$osname'
21313 osvers='$osvers'
21314 otherlibdirs='$otherlibdirs'
21315 package='$package'
21316 pager='$pager'
21317 passcat='$passcat'
21318 patchlevel='$patchlevel'
21319 path_sep='$path_sep'
21320 perl5='$perl5'
21321 perl='$perl'
21322 perl_patchlevel='$perl_patchlevel'
21323 perladmin='$perladmin'
21324 perllibs='$perllibs'
21325 perlpath='$perlpath'
21326 pg='$pg'
21327 phostname='$phostname'
21328 pidtype='$pidtype'
21329 plibpth='$plibpth'
21330 pmake='$pmake'
21331 pr='$pr'
21332 prefix='$prefix'
21333 prefixexp='$prefixexp'
21334 privlib='$privlib'
21335 privlibexp='$privlibexp'
21336 procselfexe='$procselfexe'
21337 prototype='$prototype'
21338 ptrsize='$ptrsize'
21339 quadkind='$quadkind'
21340 quadtype='$quadtype'
21341 randbits='$randbits'
21342 randfunc='$randfunc'
21343 random_r_proto='$random_r_proto'
21344 randseedtype='$randseedtype'
21345 ranlib='$ranlib'
21346 rd_nodata='$rd_nodata'
21347 readdir64_r_proto='$readdir64_r_proto'
21348 readdir_r_proto='$readdir_r_proto'
21349 revision='$revision'
21350 rm='$rm'
21351 rmail='$rmail'
21352 run='$run'
21353 runnm='$runnm'
21354 sPRIEUldbl='$sPRIEUldbl'
21355 sPRIFUldbl='$sPRIFUldbl'
21356 sPRIGUldbl='$sPRIGUldbl'
21357 sPRIXU64='$sPRIXU64'
21358 sPRId64='$sPRId64'
21359 sPRIeldbl='$sPRIeldbl'
21360 sPRIfldbl='$sPRIfldbl'
21361 sPRIgldbl='$sPRIgldbl'
21362 sPRIi64='$sPRIi64'
21363 sPRIo64='$sPRIo64'
21364 sPRIu64='$sPRIu64'
21365 sPRIx64='$sPRIx64'
21366 sSCNfldbl='$sSCNfldbl'
21367 sched_yield='$sched_yield'
21368 scriptdir='$scriptdir'
21369 scriptdirexp='$scriptdirexp'
21370 sed='$sed'
21371 seedfunc='$seedfunc'
21372 selectminbits='$selectminbits'
21373 selecttype='$selecttype'
21374 sendmail='$sendmail'
21375 setgrent_r_proto='$setgrent_r_proto'
21376 sethostent_r_proto='$sethostent_r_proto'
21377 setlocale_r_proto='$setlocale_r_proto'
21378 setnetent_r_proto='$setnetent_r_proto'
21379 setprotoent_r_proto='$setprotoent_r_proto'
21380 setpwent_r_proto='$setpwent_r_proto'
21381 setservent_r_proto='$setservent_r_proto'
21382 sh='$sh'
21383 shar='$shar'
21384 sharpbang='$sharpbang'
21385 shmattype='$shmattype'
21386 shortsize='$shortsize'
21387 shrpenv='$shrpenv'
21388 shsharp='$shsharp'
21389 sig_count='$sig_count'
21390 sig_name='$sig_name'
21391 sig_name_init='$sig_name_init'
21392 sig_num='$sig_num'
21393 sig_num_init='$sig_num_init'
21394 sig_size='$sig_size'
21395 signal_t='$signal_t'
21396 sitearch='$sitearch'
21397 sitearchexp='$sitearchexp'
21398 sitebin='$sitebin'
21399 sitebinexp='$sitebinexp'
21400 sitehtml1dir='$sitehtml1dir'
21401 sitehtml1direxp='$sitehtml1direxp'
21402 sitehtml3dir='$sitehtml3dir'
21403 sitehtml3direxp='$sitehtml3direxp'
21404 sitelib='$sitelib'
21405 sitelib_stem='$sitelib_stem'
21406 sitelibexp='$sitelibexp'
21407 siteman1dir='$siteman1dir'
21408 siteman1direxp='$siteman1direxp'
21409 siteman3dir='$siteman3dir'
21410 siteman3direxp='$siteman3direxp'
21411 siteprefix='$siteprefix'
21412 siteprefixexp='$siteprefixexp'
21413 sitescript='$sitescript'
21414 sitescriptexp='$sitescriptexp'
21415 sizesize='$sizesize'
21416 sizetype='$sizetype'
21417 sleep='$sleep'
21418 smail='$smail'
21419 so='$so'
21420 sockethdr='$sockethdr'
21421 socketlib='$socketlib'
21422 socksizetype='$socksizetype'
21423 sort='$sort'
21424 spackage='$spackage'
21425 spitshell='$spitshell'
21426 srand48_r_proto='$srand48_r_proto'
21427 srandom_r_proto='$srandom_r_proto'
21428 src='$src'
21429 ssizetype='$ssizetype'
21430 startperl='$startperl'
21431 startsh='$startsh'
21432 static_ext='$static_ext'
21433 stdchar='$stdchar'
21434 stdio_base='$stdio_base'
21435 stdio_bufsiz='$stdio_bufsiz'
21436 stdio_cnt='$stdio_cnt'
21437 stdio_filbuf='$stdio_filbuf'
21438 stdio_ptr='$stdio_ptr'
21439 stdio_stream_array='$stdio_stream_array'
21440 strerror_r_proto='$strerror_r_proto'
21441 strings='$strings'
21442 submit='$submit'
21443 subversion='$subversion'
21444 sysman='$sysman'
21445 tail='$tail'
21446 tar='$tar'
21447 targetarch='$targetarch'
21448 tbl='$tbl'
21449 tee='$tee'
21450 test='$test'
21451 timeincl='$timeincl'
21452 timetype='$timetype'
21453 tmpnam_r_proto='$tmpnam_r_proto'
21454 to='$to'
21455 touch='$touch'
21456 tr='$tr'
21457 trnl='$trnl'
21458 troff='$troff'
21459 ttyname_r_proto='$ttyname_r_proto'
21460 u16size='$u16size'
21461 u16type='$u16type'
21462 u32size='$u32size'
21463 u32type='$u32type'
21464 u64size='$u64size'
21465 u64type='$u64type'
21466 u8size='$u8size'
21467 u8type='$u8type'
21468 uidformat='$uidformat'
21469 uidsign='$uidsign'
21470 uidsize='$uidsize'
21471 uidtype='$uidtype'
21472 uname='$uname'
21473 uniq='$uniq'
21474 uquadtype='$uquadtype'
21475 use5005threads='$use5005threads'
21476 use64bitall='$use64bitall'
21477 use64bitint='$use64bitint'
21478 usecrosscompile='$usecrosscompile'
21479 usedl='$usedl'
21480 usefaststdio='$usefaststdio'
21481 useithreads='$useithreads'
21482 uselargefiles='$uselargefiles'
21483 uselongdouble='$uselongdouble'
21484 usemallocwrap='$usemallocwrap'
21485 usemorebits='$usemorebits'
21486 usemultiplicity='$usemultiplicity'
21487 usemymalloc='$usemymalloc'
21488 usenm='$usenm'
21489 useopcode='$useopcode'
21490 useperlio='$useperlio'
21491 useposix='$useposix'
21492 usereentrant='$usereentrant'
21493 userelocatableinc='$userelocatableinc'
21494 usesfio='$usesfio'
21495 useshrplib='$useshrplib'
21496 usesitecustomize='$usesitecustomize'
21497 usesocks='$usesocks'
21498 usethreads='$usethreads'
21499 usevendorprefix='$usevendorprefix'
21500 usevfork='$usevfork'
21501 usrinc='$usrinc'
21502 uuname='$uuname'
21503 uvXUformat='$uvXUformat'
21504 uvoformat='$uvoformat'
21505 uvsize='$uvsize'
21506 uvtype='$uvtype'
21507 uvuformat='$uvuformat'
21508 uvxformat='$uvxformat'
21509 vendorarch='$vendorarch'
21510 vendorarchexp='$vendorarchexp'
21511 vendorbin='$vendorbin'
21512 vendorbinexp='$vendorbinexp'
21513 vendorhtml1dir='$vendorhtml1dir'
21514 vendorhtml1direxp='$vendorhtml1direxp'
21515 vendorhtml3dir='$vendorhtml3dir'
21516 vendorhtml3direxp='$vendorhtml3direxp'
21517 vendorlib='$vendorlib'
21518 vendorlib_stem='$vendorlib_stem'
21519 vendorlibexp='$vendorlibexp'
21520 vendorman1dir='$vendorman1dir'
21521 vendorman1direxp='$vendorman1direxp'
21522 vendorman3dir='$vendorman3dir'
21523 vendorman3direxp='$vendorman3direxp'
21524 vendorprefix='$vendorprefix'
21525 vendorprefixexp='$vendorprefixexp'
21526 vendorscript='$vendorscript'
21527 vendorscriptexp='$vendorscriptexp'
21528 version='$version'
21529 version_patchlevel_string='$version_patchlevel_string'
21530 versiononly='$versiononly'
21531 vi='$vi'
21532 voidflags='$voidflags'
21533 xlibpth='$xlibpth'
21534 yacc='$yacc'
21535 yaccflags='$yaccflags'
21536 zcat='$zcat'
21537 zip='$zip'
21538 EOT
21539
21540 : Add in command line options if available
21541 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21542
21543 : add special variables
21544 $test -f $src/patchlevel.h && \
21545 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21546 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21547 echo "PERL_CONFIG_SH=true" >>config.sh
21548
21549 : propagate old symbols
21550 if $test -f UU/config.sh; then
21551         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21552         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21553         $sort | $uniq -u >UU/oldsyms
21554         set X `cat UU/oldsyms`
21555         shift
21556         case $# in
21557         0) ;;
21558         *)
21559                 cat <<EOM
21560 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21561 EOM
21562                 echo "# Variables propagated from previous config.sh file." >>config.sh
21563                 for sym in `cat UU/oldsyms`; do
21564                         echo "    Propagating $hint variable "'$'"$sym..."
21565                         eval 'tmp="$'"${sym}"'"'
21566                         echo "$tmp" | \
21567                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21568                 done
21569                 ;;
21570         esac
21571 fi
21572
21573 : Finish up by extracting the .SH files
21574 case "$alldone" in
21575 exit)
21576         $rm -rf UU
21577         echo "Extraction done."
21578         exit 0
21579         ;;
21580 cont)
21581         ;;
21582 '')
21583         dflt=''
21584         nostick=true
21585         $cat <<EOM
21586
21587 If you'd like to make any changes to the config.sh file before I begin
21588 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21589
21590 EOM
21591         rp="Press return or use a shell escape to edit config.sh:"
21592         . UU/myread
21593         nostick=''
21594         case "$ans" in
21595         '') ;;
21596         *) : in case they cannot read
21597                 sh 1>&4 -c "$ans";;
21598         esac
21599         ;;
21600 esac
21601
21602 : if this fails, just run all the .SH files by hand
21603 . ./config.sh
21604
21605 echo " "
21606 exec 1>&4
21607 pwd=`pwd`
21608 . ./UU/extract
21609 cd "$pwd"
21610
21611 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21612         dflt=y
21613         case "$silent" in
21614         true) ;;
21615         *)
21616                 $cat <<EOM
21617
21618 Now you need to generate make dependencies by running "$make depend".
21619 You might prefer to run it in background: "$make depend > makedepend.out &"
21620 It can take a while, so you might not want to run it right now.
21621
21622 EOM
21623                 ;;
21624         esac
21625         rp="Run $make depend now?"
21626         . UU/myread
21627         case "$ans" in
21628         y*)
21629                 $make depend && echo "Now you must run '$make'."
21630                 ;;
21631         *)
21632                 echo "You must run '$make depend' then '$make'."
21633                 ;;
21634         esac
21635 elif test -f [Mm]akefile; then
21636         echo " "
21637         echo "Now you must run a $make."
21638 else
21639         echo "Configure done."
21640 fi
21641
21642 if $test -f Policy.sh; then
21643     $cat <<EOM
21644
21645 If you compile $package on a different machine or from a different object
21646 directory, copy the Policy.sh file from this object directory to the
21647 new one before you run Configure -- this will help you with most of
21648 the policy defaults.
21649
21650 EOM
21651 fi
21652 if $test -f config.msg; then
21653     echo "Hmm.  I also noted the following information while running:"
21654     echo " "
21655     $cat config.msg >&4
21656     $rm -f config.msg
21657 fi
21658 $rm -f kit*isdone ark*isdone
21659 $rm -rf UU
21660
21661 : End of Configure
21662