14bba08a6a2cc2e37c1fee345b60708db2402b40
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Thu Apr 17 18:50:57 EET DST 2003 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ c2$$
49
50 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
51         cat >&4 <<EOF
52 ***
53 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
54 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
55 *** Please read the README.plan9 for further instructions.
56 *** Cannot continue, aborting.
57 ***
58 EOF
59         exit 1
60 fi
61
62 : compute my invocation name
63 me=$0
64 case "$0" in
65 */*)
66         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
67         test "$me" || me=$0
68         ;;
69 esac
70
71 : Proper separator for the PATH environment variable
72 p_=:
73 : On OS/2 this directory should exist if this is not floppy only system :-]
74 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
75     if test -n "$OS2_SHELL"; then
76                 p_=\;
77                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
78                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
79                 is_os2=yes
80         elif test -n "$DJGPP"; then
81                 case "X${MACHTYPE:-nonesuchmach}" in
82                 *cygwin) ;;
83                 *) p_=\; ;;
84                 esac
85         fi
86 fi
87
88 : Proper PATH setting
89 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
90 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
91 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
92 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
93 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
94 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
95 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
96 paths="$paths /sbin /usr/sbin /usr/libexec"
97 paths="$paths /system/gnu_library/bin"
98
99 for p in $paths
100 do
101         case "$p_$PATH$p_" in
102         *$p_$p$p_*) ;;
103         *) test -d $p && PATH=$PATH$p_$p ;;
104         esac
105 done
106
107 PATH=.$p_$PATH
108 export PATH
109
110 : shall we be using ksh?
111 inksh=''
112 needksh=''
113 avoidksh=''
114 newsh=/bin/ksh
115 changesh=''
116 if (PATH=.; alias -x) >/dev/null 2>&1; then
117                 inksh=true
118 fi
119 if test -f /hp-ux -a -f /bin/ksh; then
120         needksh='to avoid sh bug in "here document" expansion'
121 fi
122 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
123         if test X`/usr/bin/uname -v` = X4; then
124                 avoidksh="to avoid AIX 4's /bin/sh"
125                 newsh=/usr/bin/bsh
126         fi
127 fi
128 if test -f /osf_boot -a -f /usr/sbin/setld; then
129         if test X`/usr/bin/uname -s` = XOSF1; then
130                 avoidksh="to avoid Digital UNIX' ksh"
131                 newsh=/bin/sh
132                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
133         fi
134 fi
135 case "$inksh/$needksh" in
136 /[a-z]*)
137                 ENV=''
138                 changesh=true
139                 reason="$needksh"
140         ;;
141 esac
142 case "$inksh/$avoidksh" in
143 true/[a-z]*)
144         changesh=true
145         reason="$avoidksh"
146         ;;
147 esac
148 case "$inksh/$needksh-$avoidksh-" in
149 true/--)
150                 cat <<EOM
151 (I see you are using the Korn shell.  Some ksh's blow up on $me,
152 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
153 EOM
154         ;;
155 esac
156 case "$changesh" in
157 true)
158         export newsh
159         echo "(Feeding myself to $newsh $reason.)"
160         case "$0" in
161         Configure|*/Configure) exec $newsh $0 "$@";;
162         *) exec $newsh Configure "$@";;
163         esac
164         ;;
165 esac
166
167 : if needed set CDPATH to a harmless value that is not chatty
168 : avoid bash 2.02 problems with empty CDPATH.
169 case "$CDPATH" in
170 '')     ;;
171 *)      case "$SHELL" in
172         *bash*) CDPATH='.' ;;
173         *)              CDPATH='' ;;
174         esac
175         ;;
176 esac
177 : Configure runs within the UU subdirectory
178 test -d UU || mkdir UU
179 cd UU && rm -f ./*
180
181 ccname=''
182 ccversion=''
183 ccsymbols=''
184 cppccsymbols=''
185 cppsymbols=''
186 from=''
187 run=''
188 targetarch=''
189 to=''
190 usecrosscompile=''
191 perllibs=''
192 dynamic_ext=''
193 extensions=''
194 known_extensions=''
195 nonxs_ext=''
196 static_ext=''
197 useopcode=''
198 useposix=''
199 extras=''
200 d_bsd=''
201 d_eunice=''
202 d_xenix=''
203 eunicefix=''
204 Mcc=''
205 ar=''
206 awk=''
207 bash=''
208 bison=''
209 byacc=''
210 cat=''
211 chgrp=''
212 chmod=''
213 chown=''
214 comm=''
215 compress=''
216 cp=''
217 cpio=''
218 cpp=''
219 csh=''
220 date=''
221 echo=''
222 egrep=''
223 emacs=''
224 expr=''
225 find=''
226 flex=''
227 gmake=''
228 grep=''
229 gzip=''
230 inews=''
231 ksh=''
232 less=''
233 line=''
234 lint=''
235 ln=''
236 lp=''
237 lpr=''
238 ls=''
239 mail=''
240 mailx=''
241 make=''
242 mkdir=''
243 more=''
244 mv=''
245 nm=''
246 nroff=''
247 perl=''
248 pg=''
249 pmake=''
250 pr=''
251 rm=''
252 rmail=''
253 sed=''
254 sendmail=''
255 shar=''
256 sleep=''
257 smail=''
258 sort=''
259 submit=''
260 tail=''
261 tar=''
262 tbl=''
263 tee=''
264 test=''
265 touch=''
266 tr=''
267 troff=''
268 uname=''
269 uniq=''
270 uuname=''
271 vi=''
272 zcat=''
273 zip=''
274 full_ar=''
275 full_sed=''
276 libswanted=''
277 hint=''
278 myuname=''
279 osname=''
280 osvers=''
281 Author=''
282 Date=''
283 Header=''
284 Id=''
285 Locker=''
286 Log=''
287 RCSfile=''
288 Revision=''
289 Source=''
290 State=''
291 _a=''
292 _exe=''
293 _o=''
294 archobjs=''
295 exe_ext=''
296 firstmakefile=''
297 lib_ext=''
298 obj_ext=''
299 path_sep=''
300 afs=''
301 afsroot=''
302 alignbytes=''
303 ansi2knr=''
304 archlib=''
305 archlibexp=''
306 d_archlib=''
307 installarchlib=''
308 archname=''
309 myarchname=''
310 d_atolf=''
311 d_atoll=''
312 baserev=''
313 bin=''
314 binexp=''
315 installbin=''
316 byteorder=''
317 cc=''
318 ccflags=''
319 cppflags=''
320 ldflags=''
321 lkflags=''
322 locincpth=''
323 optimize=''
324 cf_email=''
325 cf_by=''
326 cf_time=''
327 charsize=''
328 contains=''
329 cpp_stuff=''
330 cpplast=''
331 cppminus=''
332 cpprun=''
333 cppstdin=''
334 d__fwalk=''
335 d_access=''
336 d_accessx=''
337 d_aintl=''
338 d_alarm=''
339 asctime_r_proto=''
340 d_asctime_r=''
341 d_attribut=''
342 d_bcmp=''
343 d_bcopy=''
344 d_bzero=''
345 d_casti32=''
346 castflags=''
347 d_castneg=''
348 d_chown=''
349 d_chroot=''
350 d_chsize=''
351 d_class=''
352 d_closedir=''
353 d_void_closedir=''
354 d_cmsghdr_s=''
355 d_const=''
356 d_copysignl=''
357 cryptlib=''
358 d_crypt=''
359 crypt_r_proto=''
360 d_crypt_r=''
361 d_csh=''
362 full_csh=''
363 ctermid_r_proto=''
364 d_ctermid_r=''
365 ctime_r_proto=''
366 d_ctime_r=''
367 d_cuserid=''
368 d_dbl_dig=''
369 d_dbminitproto=''
370 d_difftime=''
371 d_dirfd=''
372 d_dlerror=''
373 d_dlopen=''
374 d_dlsymun=''
375 d_dosuid=''
376 d_suidsafe=''
377 d_drand48_r=''
378 drand48_r_proto=''
379 d_drand48proto=''
380 d_dup2=''
381 d_eaccess=''
382 d_endgrent=''
383 d_endgrent_r=''
384 endgrent_r_proto=''
385 d_endhent=''
386 d_endhostent_r=''
387 endhostent_r_proto=''
388 d_endnent=''
389 d_endnetent_r=''
390 endnetent_r_proto=''
391 d_endpent=''
392 d_endprotoent_r=''
393 endprotoent_r_proto=''
394 d_endpwent=''
395 d_endpwent_r=''
396 endpwent_r_proto=''
397 d_endsent=''
398 d_endservent_r=''
399 endservent_r_proto=''
400 d_fchdir=''
401 d_fchmod=''
402 d_fchown=''
403 d_fcntl=''
404 d_fcntl_can_lock=''
405 d_fd_macros=''
406 d_fd_set=''
407 d_fds_bits=''
408 d_fgetpos=''
409 d_finite=''
410 d_finitel=''
411 d_flexfnam=''
412 d_flock=''
413 d_flockproto=''
414 d_fork=''
415 d_fp_class=''
416 d_fpclass=''
417 d_fpclassify=''
418 d_fpclassl=''
419 d_fpos64_t=''
420 d_frexpl=''
421 d_fs_data_s=''
422 d_fseeko=''
423 d_fsetpos=''
424 d_fstatfs=''
425 d_fsync=''
426 d_ftello=''
427 d_ftime=''
428 d_gettimeod=''
429 d_Gconvert=''
430 d_getcwd=''
431 d_getespwnam=''
432 d_getfsstat=''
433 d_getgrent=''
434 d_getgrent_r=''
435 getgrent_r_proto=''
436 d_getgrgid_r=''
437 getgrgid_r_proto=''
438 d_getgrnam_r=''
439 getgrnam_r_proto=''
440 d_getgrps=''
441 d_gethbyaddr=''
442 d_gethbyname=''
443 d_gethent=''
444 aphostname=''
445 d_gethname=''
446 d_phostname=''
447 d_uname=''
448 d_gethostbyaddr_r=''
449 gethostbyaddr_r_proto=''
450 d_gethostbyname_r=''
451 gethostbyname_r_proto=''
452 d_gethostent_r=''
453 gethostent_r_proto=''
454 d_gethostprotos=''
455 d_getitimer=''
456 d_getlogin=''
457 d_getlogin_r=''
458 getlogin_r_proto=''
459 d_getmnt=''
460 d_getmntent=''
461 d_getnbyaddr=''
462 d_getnbyname=''
463 d_getnent=''
464 d_getnetbyaddr_r=''
465 getnetbyaddr_r_proto=''
466 d_getnetbyname_r=''
467 getnetbyname_r_proto=''
468 d_getnetent_r=''
469 getnetent_r_proto=''
470 d_getnetprotos=''
471 d_getpagsz=''
472 d_getpent=''
473 d_getpgid=''
474 d_getpgrp2=''
475 d_bsdgetpgrp=''
476 d_getpgrp=''
477 d_getppid=''
478 d_getprior=''
479 d_getpbyname=''
480 d_getpbynumber=''
481 d_getprotobyname_r=''
482 getprotobyname_r_proto=''
483 d_getprotobynumber_r=''
484 getprotobynumber_r_proto=''
485 d_getprotoent_r=''
486 getprotoent_r_proto=''
487 d_getprotoprotos=''
488 d_getprpwnam=''
489 d_getpwent=''
490 d_getpwent_r=''
491 getpwent_r_proto=''
492 d_getpwnam_r=''
493 getpwnam_r_proto=''
494 d_getpwuid_r=''
495 getpwuid_r_proto=''
496 d_getsent=''
497 d_getservbyname_r=''
498 getservbyname_r_proto=''
499 d_getservbyport_r=''
500 getservbyport_r_proto=''
501 d_getservent_r=''
502 getservent_r_proto=''
503 d_getservprotos=''
504 d_getspnam=''
505 d_getspnam_r=''
506 getspnam_r_proto=''
507 d_getsbyname=''
508 d_getsbyport=''
509 d_gmtime_r=''
510 gmtime_r_proto=''
511 d_gnulibc=''
512 gnulibc_version=''
513 d_hasmntopt=''
514 d_htonl=''
515 d_ilogbl=''
516 d_inetaton=''
517 d_int64_t=''
518 d_isascii=''
519 d_isfinite=''
520 d_isinf=''
521 d_isnan=''
522 d_isnanl=''
523 d_killpg=''
524 d_lchown=''
525 d_ldbl_dig=''
526 d_link=''
527 d_localtime_r=''
528 localtime_r_proto=''
529 d_locconv=''
530 d_lockf=''
531 d_longdbl=''
532 longdblsize=''
533 d_longlong=''
534 longlongsize=''
535 d_lseekproto=''
536 d_lstat=''
537 d_madvise=''
538 d_mblen=''
539 d_mbstowcs=''
540 d_mbtowc=''
541 d_memchr=''
542 d_memcmp=''
543 d_memcpy=''
544 d_memmove=''
545 d_memset=''
546 d_mkdir=''
547 d_mkdtemp=''
548 d_mkfifo=''
549 d_mkstemp=''
550 d_mkstemps=''
551 d_mktime=''
552 d_mmap=''
553 mmaptype=''
554 d_modfl=''
555 d_modfl_pow32_bug=''
556 d_modflproto=''
557 d_mprotect=''
558 d_msg=''
559 d_msgctl=''
560 d_msgget=''
561 d_msghdr_s=''
562 d_msgrcv=''
563 d_msgsnd=''
564 d_msync=''
565 d_munmap=''
566 d_nanosleep=''
567 d_nice=''
568 d_nl_langinfo=''
569 d_off64_t=''
570 d_open3=''
571 d_fpathconf=''
572 d_pathconf=''
573 d_pause=''
574 d_pipe=''
575 d_poll=''
576 d_portable=''
577 d_procselfexe=''
578 procselfexe=''
579 d_old_pthread_create_joinable=''
580 old_pthread_create_joinable=''
581 d_pthread_atfork=''
582 d_pthread_yield=''
583 d_sched_yield=''
584 sched_yield=''
585 d_qgcvt=''
586 d_random_r=''
587 random_r_proto=''
588 d_readdir64_r=''
589 readdir64_r_proto=''
590 d_readdir=''
591 d_rewinddir=''
592 d_seekdir=''
593 d_telldir=''
594 d_readdir_r=''
595 readdir_r_proto=''
596 d_readlink=''
597 d_readv=''
598 d_recvmsg=''
599 d_rename=''
600 d_rmdir=''
601 d_safebcpy=''
602 d_safemcpy=''
603 d_sanemcmp=''
604 d_sbrkproto=''
605 d_scalbnl=''
606 d_select=''
607 d_sem=''
608 d_semctl=''
609 d_semget=''
610 d_semop=''
611 d_sendmsg=''
612 d_setegid=''
613 d_seteuid=''
614 d_setgrent=''
615 d_setgrent_r=''
616 setgrent_r_proto=''
617 d_setgrps=''
618 d_sethent=''
619 d_sethostent_r=''
620 sethostent_r_proto=''
621 d_setitimer=''
622 d_setlinebuf=''
623 d_setlocale=''
624 d_setlocale_r=''
625 setlocale_r_proto=''
626 d_setnent=''
627 d_setnetent_r=''
628 setnetent_r_proto=''
629 d_setpent=''
630 d_setpgid=''
631 d_setpgrp2=''
632 d_bsdsetpgrp=''
633 d_setpgrp=''
634 d_setprior=''
635 d_setproctitle=''
636 d_setprotoent_r=''
637 setprotoent_r_proto=''
638 d_setpwent=''
639 d_setpwent_r=''
640 setpwent_r_proto=''
641 d_setregid=''
642 d_setresgid=''
643 d_setresuid=''
644 d_setreuid=''
645 d_setrgid=''
646 d_setruid=''
647 d_setsent=''
648 d_setservent_r=''
649 setservent_r_proto=''
650 d_setsid=''
651 d_setvbuf=''
652 d_sfio=''
653 usesfio=''
654 d_shm=''
655 d_shmat=''
656 d_shmatprototype=''
657 shmattype=''
658 d_shmctl=''
659 d_shmdt=''
660 d_shmget=''
661 d_sigaction=''
662 d_sigprocmask=''
663 d_sigsetjmp=''
664 d_sockatmark=''
665 d_sockatmarkproto=''
666 d_msg_ctrunc=''
667 d_msg_dontroute=''
668 d_msg_oob=''
669 d_msg_peek=''
670 d_msg_proxy=''
671 d_oldsock=''
672 d_scm_rights=''
673 d_socket=''
674 d_sockpair=''
675 sockethdr=''
676 socketlib=''
677 d_socklen_t=''
678 d_socks5_init=''
679 d_sqrtl=''
680 d_srand48_r=''
681 srand48_r_proto=''
682 d_srandom_r=''
683 srandom_r_proto=''
684 d_sresgproto=''
685 d_sresuproto=''
686 d_statblks=''
687 d_statfs_f_flags=''
688 d_statfs_s=''
689 d_fstatvfs=''
690 d_statvfs=''
691 d_stdio_cnt_lval=''
692 d_stdio_ptr_lval=''
693 d_stdio_ptr_lval_nochange_cnt=''
694 d_stdio_ptr_lval_sets_cnt=''
695 d_stdiobase=''
696 d_stdstdio=''
697 stdio_base=''
698 stdio_bufsiz=''
699 stdio_cnt=''
700 stdio_filbuf=''
701 stdio_ptr=''
702 d_index=''
703 d_strchr=''
704 d_strcoll=''
705 d_strctcpy=''
706 d_strerrm=''
707 d_strerror=''
708 d_sysernlst=''
709 d_syserrlst=''
710 d_strerror_r=''
711 strerror_r_proto=''
712 d_strftime=''
713 d_strtod=''
714 d_strtol=''
715 d_strtold=''
716 d_strtoll=''
717 d_strtoq=''
718 d_strtoul=''
719 d_strtoull=''
720 d_strtouq=''
721 d_strxfrm=''
722 d_symlink=''
723 d_syscall=''
724 d_syscallproto=''
725 d_sysconf=''
726 d_system=''
727 d_tcgetpgrp=''
728 d_tcsetpgrp=''
729 d_telldirproto=''
730 d_time=''
731 timetype=''
732 clocktype=''
733 d_times=''
734 d_tmpnam_r=''
735 tmpnam_r_proto=''
736 d_truncate=''
737 d_ttyname_r=''
738 ttyname_r_proto=''
739 d_tzname=''
740 d_u32align=''
741 d_ualarm=''
742 d_umask=''
743 d_semctl_semid_ds=''
744 d_semctl_semun=''
745 d_union_semun=''
746 d_unordered=''
747 d_usleep=''
748 d_usleepproto=''
749 d_ustat=''
750 d_vfork=''
751 usevfork=''
752 d_voidsig=''
753 signal_t=''
754 d_volatile=''
755 d_charvspr=''
756 d_vprintf=''
757 d_wait4=''
758 d_waitpid=''
759 d_wcstombs=''
760 d_wctomb=''
761 d_writev=''
762 dlext=''
763 cccdlflags=''
764 ccdlflags=''
765 dlsrc=''
766 ld=''
767 lddlflags=''
768 usedl=''
769 doublesize=''
770 ebcdic=''
771 fflushNULL=''
772 fflushall=''
773 fpossize=''
774 fpostype=''
775 gccansipedantic=''
776 gccosandvers=''
777 gccversion=''
778 gidformat=''
779 gidsign=''
780 gidsize=''
781 gidtype=''
782 groupstype=''
783 h_fcntl=''
784 h_sysfile=''
785 html1dir=''
786 html1direxp=''
787 installhtml1dir=''
788 html3dir=''
789 html3direxp=''
790 installhtml3dir=''
791 i_arpainet=''
792 i_crypt=''
793 db_hashtype=''
794 db_prefixtype=''
795 db_version_major=''
796 db_version_minor=''
797 db_version_patch=''
798 i_db=''
799 i_dbm=''
800 i_rpcsvcdbm=''
801 d_dirnamlen=''
802 direntrytype=''
803 i_dirent=''
804 i_dld=''
805 i_dlfcn=''
806 i_fcntl=''
807 i_float=''
808 i_fp=''
809 i_fp_class=''
810 i_gdbm=''
811 d_grpasswd=''
812 i_grp=''
813 i_ieeefp=''
814 i_inttypes=''
815 i_langinfo=''
816 i_libutil=''
817 i_limits=''
818 i_locale=''
819 i_machcthr=''
820 i_malloc=''
821 i_math=''
822 i_memory=''
823 i_mntent=''
824 i_ndbm=''
825 i_netdb=''
826 i_neterrno=''
827 i_netinettcp=''
828 i_niin=''
829 i_sysin=''
830 i_poll=''
831 i_prot=''
832 i_pthread=''
833 d_pwage=''
834 d_pwchange=''
835 d_pwclass=''
836 d_pwcomment=''
837 d_pwexpire=''
838 d_pwgecos=''
839 d_pwpasswd=''
840 d_pwquota=''
841 i_pwd=''
842 i_sfio=''
843 i_shadow=''
844 i_socks=''
845 i_stddef=''
846 i_stdlib=''
847 i_string=''
848 strings=''
849 i_sunmath=''
850 i_sysaccess=''
851 i_sysdir=''
852 i_sysfile=''
853 d_voidtty=''
854 i_bsdioctl=''
855 i_sysfilio=''
856 i_sysioctl=''
857 i_syssockio=''
858 i_syslog=''
859 i_sysmman=''
860 i_sysmode=''
861 i_sysmount=''
862 i_sysndir=''
863 i_sysparam=''
864 i_sysresrc=''
865 i_syssecrt=''
866 i_sysselct=''
867 i_sysstat=''
868 i_sysstatfs=''
869 i_sysstatvfs=''
870 i_systimes=''
871 i_systypes=''
872 i_sysuio=''
873 i_sysun=''
874 i_sysutsname=''
875 i_sysvfs=''
876 i_syswait=''
877 i_sgtty=''
878 i_termio=''
879 i_termios=''
880 d_tm_tm_gmtoff=''
881 d_tm_tm_zone=''
882 i_systime=''
883 i_systimek=''
884 i_time=''
885 timeincl=''
886 i_unistd=''
887 i_ustat=''
888 i_utime=''
889 i_values=''
890 i_stdarg=''
891 i_varargs=''
892 i_varhdr=''
893 i_vfork=''
894 inc_version_list=''
895 inc_version_list_init=''
896 installprefix=''
897 installprefixexp=''
898 installstyle=''
899 installusrbinperl=''
900 intsize=''
901 longsize=''
902 shortsize=''
903 issymlink=''
904 libc=''
905 ldlibpthname=''
906 libperl=''
907 shrpenv=''
908 useshrplib=''
909 glibpth=''
910 libpth=''
911 loclibpth=''
912 plibpth=''
913 xlibpth=''
914 ignore_versioned_solibs=''
915 libs=''
916 libsdirs=''
917 libsfiles=''
918 libsfound=''
919 libspath=''
920 lns=''
921 d_PRIEUldbl=''
922 d_PRIFUldbl=''
923 d_PRIGUldbl=''
924 d_PRIeldbl=''
925 d_PRIfldbl=''
926 d_PRIgldbl=''
927 d_SCNfldbl=''
928 sPRIEUldbl=''
929 sPRIFUldbl=''
930 sPRIGUldbl=''
931 sPRIeldbl=''
932 sPRIfldbl=''
933 sPRIgldbl=''
934 sSCNfldbl=''
935 lseeksize=''
936 lseektype=''
937 make_set_make=''
938 d_mymalloc=''
939 freetype=''
940 mallocobj=''
941 mallocsrc=''
942 malloctype=''
943 usemymalloc=''
944 installman1dir=''
945 man1dir=''
946 man1direxp=''
947 man1ext=''
948 installman3dir=''
949 man3dir=''
950 man3direxp=''
951 man3ext=''
952 modetype=''
953 multiarch=''
954 mydomain=''
955 myhostname=''
956 phostname=''
957 c=''
958 n=''
959 d_eofnblk=''
960 eagain=''
961 o_nonblock=''
962 rd_nodata=''
963 need_va_copy=''
964 netdb_hlen_type=''
965 netdb_host_type=''
966 netdb_name_type=''
967 netdb_net_type=''
968 groupcat=''
969 hostcat=''
970 passcat=''
971 orderlib=''
972 ranlib=''
973 d_perl_otherlibdirs=''
974 otherlibdirs=''
975 package=''
976 spackage=''
977 pager=''
978 api_revision=''
979 api_subversion=''
980 api_version=''
981 api_versionstring=''
982 patchlevel=''
983 perl_patchlevel=''
984 revision=''
985 subversion=''
986 version=''
987 version_patchlevel_string=''
988 perl5=''
989 perladmin=''
990 perlpath=''
991 d_nv_preserves_uv=''
992 i16size=''
993 i16type=''
994 i32size=''
995 i32type=''
996 i64size=''
997 i64type=''
998 i8size=''
999 i8type=''
1000 ivsize=''
1001 ivtype=''
1002 nv_preserves_uv_bits=''
1003 nvsize=''
1004 nvtype=''
1005 u16size=''
1006 u16type=''
1007 u32size=''
1008 u32type=''
1009 u64size=''
1010 u64type=''
1011 u8size=''
1012 u8type=''
1013 uvsize=''
1014 uvtype=''
1015 ivdformat=''
1016 nvEUformat=''
1017 nvFUformat=''
1018 nvGUformat=''
1019 nveformat=''
1020 nvfformat=''
1021 nvgformat=''
1022 uvXUformat=''
1023 uvoformat=''
1024 uvuformat=''
1025 uvxformat=''
1026 pidtype=''
1027 prefix=''
1028 prefixexp=''
1029 installprivlib=''
1030 privlib=''
1031 privlibexp=''
1032 prototype=''
1033 ptrsize=''
1034 d_PRIXU64=''
1035 d_PRId64=''
1036 d_PRIi64=''
1037 d_PRIo64=''
1038 d_PRIu64=''
1039 d_PRIx64=''
1040 sPRIXU64=''
1041 sPRId64=''
1042 sPRIi64=''
1043 sPRIo64=''
1044 sPRIu64=''
1045 sPRIx64=''
1046 d_quad=''
1047 quadkind=''
1048 quadtype=''
1049 uquadtype=''
1050 drand01=''
1051 randbits=''
1052 randfunc=''
1053 randseedtype=''
1054 seedfunc=''
1055 installscript=''
1056 scriptdir=''
1057 scriptdirexp=''
1058 selectminbits=''
1059 selecttype=''
1060 sh=''
1061 sig_count=''
1062 sig_name=''
1063 sig_name_init=''
1064 sig_num=''
1065 sig_num_init=''
1066 sig_size=''
1067 installsitearch=''
1068 sitearch=''
1069 sitearchexp=''
1070 installsitebin=''
1071 sitebin=''
1072 sitebinexp=''
1073 installsitehtml1=''
1074 sitehtml1=''
1075 sitehtml1exp=''
1076 installsitehtml3=''
1077 sitehtml3=''
1078 sitehtml3exp=''
1079 installsitelib=''
1080 sitelib=''
1081 sitelib_stem=''
1082 sitelibexp=''
1083 installsiteman1=''
1084 siteman1=''
1085 siteman1exp=''
1086 installsiteman3=''
1087 siteman3=''
1088 siteman3exp=''
1089 siteprefix=''
1090 siteprefixexp=''
1091 installsitescript=''
1092 sitescript=''
1093 sitescriptexp=''
1094 sizesize=''
1095 sizetype=''
1096 so=''
1097 socksizetype=''
1098 sharpbang=''
1099 shsharp=''
1100 spitshell=''
1101 src=''
1102 ssizetype=''
1103 startperl=''
1104 startsh=''
1105 stdchar=''
1106 d_stdio_stream_array=''
1107 stdio_stream_array=''
1108 sysman=''
1109 trnl=''
1110 uidformat=''
1111 uidsign=''
1112 uidsize=''
1113 uidtype=''
1114 archname64=''
1115 use64bitall=''
1116 use64bitint=''
1117 ccflags_uselargefiles=''
1118 ldflags_uselargefiles=''
1119 libswanted_uselargefiles=''
1120 uselargefiles=''
1121 uselongdouble=''
1122 usemorebits=''
1123 usemultiplicity=''
1124 nm_opt=''
1125 nm_so_opt=''
1126 runnm=''
1127 usenm=''
1128 useperlio=''
1129 usesocks=''
1130 d_oldpthreads=''
1131 use5005threads=''
1132 useithreads=''
1133 usereentrant=''
1134 usethreads=''
1135 incpath=''
1136 mips_type=''
1137 usrinc=''
1138 d_vendorarch=''
1139 installvendorarch=''
1140 vendorarch=''
1141 vendorarchexp=''
1142 d_vendorbin=''
1143 installvendorbin=''
1144 vendorbin=''
1145 vendorbinexp=''
1146 installvendorhtml1=''
1147 vendorhtml1=''
1148 vendorhtml1exp=''
1149 installvendorhtml3=''
1150 vendorhtml3=''
1151 vendorhtml3exp=''
1152 d_vendorlib=''
1153 installvendorlib=''
1154 vendorlib=''
1155 vendorlib_stem=''
1156 vendorlibexp=''
1157 installvendorman1=''
1158 vendorman1=''
1159 vendorman1exp=''
1160 installvendorman3=''
1161 vendorman3=''
1162 vendorman3exp=''
1163 usevendorprefix=''
1164 vendorprefix=''
1165 vendorprefixexp=''
1166 d_vendorscript=''
1167 installvendorscript=''
1168 vendorscript=''
1169 vendorscriptexp=''
1170 versiononly=''
1171 defvoidused=''
1172 voidflags=''
1173 pm_apiversion=''
1174 xs_apiversion=''
1175 yacc=''
1176 yaccflags=''
1177 CONFIG=''
1178
1179 define='define'
1180 undef='undef'
1181 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1182 rmlist=''
1183
1184 : We must find out about Eunice early
1185 eunicefix=':'
1186 if test -f /etc/unixtovms; then
1187         eunicefix=/etc/unixtovms
1188 fi
1189 if test -f /etc/unixtovms.exe; then
1190         eunicefix=/etc/unixtovms.exe
1191 fi
1192
1193 : Set executable suffix now -- needed before hints available
1194 if test -f "/libs/version.library"; then
1195 : Amiga OS
1196     _exe=""
1197 elif test -f "/system/gnu_library/bin/ar.pm"; then
1198 : Stratus VOS
1199     _exe=".pm"
1200 elif test -n "$DJGPP"; then
1201 : DOS DJGPP
1202     _exe=".exe"
1203 elif test -d c:/. -o -n "$is_os2" ; then
1204 : OS/2 or cygwin
1205     _exe=".exe"
1206 fi
1207
1208 i_whoami=''
1209 : Possible local include directories to search.
1210 : Set locincpth to "" in a hint file to defeat local include searches.
1211 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1212 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1213 :
1214 : no include file wanted by default
1215 inclwanted=''
1216
1217 siteman1=''
1218 siteman3=''
1219 sitescript=''
1220 : Trailing extension.  Override this in a hint file, if needed.
1221 : Extra object files, if any, needed on this platform.
1222 archobjs=''
1223 groupstype=''
1224 libnames=''
1225 : change the next line if compiling for Xenix/286 on Xenix/386
1226 xlibpth='/usr/lib/386 /lib/386'
1227 : Possible local library directories to search.
1228 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1229 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1230
1231 : general looking path for locating libraries
1232 glibpth="/lib /usr/lib $xlibpth"
1233 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1234 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1235 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1236
1237 : Private path used by Configure to find libraries.  Its value
1238 : is prepended to libpth. This variable takes care of special
1239 : machines, like the mips.  Usually, it should be empty.
1240 plibpth=''
1241
1242 : default library list
1243 libswanted=''
1244 : some systems want to use only the non-versioned libso:s
1245 ignore_versioned_solibs=''
1246 : full support for void wanted by default
1247 defvoidused=15
1248
1249 ccname=''
1250 ccversion=''
1251 perllibs=''
1252 : set useposix=false in your hint file to disable the POSIX extension.
1253 useposix=true
1254 : set useopcode=false in your hint file to disable the Opcode extension.
1255 useopcode=true
1256 archname64=''
1257 ccflags_uselargefiles=''
1258 ldflags_uselargefiles=''
1259 libswanted_uselargefiles=''
1260 : set usemultiplicity on the Configure command line to enable multiplicity.
1261 : set usesocks on the Configure command line to enable socks.
1262 archname=''
1263 : set usethreads on the Configure command line to enable threads.
1264 usereentrant='undef'
1265 : List of libraries we want.
1266 : If anyone needs -lnet, put it in a hint file.
1267 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1268 libswanted="$libswanted dld ld sun m c cposix posix"
1269 libswanted="$libswanted ndir dir crypt sec"
1270 libswanted="$libswanted ucb bsd BSD PW x util rt posix4"
1271 : We probably want to search /usr/shlib before most other libraries.
1272 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1273 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1274 glibpth="/usr/shlib $glibpth"
1275 : Do not use vfork unless overridden by a hint file.
1276 usevfork=false
1277
1278 : Find the basic shell for Bourne shell scripts
1279 case "$sh" in
1280 '')
1281         case "$SYSTYPE" in
1282         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1283         *) xxx='/bin/sh';;
1284         esac
1285         if test -f "$xxx"; then
1286                 sh="$xxx"
1287         else
1288                 : Build up a list and do a single loop so we can 'break' out.
1289                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1290                 for xxx in sh bash ksh pdksh ash; do
1291                         for p in $pth; do
1292                                 try="$try ${p}/${xxx}"
1293                         done
1294                 done
1295                 for xxx in $try; do
1296                         if test -f "$xxx"; then
1297                                 sh="$xxx";
1298                                 break
1299                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1300                                 sh="$xxx";
1301                                 break
1302                         elif test -f "$xxx.exe"; then
1303                                 sh="$xxx";
1304                                 break
1305                         fi
1306                 done
1307         fi
1308         ;;
1309 esac
1310
1311 case "$sh" in
1312 '')     cat >&2 <<EOM
1313 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1314
1315 Usually it's in /bin/sh.  How did you even get this far?
1316 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1317 we'll try to straighten this all out.
1318 EOM
1319         exit 1
1320         ;;
1321 esac
1322
1323 : see if sh knows # comments
1324 if `$sh -c '#' >/dev/null 2>&1`; then
1325         shsharp=true
1326         spitshell=cat
1327         xcat=/bin/cat
1328         test -f $xcat$_exe || xcat=/usr/bin/cat
1329         if test ! -f $xcat$_exe; then
1330                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1331                         if test -f $p/cat$_exe; then
1332                                 xcat=$p/cat
1333                                 break
1334                         fi
1335                 done
1336                 if test ! -f $xcat$_exe; then
1337                         echo "Can't find cat anywhere!"
1338                         exit 1
1339                 fi
1340         fi
1341         echo "#!$xcat" >sharp
1342         $eunicefix sharp
1343         chmod +x sharp
1344         ./sharp > today
1345         if test -s today; then
1346                 sharpbang='#!'
1347         else
1348                 echo "#! $xcat" > sharp
1349                 $eunicefix sharp
1350                 chmod +x sharp
1351                 ./sharp > today
1352                 if test -s today; then
1353                         sharpbang='#! '
1354                 else
1355                         sharpbang=': use '
1356                 fi
1357         fi
1358 else
1359         echo " "
1360         echo "Your $sh doesn't grok # comments--I will strip them later on."
1361         shsharp=false
1362         cd ..
1363         echo "exec grep -v '^[  ]*#'" >spitshell
1364         chmod +x spitshell
1365         $eunicefix spitshell
1366         spitshell=`pwd`/spitshell
1367         cd UU
1368         echo "I presume that if # doesn't work, #! won't work either!"
1369         sharpbang=': use '
1370 fi
1371 rm -f sharp today
1372
1373 : figure out how to guarantee sh startup
1374 case "$startsh" in
1375 '') startsh=${sharpbang}${sh} ;;
1376 *)
1377 esac
1378 cat >sharp <<EOSS
1379 $startsh
1380 set abc
1381 test "$?abc" != 1
1382 EOSS
1383
1384 chmod +x sharp
1385 $eunicefix sharp
1386 if ./sharp; then
1387         : echo "Yup, it does."
1388 else
1389         echo "Hmm... '$startsh' does not guarantee sh startup..."
1390         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1391 fi
1392 rm -f sharp
1393
1394
1395 : Save command line options in file UU/cmdline.opt for later use in
1396 : generating config.sh.
1397 cat > cmdline.opt <<EOSH
1398 # Configure command line arguments.
1399 config_arg0='$0'
1400 config_args='$*'
1401 config_argc=$#
1402 EOSH
1403 argn=1
1404 args_exp=''
1405 args_sep=''
1406 for arg in "$@"; do
1407         cat >>cmdline.opt <<EOSH
1408 config_arg$argn='$arg'
1409 EOSH
1410         # Extreme backslashitis: replace each ' by '"'"'
1411         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1412 $arg
1413 EOC
1414         arg_exp=`cat cmdl.opt`
1415         args_exp="$args_exp$args_sep'$arg_exp'"
1416         argn=`expr $argn + 1`
1417         args_sep=' '
1418 done
1419 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1420 # used by ./hints/os2.sh
1421 rm -f cmdl.opt
1422
1423 : produce awk script to parse command line options
1424 cat >options.awk <<'EOF'
1425 BEGIN {
1426         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1427
1428         len = length(optstr);
1429         for (i = 1; i <= len; i++) {
1430                 c = substr(optstr, i, 1);
1431                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1432                 if (a == ":") {
1433                         arg[c] = 1;
1434                         i++;
1435                 }
1436                 opt[c] = 1;
1437         }
1438 }
1439 {
1440         expect = 0;
1441         str = $0;
1442         if (substr(str, 1, 1) != "-") {
1443                 printf("'%s'\n", str);
1444                 next;
1445         }
1446         len = length($0);
1447         for (i = 2; i <= len; i++) {
1448                 c = substr(str, i, 1);
1449                 if (!opt[c]) {
1450                         printf("-%s\n", substr(str, i));
1451                         next;
1452                 }
1453                 printf("-%s\n", c);
1454                 if (arg[c]) {
1455                         if (i < len)
1456                                 printf("'%s'\n", substr(str, i + 1));
1457                         else
1458                                 expect = 1;
1459                         next;
1460                 }
1461         }
1462 }
1463 END {
1464         if (expect)
1465                 print "?";
1466 }
1467 EOF
1468
1469 : process the command line options
1470 set X `for arg in "$@"; do echo "X$arg"; done |
1471         sed -e s/X// | awk -f options.awk`
1472 eval "set $*"
1473 shift
1474 rm -f options.awk
1475
1476 : set up default values
1477 fastread=''
1478 reuseval=false
1479 config_sh=''
1480 alldone=''
1481 error=''
1482 silent=''
1483 extractsh=''
1484 override=''
1485 knowitall=''
1486 rm -f optdef.sh posthint.sh
1487 cat >optdef.sh <<EOS
1488 $startsh
1489 EOS
1490
1491
1492 : option parsing
1493 while test $# -gt 0; do
1494         case "$1" in
1495         -d) shift; fastread=yes;;
1496         -e) shift; alldone=cont;;
1497         -f)
1498                 shift
1499                 cd ..
1500                 if test -r "$1"; then
1501                         config_sh="$1"
1502                 else
1503                         echo "$me: cannot read config file $1." >&2
1504                         error=true
1505                 fi
1506                 cd UU
1507                 shift;;
1508         -h) shift; error=true;;
1509         -r) shift; reuseval=true;;
1510         -s) shift; silent=true; realsilent=true;;
1511         -E) shift; alldone=exit;;
1512         -K) shift; knowitall=true;;
1513         -O) shift; override=true;;
1514         -S) shift; silent=true; extractsh=true;;
1515         -D)
1516                 shift
1517                 case "$1" in
1518                 *=)
1519                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1520                         echo "$me: ignoring -D $1" >&2
1521                         ;;
1522                 *=*) echo "$1" | \
1523                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1524                 *) echo "$1='define'" >> optdef.sh;;
1525                 esac
1526                 shift
1527                 ;;
1528         -U)
1529                 shift
1530                 case "$1" in
1531                 *=) echo "$1" >> optdef.sh;;
1532                 *=*)
1533                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1534                         echo "$me: ignoring -U $1" >&2
1535                         ;;
1536                 *) echo "$1='undef'" >> optdef.sh;;
1537                 esac
1538                 shift
1539                 ;;
1540         -A)
1541             shift
1542             xxx=''
1543             yyy="$1"
1544             zzz=''
1545             uuu=undef
1546             case "$yyy" in
1547             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1548                  case "$zzz" in
1549                  *:*) zzz='' ;;
1550                  *)   xxx=append
1551                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1552                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1553                  esac
1554                  ;;
1555             esac
1556             case "$xxx" in
1557             '')  case "$yyy" in
1558                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1559                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1560                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1561                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1562                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1563                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1564                  esac
1565                  ;;       
1566             esac
1567             case "$xxx" in
1568             append)
1569                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1570             clear)
1571                 echo "$yyy=''"                  >> posthint.sh ;;
1572             define)
1573                 case "$zzz" in
1574                 '') zzz=define ;;
1575                 esac
1576                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1577             eval)
1578                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1579             prepend)
1580                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1581             undef)
1582                 case "$zzz" in
1583                 '') zzz="$uuu" ;;
1584                 esac
1585                 echo "$yyy=$zzz"                >> posthint.sh ;;
1586             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1587             esac
1588             shift
1589             ;;
1590         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1591             exit 0;;
1592         --) break;;
1593         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1594         *) break;;
1595         esac
1596 done
1597
1598 case "$error" in
1599 true)
1600         cat >&2 <<EOM
1601 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1602                  [-U symbol] [-U symbol=] [-A command:symbol...]
1603   -d : use defaults for all answers.
1604   -e : go on without questioning past the production of config.sh.
1605   -f : specify an alternate default configuration file.
1606   -h : print this help message and exit (with an error status).
1607   -r : reuse C symbols value if possible (skips costly nm extraction).
1608   -s : silent mode, only echoes questions and essential information.
1609   -D : define symbol to have some value:
1610          -D symbol         symbol gets the value 'define'
1611          -D symbol=value   symbol gets the value 'value'
1612   -E : stop at the end of questions, after having produced config.sh.
1613   -K : do not use unless you know what you are doing.
1614   -O : let -D and -U override definitions from loaded configuration file.
1615   -S : perform variable substitutions on all .SH files (can mix with -f)
1616   -U : undefine symbol:
1617          -U symbol    symbol gets the value 'undef'
1618          -U symbol=   symbol gets completely empty
1619   -A : manipulate symbol after the platform specific hints have been applied:
1620          -A symbol=value                append " "value to symbol
1621          -A append:symbol=value         append value to symbol
1622          -A define:symbol=value         define symbol to have value
1623          -A clear:symbol                define symbol to be ''
1624          -A define:symbol               define symbol to be 'define'
1625          -A eval:symbol=value           define symbol to be eval of value
1626          -A prepend:symbol=value        prepend value to symbol
1627          -A undef:symbol                define symbol to be 'undef'
1628          -A undef:symbol=               define symbol to be ''
1629   -V : print version number and exit (with a zero status).
1630 EOM
1631         exit 1
1632         ;;
1633 esac
1634
1635 : Sanity checks
1636 case "$fastread$alldone" in
1637 yescont|yesexit) ;;
1638 *)
1639         case "$extractsh" in
1640         true) ;;
1641         *)
1642                 if test ! -t 0; then
1643                         echo "Say 'sh Configure', not 'sh <Configure'"
1644                         exit 1
1645                 fi
1646                 ;;
1647         esac
1648         ;;
1649 esac
1650
1651 exec 4>&1
1652 case "$silent" in
1653 true) exec 1>/dev/null;;
1654 esac
1655
1656 : run the defines and the undefines, if any, but leave the file out there...
1657 touch optdef.sh
1658 . ./optdef.sh
1659 : create the posthint manipulation script and leave the file out there...
1660 touch posthint.sh
1661
1662 : set package name
1663 package=perl5
1664 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1665 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1666 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1667 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1668 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1669 esac
1670
1671 : Some greps do not return status, grrr.
1672 echo "grimblepritz" >grimble
1673 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1674         contains=contains
1675 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1676         contains=grep
1677 else
1678         contains=contains
1679 fi
1680 rm -f grimble
1681 : the following should work in any shell
1682 case "$contains" in
1683 contains*)
1684         echo " "
1685         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1686         cat >contains <<'EOSS'
1687 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1688 EOSS
1689 chmod +x contains
1690 esac
1691
1692 : Find the path to the source tree
1693 case "$src" in
1694 '') case "$0" in
1695     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1696          case "$src" in
1697          /*)    ;;
1698          .)     ;;
1699          *)     src=`cd ../$src && pwd` ;;
1700          esac
1701          ;;
1702     *)   src='.';;
1703     esac;;
1704 esac
1705 case "$src" in
1706 '')     src=/
1707         rsrc=/
1708         ;;
1709 /*) rsrc="$src";;
1710 *) rsrc="../$src";;
1711 esac
1712 if test -f $rsrc/Configure && \
1713         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1714 then
1715    : found it, so we are ok.
1716 else
1717         rsrc=''
1718         for src in . .. ../.. ../../.. ../../../..; do
1719                 if test -f ../$src/Configure && \
1720                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1721                 then
1722                         rsrc=../$src
1723                         break
1724                 fi
1725         done
1726 fi
1727 case "$rsrc" in
1728 '')
1729         cat <<EOM >&4
1730
1731 Sorry, I can't seem to locate the source dir for $package.  Please start
1732 Configure with an explicit path -- i.e. /some/path/Configure.
1733
1734 EOM
1735         exit 1
1736         ;;
1737 ../.)   rsrc='..';;
1738 *)
1739         echo " "
1740         echo "Sources for $package found in \"$src\"." >&4
1741         ;;
1742 esac
1743
1744 : script used to extract .SH files with variable substitutions
1745 cat >extract <<'EOS'
1746 PERL_CONFIG_SH=true
1747 echo "Doing variable substitutions on .SH files..."
1748 if test -f MANIFEST; then
1749         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1750 else
1751         echo "(Looking for .SH files under the source directory.)"
1752         set x `(cd "$src"; find . -name "*.SH" -print)`
1753 fi
1754 shift
1755 case $# in
1756 0) set x `(cd "$src"; echo *.SH)`; shift;;
1757 esac
1758 if test ! -f "$src/$1"; then
1759         shift
1760 fi
1761 mkdir_p='
1762 name=$1;
1763 create="";
1764 while test $name; do
1765         if test ! -d "$name"; then
1766                 create="$name $create";
1767                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1768                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1769         else
1770                 name="";
1771         fi;
1772 done;
1773 for file in $create; do
1774         mkdir $file;
1775 done
1776 '
1777 for file in $*; do
1778         case "$src" in
1779         ".")
1780                 case "$file" in
1781                 */*)
1782                         dir=`expr X$file : 'X\(.*\)/'`
1783                         file=`expr X$file : 'X.*/\(.*\)'`
1784                         (cd "$dir" && . ./$file)
1785                         ;;
1786                 *)
1787                         . ./$file
1788                         ;;
1789                 esac
1790                 ;;
1791         *)
1792                 case "$file" in
1793                 */*)
1794                         dir=`expr X$file : 'X\(.*\)/'`
1795                         file=`expr X$file : 'X.*/\(.*\)'`
1796                         (set x $dir; shift; eval $mkdir_p)
1797                         sh <"$src/$dir/$file"
1798                         ;;
1799                 *)
1800                         sh <"$src/$file"
1801                         ;;
1802                 esac
1803                 ;;
1804         esac
1805 done
1806 if test -f "$src/config_h.SH"; then
1807         if test ! -f config.h; then
1808         : oops, they left it out of MANIFEST, probably, so do it anyway.
1809         . "$src/config_h.SH"
1810         fi
1811 fi
1812 EOS
1813
1814 : extract files and exit if asked to do so
1815 case "$extractsh" in
1816 true)
1817         case "$realsilent" in
1818         true) ;;
1819         *) exec 1>&4;;
1820         esac
1821         case "$config_sh" in
1822         '') config_sh='config.sh';;
1823         esac
1824         echo " "
1825         echo "Fetching answers from $config_sh..."
1826         cd ..
1827         . $config_sh
1828         test "$override" && . ./optdef.sh
1829         echo " "
1830         . UU/extract
1831         rm -rf UU
1832         echo "Extraction done."
1833         exit 0
1834         ;;
1835 esac
1836
1837 : Eunice requires " " instead of "", can you believe it
1838 echo " "
1839 : Here we go...
1840 echo "Beginning of configuration questions for $package."
1841
1842 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1843
1844 : first determine how to suppress newline on echo command
1845 echo " "
1846 echo "Checking echo to see how to suppress newlines..."
1847 (echo "hi there\c" ; echo " ") >.echotmp
1848 if $contains c .echotmp >/dev/null 2>&1 ; then
1849         echo "...using -n."
1850         n='-n'
1851         c=''
1852 else
1853         cat <<'EOM'
1854 ...using \c
1855 EOM
1856         n=''
1857         c='\c'
1858 fi
1859 echo $n "The star should be here-->$c"
1860 echo '*'
1861 rm -f .echotmp
1862
1863 : Now test for existence of everything in MANIFEST
1864 echo " "
1865 if test -f "$rsrc/MANIFEST"; then
1866         echo "First let's make sure your kit is complete.  Checking..." >&4
1867         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1868         rm -f missing
1869         tmppwd=`pwd`
1870         for filelist in x??; do
1871                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1872         done
1873         if test -s missing; then
1874                 cat missing >&4
1875                 cat >&4 <<'EOM'
1876
1877 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1878
1879 You have the option of continuing the configuration process, despite the
1880 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1881 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1882 and contact the author (perlbug@perl.org).
1883
1884 EOM
1885                 echo $n "Continue? [n] $c" >&4
1886                 read ans
1887                 case "$ans" in
1888                 y*)
1889                         echo "Continuing..." >&4
1890                         rm -f missing
1891                         ;;
1892                 *)
1893                         echo "ABORTING..." >&4
1894                         kill $$
1895                         ;;
1896                 esac
1897         else
1898                 echo "Looks good..."
1899         fi
1900 else
1901         echo "There is no MANIFEST file.  I hope your kit is complete !"
1902 fi
1903 rm -f missing x??
1904
1905 echo " "
1906 : Find the appropriate value for a newline for tr
1907 if test -n "$DJGPP"; then
1908        trnl='\012'
1909 fi
1910 if test X"$trnl" = X; then
1911         case "`echo foo|tr '\n' x 2>/dev/null`" in
1912         foox) trnl='\n' ;;
1913         esac
1914 fi
1915 if test X"$trnl" = X; then
1916         case "`echo foo|tr '\012' x 2>/dev/null`" in
1917         foox) trnl='\012' ;;
1918         esac
1919 fi
1920 if test X"$trnl" = X; then
1921        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1922        fooxy) trnl='\n\r' ;;
1923        esac
1924 fi
1925 if test X"$trnl" = X; then
1926         cat <<EOM >&2
1927
1928 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1929
1930 EOM
1931         exit 1
1932 fi
1933
1934 : compute the number of columns on the terminal for proper question formatting
1935 case "$COLUMNS" in
1936 '') COLUMNS='80';;
1937 esac
1938
1939 : set up the echo used in my read
1940 myecho="case \"\$xxxm\" in
1941 '') echo $n \"\$rp $c\" >&4;;
1942 *) case \"\$rp\" in
1943         '') echo $n \"[\$xxxm] $c\";;
1944         *)
1945                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1946                         echo \"\$rp\" >&4
1947                         echo $n \"[\$xxxm] $c\" >&4
1948                 else
1949                         echo $n \"\$rp [\$xxxm] $c\" >&4
1950                 fi
1951                 ;;
1952         esac;;
1953 esac"
1954
1955 : now set up to do reads with possible shell escape and default assignment
1956 cat <<EOSC >myread
1957 $startsh
1958 xxxm=\$dflt
1959 $myecho
1960 ans='!'
1961 case "\$fastread" in
1962 yes) case "\$dflt" in
1963         '') ;;
1964         *) ans='';
1965                 case "\$silent-\$rp" in
1966                 true-) ;;
1967                 *) echo " " >&4;;
1968                 esac;;
1969         esac;;
1970 *) case "\$silent" in
1971         true) case "\$rp" in
1972                 '') ans='';;
1973                 esac;;
1974         esac;;
1975 esac
1976 while expr "X\$ans" : "X!" >/dev/null; do
1977         read answ
1978         set x \$xxxm
1979         shift
1980         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1981         case  "\$answ" in
1982         "!")
1983                 sh 1>&4
1984                 echo " "
1985                 $myecho
1986                 ;;
1987         !*)
1988                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1989                 shift
1990                 sh 1>&4 -c "\$*"
1991                 echo " "
1992                 $myecho
1993                 ;;
1994         "\$ans")
1995                 case "\$ans" in
1996                 \\&*)
1997                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1998                         shift
1999                         case "\$1" in
2000                         -d)
2001                                 fastread=yes
2002                                 echo "(OK, I'll run with -d after this question.)" >&4
2003                                 ;;
2004                         -*)
2005                                 echo "*** Sorry, \$1 not supported yet." >&4
2006                                 ;;
2007                         esac
2008                         $myecho
2009                         ans=!
2010                         ;;
2011                 esac;;
2012         *)
2013                 case "\$aok" in
2014                 y)
2015                         echo "*** Substitution done -- please confirm."
2016                         xxxm="\$ans"
2017                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2018                         xxxm="\$ans"
2019                         ans=!
2020                         ;;
2021                 *)
2022                         echo "*** Error -- try again."
2023                         ans=!
2024                         ;;
2025                 esac
2026                 $myecho
2027                 ;;
2028         esac
2029         case "\$ans\$xxxm\$nostick" in
2030         '')
2031                 ans=!
2032                 $myecho
2033                 ;;
2034         esac
2035 done
2036 case "\$ans" in
2037 '') ans="\$xxxm";;
2038 esac
2039 EOSC
2040
2041 : create .config dir to save info across Configure sessions
2042 test -d ../.config || mkdir ../.config
2043 cat >../.config/README <<EOF
2044 This directory created by Configure to save information that should
2045 persist across sessions for $package.
2046
2047 You may safely delete it if you wish.
2048 EOF
2049
2050 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2051 case "$usedevel" in
2052 $define|true|[yY]*) ;;
2053 *) case "$xversion" in
2054    *[13579])
2055         cat >&4 <<EOH
2056 *** WHOA THERE!!! ***
2057
2058     This is an UNSTABLE DEVELOPMENT release.
2059     The version of this $package distribution is $xversion, that is, odd,
2060     (as opposed to even) and that signifies a development release.
2061     If you want a maintenance release, you want an even-numbered version.
2062
2063     Do ***NOT*** install this into production use.
2064     Data corruption and crashes are possible.
2065
2066     It is most seriously suggested that you do not continue any further
2067     unless you want to help in developing and debugging Perl.
2068
2069     If you *still* want to build perl, you can answer 'y' now,
2070     or pass -Dusedevel to Configure.
2071
2072 EOH
2073         rp='Do you really want to continue?'
2074         dflt='n'
2075         . ./myread
2076         case "$ans" in
2077         [yY]) echo >&4 "Okay, continuing."
2078               usedevel="$define" ;;
2079         *) echo >&4 "Okay, bye."
2080            exit 1
2081            ;;
2082         esac
2083         ;;
2084     esac
2085     ;;
2086 esac
2087 case "$usedevel" in
2088 $define|true|[yY]*)
2089         case "$versiononly" in
2090         '') versiononly="$define" ;;
2091         esac
2092         case "$installusrbinperl" in
2093         '') installusrbinperl="$undef" ;;
2094         esac
2095         ;;
2096 esac
2097
2098 : general instructions
2099 needman=true
2100 firsttime=true
2101 user=`(logname) 2>/dev/null`
2102 case "$user" in
2103 '') user=`whoami 2>&1`;;
2104 esac
2105 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2106         firsttime=false
2107         echo " "
2108         rp='Would you like to see the instructions?'
2109         dflt=n
2110         . ./myread
2111         case "$ans" in
2112         [yY]*) ;;
2113         *) needman=false;;
2114         esac
2115 fi
2116 if $needman; then
2117         cat <<EOH
2118
2119 This installation shell script will examine your system and ask you questions
2120 to determine how the perl5 package should be installed. If you get
2121 stuck on a question, you may use a ! shell escape to start a subshell or
2122 execute a command.  Many of the questions will have default answers in square
2123 brackets; typing carriage return will give you the default.
2124
2125 On some of the questions which ask for file or directory names you are allowed
2126 to use the ~name construct to specify the login directory belonging to "name",
2127 even if you don't have a shell which knows about that.  Questions where this is
2128 allowed will be marked "(~name ok)".
2129
2130 EOH
2131         rp=''
2132         dflt='Type carriage return to continue'
2133         . ./myread
2134         cat <<'EOH'
2135
2136 The prompter used in this script allows you to use shell variables and
2137 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2138 in the default answer, as if the default line was a set of arguments given to a
2139 script shell.  This means you may also use $* to repeat the whole default line,
2140 so you do not have to re-type everything to add something to the default.
2141
2142 Everytime there is a substitution, you will have to confirm.  If there is an
2143 error (e.g. an unmatched backtick), the default answer will remain unchanged
2144 and you will be prompted again.
2145
2146 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2147 the questions and use the computed defaults (or the previous answers if there
2148 was already a config.sh file). Type 'Configure -h' for a list of options.
2149 You may also start interactively and then answer '& -d' at any prompt to turn
2150 on the non-interactive behaviour for the remainder of the execution.
2151
2152 EOH
2153         . ./myread
2154         cat <<EOH
2155
2156 Much effort has been expended to ensure that this shell script will run on any
2157 Unix system.  If despite that it blows up on yours, your best bet is to edit
2158 Configure and run it again.  If you can't run Configure for some reason,
2159 you'll have to generate a config.sh file by hand.  Whatever problems you
2160 have, let me (perlbug@perl.org) know how I blew it.
2161
2162 This installation script affects things in two ways:
2163
2164 1) it may do direct variable substitutions on some of the files included
2165    in this kit.
2166 2) it builds a config.h file for inclusion in C programs.  You may edit
2167    any of these files as the need arises after running this script.
2168
2169 If you make a mistake on a question, there is no easy way to back up to it
2170 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2171 files.  Configure will offer to let you do this before it runs the SH files.
2172
2173 EOH
2174         dflt='Type carriage return to continue'
2175         . ./myread
2176         case "$firsttime" in
2177         true) echo $user >>../.config/instruct;;
2178         esac
2179 fi
2180
2181 : find out where common programs are
2182 echo " "
2183 echo "Locating common programs..." >&4
2184 cat <<EOSC >loc
2185 $startsh
2186 case \$# in
2187 0) exit 1;;
2188 esac
2189 thing=\$1
2190 shift
2191 dflt=\$1
2192 shift
2193 for dir in \$*; do
2194         case "\$thing" in
2195         .)
2196         if test -d \$dir/\$thing; then
2197                 echo \$dir
2198                 exit 0
2199         fi
2200         ;;
2201         *)
2202         for thisthing in \$dir/\$thing; do
2203                 : just loop through to pick last item
2204         done
2205         if test -f \$thisthing; then
2206                 echo \$thisthing
2207                 exit 0
2208         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2209                 echo \$thisthing
2210                 exit 0
2211         elif test -f \$dir/\$thing.exe; then
2212                 if test -n "$DJGPP"; then
2213                         echo \$dir/\$thing.exe
2214                 elif test "$eunicefix" != ":"; then
2215                         : on Eunice apparently
2216                         echo \$dir/\$thing
2217                         exit 0
2218                 fi
2219                 exit 0
2220         fi
2221         ;;
2222         esac
2223 done
2224 echo \$dflt
2225 exit 1
2226 EOSC
2227 chmod +x loc
2228 $eunicefix loc
2229 loclist="
2230 awk
2231 cat
2232 chmod
2233 comm
2234 cp
2235 echo
2236 expr
2237 grep
2238 ls
2239 mkdir
2240 rm
2241 sed
2242 sort
2243 touch
2244 tr
2245 uniq
2246 "
2247 trylist="
2248 Mcc
2249 ar
2250 bison
2251 byacc
2252 cpp
2253 csh
2254 date
2255 egrep
2256 gmake
2257 gzip
2258 less
2259 ln
2260 make
2261 more
2262 nm
2263 nroff
2264 pg
2265 test
2266 uname
2267 zip
2268 "
2269 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2270 pth="$pth /lib /usr/lib"
2271 for file in $loclist; do
2272         eval xxx=\$$file
2273         case "$xxx" in
2274         /*|?:[\\/]*)
2275                 if test -f "$xxx"; then
2276                         : ok
2277                 else
2278                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2279                         xxx=`./loc $file $file $pth`
2280                 fi
2281                 ;;
2282         '') xxx=`./loc $file $file $pth`;;
2283         *) xxx=`./loc $xxx $xxx $pth`;;
2284         esac
2285         eval $file=$xxx$_exe
2286         eval _$file=$xxx
2287         case "$xxx" in
2288         /*)
2289                 echo $file is in $xxx.
2290                 ;;
2291         ?:[\\/]*)
2292                 echo $file is in $xxx.
2293                 ;;
2294         *)
2295                 echo "I don't know where '$file' is, and my life depends on it." >&4
2296                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2297                 exit 1
2298                 ;;
2299         esac
2300 done
2301 echo " "
2302 echo "Don't worry if any of the following aren't found..."
2303 say=offhand
2304 for file in $trylist; do
2305         eval xxx=\$$file
2306         case "$xxx" in
2307         /*|?:[\\/]*)
2308                 if test -f "$xxx"; then
2309                         : ok
2310                 else
2311                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2312                         xxx=`./loc $file $file $pth`
2313                 fi
2314                 ;;
2315         '') xxx=`./loc $file $file $pth`;;
2316         *) xxx=`./loc $xxx $xxx $pth`;;
2317         esac
2318         eval $file=$xxx$_exe
2319         eval _$file=$xxx
2320         case "$xxx" in
2321         /*)
2322                 echo $file is in $xxx.
2323                 ;;
2324         ?:[\\/]*)
2325                 echo $file is in $xxx.
2326                 ;;
2327         *)
2328                 echo "I don't see $file out there, $say."
2329                 say=either
2330                 ;;
2331         esac
2332 done
2333 case "$egrep" in
2334 egrep)
2335         echo "Substituting grep for egrep."
2336         egrep=$grep
2337         _egrep=$grep
2338         ;;
2339 esac
2340 case "$ln" in
2341 ln)
2342         echo "Substituting cp for ln."
2343         ln=$cp
2344         _ln=$cp
2345         ;;
2346 esac
2347 case "$make" in
2348 make)   
2349         case "$gmake" in
2350         gmake)
2351         echo "I can't find make or gmake, and my life depends on it." >&4
2352         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2353         exit 1
2354         ;;
2355         esac
2356         ;;
2357 esac    
2358 case "$gmake" in
2359 gmake)  ;;
2360 *)      # We can't have osname yet.
2361         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2362                 # Assume that gmake, if found, is definitely GNU make
2363                 # and prefer it over the system make.
2364                 echo "Substituting gmake for make."
2365                 make=$gmake
2366                 _make=$gmake
2367         fi
2368         ;;
2369 esac
2370 case "$test" in
2371 test)
2372         echo "Hopefully test is built into your sh."
2373         ;;
2374 *)
2375         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2376                 echo "Using the test built into your sh."
2377                 test=test
2378                 _test=test
2379         fi
2380         ;;
2381 esac
2382 case "$echo" in
2383 echo)
2384         echo "Hopefully echo is built into your sh."
2385         ;;
2386 '') ;;
2387 *)
2388         echo " "
2389 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2390         $echo $n "hi there$c" >foo1
2391         echo $n "hi there$c" >foo2
2392         if cmp foo1 foo2 >/dev/null 2>&1; then
2393                 echo "They are compatible.  In fact, they may be identical."
2394         else
2395                 case "$n" in
2396                 '-n') n='' c='\c';;
2397                 *) n='-n' c='';;
2398                 esac
2399                 cat <<FOO
2400 They are not compatible!  You are probably running ksh on a non-USG system.
2401 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2402 have echo built in and we may have to run some Bourne shell scripts.  That
2403 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2404
2405 FOO
2406                 $echo $n "The star should be here-->$c"
2407                 $echo "*"
2408         fi
2409         $rm -f foo1 foo2
2410         ;;
2411 esac
2412
2413 cat <<EOS >trygcc
2414 $startsh
2415 EOS
2416 cat <<'EOSC' >>trygcc
2417 case "$cc" in
2418 '') ;;
2419 *)  $rm -f try try.*
2420     $cat >try.c <<EOM
2421 int main(int argc, char *argv[]) {
2422   return 0;
2423 }
2424 EOM
2425     if $cc -o try $ccflags $ldflags try.c; then
2426        :
2427     else
2428         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2429         despair=yes
2430         trygcc=yes
2431         case "$cc" in
2432         *gcc*) trygcc=no ;;
2433         esac
2434         case "`$cc -v -c try.c 2>&1`" in
2435         *gcc*) trygcc=no ;;
2436         esac
2437         if $test X"$trygcc" = Xyes; then
2438             if gcc -o try -c try.c; then
2439                 echo " "
2440                 echo "You seem to have a working gcc, though." >&4
2441                 rp="Would you like to use it?"
2442                 dflt=y
2443                 if $test -f myread; then
2444                     . ./myread
2445                 else
2446                     if $test -f UU/myread; then
2447                         . ./UU/myread
2448                     else
2449                         echo "Cannot find myread, sorry.  Aborting." >&2
2450                         exit 1
2451                     fi
2452                 fi  
2453                 case "$ans" in
2454                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2455                        if $test -f usethreads.cbu; then
2456                            $cat >&4 <<EOM 
2457
2458 *** However, any setting of the C compiler flags (e.g. for thread support)
2459 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2460 *** (together with e.g. -Dusethreads).
2461
2462 EOM
2463                        fi;;
2464                 esac
2465             fi
2466         fi
2467     fi
2468     $rm -f try try.*
2469     ;;
2470 esac
2471 EOSC
2472
2473 cat <<EOS >checkcc
2474 $startsh
2475 EOS
2476 cat <<'EOSC' >>checkcc
2477 case "$cc" in        
2478 '') ;;
2479 *)  $rm -f try try.*              
2480     $cat >try.c <<EOM
2481 int main(int argc, char *argv[]) {
2482   return 0;
2483 }
2484 EOM
2485     if $cc -o try $ccflags $ldflags try.c; then
2486        :
2487     else
2488         if $test X"$despair" = Xyes; then
2489            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2490         fi
2491         $cat >&4 <<EOM         
2492 You need to find a working C compiler.
2493 Either (purchase and) install the C compiler supplied by your OS vendor,
2494 or for a free C compiler try http://gcc.gnu.org/
2495 I cannot continue any further, aborting.
2496 EOM
2497         exit 1
2498     fi
2499     $rm -f try try.*
2500     ;;
2501 esac
2502 EOSC
2503
2504 : determine whether symbolic links are supported
2505 echo " "
2506 $touch blurfl
2507 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2508         echo "Symbolic links are supported." >&4
2509         lns="$ln -s"
2510 else
2511         echo "Symbolic links are NOT supported." >&4
2512         lns="$ln"
2513 fi
2514 $rm -f blurfl sym
2515
2516 : determine whether symbolic links are supported
2517 echo " "
2518 case "$lns" in
2519 *"ln"*" -s")
2520         echo "Checking how to test for symbolic links..." >&4
2521         $lns blurfl sym
2522         if $test "X$issymlink" = X; then
2523                 case "$newsh" in
2524                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2525                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2526                 esac
2527                 if test $? = 0; then
2528                         issymlink="test -h"
2529                 else
2530                         echo "Your builtin 'test -h' may be broken." >&4
2531                         case "$test" in
2532                         /*)     ;;
2533                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2534                                 for p in $pth
2535                                 do
2536                                         if test -f "$p/$test"; then
2537                                                 test="$p/$test"
2538                                                 break
2539                                         fi
2540                                 done
2541                                 ;;
2542                         esac
2543                         case "$test" in
2544                         /*)
2545                                 echo "Trying external '$test -h'." >&4
2546                                 issymlink="$test -h"
2547                                 if $test ! -h sym >/dev/null 2>&1; then
2548                                         echo "External '$test -h' is broken, too." >&4
2549                                         issymlink=''
2550                                 fi
2551                                 ;;
2552                         *)      issymlink='' ;;
2553                         esac
2554                 fi              
2555         fi
2556         if $test "X$issymlink" = X; then
2557                 if $test -L sym 2>/dev/null; then
2558                         issymlink="$test -L"
2559                         echo "The builtin '$test -L' worked." >&4
2560                 fi
2561         fi
2562         if $test "X$issymlink" != X; then
2563                 echo "You can test for symbolic links with '$issymlink'." >&4
2564         else
2565                 echo "I do not know how you can test for symbolic links." >&4
2566         fi
2567         $rm -f blurfl sym
2568         ;;
2569 *)      echo "No symbolic links, so not testing for their testing..." >&4
2570         ;;
2571 esac
2572 echo " "
2573
2574
2575 case "$mksymlinks" in
2576 $define|true|[yY]*)
2577         case "$src" in
2578         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2579                 exit 1
2580                 ;;
2581         *)      case "$lns:$issymlink" in
2582                 *"ln"*" -s:"*"test -"?)
2583                         echo "Creating the symbolic links..." >&4
2584                         echo "(First creating the subdirectories...)" >&4
2585                         cd ..
2586                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2587                                 read directory
2588                                 test -z "$directory" && break
2589                                 mkdir -p $directory
2590                         done
2591                         # Sanity check 1.
2592                         if test ! -d t/base; then
2593                                 echo "Failed to create the subdirectories.  Aborting." >&4
2594                                 exit 1
2595                         fi
2596                         echo "(Then creating the symlinks...)" >&4
2597                         awk '{print $1}' $src/MANIFEST | while true; do
2598                                 read filename
2599                                 test -z "$filename" && break
2600                                 if test -f $filename; then
2601                                         if $issymlink $filename; then
2602                                                 rm -f $filename
2603                                         fi
2604                                 fi
2605                                 if test -f $filename; then
2606                                         echo "$filename already exists, not symlinking."
2607                                 else
2608                                         ln -s $src/$filename $filename
2609                                 fi
2610                         done
2611                         # Sanity check 2.
2612                         if test ! -f t/base/lex.t; then
2613                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2614                                 exit 1
2615                         fi
2616                         cd UU
2617                         ;;
2618                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2619                         ;;
2620                 esac
2621                 ;;
2622         esac
2623         ;;
2624 esac
2625
2626
2627 case "$usecrosscompile" in
2628 $define|true|[yY]*)
2629         $echo "Cross-compiling..."
2630         croak=''
2631         case "$cc" in
2632         *-*-gcc) # A cross-compiling gcc, probably.
2633             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2634             ar=$targetarch-ar
2635             # leave out ld, choosing it is more complex
2636             nm=$targetarch-nm
2637             ranlib=$targetarch-ranlib
2638             $echo 'extern int foo;' > try.c
2639             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2640             shift
2641             if $test $# -gt 0; then
2642                 incpth="$incpth $*"
2643                 incpth="`$echo $incpth|$sed 's/^ //'`"
2644                 echo "Guessing incpth '$incpth'." >&4
2645                 for i in $*; do
2646                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2647                     if $test -d $j; then
2648                         libpth="$libpth $j"
2649                     fi
2650                 done   
2651                 libpth="`$echo $libpth|$sed 's/^ //'`"
2652                 echo "Guessing libpth '$libpth'." >&4
2653             fi
2654             $rm -f try.c
2655             ;;
2656         esac
2657         case "$targetarch" in
2658         '') echo "Targetarch not defined." >&4; croak=y ;;
2659         *)  echo "Using targetarch $targetarch." >&4 ;;
2660         esac
2661         case "$incpth" in
2662         '') echo "Incpth not defined." >&4; croak=y ;;
2663         *)  echo "Using incpth '$incpth'." >&4 ;;
2664         esac
2665         case "$libpth" in
2666         '') echo "Libpth not defined." >&4; croak=y ;;
2667         *)  echo "Using libpth '$libpth'." >&4 ;;
2668         esac
2669         case "$usrinc" in
2670         '') for i in $incpth; do
2671                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2672                     usrinc=$i
2673                     echo "Guessing usrinc $usrinc." >&4
2674                     break
2675                 fi
2676             done
2677             case "$usrinc" in
2678             '') echo "Usrinc not defined." >&4; croak=y ;;
2679             esac
2680             ;;
2681         *)  echo "Using usrinc $usrinc." >&4 ;;
2682         esac
2683         case "$targethost" in
2684         '') echo "Targethost not defined." >&4; croak=y ;;
2685         *)  echo "Using targethost $targethost." >&4
2686         esac
2687         locincpth=' '
2688         loclibpth=' '
2689         case "$croak" in
2690         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2691         esac
2692         case "$src" in
2693         /*) run=$src/Cross/run
2694             targetmkdir=$src/Cross/mkdir
2695             to=$src/Cross/to
2696             from=$src/Cross/from
2697             ;;
2698         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2699             run=$pwd/Cross/run
2700             targetmkdir=$pwd/Cross/mkdir
2701             to=$pwd/Cross/to
2702             from=$pwd/Cross/from
2703             ;;
2704         esac
2705         case "$targetrun" in
2706         '') targetrun=ssh ;;
2707         esac
2708         case "$targetto" in
2709         '') targetto=scp ;;
2710         esac
2711         case "$targetfrom" in
2712         '') targetfrom=scp ;;
2713         esac
2714         run=$run-$targetrun
2715         to=$to-$targetto
2716         from=$from-$targetfrom
2717         case "$targetdir" in
2718         '')  targetdir=/tmp
2719              echo "Guessing targetdir $targetdir." >&4
2720              ;;
2721         esac
2722         case "$targetuser" in
2723         '')  targetuser=root
2724              echo "Guessing targetuser $targetuser." >&4
2725              ;;
2726         esac
2727         case "$targetfrom" in
2728         scp)    q=-q ;;
2729         *)      q='' ;;
2730         esac
2731         case "$targetrun" in
2732         ssh|rsh)
2733             cat >$run <<EOF
2734 #!/bin/sh
2735 case "\$1" in
2736 -cwd)
2737   shift
2738   cwd=\$1
2739   shift
2740   ;;
2741 esac
2742 case "\$cwd" in
2743 '') cwd=$targetdir ;;
2744 esac
2745 exe=\$1
2746 shift
2747 if $test ! -f \$exe.xok; then
2748   $to \$exe
2749   $touch \$exe.xok
2750 fi
2751 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2752 EOF
2753             ;;
2754         *)  echo "Unknown targetrun '$targetrun'" >&4
2755             exit 1
2756             ;;
2757         esac
2758         case "$targetmkdir" in
2759         */Cross/mkdir)
2760             cat >$targetmkdir <<EOF
2761 #!/bin/sh
2762 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2763 EOF
2764             $chmod a+rx $targetmkdir
2765             ;;
2766         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2767             exit 1
2768             ;;
2769         esac
2770         case "$targetto" in
2771         scp|rcp)
2772             cat >$to <<EOF
2773 #!/bin/sh
2774 for f in \$@
2775 do
2776   case "\$f" in
2777   /*)
2778     $targetmkdir \`dirname \$f\`
2779     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2780     ;;
2781   *)
2782     $targetmkdir $targetdir/\`dirname \$f\`
2783     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2784     ;;
2785   esac
2786 done
2787 exit 0
2788 EOF
2789             ;;
2790         cp) cat >$to <<EOF
2791 #!/bin/sh
2792 for f in \$@
2793 do
2794   case "\$f" in
2795   /*)
2796     $mkdir -p $targetdir/\`dirname \$f\`
2797     $cp \$f $targetdir/\$f || exit 1
2798     ;;
2799   *)
2800     $targetmkdir $targetdir/\`dirname \$f\`
2801     $cp \$f $targetdir/\$f || exit 1
2802     ;;
2803   esac
2804 done
2805 exit 0
2806 EOF
2807             ;;
2808         *)  echo "Unknown targetto '$targetto'" >&4
2809             exit 1
2810             ;;
2811         esac
2812         case "$targetfrom" in
2813         scp|rcp)
2814           cat >$from <<EOF
2815 #!/bin/sh
2816 for f in \$@
2817 do
2818   $rm -f \$f
2819   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2820 done
2821 exit 0
2822 EOF
2823             ;;
2824         cp) cat >$from <<EOF
2825 #!/bin/sh
2826 for f in \$@
2827 do
2828   $rm -f \$f
2829   cp $targetdir/\$f . || exit 1
2830 done
2831 exit 0
2832 EOF
2833             ;;
2834         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2835             exit 1
2836             ;;
2837         esac
2838         if $test ! -f $run; then
2839             echo "Target 'run' script '$run' not found." >&4
2840         else
2841             $chmod a+rx $run
2842         fi
2843         if $test ! -f $to; then
2844             echo "Target 'to' script '$to' not found." >&4
2845         else
2846             $chmod a+rx $to
2847         fi
2848         if $test ! -f $from; then
2849             echo "Target 'from' script '$from' not found." >&4
2850         else
2851             $chmod a+rx $from
2852         fi
2853         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2854             exit 1
2855         fi
2856         cat >&4 <<EOF
2857 Using '$run' for remote execution,
2858 and '$from' and '$to'
2859 for remote file transfer.
2860 EOF
2861         ;;
2862 *)      run=''
2863         to=:
2864         from=:
2865         usecrosscompile='undef'
2866         targetarch=''
2867         ;;
2868 esac
2869
2870 : see whether [:lower:] and [:upper:] are supported character classes
2871 echo " "
2872 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2873 ABYZ)
2874         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2875         up='[:upper:]'
2876         low='[:lower:]'
2877         ;;
2878 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2879         # (0xc9 and 0xd1), therefore that is a nice testing point.
2880         if test "X$up" = X -o "X$low" = X; then
2881             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2882             ij) up='[A-Z]'
2883                 low='[a-z]'
2884                 ;;
2885             esac
2886         fi
2887         if test "X$up" = X -o "X$low" = X; then
2888             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2889             ij) up='A-Z'
2890                 low='a-z'
2891                 ;;
2892             esac
2893         fi
2894         if test "X$up" = X -o "X$low" = X; then
2895             case "`echo IJ | od -x 2>/dev/null`" in
2896             *C9D1*|*c9d1*)
2897                 echo "Hey, this might be EBCDIC." >&4
2898                 if test "X$up" = X -o "X$low" = X; then
2899                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2900                     ij) up='[A-IJ-RS-Z]'
2901                         low='[a-ij-rs-z]'
2902                         ;;
2903                     esac
2904                 fi
2905                 if test "X$up" = X -o "X$low" = X; then
2906                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2907                     ij) up='A-IJ-RS-Z'
2908                         low='a-ij-rs-z'
2909                         ;;
2910                     esac
2911                 fi
2912                 ;;
2913             esac
2914         fi
2915 esac
2916 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2917 ij)
2918     echo "Using $up and $low to convert case." >&4
2919     ;;
2920 *)
2921     echo "I don't know how to translate letters from upper to lower case." >&4
2922     echo "Your tr is not acting any way I know of." >&4
2923     exit 1
2924     ;;
2925 esac
2926 : set up the translation script tr, must be called with ./tr of course
2927 cat >tr <<EOSC
2928 $startsh
2929 case "\$1\$2" in
2930 '[A-Z][a-z]') exec $tr '$up' '$low';;
2931 '[a-z][A-Z]') exec $tr '$low' '$up';;
2932 esac
2933 exec $tr "\$@"
2934 EOSC
2935 chmod +x tr
2936 $eunicefix tr
2937
2938 : Try to determine whether config.sh was made on this system
2939 case "$config_sh" in
2940 '')
2941 myuname=`$uname -a 2>/dev/null`
2942 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2943 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2944 # because the A-Z/a-z are not consecutive.
2945 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2946         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2947 newmyuname="$myuname"
2948 dflt=n
2949 case "$knowitall" in
2950 '')
2951         if test -f ../config.sh; then
2952                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2953                         eval "`grep myuname= ../config.sh`"
2954                 fi
2955                 if test "X$myuname" = "X$newmyuname"; then
2956                         dflt=y
2957                 fi
2958         fi
2959         ;;
2960 *) dflt=y;;
2961 esac
2962
2963 : Get old answers from old config file if Configure was run on the
2964 : same system, otherwise use the hints.
2965 hint=default
2966 cd ..
2967 if test -f config.sh; then
2968         echo " "
2969         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2970         . UU/myread
2971         case "$ans" in
2972         n*|N*) echo "OK, I'll ignore it."
2973                 mv config.sh config.sh.old
2974                 myuname="$newmyuname"
2975                 ;;
2976         *)  echo "Fetching default answers from your old config.sh file..." >&4
2977                 tmp_n="$n"
2978                 tmp_c="$c"
2979                 tmp_sh="$sh"
2980                 . ./config.sh
2981                 cp config.sh UU
2982                 n="$tmp_n"
2983                 c="$tmp_c"
2984                 : Older versions did not always set $sh.  Catch re-use of such
2985                 : an old config.sh.
2986                 case "$sh" in
2987                 '') sh="$tmp_sh" ;;
2988                 esac
2989                 hint=previous
2990                 ;;
2991         esac
2992 fi
2993 . ./UU/checkcc
2994 if test ! -f config.sh; then
2995         $cat <<EOM
2996
2997 First time through, eh?  I have some defaults handy for some systems
2998 that need some extra help getting the Configure answers right:
2999
3000 EOM
3001         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3002         dflt=''
3003         : Half the following guesses are probably wrong... If you have better
3004         : tests or hints, please send them to perlbug@perl.org
3005         : The metaconfig authors would also appreciate a copy...
3006         $test -f /irix && osname=irix
3007         $test -f /xenix && osname=sco_xenix
3008         $test -f /dynix && osname=dynix
3009         $test -f /dnix && osname=dnix
3010         $test -f /lynx.os && osname=lynxos
3011         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3012         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3013         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3014         $test -f /bin/mips && /bin/mips && osname=mips
3015         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3016                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3017         $test -d /usr/apollo/bin && osname=apollo
3018         $test -f /etc/saf/_sactab && osname=svr4
3019         $test -d /usr/include/minix && osname=minix
3020         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3021         if $test -d /MachTen -o -d /MachTen_Folder; then
3022                 osname=machten
3023                 if $test -x /sbin/version; then
3024                         osvers=`/sbin/version | $awk '{print $2}' |
3025                         $sed -e 's/[A-Za-z]$//'`
3026                 elif $test -x /usr/etc/version; then
3027                         osvers=`/usr/etc/version | $awk '{print $2}' |
3028                         $sed -e 's/[A-Za-z]$//'`
3029                 else
3030                         osvers="$2.$3"
3031                 fi
3032         fi
3033
3034         $test -f /sys/posix.dll &&
3035                 $test -f /usr/bin/what &&
3036                 set X `/usr/bin/what /sys/posix.dll` &&
3037                 $test "$3" = UWIN &&
3038                 osname=uwin &&
3039                 osvers="$5"
3040
3041         if $test -f $uname; then
3042                 set X $myuname
3043                 shift
3044
3045                 case "$5" in
3046                 fps*) osname=fps ;;
3047                 mips*)
3048                         case "$4" in
3049                         umips) osname=umips ;;
3050                         *) osname=mips ;;
3051                         esac;;
3052                 [23]100) osname=mips ;;
3053                 next*) osname=next ;;
3054                 i386*)
3055                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3056                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3057                                 osname='sco'
3058                                 osvers=$tmp
3059                         elif $test -f /etc/kconfig; then
3060                                 osname=isc
3061                                 if test "$lns" = "$ln -s"; then
3062                                         osvers=4
3063                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3064                                         osvers=3
3065                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3066                                         osvers=2
3067                                 fi
3068                         fi
3069                         tmp=''
3070                         ;;
3071                 pc*)
3072                         if test -n "$DJGPP"; then
3073                                 osname=dos
3074                                 osvers=djgpp
3075                         fi
3076                         ;;
3077                 esac
3078
3079                 case "$1" in
3080                 aix) osname=aix
3081                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3082                         case "$tmp" in
3083                         'not found') osvers="$4"."$3" ;;
3084                         '<3240'|'<>3240') osvers=3.2.0 ;;
3085                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3086                         '=3250'|'>3250') osvers=3.2.5 ;;
3087                         *) osvers=$tmp;;
3088                         esac
3089                         ;;
3090                 bsd386) osname=bsd386
3091                         osvers=`$uname -r`
3092                         ;;
3093                 cygwin*) osname=cygwin
3094                         osvers="$3"
3095                         ;;
3096                 *dc.osx) osname=dcosx
3097                         osvers="$3"
3098                         ;;
3099                 dnix) osname=dnix
3100                         osvers="$3"
3101                         ;;
3102                 domainos) osname=apollo
3103                         osvers="$3"
3104                         ;;
3105                 dgux) osname=dgux 
3106                         osvers="$3"
3107                         ;;
3108                 dynixptx*) osname=dynixptx
3109                         osvers=`echo "$4"|sed 's/^v//'`
3110                         ;;
3111                 freebsd) osname=freebsd 
3112                         osvers="$3" ;;
3113                 genix) osname=genix ;;
3114                 hp*) osname=hpux 
3115                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3116                         ;;
3117                 irix*) osname=irix
3118                         case "$3" in
3119                         4*) osvers=4 ;;
3120                         5*) osvers=5 ;;
3121                         *)      osvers="$3" ;;
3122                         esac
3123                         ;;
3124                 linux) osname=linux
3125                         case "$3" in
3126                         *)      osvers="$3" ;;
3127                         esac
3128                         ;;
3129                 MiNT) osname=mint
3130                         ;;
3131                 netbsd*) osname=netbsd
3132                         osvers="$3"
3133                         ;;
3134                 news-os) osvers="$3"
3135                         case "$3" in
3136                         4*) osname=newsos4 ;;
3137                         *) osname=newsos ;;
3138                         esac
3139                         ;;
3140                 next*) osname=next ;;
3141                 nonstop-ux) osname=nonstopux ;;
3142                 openbsd) osname=openbsd
3143                         osvers="$3"
3144                         ;;
3145                 os2)    osname=os2
3146                         osvers="$4"
3147                         ;;
3148                 POSIX-BC | posix-bc ) osname=posix-bc
3149                         osvers="$3"
3150                         ;;
3151                 powerux | power_ux | powermax_os | powermaxos | \
3152                 powerunix | power_unix) osname=powerux
3153                         osvers="$3"
3154                         ;;
3155                 qnx) osname=qnx
3156                         osvers="$4"
3157                         ;;
3158                 solaris) osname=solaris
3159                         case "$3" in
3160                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3161                         *)      osvers="$3" ;;
3162                         esac
3163                         ;;
3164                 sunos) osname=sunos
3165                         case "$3" in
3166                         5*) osname=solaris
3167                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3168                         *)      osvers="$3" ;;
3169                         esac
3170                         ;;
3171                 titanos) osname=titanos
3172                         case "$3" in
3173                         1*) osvers=1 ;;
3174                         2*) osvers=2 ;;
3175                         3*) osvers=3 ;;
3176                         4*) osvers=4 ;;
3177                         *)      osvers="$3" ;;
3178                         esac
3179                         ;;
3180                 ultrix) osname=ultrix
3181                         osvers="$3"
3182                         ;;
3183                 osf1|mls+)      case "$5" in
3184                                 alpha)
3185                                         osname=dec_osf
3186                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3187                                         case "$osvers" in
3188                                         [1-9].[0-9]*) ;;
3189                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3190                                         esac
3191                                         ;;
3192                         hp*)    osname=hp_osf1  ;;
3193                         mips)   osname=mips_osf1 ;;
3194                         esac
3195                         ;;
3196                 unixware) osname=svr5
3197                         osvers="$4"
3198                         ;;
3199                 uts)    osname=uts
3200                         osvers="$3"
3201                         ;;
3202                 vos) osvers="$3"
3203                         ;;
3204                 $2) case "$osname" in
3205                         *isc*) ;;
3206                         *freebsd*) ;;
3207                         svr*)
3208                                 : svr4.x or possibly later
3209                                 case "svr$3" in 
3210                                 ${osname}*)
3211                                         osname=svr$3
3212                                         osvers=$4
3213                                         ;;
3214                                 esac
3215                                 case "$osname" in
3216                                 svr4.0)
3217                                         : Check for ESIX
3218                                         if test -f /stand/boot ; then
3219                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3220                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3221                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3222                                                         if test -n "$isesix"; then
3223                                                                 osname=esix4
3224                                                         fi
3225                                                 fi
3226                                         fi
3227                                         ;;
3228                                 esac
3229                                 ;;
3230                         *)      if test -f /etc/systemid; then
3231                                         osname=sco
3232                                         set `echo $3 | $sed 's/\./ /g'` $4
3233                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3234                                                 osvers=$1.$2.$3
3235                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3236                                                 osvers=$1.$2
3237                                         elif $test -f $src/hints/sco_$1.sh; then
3238                                                 osvers=$1
3239                                         fi
3240                                 else
3241                                         case "$osname" in
3242                                         '') : Still unknown.  Probably a generic Sys V.
3243                                                 osname="sysv"
3244                                                 osvers="$3"
3245                                                 ;;
3246                                         esac
3247                                 fi
3248                                 ;;
3249                         esac
3250                         ;;
3251                 *)      case "$osname" in
3252                         '') : Still unknown.  Probably a generic BSD.
3253                                 osname="$1"
3254                                 osvers="$3"
3255                                 ;;
3256                         esac
3257                         ;;
3258                 esac
3259         else
3260                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3261                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3262                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3263                                 osname=news_os
3264                         fi
3265                         $rm -f UU/kernel.what
3266                 elif test -d c:/. -o -n "$is_os2" ; then
3267                         set X $myuname
3268                         osname=os2
3269                         osvers="$5"
3270                 fi
3271         fi
3272         
3273         case "$targetarch" in
3274         '') ;;
3275         *)  hostarch=$osname
3276             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3277             osvers=''
3278             ;;
3279         esac
3280
3281         : Now look for a hint file osname_osvers, unless one has been
3282         : specified already.
3283         case "$hintfile" in
3284         ''|' ')
3285                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3286                 : Also try without trailing minor version numbers.
3287                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3288                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3289                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3290                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3291                 case "$file" in
3292                 '') dflt=none ;;
3293                 *)  case "$osvers" in
3294                         '') dflt=$file
3295                                 ;;
3296                         *)  if $test -f $src/hints/$file.sh ; then
3297                                         dflt=$file
3298                                 elif $test -f $src/hints/$xfile.sh ; then
3299                                         dflt=$xfile
3300                                 elif $test -f $src/hints/$xxfile.sh ; then
3301                                         dflt=$xxfile
3302                                 elif $test -f $src/hints/$xxxfile.sh ; then
3303                                         dflt=$xxxfile
3304                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3305                                         dflt=$xxxxfile
3306                                 elif $test -f "$src/hints/${osname}.sh" ; then
3307                                         dflt="${osname}"
3308                                 else
3309                                         dflt=none
3310                                 fi
3311                                 ;;
3312                         esac
3313                         ;;
3314                 esac
3315                 if $test -f Policy.sh ; then
3316                         case "$dflt" in
3317                         *Policy*) ;;
3318                         none) dflt="Policy" ;;
3319                         *) dflt="Policy $dflt" ;;
3320                         esac
3321                 fi
3322                 ;;
3323         *)
3324                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3325                 ;;
3326         esac
3327
3328         if $test -f Policy.sh ; then
3329                 $cat <<EOM
3330
3331 There's also a Policy hint file available, which should make the
3332 site-specific (policy) questions easier to answer.
3333 EOM
3334
3335         fi
3336
3337         $cat <<EOM
3338
3339 You may give one or more space-separated answers, or "none" if appropriate.
3340 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3341 is a good thing.  DO NOT give a wrong version or a wrong OS.
3342
3343 EOM
3344
3345         rp="Which of these apply, if any?"
3346         . UU/myread
3347         tans=$ans
3348         for file in $tans; do
3349                 if $test X$file = XPolicy -a -f Policy.sh; then
3350                         . Policy.sh
3351                         $cat Policy.sh >> UU/config.sh
3352                 elif $test -f $src/hints/$file.sh; then
3353                         . $src/hints/$file.sh
3354                         $cat $src/hints/$file.sh >> UU/config.sh
3355                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3356                         : nothing
3357                 else
3358                         : Give one chance to correct a possible typo.
3359                         echo "$file.sh does not exist"
3360                         dflt=$file
3361                         rp="hint to use instead?"
3362                         . UU/myread
3363                         for file in $ans; do
3364                                 if $test -f "$src/hints/$file.sh"; then
3365                                         . $src/hints/$file.sh
3366                                         $cat $src/hints/$file.sh >> UU/config.sh
3367                                 elif $test X$ans = X -o X$ans = Xnone ; then
3368                                         : nothing
3369                                 else
3370                                         echo "$file.sh does not exist -- ignored."
3371                                 fi
3372                         done
3373                 fi
3374         done
3375
3376         hint=recommended
3377         : Remember our hint file for later.
3378         if $test -f "$src/hints/$file.sh" ; then
3379                 hintfile="$file"
3380         else
3381                 hintfile=''
3382         fi
3383 fi
3384 cd UU
3385 ;;
3386 *)
3387         echo " "
3388         echo "Fetching default answers from $config_sh..." >&4
3389         tmp_n="$n"
3390         tmp_c="$c"
3391         cd ..
3392         cp $config_sh config.sh 2>/dev/null
3393         chmod +w config.sh
3394         . ./config.sh
3395         cd UU
3396         cp ../config.sh .
3397         n="$tmp_n"
3398         c="$tmp_c"
3399         hint=previous
3400         ;;
3401 esac
3402 test "$override" && . ./optdef.sh
3403
3404 : Restore computed paths
3405 for file in $loclist $trylist; do
3406         eval $file="\$_$file"
3407 done
3408
3409 cat << EOM
3410
3411 Configure uses the operating system name and version to set some defaults.
3412 The default value is probably right if the name rings a bell. Otherwise,
3413 since spelling matters for me, either accept the default or answer "none"
3414 to leave it blank.
3415
3416 EOM
3417 case "$osname" in
3418         ''|' ')
3419                 case "$hintfile" in
3420                 ''|' '|none) dflt=none ;;
3421                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3422                 esac
3423                 ;;
3424         *) dflt="$osname" ;;
3425 esac
3426 rp="Operating system name?"
3427 . ./myread
3428 case "$ans" in
3429 none)  osname='' ;;
3430 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3431 esac
3432 echo " "
3433 case "$osvers" in
3434         ''|' ')
3435                 case "$hintfile" in
3436                 ''|' '|none) dflt=none ;;
3437                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3438                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3439                         case "$dflt" in
3440                         ''|' ') dflt=none ;;
3441                         esac
3442                         ;;
3443                 esac
3444                 ;;
3445         *) dflt="$osvers" ;;
3446 esac
3447 rp="Operating system version?"
3448 . ./myread
3449 case "$ans" in
3450 none)  osvers='' ;;
3451 *) osvers="$ans" ;;
3452 esac
3453
3454
3455 . ./posthint.sh
3456
3457 : who configured the system
3458 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3459 cf_by=`(logname) 2>/dev/null`
3460 case "$cf_by" in
3461 "")
3462         cf_by=`(whoami) 2>/dev/null`
3463         case "$cf_by" in
3464         "") cf_by=unknown ;;
3465         esac ;;
3466 esac
3467
3468 : set up the script used to warn in case of inconsistency
3469 cat <<EOS >whoa
3470 $startsh
3471 EOS
3472 cat <<'EOSC' >>whoa
3473 dflt=y
3474 echo " "
3475 echo "*** WHOA THERE!!! ***" >&4
3476 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3477 rp="    Keep the $hint value?"
3478 . ./myread
3479 case "$ans" in
3480 y) td=$was; tu=$was;;
3481 esac
3482 EOSC
3483
3484 : function used to set $1 to $val
3485 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3486 case "$val$was" in
3487 $define$undef) . ./whoa; eval "$var=\$td";;
3488 $undef$define) . ./whoa; eval "$var=\$tu";;
3489 *) eval "$var=$val";;
3490 esac'
3491
3492 case "$usesocks" in
3493 $define|true|[yY]*)     dflt='y';;
3494 *) dflt='n';;
3495 esac
3496 cat <<EOM
3497
3498 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3499 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3500 to use the PerlIO abstraction layer, this will be implicitly selected.
3501
3502 If this doesn't make any sense to you, just accept the default '$dflt'.
3503 EOM
3504 rp='Build Perl for SOCKS?'
3505 . ./myread
3506 case "$ans" in
3507 y|Y)    val="$define" ;;     
3508 *)      val="$undef" ;;
3509 esac
3510 set usesocks
3511 eval $setvar
3512
3513 case "$usesocks" in
3514 $define|true|[yY]*) useperlio="$define";;
3515 esac
3516
3517 case "$useperlio" in
3518 $define|true|[yY]*|'')  dflt='y';;
3519 *) dflt='n';;
3520 esac
3521 cat <<EOM
3522
3523 Previous version of $package used the standard IO mechanisms as
3524 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
3525 alternate IO mechanisms via the PerlIO abstraction layer, but the
3526 stdio mechanism is still available if needed.  The abstraction layer
3527 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3528 Using PerlIO with sfio may cause problems with some extension modules.
3529
3530 If this doesn't make any sense to you, just accept the default '$dflt'.
3531 EOM
3532 rp='Use the PerlIO abstraction layer?'
3533 . ./myread
3534 case "$ans" in
3535 y|Y) 
3536         val="$define"
3537         ;;
3538 *)      
3539         echo "Ok, doing things the stdio way."
3540         val="$undef"
3541         ;;
3542 esac
3543 set useperlio
3544 eval $setvar 
3545
3546 case "$usesocks" in
3547 $define|true|[yY]*)
3548         case "$useperlio" in
3549         $define|true|[yY]*) ;;
3550         *)      cat >&4 <<EOM
3551
3552 You are using the SOCKS proxy protocol library which means that you
3553 should also use the PerlIO layer.  You may be headed for trouble.
3554
3555 EOM
3556                 ;;
3557         esac
3558         ;;
3559 esac
3560
3561         
3562 case "$usethreads" in
3563 $define|true|[yY]*)     dflt='y';;
3564 *)     # Catch case where user specified ithreads or 5005threads but
3565        # forgot -Dusethreads (A.D. 4/2002)
3566        case "$useithreads$use5005threads" in
3567        *$define*)      
3568                 case "$useperlio" in
3569                 "$define")      dflt='y' ;;
3570                 *)              dflt='n' ;;
3571                 esac
3572                 ;;
3573        *)       dflt='n';;
3574        esac
3575        ;;
3576 esac
3577 cat <<EOM
3578
3579 Perl can be built to take advantage of threads on some systems.
3580 To do so, Configure can be run with -Dusethreads.
3581
3582 Note that Perl built with threading support runs slightly slower
3583 and uses more memory than plain Perl. The current implementation
3584 is believed to be stable, but it is fairly new, and so should be
3585 treated with caution.
3586
3587 If this doesn't make any sense to you, just accept the default '$dflt'.
3588 EOM
3589 rp='Build a threading Perl?'
3590 . ./myread
3591 case "$ans" in
3592 y|Y)    val="$define" ;;
3593 *)      val="$undef" ;;
3594 esac
3595 set usethreads
3596 eval $setvar
3597
3598 case "$usethreads" in
3599 $define)
3600         $cat <<EOM
3601
3602 Since release 5.6, Perl has had two different threading implementations,
3603 the newer interpreter-based version (ithreads) with one interpreter per
3604 thread, and the older 5.005 version (5005threads).
3605 The 5005threads version is effectively unmaintained and will probably be
3606 removed in Perl 5.10, so there should be no need to build a Perl using it
3607 unless needed for backwards compatibility with some existing 5.005threads
3608 code.
3609
3610 EOM
3611         : Default to ithreads unless overridden on command line or with
3612         : old config.sh
3613         dflt='y'
3614         case "$use5005threads" in
3615                 $define|true|[yY]*) dflt='n';;
3616         esac
3617         case "$useithreads" in
3618                 $undef|false|[nN]*) dflt='n';;
3619         esac
3620         rp='Use the newer interpreter-based ithreads?'
3621         . ./myread
3622         case "$ans" in
3623         y|Y)    val="$define" ;;
3624         *)      val="$undef" ;;
3625         esac
3626         set useithreads
3627         eval $setvar
3628         : Now set use5005threads to the opposite value.
3629         case "$useithreads" in
3630         $define) val="$undef" ;;
3631         *) val="$define" ;;
3632         esac
3633         set use5005threads
3634         eval $setvar
3635         ;;
3636 *)
3637         useithreads="$undef"
3638         use5005threads="$undef"
3639         ;;
3640 esac
3641
3642 case "$useithreads$use5005threads" in
3643 "$define$define")
3644         $cat >&4 <<EOM
3645
3646 You cannot have both the ithreads and the 5.005 threads enabled
3647 at the same time.  Disabling the 5.005 threads since they are
3648 much less stable than the ithreads.
3649
3650 EOM
3651         use5005threads="$undef"
3652         ;;
3653 esac
3654
3655 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3656         cat >&4 <<EOF
3657 ***
3658 *** To build with ithreads you must also use the PerlIO layer.
3659 *** Cannot continue, aborting.
3660 ***
3661 EOF
3662         exit 1
3663 fi
3664
3665 case "$d_oldpthreads" in
3666 '')     : Configure tests would be welcome here.  For now, assume undef.
3667         val="$undef" ;;
3668 *)      val="$d_oldpthreads" ;;
3669 esac
3670 set d_oldpthreads
3671 eval $setvar
3672
3673
3674 case "$usethreads" in
3675 "$define"|true|[yY]*)
3676 : Look for a hint-file generated 'call-back-unit'.  If the
3677 : user has specified that a threading perl is to be built,
3678 : we may need to set or change some other defaults.
3679         if $test -f usethreads.cbu; then
3680                 echo "Your platform has some specific hints for threaded builds, using them..."
3681                 . ./usethreads.cbu
3682         else
3683                 $cat <<EOM
3684 (Your platform doesn't have any specific hints for threaded builds.
3685  Assuming POSIX threads, then.)
3686 EOM
3687         fi
3688         ;;
3689 esac
3690
3691 cat <<EOM
3692
3693 Perl can be built so that multiple Perl interpreters can coexist
3694 within the same Perl executable.
3695 EOM
3696
3697 case "$useithreads" in
3698 $define)
3699         cat <<EOM
3700 This multiple interpreter support is required for interpreter-based threads.
3701 EOM
3702         val="$define"
3703         ;;
3704 *)      case "$usemultiplicity" in
3705         $define|true|[yY]*)     dflt='y';;
3706         *) dflt='n';;
3707         esac
3708         echo " "
3709         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3710         rp='Build Perl for multiplicity?'
3711         . ./myread
3712         case "$ans" in
3713         y|Y)    val="$define" ;;
3714         *)      val="$undef" ;;
3715         esac
3716         ;;
3717 esac
3718 set usemultiplicity
3719 eval $setvar
3720
3721
3722 case "$usemorebits" in
3723 "$define"|true|[yY]*)
3724         use64bitint="$define"
3725         uselongdouble="$define"
3726         usemorebits="$define"
3727         ;;
3728 *)      usemorebits="$undef"
3729         ;;
3730 esac
3731
3732 : make some quick guesses about what we are up against
3733 echo " "
3734 $echo $n "Hmm...  $c"
3735 echo exit 1 >bsd
3736 echo exit 1 >usg
3737 echo exit 1 >v7
3738 echo exit 1 >osf1
3739 echo exit 1 >eunice
3740 echo exit 1 >xenix
3741 echo exit 1 >venix
3742 echo exit 1 >os2
3743 d_bsd="$undef"
3744 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3745 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3746 then
3747         echo "Looks kind of like an OSF/1 system, but we'll see..."
3748         echo exit 0 >osf1
3749 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3750         xxx=`./loc addbib blurfl $pth`
3751         if $test -f $xxx; then
3752         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3753                 echo exit 0 >bsd
3754                 echo exit 0 >usg
3755         else
3756                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3757                         echo "Looks kind of like an extended USG system, but we'll see..."
3758                 else
3759                         echo "Looks kind of like a USG system, but we'll see..."
3760                 fi
3761                 echo exit 0 >usg
3762         fi
3763 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3764         echo "Looks kind of like a BSD system, but we'll see..."
3765         d_bsd="$define"
3766         echo exit 0 >bsd
3767 else
3768         echo "Looks kind of like a Version 7 system, but we'll see..."
3769         echo exit 0 >v7
3770 fi
3771 case "$eunicefix" in
3772 *unixtovms*)
3773         $cat <<'EOI'
3774 There is, however, a strange, musty smell in the air that reminds me of
3775 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3776 EOI
3777         echo exit 0 >eunice
3778         d_eunice="$define"
3779 : it so happens the Eunice I know will not run shell scripts in Unix format
3780         ;;
3781 *)
3782         echo " "
3783         echo "Congratulations.  You aren't running Eunice."
3784         d_eunice="$undef"
3785         ;;
3786 esac
3787 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3788 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3789 : semicolon as a patch separator
3790 case "$p_" in
3791 :) ;;
3792 *)
3793         $cat <<'EOI'
3794 I have the feeling something is not exactly right, however...don't tell me...
3795 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3796 (Or you may be running DOS with DJGPP.)
3797 EOI
3798         echo exit 0 >os2
3799         ;;
3800 esac
3801 if test -f /xenix; then
3802         echo "Actually, this looks more like a XENIX system..."
3803         echo exit 0 >xenix
3804         d_xenix="$define"
3805 else
3806         echo " "
3807         echo "It's not Xenix..."
3808         d_xenix="$undef"
3809 fi
3810 chmod +x xenix
3811 $eunicefix xenix
3812 if test -f /venix; then
3813         echo "Actually, this looks more like a VENIX system..."
3814         echo exit 0 >venix
3815 else
3816         echo " "
3817         if ./xenix; then
3818                 : null
3819         else
3820                 echo "Nor is it Venix..."
3821         fi
3822 fi
3823 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3824 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3825 $rm -f foo
3826
3827 case "$cc" in
3828 '') dflt=cc;;
3829 *) dflt="$cc";;
3830 esac
3831 rp="Use which C compiler?"
3832 . ./myread
3833 cc="$ans"
3834
3835 : See if they have not cc but they do have gcc
3836 . ./trygcc
3837 : Look for a hint-file generated 'call-back-unit'.  Now that the
3838 : user has specified the compiler, we may need to set or change some
3839 : other defaults.
3840 if $test -f cc.cbu; then
3841     . ./cc.cbu
3842 fi
3843 . ./checkcc
3844
3845 echo " "
3846 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3847 $cat >try.c <<EOM
3848 #include <stdio.h>
3849 int main() {
3850 #ifdef __GNUC__
3851 #ifdef __VERSION__
3852         printf("%s\n", __VERSION__);
3853 #else
3854         printf("%s\n", "1");
3855 #endif
3856 #endif
3857         return(0);
3858 }
3859 EOM
3860 if $cc -o try $ccflags $ldflags try.c; then
3861         gccversion=`$run ./try`
3862         case "$gccversion" in
3863         '') echo "You are not using GNU cc." ;;
3864         *)  echo "You are using GNU cc $gccversion."
3865             ccname=gcc
3866             ;;
3867         esac
3868 else
3869         echo " "
3870         echo "*** WHOA THERE!!! ***" >&4
3871         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3872         case "$knowitall" in
3873         '')
3874         echo "    You'd better start hunting for one and let me know about it." >&4
3875                 exit 1
3876                 ;;
3877         esac
3878 fi
3879 $rm -f try try.*
3880 case "$gccversion" in
3881 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3882 esac
3883 case "$gccversion" in
3884 '') gccosandvers='' ;;
3885 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3886    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3887    gccshortvers=''
3888    case "$gccosandvers" in
3889    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3890    $osname$osvers) ;; # looking good
3891    $osname*) cat <<EOM >&4
3892
3893 *** WHOA THERE!!! ***
3894
3895     Your gcc has not been compiled for the exact release of
3896     your operating system ($gccosandvers versus $osname$osvers).
3897
3898     In general it is a good idea to keep gcc synchronized with
3899     the operating system because otherwise serious problems
3900     may ensue when trying to compile software, like Perl.
3901
3902     I'm trying to be optimistic here, though, and will continue.
3903     If later during the configuration and build icky compilation
3904     problems appear (headerfile conflicts being the most common
3905     manifestation), I suggest reinstalling the gcc to match
3906     your operating system release.
3907
3908 EOM
3909       ;;
3910    *) gccosandvers='' ;; # failed to parse, better be silent
3911    esac
3912    ;;
3913 esac
3914 case "$ccname" in
3915 '') ccname="$cc" ;;
3916 esac
3917
3918 # gcc 3.* complain about adding -Idirectories that they already know about,
3919 # so we will take those off from locincpth.
3920 case "$gccversion" in
3921 3*)
3922     echo "main(){}">try.c
3923     for incdir in $locincpth; do
3924        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3925              grep '^c[cp]p*[01]: warning: changing search order '`
3926        if test "X$warn" != X; then
3927            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3928        fi
3929     done
3930     $rm -f try try.*
3931 esac
3932
3933 : decide how portable to be.  Allow command line overrides.
3934 case "$d_portable" in
3935 "$undef") ;;
3936 *)      d_portable="$define" ;;
3937 esac
3938
3939 : set up shell script to do ~ expansion
3940 cat >filexp <<EOSS
3941 $startsh
3942 : expand filename
3943 case "\$1" in
3944  ~/*|~)
3945         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3946         ;;
3947  ~*)
3948         if $test -f /bin/csh; then
3949                 /bin/csh -f -c "glob \$1"
3950                 failed=\$?
3951                 echo ""
3952                 exit \$failed
3953         else
3954                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3955                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3956                 if $test ! -d "\$dir"; then
3957                         me=\`basename \$0\`
3958                         echo "\$me: can't locate home directory for: \$name" >&2
3959                         exit 1
3960                 fi
3961                 case "\$1" in
3962                 */*)
3963                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3964                         ;;
3965                 *)
3966                         echo \$dir
3967                         ;;
3968                 esac
3969         fi
3970         ;;
3971 *)
3972         echo \$1
3973         ;;
3974 esac
3975 EOSS
3976 chmod +x filexp
3977 $eunicefix filexp
3978
3979 : now set up to get a file name
3980 cat <<EOS >getfile
3981 $startsh
3982 EOS
3983 cat <<'EOSC' >>getfile
3984 tilde=''
3985 fullpath=''
3986 already=''
3987 skip=''
3988 none_ok=''
3989 exp_file=''
3990 nopath_ok=''
3991 orig_rp="$rp"
3992 orig_dflt="$dflt"
3993 case "$gfpth" in
3994 '') gfpth='.' ;;
3995 esac
3996
3997 case "$fn" in
3998 *\(*)
3999         : getfile will accept an answer from the comma-separated list
4000         : enclosed in parentheses even if it does not meet other criteria.
4001         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
4002         fn=`echo $fn | sed 's/(.*)//'`
4003         ;;
4004 esac
4005
4006 case "$fn" in
4007 *:*)
4008         loc_file=`expr $fn : '.*:\(.*\)'`
4009         fn=`expr $fn : '\(.*\):.*'`
4010         ;;
4011 esac
4012
4013 case "$fn" in
4014 *~*) tilde=true;;
4015 esac
4016 case "$fn" in
4017 */*) fullpath=true;;
4018 esac
4019 case "$fn" in
4020 *+*) skip=true;;
4021 esac
4022 case "$fn" in
4023 *n*) none_ok=true;;
4024 esac
4025 case "$fn" in
4026 *e*) exp_file=true;;
4027 esac
4028 case "$fn" in
4029 *p*) nopath_ok=true;;
4030 esac
4031
4032 case "$fn" in
4033 *f*) type='File';;
4034 *d*) type='Directory';;
4035 *l*) type='Locate';;
4036 esac
4037
4038 what="$type"
4039 case "$what" in
4040 Locate) what='File';;
4041 esac
4042
4043 case "$exp_file" in
4044 '')
4045         case "$d_portable" in
4046         "$define") ;;
4047         *) exp_file=true;;
4048         esac
4049         ;;
4050 esac
4051
4052 cd ..
4053 while test "$type"; do
4054         redo=''
4055         rp="$orig_rp"
4056         dflt="$orig_dflt"
4057         case "$tilde" in
4058         true) rp="$rp (~name ok)";;
4059         esac
4060         . UU/myread
4061         if test -f UU/getfile.ok && \
4062                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4063         then
4064                 value="$ans"
4065                 ansexp="$ans"
4066                 break
4067         fi
4068         case "$ans" in
4069         none)
4070                 value=''
4071                 ansexp=''
4072                 case "$none_ok" in
4073                 true) type='';;
4074                 esac
4075                 ;;
4076         *)
4077                 case "$tilde" in
4078                 '') value="$ans"
4079                         ansexp="$ans";;
4080                 *)
4081                         value=`UU/filexp $ans`
4082                         case $? in
4083                         0)
4084                                 if test "$ans" != "$value"; then
4085                                         echo "(That expands to $value on this system.)"
4086                                 fi
4087                                 ;;
4088                         *) value="$ans";;
4089                         esac
4090                         ansexp="$value"
4091                         case "$exp_file" in
4092                         '') value="$ans";;
4093                         esac
4094                         ;;
4095                 esac
4096                 case "$fullpath" in
4097                 true)
4098                         case "$ansexp" in
4099                         /*) value="$ansexp" ;;
4100                         [a-zA-Z]:/*) value="$ansexp" ;;
4101                         *)
4102                                 redo=true
4103                                 case "$already" in
4104                                 true)
4105                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4106                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4107                                         ;;
4108                                 *)
4109                                 echo "Please give a full path name, starting with slash." >&4
4110                                         case "$tilde" in
4111                                         true)
4112                                 echo "Note that using ~name is ok provided it expands well." >&4
4113                                                 already=true
4114                                                 ;;
4115                                         esac
4116                                 esac
4117                                 ;;
4118                         esac
4119                         ;;
4120                 esac
4121                 case "$redo" in
4122                 '')
4123                         case "$type" in
4124                         File)
4125                                 for fp in $gfpth; do
4126                                         if test "X$fp" = X.; then
4127                                             pf="$ansexp"
4128                                         else    
4129                                             pf="$fp/$ansexp"
4130                                         fi
4131                                         if test -f "$pf"; then
4132                                                 type=''
4133                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4134                                         then
4135                                                 echo "($value is not a plain file, but that's ok.)"
4136                                                 type=''
4137                                         fi
4138                                         if test X"$type" = X; then
4139                                             value="$pf"
4140                                             break
4141                                         fi
4142                                 done
4143                                 ;;
4144                         Directory)
4145                                 for fp in $gfpth; do
4146                                         if test "X$fp" = X.; then
4147                                             dir="$ans"
4148                                             direxp="$ansexp"
4149                                         else    
4150                                             dir="$fp/$ansexp"
4151                                             direxp="$fp/$ansexp"
4152                                         fi
4153                                         if test -d "$direxp"; then
4154                                                 type=''
4155                                                 value="$dir"
4156                                                 break
4157                                         fi
4158                                 done
4159                                 ;;
4160                         Locate)
4161                                 if test -d "$ansexp"; then
4162                                         echo "(Looking for $loc_file in directory $value.)"
4163                                         value="$value/$loc_file"
4164                                         ansexp="$ansexp/$loc_file"
4165                                 fi
4166                                 if test -f "$ansexp"; then
4167                                         type=''
4168                                 fi
4169                                 case "$nopath_ok" in
4170                                 true)   case "$value" in
4171                                         */*) ;;
4172                                         *)      echo "Assuming $value will be in people's path."
4173                                                 type=''
4174                                                 ;;
4175                                         esac
4176                                         ;;
4177                                 esac
4178                                 ;;
4179                         esac
4180
4181                         case "$skip" in
4182                         true) type='';
4183                         esac
4184
4185                         case "$type" in
4186                         '') ;;
4187                         *)
4188                                 if test "$fastread" = yes; then
4189                                         dflt=y
4190                                 else
4191                                         dflt=n
4192                                 fi
4193                                 rp="$what $value doesn't exist.  Use that name anyway?"
4194                                 . UU/myread
4195                                 dflt=''
4196                                 case "$ans" in
4197                                 y*) type='';;
4198                                 *) echo " ";;
4199                                 esac
4200                                 ;;
4201                         esac
4202                         ;;
4203                 esac
4204                 ;;
4205         esac
4206 done
4207 cd UU
4208 ans="$value"
4209 rp="$orig_rp"
4210 dflt="$orig_dflt"
4211 rm -f getfile.ok
4212 test "X$gfpthkeep" != Xy && gfpth=""
4213 EOSC
4214
4215 : What should the include directory be ?
4216 echo " "
4217 $echo $n "Hmm...  $c"
4218 dflt='/usr/include'
4219 incpath=''
4220 mips_type=''
4221 if $test -f /bin/mips && /bin/mips; then
4222         echo "Looks like a MIPS system..."
4223         $cat >usr.c <<'EOCP'
4224 #ifdef SYSTYPE_BSD43
4225 /bsd43
4226 #endif
4227 EOCP
4228         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4229                 dflt='/bsd43/usr/include'
4230                 incpath='/bsd43'
4231                 mips_type='BSD 4.3'
4232         else
4233                 mips_type='System V'
4234         fi
4235         $rm -f usr.c usr.out
4236         echo "and you're compiling with the $mips_type compiler and libraries."
4237         xxx_prompt=y
4238         echo "exit 0" >mips
4239 else
4240         echo "Doesn't look like a MIPS system."
4241         xxx_prompt=n
4242         echo "exit 1" >mips
4243 fi
4244 chmod +x mips
4245 $eunicefix mips
4246 case "$usrinc" in
4247 '') ;;
4248 *) dflt="$usrinc";;
4249 esac
4250 case "$xxx_prompt" in
4251 y)      fn=d/
4252         echo " "
4253         rp='Where are the include files you want to use?'
4254         . ./getfile
4255         usrinc="$ans"
4256         ;;
4257 *)      usrinc="$dflt"
4258         ;;
4259 esac
4260
4261 : see how we invoke the C preprocessor
4262 echo " "
4263 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4264 cat <<'EOT' >testcpp.c
4265 #define ABC abc
4266 #define XYZ xyz
4267 ABC.XYZ
4268 EOT
4269 cd ..
4270 if test ! -f cppstdin; then
4271         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4272                 # AIX cc -E doesn't show the absolute headerfile
4273                 # locations but we'll cheat by using the -M flag.
4274                 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
4275         else
4276                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4277         fi
4278 else
4279         echo "Keeping your $hint cppstdin wrapper."
4280 fi
4281 chmod 755 cppstdin
4282 wrapper=`pwd`/cppstdin
4283 ok='false'
4284 cd UU
4285
4286 if $test "X$cppstdin" != "X" && \
4287         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4288         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4289 then
4290         echo "You used to use $cppstdin $cppminus so we'll use that again."
4291         case "$cpprun" in
4292         '') echo "But let's see if we can live without a wrapper..." ;;
4293         *)
4294                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4295                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4296                 then
4297                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4298                         ok='true'
4299                 else
4300                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4301                 fi
4302                 ;;
4303         esac
4304 else
4305         case "$cppstdin" in
4306         '') ;;
4307         *)
4308                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4309                 ;;
4310         esac
4311 fi
4312
4313 if $ok; then
4314         : nothing
4315 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4316         $cc -E <testcpp.c >testcpp.out 2>&1; \
4317         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4318         echo "Yup, it does."
4319         x_cpp="$cc -E"
4320         x_minus='';
4321 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4322         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4323         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4324         echo "Yup, it does."
4325         x_cpp="$cc -E"
4326         x_minus='-';
4327 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4328         $cc -P <testcpp.c >testcpp.out 2>&1; \
4329         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4330         echo "Yipee, that works!"
4331         x_cpp="$cc -P"
4332         x_minus='';
4333 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4334         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4335         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4336         echo "At long last!"
4337         x_cpp="$cc -P"
4338         x_minus='-';
4339 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4340         $cpp <testcpp.c >testcpp.out 2>&1; \
4341         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4342         echo "It works!"
4343         x_cpp="$cpp"
4344         x_minus='';
4345 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4346         $cpp - <testcpp.c >testcpp.out 2>&1; \
4347         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4348         echo "Hooray, it works!  I was beginning to wonder."
4349         x_cpp="$cpp"
4350         x_minus='-';
4351 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4352         $wrapper <testcpp.c >testcpp.out 2>&1; \
4353         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4354         x_cpp="$wrapper"
4355         x_minus=''
4356         echo "Eureka!"
4357 else
4358         dflt=''
4359         rp="No dice.  I can't find a C preprocessor.  Name one:"
4360         . ./myread
4361         x_cpp="$ans"
4362         x_minus=''
4363         $x_cpp <testcpp.c >testcpp.out 2>&1
4364         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4365                 echo "OK, that will do." >&4
4366         else
4367 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4368                 exit 1
4369         fi
4370 fi
4371
4372 case "$ok" in
4373 false)
4374         cppstdin="$x_cpp"
4375         cppminus="$x_minus"
4376         cpprun="$x_cpp"
4377         cpplast="$x_minus"
4378         set X $x_cpp
4379         shift
4380         case "$1" in
4381         "$cpp")
4382                 echo "Perhaps can we force $cc -E using a wrapper..."
4383                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4384                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4385                 then
4386                         echo "Yup, we can."
4387                         cppstdin="$wrapper"
4388                         cppminus='';
4389                 else
4390                         echo "Nope, we'll have to live without it..."
4391                 fi
4392                 ;;
4393         esac
4394         case "$cpprun" in
4395         "$wrapper")
4396                 cpprun=''
4397                 cpplast=''
4398                 ;;
4399         esac
4400         ;;
4401 esac
4402
4403 case "$cppstdin" in
4404 "$wrapper"|'cppstdin') ;;
4405 *) $rm -f $wrapper;;
4406 esac
4407 $rm -f testcpp.c testcpp.out
4408
4409 : Set private lib path
4410 case "$plibpth" in
4411 '') if ./mips; then
4412                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4413         fi;;
4414 esac
4415 case "$libpth" in
4416 ' ') dlist='';;
4417 '') dlist="$loclibpth $plibpth $glibpth";;
4418 *) dlist="$libpth";;
4419 esac
4420
4421 : Now check and see which directories actually exist, avoiding duplicates
4422 libpth=''
4423 for xxx in $dlist
4424 do
4425     if $test -d $xxx; then
4426                 case " $libpth " in
4427                 *" $xxx "*) ;;
4428                 *) libpth="$libpth $xxx";;
4429                 esac
4430     fi
4431 done
4432 $cat <<'EOM'
4433
4434 Some systems have incompatible or broken versions of libraries.  Among
4435 the directories listed in the question below, please remove any you
4436 know not to be holding relevant libraries, and add any that are needed.
4437 Say "none" for none.
4438
4439 EOM
4440 case "$libpth" in
4441 '') dflt='none';;
4442 *)
4443         set X $libpth
4444         shift
4445         dflt=${1+"$@"}
4446         ;;
4447 esac
4448 rp="Directories to use for library searches?"
4449 . ./myread
4450 case "$ans" in
4451 none) libpth=' ';;
4452 *) libpth="$ans";;
4453 esac
4454
4455 : compute shared library extension
4456 case "$so" in
4457 '')
4458         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4459                 dflt='sl'
4460         else
4461                 dflt='so'
4462         fi
4463         ;;
4464 *) dflt="$so";;
4465 esac
4466 $cat <<EOM
4467
4468 On some systems, shared libraries may be available.  Answer 'none' if
4469 you want to suppress searching of shared libraries for the remainder
4470 of this configuration.
4471
4472 EOM
4473 rp='What is the file extension used for shared libraries?'
4474 . ./myread
4475 so="$ans"
4476
4477 : Define several unixisms.
4478 : Hints files or command line option can be used to override them.
4479 : The convoluted testing is in case hints files set either the old
4480 : or the new name.
4481 case "$_exe" in
4482 '')     case "$exe_ext" in
4483         '')     ;;
4484         *)      _exe="$exe_ext" ;;
4485         esac
4486         ;;
4487 esac
4488 case "$_a" in
4489 '')     case "$lib_ext" in
4490     '') _a='.a';;
4491         *)      _a="$lib_ext" ;;
4492         esac
4493         ;;
4494 esac
4495 case "$_o" in
4496 '') case "$obj_ext" in
4497         '')     _o='.o';;
4498         *)      _o="$obj_ext";;
4499         esac
4500         ;;
4501 esac
4502 case "$p_" in
4503 '') case "$path_sep" in
4504         '')     p_=':';;
4505         *)      p_="$path_sep";;
4506         esac
4507         ;;
4508 esac
4509 exe_ext=$_exe
4510 lib_ext=$_a
4511 obj_ext=$_o
4512 path_sep=$p_
4513
4514 : Which makefile gets called first.  This is used by make depend.
4515 case "$firstmakefile" in
4516 '') firstmakefile='makefile';;
4517 esac
4518
4519 case "$ccflags" in
4520 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4521 esac
4522
4523 case "$uselongdouble" in
4524 $define|true|[yY]*)     dflt='y';;
4525 *) dflt='n';;
4526 esac
4527 cat <<EOM
4528
4529 Perl can be built to take advantage of long doubles which
4530 (if available) may give more accuracy and range for floating point numbers.
4531
4532 If this doesn't make any sense to you, just accept the default '$dflt'.
4533 EOM
4534 rp='Try to use long doubles if available?'
4535 . ./myread
4536 case "$ans" in
4537 y|Y)    val="$define"   ;;
4538 *)      val="$undef"    ;;
4539 esac
4540 set uselongdouble
4541 eval $setvar
4542
4543 case "$uselongdouble" in
4544 true|[yY]*) uselongdouble="$define" ;;
4545 esac
4546
4547 case "$uselongdouble" in
4548 $define)
4549 : Look for a hint-file generated 'call-back-unit'.  If the
4550 : user has specified that long doubles should be used,
4551 : we may need to set or change some other defaults.
4552         if $test -f uselongdouble.cbu; then
4553                 echo "Your platform has some specific hints for long doubles, using them..."
4554                 . ./uselongdouble.cbu
4555         else
4556                 $cat <<EOM
4557 (Your platform doesn't have any specific hints for long doubles.)
4558 EOM
4559         fi
4560         ;;
4561 esac
4562
4563 : Looking for optional libraries
4564 echo " "
4565 echo "Checking for optional libraries..." >&4
4566 case "$libs" in
4567 ' '|'') dflt='';;
4568 *) dflt="$libs";;
4569 esac
4570 case "$libswanted" in
4571 '') libswanted='c_s';;
4572 esac
4573 case "$usesocks" in
4574 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4575 esac
4576 libsfound=''
4577 libsfiles=''
4578 libsdirs=''
4579 libspath=''
4580 for thisdir in $libpth $xlibpth; do
4581   test -d $thisdir && libspath="$libspath $thisdir"
4582 done
4583 for thislib in $libswanted; do
4584         for thisdir in $libspath; do
4585             xxx=''
4586             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4587                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4588                 $test -f "$xxx" && eval $libscheck
4589                 $test -f "$xxx" && libstyle=shared
4590             fi
4591             if test ! -f "$xxx"; then
4592                 xxx=$thisdir/lib$thislib.$so
4593                 $test -f "$xxx" && eval $libscheck
4594                 $test -f "$xxx" && libstyle=shared
4595             fi  
4596             if test ! -f "$xxx"; then
4597                 xxx=$thisdir/lib$thislib$_a
4598                 $test -f "$xxx" && eval $libscheck
4599                 $test -f "$xxx" && libstyle=static
4600             fi
4601             if test ! -f "$xxx"; then
4602                 xxx=$thisdir/$thislib$_a
4603                 $test -f "$xxx" && eval $libscheck
4604                 $test -f "$xxx" && libstyle=static
4605             fi
4606             if test ! -f "$xxx"; then
4607                 xxx=$thisdir/lib${thislib}_s$_a
4608                 $test -f "$xxx" && eval $libscheck
4609                 $test -f "$xxx" && libstyle=static
4610                 $test -f "$xxx" && thislib=${thislib}_s
4611             fi
4612             if test ! -f "$xxx"; then
4613                 xxx=$thisdir/Slib$thislib$_a
4614                 $test -f "$xxx" && eval $libscheck
4615                 $test -f "$xxx" && libstyle=static
4616             fi
4617             if $test -f "$xxx"; then
4618                 case "$libstyle" in
4619                 shared) echo "Found -l$thislib (shared)." ;;
4620                 static) echo "Found -l$thislib." ;;
4621                 *)      echo "Found -l$thislib ($libstyle)." ;;
4622                 esac
4623                 case " $dflt " in
4624                 *"-l$thislib "*);;
4625                 *) dflt="$dflt -l$thislib"
4626                    libsfound="$libsfound $xxx"
4627                    yyy=`basename $xxx`
4628                    libsfiles="$libsfiles $yyy"
4629                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4630                    case " $libsdirs " in
4631                    *" $yyy "*) ;;
4632                    *) libsdirs="$libsdirs $yyy" ;;
4633                    esac
4634                    ;;
4635                 esac
4636                 break
4637             fi  
4638         done
4639         if $test ! -f "$xxx"; then
4640             echo "No -l$thislib."
4641         fi
4642 done
4643 set X $dflt
4644 shift
4645 dflt="$*"
4646 case "$libs" in
4647 '') dflt="$dflt";;
4648 *) dflt="$libs";;
4649 esac
4650 case "$dflt" in
4651 ' '|'') dflt='none';;
4652 esac
4653
4654 $cat <<EOM
4655
4656 In order to compile $package on your machine, a number of libraries
4657 are usually needed.  Include any other special libraries here as well.
4658 Say "none" for none.  The default list is almost always right.
4659 EOM
4660
4661 echo " "
4662 rp="What libraries to use?"
4663 . ./myread
4664 case "$ans" in
4665 none) libs=' ';;
4666 *) libs="$ans";;
4667 esac
4668
4669 : determine optimization, if desired, or use for debug flag also
4670 case "$optimize" in
4671 ' '|$undef) dflt='none';;
4672 '') dflt='-O';;
4673 *) dflt="$optimize";;
4674 esac
4675 $cat <<EOH
4676
4677 By default, $package compiles with the -O flag to use the optimizer.
4678 Alternately, you might want to use the symbolic debugger, which uses
4679 the -g flag (on traditional Unix systems).  Either flag can be
4680 specified here.  To use neither flag, specify the word "none".
4681
4682 EOH
4683 rp="What optimizer/debugger flag should be used?"
4684 . ./myread
4685 optimize="$ans"
4686 case "$optimize" in
4687 'none') optimize=" ";;
4688 esac
4689
4690 dflt=''
4691 : We will not override a previous value, but we might want to
4692 : augment a hint file
4693 case "$hint" in
4694 default|recommended)
4695         case "$gccversion" in
4696         1*) dflt='-fpcc-struct-return' ;;
4697         esac
4698         case "$optimize" in
4699         *-g*) dflt="$dflt -DDEBUGGING";;
4700         esac
4701         case "$gccversion" in
4702         2*) if test -d /etc/conf/kconfig.d &&
4703                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4704                 then
4705                         dflt="$dflt -posix"
4706                 fi
4707                 ;;
4708         esac
4709         case "$gccversion" in
4710         1*) ;;
4711         2.[0-8]*) ;;
4712         ?*)     echo " "
4713                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4714                 echo 'int main(void) { return 0; }' > gcctest.c
4715                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4716                         echo "Yes, it does." 2>&1
4717                         case "$ccflags" in
4718                         *strict-aliasing*) 
4719                                 echo "Leaving current flags $ccflags alone." 2>&1
4720                                 ;;
4721                         *) dflt="$dflt -fno-strict-aliasing" ;;
4722                         esac
4723                 else
4724                         echo "Nope, it doesn't, but that's ok." 2>&1
4725                 fi
4726                 ;;
4727         esac
4728         ;;
4729 esac
4730
4731 case "$mips_type" in
4732 *BSD*|'') inclwanted="$locincpth $usrinc";;
4733 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4734 esac
4735 for thisincl in $inclwanted; do
4736         if $test -d $thisincl; then
4737                 if $test x$thisincl != x$usrinc; then
4738                         case "$dflt" in
4739                         *" -I$thisincl "*);;
4740                         *) dflt="$dflt -I$thisincl ";;
4741                         esac
4742                 fi
4743         fi
4744 done
4745
4746 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4747         xxx=true;
4748 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4749         xxx=true;
4750 else
4751         xxx=false;
4752 fi;
4753 if $xxx; then
4754         case "$dflt" in
4755         *$2*);;
4756         *) dflt="$dflt -D$2";;
4757         esac;
4758 fi'
4759
4760 set signal.h LANGUAGE_C; eval $inctest
4761
4762 case "$usesocks" in
4763 $define)
4764         ccflags="$ccflags -DSOCKS"
4765         ;;
4766 esac
4767
4768 case "$hint" in
4769 default|recommended) dflt="$ccflags $dflt" ;;
4770 *) dflt="$ccflags";;
4771 esac
4772
4773 case "$dflt" in
4774 ''|' ') dflt=none;;
4775 esac
4776
4777 $cat <<EOH
4778
4779 Your C compiler may want other flags.  For this question you should include
4780 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4781 but you should NOT include libraries or ld flags like -lwhatever.  If you
4782 want $package to honor its debug switch, you should include -DDEBUGGING here.
4783 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4784
4785 To use no flags, specify the word "none".
4786
4787 EOH
4788 set X $dflt
4789 shift
4790 dflt=${1+"$@"}
4791 rp="Any additional cc flags?"
4792 . ./myread
4793 case "$ans" in
4794 none) ccflags='';;
4795 *) ccflags="$ans";;
4796 esac
4797
4798 : the following weeds options from ccflags that are of no interest to cpp
4799 case "$cppflags" in
4800 '') cppflags="$ccflags" ;;
4801 *)  cppflags="$cppflags $ccflags" ;;
4802 esac
4803 case "$gccversion" in
4804 1*) cppflags="$cppflags -D__GNUC__"
4805 esac
4806 case "$mips_type" in
4807 '');;
4808 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4809 esac
4810 case "$cppflags" in
4811 '');;
4812 *)
4813         echo " "
4814         echo "Let me guess what the preprocessor flags are..." >&4
4815         set X $cppflags
4816         shift
4817         cppflags=''
4818         $cat >cpp.c <<'EOM'
4819 #define BLURFL foo
4820
4821 BLURFL xx LFRULB
4822 EOM
4823         previous=''
4824         for flag in $*
4825         do
4826                 case "$flag" in
4827                 -*) ftry="$flag";;
4828                 *) ftry="$previous $flag";;
4829                 esac
4830                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4831                         >cpp1.out 2>/dev/null && \
4832                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4833                         >cpp2.out 2>/dev/null && \
4834                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4835                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4836                 then
4837                         cppflags="$cppflags $ftry"
4838                         previous=''
4839                 else
4840                         previous="$flag"
4841                 fi
4842         done
4843         set X $cppflags
4844         shift
4845         cppflags=${1+"$@"}
4846         case "$cppflags" in
4847         *-*)  echo "They appear to be: $cppflags";;
4848         esac
4849         $rm -f cpp.c cpp?.out
4850         ;;
4851 esac
4852
4853 : flags used in final linking phase
4854 case "$ldflags" in
4855 '') if ./venix; then
4856                 dflt='-i -z'
4857         else
4858                 dflt=''
4859         fi
4860         case "$ccflags" in
4861         *-posix*) dflt="$dflt -posix" ;;
4862         esac
4863         ;;
4864 *) dflt="$ldflags";;
4865 esac
4866
4867 : Try to guess additional flags to pick up local libraries.
4868 for thislibdir in $libpth; do
4869         case " $loclibpth " in
4870         *" $thislibdir "*)
4871                 case "$dflt " in 
4872                 *"-L$thislibdir "*) ;;
4873                 *)  dflt="$dflt -L$thislibdir" ;;
4874                 esac
4875                 ;;
4876         esac
4877 done
4878
4879 case "$dflt" in
4880 '') dflt='none' ;;
4881 esac
4882
4883 $cat <<EOH
4884
4885 Your C linker may need flags.  For this question you should
4886 include -L/whatever and any other flags used by the C linker, but you
4887 should NOT include libraries like -lwhatever.
4888
4889 Make sure you include the appropriate -L/path flags if your C linker
4890 does not normally search all of the directories you specified above,
4891 namely
4892         $libpth
4893 To use no flags, specify the word "none".
4894
4895 EOH
4896
4897 rp="Any additional ld flags (NOT including libraries)?"
4898 . ./myread
4899 case "$ans" in
4900 none) ldflags='';;
4901 *) ldflags="$ans";;
4902 esac
4903 rmlist="$rmlist pdp11"
4904
4905 : coherency check
4906 echo " "
4907 echo "Checking your choice of C compiler and flags for coherency..." >&4
4908 $cat > try.c <<'EOF'
4909 #include <stdio.h>
4910 int main() { printf("Ok\n"); return(0); }
4911 EOF
4912 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4913 shift
4914 $cat >try.msg <<'EOM'
4915 I've tried to compile and run the following simple program:
4916
4917 EOM
4918 $cat try.c >> try.msg
4919
4920 $cat >> try.msg <<EOM
4921
4922 I used the command:
4923
4924         $*
4925         $run ./try
4926
4927 and I got the following output:
4928
4929 EOM
4930 dflt=y
4931 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4932         if $sh -c "$run ./try" >>try.msg 2>&1; then
4933                 xxx=`$run ./try`
4934                 case "$xxx" in
4935                 "Ok") dflt=n ;;
4936                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4937                         case " $libs " in
4938                         *" -lsfio "*)
4939                                 cat >> try.msg <<'EOQS'
4940 If $libs contains -lsfio, and sfio is mis-configured, then it
4941 sometimes (apparently) runs and exits with a 0 status, but with no
4942 output!  It may have to do with sfio's use of _exit vs. exit.
4943
4944 EOQS
4945                                 rp="You have a big problem.  Shall I abort Configure"
4946                                 dflt=y
4947                                 ;;
4948                         esac
4949                         ;;
4950                 esac
4951         else
4952                 echo "The program compiled OK, but exited with status $?." >>try.msg
4953                 rp="You have a problem.  Shall I abort Configure"
4954                 dflt=y
4955         fi
4956 else
4957         echo "I can't compile the test program." >>try.msg
4958         rp="You have a BIG problem.  Shall I abort Configure"
4959         dflt=y
4960 fi
4961 case "$dflt" in
4962 y)
4963         $cat try.msg >&4
4964         case "$knowitall" in
4965         '')
4966                 echo "(The supplied flags or libraries might be incorrect.)"
4967                 ;;
4968         *) dflt=n;;
4969         esac
4970         echo " "
4971         . ./myread
4972         case "$ans" in
4973         n*|N*) ;;
4974         *)      echo "Ok.  Stopping Configure." >&4
4975                 exit 1
4976                 ;;
4977         esac
4978         ;;
4979 n) echo "OK, that should do.";;
4980 esac
4981 $rm -f try try.* core
4982
4983 : define a shorthand compile call
4984 compile='
4985 mc_file=$1;
4986 shift;
4987 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4988 : define a shorthand compile call for compilations that should be ok.
4989 compile_ok='
4990 mc_file=$1;
4991 shift;
4992 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4993
4994 : determine filename position in cpp output
4995 echo " "
4996 echo "Computing filename position in cpp output for #include directives..." >&4
4997 case "$osname" in
4998 vos) testaccess=-e ;;
4999 *)   testaccess=-r ;;
5000 esac
5001 echo '#include <stdio.h>' > foo.c
5002 $cat >fieldn <<EOF
5003 $startsh
5004 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5005 $grep '^[       ]*#.*stdio\.h' | \
5006 while read cline; do
5007         pos=1
5008         set \$cline
5009         while $test \$# -gt 0; do
5010                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5011                         echo "\$pos"
5012                         exit 0
5013                 fi
5014                 shift
5015                 pos=\`expr \$pos + 1\`
5016         done
5017 done
5018 EOF
5019 chmod +x fieldn
5020 fieldn=`./fieldn`
5021 $rm -f foo.c fieldn
5022 case $fieldn in
5023 '') pos='???';;
5024 1) pos=first;;
5025 2) pos=second;;
5026 3) pos=third;;
5027 *) pos="${fieldn}th";;
5028 esac
5029 echo "Your cpp writes the filename in the $pos field of the line."
5030
5031 case "$osname" in
5032 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5033 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5034 *)   cppfilter='' ;;
5035 esac
5036 : locate header file
5037 $cat >findhdr <<EOF
5038 $startsh
5039 wanted=\$1
5040 name=''
5041 for usrincdir in $usrinc
5042 do
5043         if test -f \$usrincdir/\$wanted; then
5044                 echo "\$usrincdir/\$wanted"
5045                 exit 0
5046         fi
5047 done
5048 awkprg='{ print \$$fieldn }'
5049 echo "#include <\$wanted>" > foo\$\$.c
5050 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5051 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5052 while read cline; do
5053         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5054         case "\$name" in
5055         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5056         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5057         *) exit 2;;
5058         esac;
5059 done;
5060 #
5061 # status = 0: grep returned 0 lines, case statement not executed
5062 # status = 1: headerfile found
5063 # status = 2: while loop executed, no headerfile found
5064 #
5065 status=\$?
5066 $rm -f foo\$\$.c;
5067 if test \$status -eq 1; then
5068         exit 0;
5069 fi
5070 exit 1
5071 EOF
5072 chmod +x findhdr
5073
5074 : define an alternate in-header-list? function
5075 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5076 cont=true; xxf="echo \"<\$1> found.\" >&4";
5077 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5078 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5079 esac;
5080 case $# in 4) instead=instead;; *) instead="at last";; esac;
5081 while $test "$cont"; do
5082         xxx=`./findhdr $1`
5083         var=$2; eval "was=\$$2";
5084         if $test "$xxx" && $test -r "$xxx";
5085         then eval $xxf;
5086         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5087                 cont="";
5088         else eval $xxnf;
5089         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5090         set $yyy; shift; shift; yyy=$@;
5091         case $# in 0) cont="";;
5092         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5093                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5094         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5095                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5096         esac;
5097 done;
5098 while $test "$yyy";
5099 do set $yyy; var=$2; eval "was=\$$2";
5100         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5101         set $yyy; shift; shift; yyy=$@;
5102 done'
5103
5104 : see if stdlib is available
5105 set stdlib.h i_stdlib
5106 eval $inhdr
5107
5108 : check for lengths of integral types
5109 echo " "
5110 case "$intsize" in
5111 '')
5112         echo "Checking to see how big your integers are..." >&4
5113         $cat >try.c <<EOCP
5114 #include <stdio.h>
5115 #$i_stdlib I_STDLIB
5116 #ifdef I_STDLIB
5117 #include <stdlib.h>
5118 #endif
5119 int main()
5120 {
5121         printf("intsize=%d;\n", (int)sizeof(int));
5122         printf("longsize=%d;\n", (int)sizeof(long));
5123         printf("shortsize=%d;\n", (int)sizeof(short));
5124         exit(0);
5125 }
5126 EOCP
5127         set try
5128         if eval $compile_ok && $run ./try > /dev/null; then
5129                 eval `$run ./try`
5130                 echo "Your integers are $intsize bytes long."
5131                 echo "Your long integers are $longsize bytes long."
5132                 echo "Your short integers are $shortsize bytes long."
5133         else
5134                 $cat >&4 <<EOM
5135 !
5136 Help! I can't compile and run the intsize test program: please enlighten me!
5137 (This is probably a misconfiguration in your system or libraries, and
5138 you really ought to fix it.  Still, I'll try anyway.)
5139 !
5140 EOM
5141                 dflt=4
5142                 rp="What is the size of an integer (in bytes)?"
5143                 . ./myread
5144                 intsize="$ans"
5145                 dflt=$intsize
5146                 rp="What is the size of a long integer (in bytes)?"
5147                 . ./myread
5148                 longsize="$ans"
5149                 dflt=2
5150                 rp="What is the size of a short integer (in bytes)?"
5151                 . ./myread
5152                 shortsize="$ans"
5153         fi
5154         ;;
5155 esac
5156 $rm -f try try.*
5157
5158 : check for long long
5159 echo " "
5160 echo "Checking to see if you have long long..." >&4
5161 echo 'int main() { long long x = 7; return 0; }' > try.c
5162 set try
5163 if eval $compile; then
5164         val="$define"
5165         echo "You have long long."
5166 else
5167         val="$undef"
5168         echo "You do not have long long."
5169 fi
5170 $rm try.*
5171 set d_longlong
5172 eval $setvar
5173
5174 : check for length of long long
5175 case "${d_longlong}${longlongsize}" in
5176 $define)
5177         echo " "
5178         echo "Checking to see how big your long longs are..." >&4
5179         $cat >try.c <<'EOCP'
5180 #include <stdio.h>
5181 int main()
5182 {
5183     printf("%d\n", (int)sizeof(long long));
5184     return(0);
5185 }
5186 EOCP
5187         set try
5188         if eval $compile_ok; then
5189                 longlongsize=`$run ./try`
5190                 echo "Your long longs are $longlongsize bytes long."
5191         else
5192                 dflt='8'
5193                 echo " "
5194                 echo "(I can't seem to compile the test program.  Guessing...)"
5195                 rp="What is the size of a long long (in bytes)?"
5196                 . ./myread
5197                 longlongsize="$ans"
5198         fi
5199         if $test "X$longsize" = "X$longlongsize"; then
5200                 echo "(That isn't any different from an ordinary long.)"
5201         fi      
5202         ;;
5203 esac
5204 $rm -f try.* try
5205
5206 : see if inttypes.h is available
5207 : we want a real compile instead of Inhdr because some systems
5208 : have an inttypes.h which includes non-existent headers
5209 echo " "
5210 $cat >try.c <<EOCP
5211 #include <inttypes.h>
5212 int main() {
5213         static int32_t foo32 = 0x12345678;
5214 }
5215 EOCP
5216 set try
5217 if eval $compile; then
5218         echo "<inttypes.h> found." >&4
5219         val="$define"
5220 else
5221         echo "<inttypes.h> NOT found." >&4
5222         val="$undef"
5223 fi
5224 $rm -f try.c try
5225 set i_inttypes
5226 eval $setvar
5227
5228 : check for int64_t
5229 echo " "
5230 echo "Checking to see if you have int64_t..." >&4
5231 $cat >try.c <<EOCP
5232 #include <sys/types.h>
5233 #$i_inttypes I_INTTYPES
5234 #ifdef I_INTTYPES
5235 #include <inttypes.h>
5236 #endif
5237 int main() { int64_t x = 7; }
5238 EOCP
5239 set try
5240 if eval $compile; then
5241         val="$define"
5242         echo "You have int64_t."
5243 else
5244         val="$undef"
5245         echo "You do not have int64_t."
5246 fi
5247 $rm -f try try.*
5248 set d_int64_t
5249 eval $setvar
5250
5251
5252 echo " "
5253 echo "Checking which 64-bit integer type we could use..." >&4
5254
5255 case "$intsize" in
5256 8) val=int
5257    set quadtype
5258    eval $setvar
5259    val='"unsigned int"'
5260    set uquadtype
5261    eval $setvar
5262    quadkind=1
5263    ;;
5264 *) case "$longsize" in
5265    8) val=long
5266       set quadtype
5267       eval $setvar
5268       val='"unsigned long"'
5269       set uquadtype
5270       eval $setvar
5271       quadkind=2
5272       ;;
5273    *) case "$d_longlong:$longlongsize" in
5274       define:8)
5275         val='"long long"'
5276         set quadtype
5277         eval $setvar
5278         val='"unsigned long long"'
5279         set uquadtype
5280         eval $setvar
5281         quadkind=3
5282         ;;
5283       *) case "$d_int64_t" in
5284          define)
5285            val=int64_t
5286            set quadtype
5287            eval $setvar
5288            val=uint64_t
5289            set uquadtype
5290            eval $setvar
5291            quadkind=4
5292            ;;
5293          esac
5294          ;;
5295       esac
5296       ;;
5297    esac
5298    ;;
5299 esac
5300
5301 case "$quadtype" in
5302 '')     echo "Alas, no 64-bit integer types in sight." >&4
5303         d_quad="$undef"
5304         ;;
5305 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5306         d_quad="$define"
5307         ;;
5308 esac
5309
5310
5311 case "$uselonglong" in
5312 "$define"|true|[yY]*)
5313         cat <<EOM >&4
5314
5315 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5316 EOM
5317         use64bitint="$define"
5318         ;;
5319 esac                          
5320 case "$use64bits" in
5321 "$define"|true|[yY]*)
5322         cat <<EOM >&4
5323
5324 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5325 EOM
5326         use64bitint="$define"
5327         ;;
5328 esac                          
5329 case "$use64bitints" in
5330 "$define"|true|[yY]*)
5331         cat <<EOM >&4
5332
5333 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5334 EOM
5335         use64bitint="$define"
5336         ;;
5337 esac                          
5338 case "$use64bitsint" in
5339 "$define"|true|[yY]*)
5340         cat <<EOM >&4
5341
5342 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5343 EOM
5344         use64bitint="$define"
5345         ;;
5346 esac                          
5347 case "$uselonglongs" in
5348 "$define"|true|[yY]*)
5349         cat <<EOM >&4
5350
5351 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5352 EOM
5353         use64bitint="$define"
5354         ;;
5355 esac                          
5356 case "$use64bitsall" in
5357 "$define"|true|[yY]*)
5358         cat <<EOM >&4
5359
5360 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5361 EOM
5362         use64bitall="$define"
5363         ;;
5364 esac                          
5365
5366 case "$ccflags" in
5367 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5368 esac
5369 case "$use64bitall" in
5370 "$define"|true|[yY]*) use64bitint="$define" ;;
5371 esac
5372
5373 case "$longsize" in
5374 8) cat <<EOM
5375
5376 You have natively 64-bit long integers.
5377 EOM
5378    val="$define"
5379    ;;
5380 *) case "$use64bitint" in
5381    "$define"|true|[yY]*) dflt='y';;
5382    *) dflt='n';;
5383    esac
5384    case "$d_quad" in
5385    "$define") ;;
5386    *) dflt='n' ;;
5387    esac
5388    cat <<EOM
5389
5390 Perl can be built to take advantage of 64-bit integer types
5391 on some systems.  To do so, Configure can be run with -Duse64bitint.
5392 Choosing this option will most probably introduce binary incompatibilities.
5393
5394 If this doesn't make any sense to you, just accept the default '$dflt'.
5395 (The default has been chosen based on your configuration.)
5396 EOM
5397    rp='Try to use 64-bit integers, if available?'
5398    . ./myread
5399    case "$ans" in
5400    [yY]*) val="$define" ;;
5401    *)     val="$undef"  ;;
5402    esac
5403    ;;
5404 esac
5405 set use64bitint
5406 eval $setvar
5407
5408 case "$use64bitall" in
5409 "$define"|true|[yY]*) dflt='y' ;;
5410 *) case "$longsize" in
5411    8) dflt='y' ;;
5412    *) dflt='n' ;;
5413    esac
5414    ;;
5415 esac    
5416 cat <<EOM
5417
5418 You may also choose to try maximal 64-bitness.  It means using as much
5419 64-bitness as possible on the platform.  This in turn means even more
5420 binary incompatibilities.  On the other hand, your platform may not
5421 have any more 64-bitness available than what you already have chosen.
5422
5423 If this doesn't make any sense to you, just accept the default '$dflt'.
5424 (The default has been chosen based on your configuration.)
5425 EOM
5426 rp='Try to use maximal 64-bit support, if available?'
5427 . ./myread
5428 case "$ans" in
5429 [yY]*) val="$define" ;;
5430 *)     val="$undef"  ;;
5431 esac
5432 set use64bitall
5433 eval $setvar
5434 case "$use64bitall" in
5435 "$define")
5436         case "$use64bitint" in
5437         "$undef")
5438                 cat <<EOM
5439
5440 Since you have chosen a maximally 64-bit build, I'm also turning on
5441 the use of 64-bit integers.
5442 EOM
5443                 use64bitint="$define" ;;
5444         esac
5445         ;;
5446 esac
5447
5448 case "$use64bitint" in
5449 "$define"|true|[yY]*)
5450 : Look for a hint-file generated 'call-back-unit'.  If the
5451 : user has specified that a 64-bit perl is to be built,
5452 : we may need to set or change some other defaults.
5453         if $test -f use64bitint.cbu; then
5454                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5455                 . ./use64bitint.cbu
5456         fi
5457         case "$longsize" in
5458         4) case "$archname64" in
5459            '') archname64=64int ;;
5460            esac
5461            ;;
5462         esac
5463         ;;
5464 esac
5465
5466 case "$use64bitall" in
5467 "$define"|true|[yY]*)
5468 : Look for a hint-file generated 'call-back-unit'.  If the
5469 : user has specified that a maximally 64-bit perl is to be built,
5470 : we may need to set or change some other defaults.
5471         if $test -f use64bitall.cbu; then
5472                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5473                 . ./use64bitall.cbu
5474         fi
5475         case "$longsize" in
5476         4) case "$archname64" in
5477            ''|64int) archname64=64all ;;
5478            esac
5479            ;;
5480         esac
5481         ;;
5482 esac
5483
5484 : check for length of double
5485 echo " "
5486 case "$doublesize" in
5487 '')
5488         echo "Checking to see how big your double precision numbers are..." >&4
5489         $cat >try.c <<EOCP
5490 #include <stdio.h>
5491 #$i_stdlib I_STDLIB
5492 #ifdef I_STDLIB
5493 #include <stdlib.h>
5494 #endif
5495 int main()
5496 {
5497     printf("%d\n", (int)sizeof(double));
5498     exit(0);
5499 }
5500 EOCP
5501         set try
5502         if eval $compile_ok; then
5503                 doublesize=`$run ./try`
5504                 echo "Your double is $doublesize bytes long."
5505         else
5506                 dflt='8'
5507                 echo "(I can't seem to compile the test program.  Guessing...)"
5508                 rp="What is the size of a double precision number (in bytes)?"
5509                 . ./myread
5510                 doublesize="$ans"
5511         fi
5512         ;;
5513 esac
5514 $rm -f try.c try
5515
5516 : check for long doubles
5517 echo " "
5518 echo "Checking to see if you have long double..." >&4
5519 echo 'int main() { long double x = 7.0; }' > try.c
5520 set try
5521 if eval $compile; then
5522         val="$define"
5523         echo "You have long double."
5524 else
5525         val="$undef"
5526         echo "You do not have long double."
5527 fi
5528 $rm try.*
5529 set d_longdbl
5530 eval $setvar
5531
5532 : check for length of long double
5533 case "${d_longdbl}${longdblsize}" in
5534 $define)
5535         echo " "
5536         echo "Checking to see how big your long doubles are..." >&4
5537         $cat >try.c <<'EOCP'
5538 #include <stdio.h>
5539 int main()
5540 {
5541         printf("%d\n", sizeof(long double));
5542 }
5543 EOCP
5544         set try
5545         set try
5546         if eval $compile; then
5547                 longdblsize=`$run ./try`
5548                 echo "Your long doubles are $longdblsize bytes long."
5549         else
5550                 dflt='8'
5551                 echo " "
5552                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5553                 rp="What is the size of a long double (in bytes)?"
5554                 . ./myread
5555                 longdblsize="$ans"
5556         fi
5557         if $test "X$doublesize" = "X$longdblsize"; then
5558                 echo "(That isn't any different from an ordinary double.)"
5559         fi      
5560         ;;
5561 esac
5562 $rm -f try.* try
5563
5564 : determine the architecture name
5565 echo " "
5566 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5567         tarch=`arch`"-$osname"
5568 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5569         if uname -m > tmparch 2>&1 ; then
5570                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5571                         -e 's/$/'"-$osname/" tmparch`
5572         else
5573                 tarch="$osname"
5574         fi
5575         $rm -f tmparch
5576 else
5577         tarch="$osname"
5578 fi
5579 case "$myarchname" in
5580 ''|"$tarch") ;;
5581 *)
5582         echo "(Your architecture name used to be $myarchname.)"
5583         archname=''
5584         ;;
5585 esac
5586 case "$targetarch" in
5587 '') ;;
5588 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5589 esac
5590 myarchname="$tarch"
5591 case "$archname" in
5592 '') dflt="$tarch";;
5593 *) dflt="$archname";;
5594 esac
5595 rp='What is your architecture name'
5596 . ./myread
5597 archname="$ans"
5598 case "$usethreads" in
5599 $define)
5600         echo "Threads selected." >&4
5601         case "$archname" in
5602         *-thread*) echo "...and architecture name already has -thread." >&4
5603                 ;;
5604         *)      archname="$archname-thread"
5605                 echo "...setting architecture name to $archname." >&4
5606                 ;;
5607         esac
5608         ;;
5609 esac
5610 case "$usemultiplicity" in
5611 $define)
5612         echo "Multiplicity selected." >&4
5613         case "$archname" in
5614         *-multi*) echo "...and architecture name already has -multi." >&4
5615                 ;;
5616         *)      archname="$archname-multi"
5617                 echo "...setting architecture name to $archname." >&4
5618                 ;;
5619         esac
5620         ;;
5621 esac
5622 case "$use64bitint$use64bitall" in
5623 *"$define"*)
5624         case "$archname64" in
5625         '')
5626                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5627                 ;;
5628         *)
5629                 case "$use64bitint" in
5630                 "$define") echo "64 bit integers selected." >&4 ;;
5631                 esac
5632                 case "$use64bitall" in
5633                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5634                 esac
5635                 case "$archname" in
5636                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5637                         ;;
5638                 *)      archname="$archname-$archname64"
5639                         echo "...setting architecture name to $archname." >&4
5640                         ;;
5641                 esac
5642                 ;;
5643         esac
5644 esac
5645 case "$uselongdouble" in
5646 $define)
5647         echo "Long doubles selected." >&4
5648         case "$longdblsize" in
5649         $doublesize)
5650                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5651                 ;;
5652         *)
5653                 case "$archname" in
5654                 *-ld*) echo "...and architecture name already has -ld." >&4
5655                         ;;
5656                 *)      archname="$archname-ld"
5657                         echo "...setting architecture name to $archname." >&4
5658                         ;;
5659                 esac
5660                 ;;
5661         esac
5662         ;;
5663 esac
5664 case "$useperlio" in
5665 $define)
5666         echo "Perlio selected." >&4
5667         ;;
5668 *)
5669         echo "Perlio not selected, using stdio." >&4
5670         case "$archname" in
5671         *-stdio*) echo "...and architecture name already has -stdio." >&4
5672                 ;;
5673         *)      archname="$archname-stdio"
5674                 echo "...setting architecture name to $archname." >&4
5675                 ;;
5676         esac
5677         ;;
5678 esac
5679
5680 : determine root of directory hierarchy where package will be installed.
5681 case "$prefix" in
5682 '')
5683         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5684         ;;
5685 *?/)
5686         dflt=`echo "$prefix" | sed 's/.$//'`
5687         ;;
5688 *)
5689         dflt="$prefix"
5690         ;;
5691 esac
5692 $cat <<EOM
5693
5694 By default, $package will be installed in $dflt/bin, manual pages
5695 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5696 installation directories. Typically this is something like /usr/local.
5697 If you wish to have binaries under /usr/bin but other parts of the
5698 installation under /usr/local, that's ok: you will be prompted
5699 separately for each of the installation directories, the prefix being
5700 only used to set the defaults.
5701
5702 EOM
5703 fn=d~
5704 rp='Installation prefix to use?'
5705 . ./getfile
5706 oldprefix=''
5707 case "$prefix" in
5708 '') ;;
5709 *)
5710         case "$ans" in
5711         "$prefix") ;;
5712         *) oldprefix="$prefix";;
5713         esac
5714         ;;
5715 esac
5716 prefix="$ans"
5717 prefixexp="$ansexp"
5718
5719 case "$afsroot" in
5720 '')     afsroot=/afs ;;
5721 *)      afsroot=$afsroot ;;
5722 esac
5723
5724 : is AFS running?
5725 echo " "
5726 case "$afs" in
5727 $define|true)   afs=true ;;
5728 $undef|false)   afs=false ;;
5729 *)      if test -d $afsroot; then
5730                 afs=true
5731         else
5732                 afs=false
5733         fi
5734         ;;
5735 esac
5736 if $afs; then
5737         echo "AFS may be running... I'll be extra cautious then..." >&4
5738 else
5739         echo "AFS does not seem to be running..." >&4
5740 fi
5741
5742 : determine installation prefix for where package is to be installed.
5743 if $afs; then 
5744 $cat <<EOM
5745
5746 Since you are running AFS, I need to distinguish the directory in which
5747 files will reside from the directory in which they are installed (and from
5748 which they are presumably copied to the former directory by occult means).
5749
5750 EOM
5751         case "$installprefix" in
5752         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5753         *) dflt="$installprefix";;
5754         esac
5755 else
5756 $cat <<EOM
5757
5758 In some special cases, particularly when building $package for distribution,
5759 it is convenient to distinguish the directory in which files should be
5760 installed from the directory ($prefix) in which they will
5761 eventually reside.  For most users, these two directories are the same.
5762
5763 EOM
5764         case "$installprefix" in
5765         '') dflt=$prefix ;;
5766         *) dflt=$installprefix;;
5767         esac
5768 fi
5769 fn=d~
5770 rp='What installation prefix should I use for installing files?'
5771 . ./getfile
5772 installprefix="$ans"
5773 installprefixexp="$ansexp"
5774
5775 : set the prefixit variable, to compute a suitable default value
5776 prefixit='case "$3" in
5777 ""|none)
5778         case "$oldprefix" in
5779         "") eval "$1=\"\$$2\"";;
5780         *)
5781                 case "$3" in
5782                 "") eval "$1=";;
5783                 none)
5784                         eval "tp=\"\$$2\"";
5785                         case "$tp" in
5786                         ""|" ") eval "$1=\"\$$2\"";;
5787                         *) eval "$1=";;
5788                         esac;;
5789                 esac;;
5790         esac;;
5791 *)
5792         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5793         case "$tp" in
5794         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5795         /*-$oldprefix/*|\~*-$oldprefix/*)
5796                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5797         *) eval "$1=\"\$$2\"";;
5798         esac;;
5799 esac'
5800
5801 : get the patchlevel
5802 echo " "
5803 echo "Getting the current patchlevel..." >&4
5804 if $test -r $rsrc/patchlevel.h;then
5805         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5806         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5807         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5808         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5809         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5810         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5811        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5812 else
5813         revision=0
5814         patchlevel=0
5815         subversion=0
5816         api_revision=0
5817         api_version=0
5818         api_subversion=0
5819         perl_patchlevel=0
5820         $echo "(You do not have patchlevel.h.  Eek.)"
5821 fi
5822 if $test -r $rsrc/.patch ; then  
5823         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5824                 perl_patchlevel=`cat $rsrc/.patch`
5825         fi
5826 fi
5827 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5828 version_patchlevel_string="version $patchlevel subversion $subversion"
5829 case "$perl_patchlevel" in
5830 0|'') ;;
5831 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5832 esac
5833
5834 $echo "(You have $package $version_patchlevel_string.)"
5835
5836 case "$osname" in
5837 dos|vms)
5838         : XXX Should be a Configure test for double-dots in filenames.
5839         version=`echo $revision $patchlevel $subversion | \
5840                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5841         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5842                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5843         ;;
5844 *)
5845         version=`echo $revision $patchlevel $subversion | \
5846                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5847         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5848                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5849         ;;
5850 esac
5851 : Special case the 5.005_xx maintenance series, which used 5.005
5852 : without any subversion label as a subdirectory in $sitelib
5853 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5854         api_versionstring='5.005'
5855 fi
5856
5857 : determine installation style
5858 : For now, try to deduce it from prefix unless it is already set.
5859 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5860 case "$installstyle" in
5861 '')     case "$prefix" in
5862                 *perl*) dflt='lib';;
5863                 *) dflt='lib/perl5' ;;
5864         esac
5865         ;;
5866 *)      dflt="$installstyle" ;;
5867 esac
5868 : Probably not worth prompting for this since we prompt for all
5869 : the directories individually, and the prompt would be too long and
5870 : confusing anyway.
5871 installstyle=$dflt
5872
5873 : determine where private library files go
5874 : Usual default is /usr/local/lib/perl5/$version.
5875 : Also allow things like /opt/perl/lib/$version, since 
5876 : /opt/perl/lib/perl5... would be redundant.
5877 : The default "style" setting is made in installstyle.U
5878 case "$installstyle" in
5879 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5880 *)       set dflt privlib lib/$version ;;
5881 esac
5882 eval $prefixit
5883 $cat <<EOM
5884
5885 There are some auxiliary files for $package that need to be put into a
5886 private library directory that is accessible by everyone.
5887
5888 EOM
5889 fn=d~+
5890 rp='Pathname where the private library files will reside?'
5891 . ./getfile
5892 privlib="$ans"
5893 privlibexp="$ansexp"
5894 : Change installation prefix, if necessary.
5895 if $test X"$prefix" != X"$installprefix"; then
5896         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5897 else
5898         installprivlib="$privlibexp"
5899 fi
5900
5901 : set the prefixup variable, to restore leading tilda escape
5902 prefixup='case "$prefixexp" in
5903 "$prefix") ;;
5904 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5905 esac'
5906
5907 : determine where public architecture dependent libraries go
5908 set archlib archlib
5909 eval $prefixit
5910 : privlib default is /usr/local/lib/$package/$version
5911 : archlib default is /usr/local/lib/$package/$version/$archname
5912 : privlib may have an optional trailing /share.
5913 tdflt=`echo $privlib | $sed 's,/share$,,'`
5914 tdflt=$tdflt/$archname
5915 case "$archlib" in
5916 '')     dflt=$tdflt
5917         ;;
5918 *)      dflt="$archlib"
5919     ;;
5920 esac
5921 $cat <<EOM
5922
5923 $spackage contains architecture-dependent library files.  If you are
5924 sharing libraries in a heterogeneous environment, you might store
5925 these files in a separate location.  Otherwise, you can just include
5926 them with the rest of the public library files.
5927
5928 EOM
5929 fn=d+~
5930 rp='Where do you want to put the public architecture-dependent libraries?'
5931 . ./getfile
5932 archlib="$ans"
5933 archlibexp="$ansexp"
5934 if $test X"$archlib" = X"$privlib"; then
5935         d_archlib="$undef"
5936 else
5937         d_archlib="$define"
5938 fi
5939 : Change installation prefix, if necessary.
5940 if $test X"$prefix" != X"$installprefix"; then
5941         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5942 else
5943         installarchlib="$archlibexp"
5944 fi
5945
5946 : see if setuid scripts can be secure
5947 $cat <<EOM
5948
5949 Some kernels have a bug that prevents setuid #! scripts from being
5950 secure.  Some sites have disabled setuid #! scripts because of this.
5951
5952 First let's decide if your kernel supports secure setuid #! scripts.
5953 (If setuid #! scripts would be secure but have been disabled anyway,
5954 don't say that they are secure if asked.)
5955
5956 EOM
5957
5958 val="$undef"
5959 if $test -d /dev/fd; then
5960         echo "#!$ls" >reflect
5961         chmod +x,u+s reflect
5962         ./reflect >flect 2>&1
5963         if $contains "/dev/fd" flect >/dev/null; then
5964                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5965                 val="$define"
5966         else
5967                 $cat <<EOM
5968 If you are not sure if they are secure, I can check but I'll need a
5969 username and password different from the one you are using right now.
5970 If you don't have such a username or don't want me to test, simply
5971 enter 'none'.
5972
5973 EOM
5974                 rp='Other username to test security of setuid scripts with?'
5975                 dflt='none'
5976                 . ./myread
5977                 case "$ans" in
5978                 n|none)
5979                         case "$d_suidsafe" in
5980                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5981                                 dflt=n;;
5982                         "$undef")
5983                                 echo "Well, the $hint value is *not* secure." >&4
5984                                 dflt=n;;
5985                         *)      echo "Well, the $hint value *is* secure." >&4
5986                                 dflt=y;;
5987                         esac
5988                         ;;
5989                 *)
5990                         $rm -f reflect flect
5991                         echo "#!$ls" >reflect
5992                         chmod +x,u+s reflect
5993                         echo >flect
5994                         chmod a+w flect
5995                         echo '"su" will (probably) prompt you for '"$ans's password."
5996                         su $ans -c './reflect >flect'
5997                         if $contains "/dev/fd" flect >/dev/null; then
5998                                 echo "Okay, it looks like setuid scripts are secure." >&4
5999                                 dflt=y
6000                         else
6001                                 echo "I don't think setuid scripts are secure." >&4
6002                                 dflt=n
6003                         fi
6004                         ;;
6005                 esac
6006                 rp='Does your kernel have *secure* setuid scripts?'
6007                 . ./myread
6008                 case "$ans" in
6009                 [yY]*)  val="$define";;
6010                 *)      val="$undef";;
6011                 esac
6012         fi
6013 else
6014         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6015         echo "(That's for file descriptors, not floppy disks.)"
6016         val="$undef"
6017 fi
6018 set d_suidsafe
6019 eval $setvar
6020
6021 $rm -f reflect flect
6022
6023 : now see if they want to do setuid emulation
6024 echo " "
6025 val="$undef"
6026 case "$d_suidsafe" in
6027 "$define")
6028         val="$undef"
6029         echo "No need to emulate SUID scripts since they are secure here." >&4
6030         ;;
6031 *)
6032         $cat <<EOM
6033 Some systems have disabled setuid scripts, especially systems where
6034 setuid scripts cannot be secure.  On systems where setuid scripts have
6035 been disabled, the setuid/setgid bits on scripts are currently
6036 useless.  It is possible for $package to detect those bits and emulate
6037 setuid/setgid in a secure fashion.  This emulation will only work if
6038 setuid scripts have been disabled in your kernel.
6039
6040 EOM
6041         case "$d_dosuid" in
6042         "$define") dflt=y ;;
6043         *) dflt=n ;;
6044         esac
6045         rp="Do you want to do setuid/setgid emulation?"
6046         . ./myread
6047         case "$ans" in
6048         [yY]*)  val="$define";;
6049         *)      val="$undef";;
6050         esac
6051         ;;
6052 esac
6053 set d_dosuid
6054 eval $setvar
6055
6056 : see if this is a malloc.h system
6057 : we want a real compile instead of Inhdr because some systems have a
6058 : malloc.h that just gives a compile error saying to use stdlib.h instead
6059 echo " "
6060 $cat >try.c <<EOCP
6061 #include <stdlib.h>
6062 #include <malloc.h>
6063 int main () { return 0; }
6064 EOCP
6065 set try
6066 if eval $compile; then
6067     echo "<malloc.h> found." >&4
6068     val="$define"
6069 else
6070     echo "<malloc.h> NOT found." >&4
6071     val="$undef"
6072 fi
6073 $rm -f try.c try
6074 set i_malloc
6075 eval $setvar
6076
6077 : check for void type
6078 echo " "
6079 echo "Checking to see how well your C compiler groks the void type..." >&4
6080 case "$voidflags" in
6081 '')
6082         $cat >try.c <<EOCP
6083 #$i_stdlib I_STDLIB
6084 #ifdef I_STDLIB
6085 #include <stdlib.h>
6086 #endif
6087 #if TRY & 1
6088 void sub() {
6089 #else
6090 sub() {
6091 #endif
6092         extern void moo();      /* function returning void */
6093         void (*goo)();          /* ptr to func returning void */
6094 #if TRY & 8
6095         void *hue;              /* generic ptr */
6096 #endif
6097 #if TRY & 2
6098         void (*foo[10])();
6099 #endif
6100
6101 #if TRY & 4
6102         if(goo == moo) {
6103                 exit(0);
6104         }
6105 #endif
6106         exit(0);
6107 }
6108 int main() { sub(); }
6109 EOCP
6110         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6111                 voidflags=$defvoidused
6112         echo "Good.  It appears to support void to the level $package wants.">&4
6113                 if $contains warning .out >/dev/null 2>&1; then
6114                         echo "However, you might get some warnings that look like this:"
6115                         $cat .out
6116                 fi
6117         else
6118 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6119                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6120                         echo "It supports 1..."
6121                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6122                                 echo "It also supports 2..."
6123                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6124                                         voidflags=7
6125                                         echo "And it supports 4 but not 8 definitely."
6126                                 else
6127                                         echo "It doesn't support 4..."
6128                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6129                                                 voidflags=11
6130                                                 echo "But it supports 8."
6131                                         else
6132                                                 voidflags=3
6133                                                 echo "Neither does it support 8."
6134                                         fi
6135                                 fi
6136                         else
6137                                 echo "It does not support 2..."
6138                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6139                                         voidflags=13
6140                                         echo "But it supports 4 and 8."
6141                                 else
6142                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6143                                                 voidflags=5
6144                                                 echo "And it supports 4 but has not heard about 8."
6145                                         else
6146                                                 echo "However it supports 8 but not 4."
6147                                         fi
6148                                 fi
6149                         fi
6150                 else
6151                         echo "There is no support at all for void."
6152                         voidflags=0
6153                 fi
6154         fi
6155 esac
6156 case "$voidflags" in
6157 "$defvoidused") ;;
6158 *)      $cat >&4 <<'EOM'
6159   Support flag bits are:
6160     1: basic void declarations.
6161     2: arrays of pointers to functions returning void.
6162     4: operations between pointers to and addresses of void functions.
6163     8: generic void pointers.
6164 EOM
6165         dflt="$voidflags";
6166         rp="Your void support flags add up to what?"
6167         . ./myread
6168         voidflags="$ans"
6169         ;;
6170 esac
6171 $rm -f try.* .out
6172
6173 : check for length of pointer
6174 echo " "
6175 case "$ptrsize" in
6176 '')
6177         echo "Checking to see how big your pointers are..." >&4
6178         if test "$voidflags" -gt 7; then
6179                 echo '#define VOID_PTR char *' > try.c
6180         else
6181                 echo '#define VOID_PTR void *' > try.c
6182         fi
6183         $cat >>try.c <<EOCP
6184 #include <stdio.h>
6185 #$i_stdlib I_STDLIB
6186 #ifdef I_STDLIB
6187 #include <stdlib.h>
6188 #endif
6189 int main()
6190 {
6191     printf("%d\n", (int)sizeof(VOID_PTR));
6192     exit(0);
6193 }
6194 EOCP
6195         set try
6196         if eval $compile_ok; then
6197                 ptrsize=`$run ./try`
6198                 echo "Your pointers are $ptrsize bytes long."
6199         else
6200                 dflt='4'
6201                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6202                 rp="What is the size of a pointer (in bytes)?"
6203                 . ./myread
6204                 ptrsize="$ans"
6205         fi
6206         ;;
6207 esac
6208 $rm -f try.c try
6209 case "$use64bitall" in
6210 "$define"|true|[yY]*)
6211         case "$ptrsize" in
6212         4)      cat <<EOM >&4
6213
6214 *** You have chosen a maximally 64-bit build, but your pointers
6215 *** are only 4 bytes wide, disabling maximal 64-bitness.
6216
6217 EOM
6218                 use64bitall="$undef"
6219                 case "$use64bitint" in
6220                 "$define"|true|[yY]*) ;;
6221                 *)      cat <<EOM >&4
6222
6223 *** Downgrading from maximal 64-bitness to using 64-bit integers.
6224
6225 EOM
6226                         use64bitint="$define"
6227                         ;;
6228                 esac
6229                 ;;
6230         esac
6231         ;;
6232 esac
6233
6234
6235 : determine which malloc to compile in
6236 echo " "
6237 case "$usemymalloc" in
6238 [yY]*|true|$define)     dflt='y' ;;
6239 [nN]*|false|$undef)     dflt='n' ;;
6240 *)      case "$ptrsize" in
6241         4) dflt='y' ;;
6242         *) dflt='n' ;;
6243         esac
6244         ;;
6245 esac
6246 rp="Do you wish to attempt to use the malloc that comes with $package?"
6247 . ./myread
6248 usemymalloc="$ans"
6249 case "$ans" in
6250 y*|true)
6251         usemymalloc='y'
6252         mallocsrc='malloc.c'
6253         mallocobj="malloc$_o"
6254         d_mymalloc="$define"
6255         case "$libs" in
6256         *-lmalloc*)
6257                 : Remove malloc from list of libraries to use
6258                 echo "Removing unneeded -lmalloc from library list" >&4
6259                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6260                 shift
6261                 libs="$*"
6262                 echo "libs = $libs" >&4
6263                 ;;
6264         esac
6265         ;;
6266 *)
6267         usemymalloc='n'
6268         mallocsrc=''
6269         mallocobj=''
6270         d_mymalloc="$undef"
6271         ;;
6272 esac
6273
6274 : compute the return types of malloc and free
6275 echo " "
6276 $cat >malloc.c <<END
6277 #$i_malloc I_MALLOC
6278 #$i_stdlib I_STDLIB
6279 #include <stdio.h>
6280 #include <sys/types.h>
6281 #ifdef I_MALLOC
6282 #include <malloc.h>
6283 #endif
6284 #ifdef I_STDLIB
6285 #include <stdlib.h>
6286 #endif
6287 #ifdef TRY_MALLOC
6288 void *malloc();
6289 #endif
6290 #ifdef TRY_FREE
6291 void free();
6292 #endif
6293 END
6294 case "$malloctype" in
6295 '')
6296         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6297                 malloctype='void *'
6298         else
6299                 malloctype='char *'
6300         fi
6301         ;;
6302 esac
6303 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6304
6305 case "$freetype" in
6306 '')
6307         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6308                 freetype='void'
6309         else
6310                 freetype='int'
6311         fi
6312         ;;
6313 esac
6314 echo "Your system uses $freetype free(), it would seem." >&4
6315 $rm -f malloc.[co]
6316 $cat <<EOM
6317
6318 After $package is installed, you may wish to install various
6319 add-on modules and utilities.  Typically, these add-ons will
6320 be installed under $prefix with the rest
6321 of this package.  However, you may wish to install such add-ons
6322 elsewhere under a different prefix.
6323
6324 If you do not wish to put everything under a single prefix, that's
6325 ok.  You will be prompted for the individual locations; this siteprefix
6326 is only used to suggest the defaults.
6327
6328 The default should be fine for most people.
6329
6330 EOM
6331 fn=d~+
6332 rp='Installation prefix to use for add-on modules and utilities?'
6333 : XXX Here might be another good place for an installstyle setting.
6334 case "$siteprefix" in
6335 '') dflt=$prefix ;;
6336 *)  dflt=$siteprefix ;;
6337 esac
6338 . ./getfile
6339 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6340 oldsiteprefix=''
6341 case "$siteprefix" in
6342 '') ;;
6343 *)      case "$ans" in
6344         "$prefix") ;;
6345         *) oldsiteprefix="$prefix";;
6346         esac
6347         ;;
6348 esac
6349 siteprefix="$ans"
6350 siteprefixexp="$ansexp"
6351
6352 : determine where site specific libraries go.
6353 : Usual default is /usr/local/lib/perl5/site_perl/$version
6354 : The default "style" setting is made in installstyle.U
6355 : XXX No longer works with Prefixit stuff.
6356 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6357 case "$sitelib" in
6358 '') case "$installstyle" in
6359         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6360         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6361         esac
6362         ;;
6363 *)      dflt="$sitelib"
6364         ;;
6365 esac
6366 $cat <<EOM
6367
6368 The installation process will create a directory for
6369 site-specific extensions and modules.  Most users find it convenient
6370 to place all site-specific files in this directory rather than in the
6371 main distribution directory.
6372
6373 EOM
6374 fn=d~+
6375 rp='Pathname for the site-specific library files?'
6376 . ./getfile
6377 sitelib="$ans"
6378 sitelibexp="$ansexp"
6379 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6380 : Change installation prefix, if necessary.
6381 if $test X"$prefix" != X"$installprefix"; then
6382         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6383 else
6384         installsitelib="$sitelibexp"
6385 fi
6386
6387 : determine where site specific architecture-dependent libraries go.
6388 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6389 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6390 : sitelib may have an optional trailing /share.
6391 case "$sitearch" in
6392 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6393         dflt="$dflt/$archname"
6394         ;;
6395 *)      dflt="$sitearch"
6396         ;;
6397 esac
6398 set sitearch sitearch none
6399 eval $prefixit
6400 $cat <<EOM
6401
6402 The installation process will also create a directory for
6403 architecture-dependent site-specific extensions and modules.
6404
6405 EOM
6406 fn=d~+
6407 rp='Pathname for the site-specific architecture-dependent library files?'
6408 . ./getfile
6409 sitearch="$ans"
6410 sitearchexp="$ansexp"
6411 : Change installation prefix, if necessary.
6412 if $test X"$prefix" != X"$installprefix"; then
6413         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6414 else
6415         installsitearch="$sitearchexp"
6416 fi
6417
6418 $cat <<EOM
6419
6420 The installation process will also create a directory for
6421 vendor-supplied add-ons.  Vendors who supply perl with their system
6422 may find it convenient to place all vendor-supplied files in this
6423 directory rather than in the main distribution directory.  This will
6424 ease upgrades between binary-compatible maintenance versions of perl.
6425
6426 Of course you may also use these directories in whatever way you see
6427 fit.  For example, you might use them to access modules shared over a
6428 company-wide network.
6429
6430 The default answer should be fine for most people.
6431 This causes further questions about vendor add-ons to be skipped
6432 and no vendor-specific directories will be configured for perl.
6433
6434 EOM
6435 rp='Do you want to configure vendor-specific add-on directories?'
6436 case "$usevendorprefix" in
6437 define|true|[yY]*) dflt=y ;;
6438 *)      : User may have set vendorprefix directly on Configure command line.
6439         case "$vendorprefix" in
6440         ''|' ') dflt=n ;;
6441         *)      dflt=y ;;
6442         esac
6443         ;;
6444 esac
6445 . ./myread
6446 case "$ans" in
6447 [yY]*)  fn=d~+
6448         rp='Installation prefix to use for vendor-supplied add-ons?'
6449         case "$vendorprefix" in
6450         '') dflt='' ;;
6451         *)  dflt=$vendorprefix ;;
6452         esac
6453         . ./getfile
6454         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6455         oldvendorprefix=''
6456         case "$vendorprefix" in
6457         '') ;;
6458         *)      case "$ans" in
6459                 "$prefix") ;;
6460                 *) oldvendorprefix="$prefix";;
6461                 esac
6462                 ;;
6463         esac
6464         usevendorprefix="$define"
6465         vendorprefix="$ans"
6466         vendorprefixexp="$ansexp"
6467         ;;
6468 *)      usevendorprefix="$undef"
6469         vendorprefix=''
6470         vendorprefixexp=''
6471         ;;
6472 esac
6473
6474 case "$vendorprefix" in
6475 '')     d_vendorlib="$undef"
6476         vendorlib=''
6477         vendorlibexp=''
6478         ;;
6479 *)      d_vendorlib="$define"
6480         : determine where vendor-supplied modules go.
6481         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6482         case "$vendorlib" in
6483         '')
6484                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6485                 case "$installstyle" in
6486                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6487                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6488                 esac
6489                 ;;
6490         *)      dflt="$vendorlib"
6491                 ;;
6492         esac
6493         fn=d~+
6494         rp='Pathname for the vendor-supplied library files?'
6495         . ./getfile
6496         vendorlib="$ans"
6497         vendorlibexp="$ansexp"
6498         ;;
6499 esac
6500 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6501 : Change installation prefix, if necessary.
6502 if $test X"$prefix" != X"$installprefix"; then
6503         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6504 else
6505         installvendorlib="$vendorlibexp"
6506 fi
6507
6508 case "$vendorprefix" in
6509 '')     d_vendorarch="$undef"
6510         vendorarch=''
6511         vendorarchexp=''
6512         ;;
6513 *)      d_vendorarch="$define"
6514         : determine where vendor-supplied architecture-dependent libraries go.
6515         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6516         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6517         : vendorlib may have an optional trailing /share.
6518         case "$vendorarch" in
6519         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6520                 dflt="$dflt/$archname"
6521                 ;;
6522         *)      dflt="$vendorarch" ;;
6523         esac
6524         fn=d~+
6525         rp='Pathname for vendor-supplied architecture-dependent files?'
6526         . ./getfile
6527         vendorarch="$ans"
6528         vendorarchexp="$ansexp"
6529         ;;
6530 esac
6531 : Change installation prefix, if necessary.
6532 if $test X"$prefix" != X"$installprefix"; then
6533         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6534 else
6535         installvendorarch="$vendorarchexp"
6536 fi
6537
6538 : Final catch-all directories to search
6539 $cat <<EOM
6540
6541 Lastly, you can have perl look in other directories for extensions and
6542 modules in addition to those already specified.
6543 These directories will be searched after 
6544         $sitearch 
6545         $sitelib 
6546 EOM
6547 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6548 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6549 echo ' '
6550 case "$otherlibdirs" in
6551 ''|' ') dflt='none' ;;
6552 *)      dflt="$otherlibdirs" ;;
6553 esac
6554 $cat <<EOM
6555 Enter a colon-separated set of extra paths to include in perl's @INC
6556 search path, or enter 'none' for no extra paths.
6557
6558 EOM
6559
6560 rp='Colon-separated list of additional directories for perl to search?'
6561 . ./myread
6562 case "$ans" in
6563 ' '|''|none)    otherlibdirs=' ' ;;     
6564 *)      otherlibdirs="$ans" ;;
6565 esac
6566 case "$otherlibdirs" in
6567 ' ') val=$undef ;;
6568 *)      val=$define ;;
6569 esac
6570 set d_perl_otherlibdirs
6571 eval $setvar
6572
6573 : Cruising for prototypes
6574 echo " "
6575 echo "Checking out function prototypes..." >&4
6576 $cat >prototype.c <<EOCP
6577 #$i_stdlib I_STDLIB
6578 #ifdef I_STDLIB
6579 #include <stdlib.h>
6580 #endif
6581 int main(int argc, char *argv[]) {
6582         exit(0);}
6583 EOCP
6584 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6585         echo "Your C compiler appears to support function prototypes."
6586         val="$define"
6587 else
6588         echo "Your C compiler doesn't seem to understand function prototypes."
6589         val="$undef"
6590 fi
6591 set prototype
6592 eval $setvar
6593 $rm -f prototype*
6594
6595 case "$prototype" in
6596 "$define") ;;
6597 *)      ansi2knr='ansi2knr'
6598         echo " "
6599         cat <<EOM >&4
6600
6601 $me:  FATAL ERROR:
6602 This version of $package can only be compiled by a compiler that 
6603 understands function prototypes.  Unfortunately, your C compiler 
6604         $cc $ccflags
6605 doesn't seem to understand them.  Sorry about that.
6606
6607 If GNU cc is available for your system, perhaps you could try that instead.  
6608
6609 Eventually, we hope to support building Perl with pre-ANSI compilers.
6610 If you would like to help in that effort, please contact <perlbug@perl.org>.
6611
6612 Aborting Configure now.
6613 EOM
6614         exit 2
6615         ;;
6616 esac
6617
6618 : determine where public executables go
6619 echo " "
6620 set dflt bin bin
6621 eval $prefixit
6622 fn=d~
6623 rp='Pathname where the public executables will reside?'
6624 . ./getfile
6625 if $test "X$ansexp" != "X$binexp"; then
6626         installbin=''
6627 fi
6628 bin="$ans"
6629 binexp="$ansexp"
6630 : Change installation prefix, if necessary.
6631 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6632 if $test X"$prefix" != X"$installprefix"; then
6633         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6634 else
6635         installbin="$binexp"
6636 fi
6637
6638 echo " "
6639 case "$extras" in
6640 '') dflt='n';;
6641 *) dflt='y';;
6642 esac
6643 cat <<EOM
6644 Perl can be built with extra modules or bundles of modules which
6645 will be fetched from the CPAN and installed alongside Perl.
6646
6647 Notice that you will need access to the CPAN; either via the Internet,
6648 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6649 be asked later to configure the CPAN.pm module which will in turn do
6650 the installation of the rest of the extra modules or bundles.)
6651
6652 Notice also that if the modules require any external software such as
6653 libraries and headers (the libz library and the zlib.h header for the
6654 Compress::Zlib module, for example) you MUST have any such software
6655 already installed, this configuration process will NOT install such
6656 things for you.
6657
6658 If this doesn't make any sense to you, just accept the default '$dflt'.
6659 EOM
6660 rp='Install any extra modules (y or n)?'
6661 . ./myread
6662 case "$ans" in
6663 y|Y)
6664         cat <<EOM
6665
6666 Please list any extra modules or bundles to be installed from CPAN,
6667 with spaces between the names.  The names can be in any format the
6668 'install' command of CPAN.pm will understand.  (Answer 'none',
6669 without the quotes, to install no extra modules or bundles.)
6670 EOM
6671         rp='Extras?'
6672         dflt="$extras"
6673         . ./myread
6674         extras="$ans"
6675 esac
6676 case "$extras" in
6677 ''|'none')
6678         val=''
6679         $rm -f ../extras.lst
6680         ;;
6681 *)      echo "(Saving the list of extras for later...)"
6682         echo "$extras" > ../extras.lst
6683         val="'$extras'"
6684         ;;
6685 esac
6686 set extras
6687 eval $setvar
6688 echo " "
6689
6690 : determine where html pages for programs go
6691 set html1dir html1dir none
6692 eval $prefixit
6693 $cat <<EOM
6694
6695 If you wish to install html files for programs in $spackage, indicate 
6696 the appropriate directory here.  To skip installing html files,
6697 answer "none".
6698 EOM
6699 case "$html1dir" in
6700 ''|none|$undef|' ') dflt=none ;;
6701 *) dflt=$html1dir ;;
6702 esac
6703 fn=dn+~
6704 rp="Directory for the main $spackage html pages?"
6705 . ./getfile
6706 html1dir="$ans"
6707 html1direxp="$ansexp"
6708 : Use ' ' for none so value is preserved next time through Configure
6709 $test X"$html1dir" = "X" && html1dir=' '
6710 : Change installation prefix, if necessary.
6711 if $test X"$prefix" != X"$installprefix"; then
6712         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6713 else
6714         installhtml1dir="$html1direxp"
6715 fi
6716
6717 : determine where html pages for libraries and modules go
6718 set html3dir html3dir none
6719 eval $prefixit
6720 $cat <<EOM
6721
6722 If you wish to install html files for modules associated with $spackage,
6723 indicate the appropriate directory here.  To skip installing html files,
6724 answer "none".
6725 EOM
6726 : There is no obvious default.  If they have specified html1dir, then
6727 : try to key off that, possibly changing .../html1 into .../html3.
6728 case "$html3dir" in
6729 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6730 *) dflt=$html3dir ;;
6731 esac
6732 fn=dn+~
6733 rp="Directory for the $spackage module html pages?"
6734 . ./getfile
6735 html3dir="$ans"
6736 html3direxp="$ansexp"
6737 : Use ' ' for none so value is preserved next time through Configure
6738 $test X"$html3dir" = "X" && html3dir=' '
6739 : Change installation prefix, if necessary.
6740 if $test X"$prefix" != X"$installprefix"; then
6741         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6742 else
6743         installhtml3dir="$html3direxp"
6744 fi
6745
6746 : Find perl5.005 or later.
6747 echo "Looking for a previously installed perl5.005 or later... "
6748 case "$perl5" in
6749 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6750                 : Check if this perl is recent and can load a simple module
6751                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6752                         perl5=$tdir/perl
6753                         break;
6754                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6755                         perl5=$tdir/perl5
6756                         break;
6757                 fi
6758         done
6759         ;;
6760 *)      perl5="$perl5"
6761         ;;
6762 esac
6763 case "$perl5" in
6764 '')     echo "None found.  That's ok.";;
6765 *)      echo "Using $perl5." ;;
6766 esac
6767
6768 : Determine list of previous versions to include in @INC
6769 $cat > getverlist <<EOPL
6770 #!$perl5 -w
6771 use File::Basename;
6772 \$api_versionstring = "$api_versionstring";
6773 \$version = "$version";
6774 \$stem = "$sitelib_stem";
6775 \$archname = "$archname";
6776 EOPL
6777         $cat >> getverlist <<'EOPL'
6778 # Can't have leading @ because metaconfig interprets it as a command!
6779 ;@inc_version_list=();
6780 # XXX Redo to do opendir/readdir? 
6781 if (-d $stem) {
6782     chdir($stem);
6783     ;@candidates = glob("5.*");
6784 }
6785 else {
6786     ;@candidates = ();
6787 }
6788
6789 # XXX ToDo:  These comparisons must be reworked when two-digit
6790 # subversions come along, so that 5.7.10 compares as greater than
6791 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6792 # widespread that we can use the built-in version vectors rather
6793 # than reinventing them here.  For 5.6.0, however, we must
6794 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6795 foreach $d (@candidates) {
6796     if ($d lt $version) {
6797         if ($d ge $api_versionstring) {
6798             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6799         }
6800         elsif ($d ge "5.005") {
6801             unshift(@inc_version_list, grep { -d } $d);
6802         }
6803     }
6804     else {
6805         # Skip newer version.  I.e. don't look in
6806         # 5.7.0 if we're installing 5.6.1.
6807     }
6808 }
6809
6810 if (@inc_version_list) {
6811     print join(' ', @inc_version_list);
6812 }
6813 else {
6814     # Blank space to preserve value for next Configure run.
6815     print " ";
6816 }
6817 EOPL
6818 chmod +x getverlist
6819 case "$inc_version_list" in
6820 '')     if test -x "$perl5$exe_ext"; then
6821                 dflt=`$perl5 getverlist`
6822         else
6823                 dflt='none'
6824         fi
6825         ;;
6826 $undef) dflt='none' ;;
6827 *)  eval dflt=\"$inc_version_list\" ;;
6828 esac
6829 case "$dflt" in
6830 ''|' ') dflt=none ;;
6831 esac
6832 case "$dflt" in
6833 5.005) dflt=none ;;
6834 esac
6835 $cat <<EOM
6836
6837 In order to ease the process of upgrading, this version of perl 
6838 can be configured to use modules built and installed with earlier 
6839 versions of perl that were installed under $prefix.  Specify here
6840 the list of earlier versions that this version of perl should check.
6841 If Configure detected no earlier versions of perl installed under
6842 $prefix, then the list will be empty.  Answer 'none' to tell perl
6843 to not search earlier versions.
6844
6845 The default should almost always be sensible, so if you're not sure,
6846 just accept the default.
6847 EOM
6848
6849 rp='List of earlier versions to include in @INC?'
6850 . ./myread
6851 case "$ans" in
6852 [Nn]one|''|' ') inc_version_list=' ' ;;
6853 *) inc_version_list="$ans" ;;
6854 esac
6855 case "$inc_version_list" in
6856 ''|' ') 
6857         inc_version_list_init='0';;
6858 *)      inc_version_list_init=`echo $inc_version_list |
6859                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6860         ;;
6861 esac
6862 $rm -f getverlist
6863
6864 : determine whether to install perl also as /usr/bin/perl
6865
6866 echo " "
6867 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6868         $cat <<EOM
6869 Many scripts expect perl to be installed as /usr/bin/perl.
6870
6871 If you want to, I can install the perl you are about to compile
6872 as /usr/bin/perl (in addition to $bin/perl).
6873 EOM
6874         if test -f /usr/bin/perl; then
6875             $cat <<EOM
6876
6877 However, please note that because you already have a /usr/bin/perl,
6878 overwriting that with a new Perl would very probably cause problems.
6879 Therefore I'm assuming you don't want to do that (unless you insist).
6880
6881 EOM
6882             case "$installusrbinperl" in
6883             "$define"|[yY]*)    dflt='y';;
6884             *)                  dflt='n';;
6885             esac
6886         else
6887             $cat <<EOM
6888
6889 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6890
6891 EOM
6892             case "$installusrbinperl" in
6893             "$undef"|[nN]*)     dflt='n';;
6894             *)                  dflt='y';;
6895             esac
6896         fi
6897         rp="Do you want to install perl as /usr/bin/perl?"
6898         . ./myread
6899         case "$ans" in
6900         [yY]*)  val="$define";;
6901         *)      val="$undef" ;;
6902         esac
6903 else
6904         val="$undef"
6905 fi
6906 set installusrbinperl
6907 eval $setvar
6908
6909 echo " "
6910 echo "Checking for GNU C Library..." >&4
6911 cat >try.c <<'EOCP'
6912 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
6913    alone are insufficient to distinguish different versions, such as
6914    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
6915    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
6916 */
6917 #include <stdio.h>
6918 int main(void)
6919 {
6920 #ifdef __GLIBC__
6921 #   ifdef __GLIBC_MINOR__
6922 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6923 #           include <gnu/libc-version.h>
6924             printf("%s\n",  gnu_get_libc_version());
6925 #       else
6926             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
6927 #       endif
6928 #   else
6929         printf("%d\n",  __GLIBC__);
6930 #   endif
6931     return 0;
6932 #else
6933     return 1;
6934 #endif
6935 }
6936 EOCP
6937 set try
6938 if eval $compile_ok && $run ./try > glibc.ver; then
6939         val="$define"
6940         gnulibc_version=`$cat glibc.ver`
6941         echo "You are using the GNU C Library version $gnulibc_version"
6942 else
6943         val="$undef"
6944         gnulibc_version=''
6945         echo "You are not using the GNU C Library"
6946 fi
6947 $rm -f try try.* glibc.ver
6948 set d_gnulibc
6949 eval $setvar
6950
6951 : see if nm is to be used to determine whether a symbol is defined or not
6952 case "$usenm" in
6953 '')
6954         dflt=''
6955         case "$d_gnulibc" in
6956         "$define")
6957                 echo " "
6958                 echo "nm probably won't work on the GNU C Library." >&4
6959                 dflt=n
6960                 ;;
6961         esac
6962         case "$dflt" in
6963         '') 
6964                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
6965                         echo " "
6966                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
6967                         echo "'nm' won't be sufficient on this sytem." >&4
6968                         dflt=n
6969                 fi
6970                 ;;
6971         esac
6972         case "$dflt" in
6973         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
6974                 if $test $dflt -gt 20; then
6975                         dflt=y
6976                 else
6977                         dflt=n
6978                 fi
6979                 ;;
6980         esac
6981         ;;
6982 *)
6983         case "$usenm" in
6984         true|$define) dflt=y;;
6985         *) dflt=n;;
6986         esac
6987         ;;
6988 esac
6989 $cat <<EOM
6990
6991 I can use $nm to extract the symbols from your C libraries. This
6992 is a time consuming task which may generate huge output on the disk (up
6993 to 3 megabytes) but that should make the symbols extraction faster. The
6994 alternative is to skip the 'nm' extraction part and to compile a small
6995 test program instead to determine whether each symbol is present. If
6996 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
6997 this may be the best solution.
6998
6999 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7000
7001 EOM
7002 rp="Shall I use $nm to extract C symbols from the libraries?"
7003 . ./myread
7004 case "$ans" in
7005 [Nn]*) usenm=false;;
7006 *) usenm=true;;
7007 esac
7008
7009 runnm=$usenm
7010 case "$reuseval" in
7011 true) runnm=false;;
7012 esac
7013
7014 : nm options which may be necessary
7015 case "$nm_opt" in
7016 '') if $test -f /mach_boot; then
7017                 nm_opt=''       # Mach
7018         elif $test -d /usr/ccs/lib; then
7019                 nm_opt='-p'     # Solaris (and SunOS?)
7020         elif $test -f /dgux; then
7021                 nm_opt='-p'     # DG-UX
7022         elif $test -f /lib64/rld; then
7023                 nm_opt='-p'     # 64-bit Irix
7024         else
7025                 nm_opt=''
7026         fi;;
7027 esac
7028
7029 : nm options which may be necessary for shared libraries but illegal
7030 : for archive libraries.  Thank you, Linux.
7031 case "$nm_so_opt" in
7032 '')     case "$myuname" in
7033         *linux*)
7034                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7035                         nm_so_opt='--dynamic'
7036                 fi
7037                 ;;
7038         esac
7039         ;;
7040 esac
7041
7042 case "$runnm" in
7043 true)
7044 : get list of predefined functions in a handy place
7045 echo " "
7046 case "$libc" in
7047 '') libc=unknown
7048         case "$libs" in
7049         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7050         esac
7051         ;;
7052 esac
7053 case "$libs" in
7054 '') ;;
7055 *)  for thislib in $libs; do
7056         case "$thislib" in
7057         -lc|-lc_s)
7058                 : Handle C library specially below.
7059                 ;;
7060         -l*)
7061                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7062                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7063                         :
7064                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7065                         :
7066                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7067                         :
7068                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7069                         :
7070                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7071                         :
7072                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7073                         :
7074                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7075                         :
7076                 else
7077                         try=''
7078                 fi
7079                 libnames="$libnames $try"
7080                 ;;
7081         *) libnames="$libnames $thislib" ;;
7082         esac
7083         done
7084         ;;
7085 esac
7086 xxx=normal
7087 case "$libc" in
7088 unknown)
7089         set /lib/libc.$so
7090         for xxx in $libpth; do
7091                 $test -r $1 || set $xxx/libc.$so
7092                 : The messy sed command sorts on library version numbers.
7093                 $test -r $1 || \
7094                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7095                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7096                                 h
7097                                 s/[0-9][0-9]*/0000&/g
7098                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7099                                 G
7100                                 s/\n/ /' | \
7101                          $sort | $sed -e 's/^.* //'`
7102                 eval set \$$#
7103         done
7104         $test -r $1 || set /usr/ccs/lib/libc.$so
7105         $test -r $1 || set /lib/libsys_s$_a
7106         ;;
7107 *)
7108         set blurfl
7109         ;;
7110 esac
7111 if $test -r "$1"; then
7112         echo "Your (shared) C library seems to be in $1."
7113         libc="$1"
7114 elif $test -r /lib/libc && $test -r /lib/clib; then
7115         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7116         xxx=apollo
7117         libc='/lib/clib /lib/libc'
7118         if $test -r /lib/syslib; then
7119                 echo "(Your math library is in /lib/syslib.)"
7120                 libc="$libc /lib/syslib"
7121         fi
7122 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7123         echo "Your C library seems to be in $libc, as you said before."
7124 elif $test -r $incpath/usr/lib/libc$_a; then
7125         libc=$incpath/usr/lib/libc$_a;
7126         echo "Your C library seems to be in $libc.  That's fine."
7127 elif $test -r /lib/libc$_a; then
7128         libc=/lib/libc$_a;
7129         echo "Your C library seems to be in $libc.  You're normal."
7130 else
7131         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7132                 :
7133         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7134                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7135         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7136                 :
7137         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7138                 :
7139         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7140                 :
7141         else
7142                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7143         fi
7144         if $test -r "$tans"; then
7145                 echo "Your C library seems to be in $tans, of all places."
7146                 libc=$tans
7147         else
7148                 libc='blurfl'
7149         fi
7150 fi
7151 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7152         dflt="$libc"
7153         cat <<EOM
7154
7155 If the guess above is wrong (which it might be if you're using a strange
7156 compiler, or your machine supports multiple models), you can override it here.
7157
7158 EOM
7159 else
7160         dflt=''
7161         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7162         cat >&4 <<EOM
7163 I can't seem to find your C library.  I've looked in the following places:
7164
7165 EOM
7166         $sed 's/^/      /' libpath
7167         cat <<EOM
7168
7169 None of these seems to contain your C library. I need to get its name...
7170
7171 EOM
7172 fi
7173 fn=f
7174 rp='Where is your C library?'
7175 . ./getfile
7176 libc="$ans"
7177
7178 echo " "
7179 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7180 set X `cat libnames`
7181 shift
7182 xxx=files
7183 case $# in 1) xxx=file; esac
7184 echo "Extracting names from the following $xxx for later perusal:" >&4
7185 echo " "
7186 $sed 's/^/      /' libnames >&4
7187 echo " "
7188 $echo $n "This may take a while...$c" >&4
7189
7190 for file in $*; do
7191         case $file in
7192         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7193         *) $nm $nm_opt $file 2>/dev/null;;
7194         esac
7195 done >libc.tmp
7196
7197 $echo $n ".$c"
7198 $grep fprintf libc.tmp > libc.ptf
7199 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7200 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7201 xxx='[ADTSIW]'
7202 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
7203         eval $xscan;\
7204         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7205                 eval $xrun
7206 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7207         eval $xscan;\
7208         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7209                 eval $xrun
7210 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7211         eval $xscan;\
7212         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7213                 eval $xrun
7214 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7215         eval $xscan;\
7216         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7217                 eval $xrun
7218 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7219         eval $xscan;\
7220         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7221                 eval $xrun
7222 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7223         eval $xscan;\
7224         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7225                 eval $xrun
7226 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7227                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7228         eval $xscan;\
7229         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7230                 eval $xrun
7231 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7232         eval $xscan;\
7233         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7234                 eval $xrun
7235 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7236         eval $xscan;\
7237         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7238                 eval $xrun
7239 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7240         eval $xscan;\
7241         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7242                 eval $xrun
7243 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7244         eval $xscan;\
7245         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7246                 eval $xrun
7247 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7248         eval $xscan;\
7249         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7250                 eval $xrun
7251 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7252         eval $xscan;\
7253         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7254                 eval $xrun
7255 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7256         eval $xscan;\
7257         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7258                 eval $xrun
7259 else
7260         $nm -p $* 2>/dev/null >libc.tmp
7261         $grep fprintf libc.tmp > libc.ptf
7262         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7263                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7264         then
7265                 nm_opt='-p'
7266                 eval $xrun
7267         else
7268                 echo " "
7269                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7270                 com=''
7271                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7272                         for thisname in $libnames $libc; do
7273                                 $ar t $thisname >>libc.tmp
7274                         done
7275                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7276                         echo "Ok." >&4
7277                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7278                         # Repeat libc to extract forwarders to DLL entries too
7279                         for thisname in $libnames $libc; do
7280                                 $ar tv $thisname >>libc.tmp
7281                                 # Revision 50 of EMX has bug in $ar.
7282                                 # it will not extract forwarders to DLL entries
7283                                 # Use emximp which will extract exactly them.
7284                                 emximp -o tmp.imp $thisname \
7285                                     2>/dev/null && \
7286                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7287                                     < tmp.imp >>libc.tmp
7288                                 $rm tmp.imp
7289                         done
7290                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7291                         echo "Ok." >&4
7292                 else
7293                         echo "$ar didn't seem to work right." >&4
7294                         echo "Maybe this is a Cray...trying bld instead..." >&4
7295                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7296                         then
7297                                 for thisname in $libnames; do
7298                                         bld t $libnames | \
7299                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7300                                         $ar t $thisname >>libc.tmp
7301                                 done
7302                                 echo "Ok." >&4
7303                         else
7304                                 echo "That didn't work either.  Giving up." >&4
7305                                 exit 1
7306                         fi
7307                 fi
7308         fi
7309 fi
7310 nm_extract="$com"
7311 case "$PASE" in
7312 define)
7313     echo " "
7314     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7315     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7316     ;;
7317 *)  if $test -f /lib/syscalls.exp; then
7318         echo " "
7319         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7320         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7321     fi
7322     ;;
7323 esac
7324 ;;
7325 esac
7326 $rm -f libnames libpath
7327
7328 : see if dld is available
7329 set dld.h i_dld
7330 eval $inhdr
7331
7332 : is a C symbol defined?
7333 csym='tlook=$1;
7334 case "$3" in
7335 -v) tf=libc.tmp; tc=""; tdc="";;
7336 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
7337 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
7338 esac;
7339 tx=yes;
7340 case "$reuseval-$4" in
7341 true-) ;;
7342 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7343 esac;
7344 case "$tx" in
7345 yes)
7346         case "$runnm" in
7347         true)
7348                 if $contains $tlook $tf >/dev/null 2>&1;
7349                 then tval=true;
7350                 else tval=false;
7351                 fi;;
7352         *)
7353                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
7354                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
7355                 then tval=true;
7356                 else tval=false;
7357                 fi;
7358                 $rm -f t t.c;;
7359         esac;;
7360 *)
7361         case "$tval" in
7362         $define) tval=true;;
7363         *) tval=false;;
7364         esac;;
7365 esac;
7366 eval "$2=$tval"'
7367
7368 : define an is-in-libc? function
7369 inlibc='echo " "; td=$define; tu=$undef;
7370 sym=$1; var=$2; eval "was=\$$2";
7371 tx=yes;
7372 case "$reuseval$was" in
7373 true) ;;
7374 true*) tx=no;;
7375 esac;
7376 case "$tx" in
7377 yes)
7378         set $sym tres -f;
7379         eval $csym;
7380         case "$tres" in
7381         true)
7382                 echo "$sym() found." >&4;
7383                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7384         *)
7385                 echo "$sym() NOT found." >&4;
7386                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7387         esac;;
7388 *)
7389         case "$was" in
7390         $define) echo "$sym() found." >&4;;
7391         *) echo "$sym() NOT found." >&4;;
7392         esac;;
7393 esac'
7394
7395 : see if dlopen exists
7396 xxx_runnm="$runnm"
7397 runnm=false
7398 set dlopen d_dlopen
7399 eval $inlibc
7400 runnm="$xxx_runnm"
7401
7402 : determine which dynamic loading, if any, to compile in
7403 echo " "
7404 dldir="ext/DynaLoader"
7405 case "$usedl" in
7406 $define|y|true)
7407         dflt='y'
7408         usedl="$define"
7409         ;;
7410 $undef|n|false)
7411         dflt='n'
7412         usedl="$undef"
7413         ;;
7414 *) 
7415         dflt='n'
7416         case "$d_dlopen" in
7417             $define) dflt='y' ;;
7418         esac
7419         case "$i_dld" in
7420             $define) dflt='y' ;;
7421         esac
7422         : Does a dl_xxx.xs file exist for this operating system
7423         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7424         ;;
7425 esac
7426 rp="Do you wish to use dynamic loading?"
7427 . ./myread
7428 usedl="$ans"
7429 case "$ans" in
7430 y*) usedl="$define"
7431         case "$dlsrc" in
7432         '')
7433                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7434                         dflt="$dldir/dl_${osname}.xs"
7435                 elif $test "$d_dlopen" = "$define" ; then
7436                         dflt="$dldir/dl_dlopen.xs"
7437                 elif $test "$i_dld" = "$define" ; then
7438                         dflt="$dldir/dl_dld.xs"
7439                 else
7440                         dflt=''
7441                 fi
7442                 ;;
7443         *)      dflt="$dldir/$dlsrc"
7444                 ;;
7445         esac
7446     echo "The following dynamic loading files are available:"
7447         : Can not go over to $dldir because getfile has path hard-coded in.
7448         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7449         rp="Source file to use for dynamic loading"
7450         fn="fne"
7451         gfpth="$src"
7452         . ./getfile
7453         usedl="$define"
7454         : emulate basename
7455         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7456
7457         $cat << EOM
7458
7459 Some systems may require passing special flags to $cc -c to
7460 compile modules that will be used to create a shared library.
7461 To use no flags, say "none".
7462
7463 EOM
7464     case "$cccdlflags" in
7465     '') case "$gccversion" in
7466                 '') case "$osname" in
7467                         hpux)   dflt='+z' ;;
7468                         next)   dflt='none' ;;
7469                         irix*)  dflt='-KPIC' ;;
7470                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7471                         sunos)  dflt='-pic' ;;
7472                         *)      dflt='none' ;;
7473                     esac
7474                         ;;
7475                 *)  case "$osname" in
7476                         darwin) dflt='none' ;;
7477                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7478                         *)      dflt='-fpic' ;;
7479                     esac ;;
7480             esac ;;
7481         ' ') dflt='none' ;;
7482     *)  dflt="$cccdlflags" ;;
7483     esac
7484     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7485     . ./myread
7486     case "$ans" in
7487     none) cccdlflags=' ' ;;
7488     *) cccdlflags="$ans" ;;
7489     esac
7490
7491     cat << EOM
7492
7493 Some systems use ld to create libraries that can be dynamically loaded,
7494 while other systems (such as those using ELF) use $cc.
7495
7496 EOM
7497         case "$ld" in
7498         '')     $cat >try.c <<EOM
7499 /* Test for whether ELF binaries are produced */
7500 #include <fcntl.h>
7501 #$i_stdlib I_STDLIB
7502 #ifdef I_STDLIB
7503 #include <stdlib.h>
7504 #endif
7505 int main() {
7506         char b[4];
7507         int i = open("a.out",O_RDONLY);
7508         if(i == -1) 
7509                 exit(1); /* fail */
7510         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7511                 exit(0); /* succeed (yes, it's ELF) */
7512         else
7513                 exit(1); /* fail */
7514 }
7515 EOM
7516                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7517                         cat <<EOM
7518 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7519 EOM
7520                         dflt="$cc"
7521                 else
7522                         echo "I'll use ld to build dynamic libraries."
7523                         dflt='ld'
7524                 fi
7525                 rm -f try.c a.out
7526                 ;;
7527         *)      dflt="$ld"
7528                 ;;
7529         esac
7530
7531     rp="What command should be used to create dynamic libraries?"
7532     . ./myread
7533         ld="$ans"
7534
7535     cat << EOM
7536
7537 Some systems may require passing special flags to $ld to create a
7538 library that can be dynamically loaded.  If your ld flags include
7539 -L/other/path options to locate libraries outside your loader's normal
7540 search path, you may need to specify those -L options here as well.  To
7541 use no flags, say "none".
7542
7543 EOM
7544     case "$lddlflags" in
7545     '') case "$osname" in
7546                         beos) dflt='-nostart' ;;
7547                         hpux) dflt='-b';
7548                               case "$gccversion" in
7549                               '') dflt="$dflt +vnocompatwarnings" ;;
7550                               esac
7551                               ;;        
7552                         linux|irix*)    dflt='-shared' ;;
7553                         next)  dflt='none' ;;
7554                         solaris) dflt='-G' ;;
7555                         sunos) dflt='-assert nodefinitions' ;;
7556                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7557                 *)     dflt='none' ;;
7558                         esac
7559                         ;;
7560     *) dflt="$lddlflags" ;;
7561     esac
7562
7563         : Try to guess additional flags to pick up local libraries.
7564         : Be careful not to append to a plain 'none'
7565         case "$dflt" in
7566         none) dflt='' ;;
7567         esac
7568         for thisflag in $ldflags; do
7569                 case "$thisflag" in
7570                 -L*|-R*|-Wl,-R*)
7571                         case " $dflt " in
7572                         *" $thisflag "*) ;;
7573                         *) dflt="$dflt $thisflag" ;;
7574                         esac
7575                         ;;
7576                 esac
7577         done
7578
7579         case "$dflt" in
7580         ''|' ') dflt='none' ;;
7581         esac
7582
7583     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7584     . ./myread
7585     case "$ans" in
7586     none) lddlflags=' ' ;;
7587     *) lddlflags="$ans" ;;
7588     esac
7589
7590         cat <<EOM
7591
7592 Some systems may require passing special flags to $cc to indicate that
7593 the resulting executable will use dynamic linking.  To use no flags,
7594 say "none".
7595
7596 EOM
7597     case "$ccdlflags" in
7598     '') case "$osname" in
7599                 hpux)   dflt='-Wl,-E' ;;
7600                 linux)  dflt='-rdynamic' ;;
7601                 next)   dflt='none' ;;
7602                 sunos)  dflt='none' ;;
7603                 *)      dflt='none' ;;
7604             esac ;;
7605     ' ')  dflt='none' ;;
7606     *)  dflt="$ccdlflags" ;;
7607     esac
7608     rp="Any special flags to pass to $cc to use dynamic linking?"
7609     . ./myread
7610     case "$ans" in
7611     none) ccdlflags=' ' ;;
7612     *) ccdlflags="$ans" ;;
7613     esac
7614     ;;
7615 *)  usedl="$undef"
7616         ld='ld'
7617     dlsrc='dl_none.xs'
7618     lddlflags=''
7619     ccdlflags=''
7620     ;;
7621 esac
7622
7623 also=''
7624 case "$usedl" in
7625 $undef)
7626         # No dynamic loading being used, so don't bother even to prompt.
7627         useshrplib='false'
7628         ;;
7629 *)      case "$useshrplib" in
7630         '')     case "$osname" in
7631                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7632                         dflt=y
7633                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7634                         ;;
7635                 next*)
7636                         case "$osvers" in
7637                         4*)     dflt=y
7638                                 also='Building a shared libperl is needed for MAB support.'
7639                                 ;;
7640                         *)      dflt=n
7641                                 ;;
7642                         esac
7643                         ;;
7644                 *)      dflt=n
7645                         ;;
7646                 esac
7647                 ;;
7648         $define|true|[Yy]*)
7649                 dflt=y
7650                 ;;
7651         *)      dflt=n
7652                 ;;
7653         esac
7654         $cat << EOM
7655
7656 The perl executable is normally obtained by linking perlmain.c with
7657 libperl${_a}, any static extensions (usually just DynaLoader), and
7658 any other libraries needed on this system (such as -lm, etc.).  Since
7659 your system supports dynamic loading, it is probably possible to build
7660 a shared libperl.$so.  If you will have more than one executable linked
7661 to libperl.$so, this will significantly reduce the size of each
7662 executable, but it may have a noticeable affect on performance.  The
7663 default is probably sensible for your system.
7664 $also
7665
7666 EOM
7667         rp="Build a shared libperl.$so (y/n)"
7668         . ./myread
7669         case "$ans" in
7670         true|$define|[Yy]*)
7671                 useshrplib='true'  ;;
7672         *)      useshrplib='false' ;;
7673         esac
7674         ;;
7675 esac
7676
7677 case "$useshrplib" in
7678 true)
7679         case "$libperl" in
7680         '')
7681                 # Figure out a good name for libperl.so.  Since it gets stored in
7682                 # a version-specific architecture-dependent library, the version
7683                 # number isn't really that important, except for making cc/ld happy.
7684                 #
7685                 # A name such as libperl.so.3.1
7686                 majmin="libperl.$so.$patchlevel.$subversion"
7687                 # A name such as libperl.so.301
7688                 majonly=`echo $patchlevel $subversion |
7689                         $awk '{printf "%d%02d", $1, $2}'`
7690                 majonly=libperl.$so.$majonly
7691                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7692                 # rely on figuring it out from the naming of libc.
7693                 case "${osname}${osvers}" in
7694                 next4*)
7695                         dflt=libperl.5.$so
7696                         # XXX How handle the --version stuff for MAB?
7697                         ;;
7698                 linux*)  # ld won't link with a bare -lperl otherwise.
7699                         dflt=libperl.$so
7700                         ;;
7701                 cygwin*) # ld links against an importlib
7702                         dflt=libperl$lib_ext
7703                         ;;
7704                 *)      # Try to guess based on whether libc has major.minor.
7705                         case "$libc" in
7706                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7707                         *libc.$so.[0-9]*) dflt=$majonly ;;
7708                         *)      dflt=libperl.$so ;;
7709                         esac
7710                         ;;
7711                 esac
7712                 ;;
7713         *)      dflt=$libperl
7714                 ;;
7715         esac
7716         cat << EOM
7717
7718 I need to select a good name for the shared libperl.  If your system uses
7719 library names with major and minor numbers, then you might want something
7720 like $majmin.  Alternatively, if your system uses a single version
7721 number for shared libraries, then you might want to use $majonly.
7722 Or, your system might be quite happy with a simple libperl.$so.
7723
7724 Since the shared libperl will get installed into a version-specific
7725 architecture-dependent directory, the version number of the shared perl
7726 library probably isn't important, so the default should be o.k.
7727
7728 EOM
7729         rp='What name do you want to give to the shared libperl?'
7730         . ./myread
7731         libperl=$ans
7732         echo "Ok, I'll use $libperl"
7733         ;;
7734 *)
7735         libperl="libperl${_a}"
7736         ;;
7737 esac
7738
7739 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7740 case "$shrpdir" in
7741 '') ;;
7742 *)      $cat >&4 <<EOM
7743 WARNING:  Use of the shrpdir variable for the installation location of
7744 the shared $libperl is not supported.  It was never documented and
7745 will not work in this version.  Let me (perlbug@perl.org)
7746 know of any problems this may cause.
7747
7748 EOM
7749         case "$shrpdir" in
7750         "$archlibexp/CORE")
7751                 $cat >&4 <<EOM
7752 But your current setting of $shrpdir is
7753 the default anyway, so it's harmless.
7754 EOM
7755                 ;;
7756         *)
7757                 $cat >&4 <<EOM
7758 Further, your current attempted setting of $shrpdir
7759 conflicts with the value of $archlibexp/CORE
7760 that installperl will use.
7761 EOM
7762                 ;;
7763         esac
7764         ;;
7765 esac
7766
7767 # How will the perl executable find the installed shared $libperl?
7768 # Add $xxx to ccdlflags.
7769 # If we can't figure out a command-line option, use $shrpenv to
7770 # set env LD_RUN_PATH.  The main perl makefile uses this.
7771 shrpdir=$archlibexp/CORE
7772 xxx=''
7773 tmp_shrpenv=''
7774 if "$useshrplib"; then
7775     case "$osname" in 
7776         aix)
7777                 # We'll set it in Makefile.SH...
7778                 ;;
7779         solaris)
7780                 xxx="-R $shrpdir"
7781                 ;;
7782         freebsd|netbsd|openbsd)
7783                 xxx="-Wl,-R$shrpdir"
7784                 ;;
7785         bsdos|linux|irix*|dec_osf)
7786                 xxx="-Wl,-rpath,$shrpdir"
7787                 ;;
7788         next)
7789                 # next doesn't like the default...
7790                 ;;
7791         beos)
7792                 # beos doesn't like the default, either.
7793                 ;;
7794         hpux*)
7795                 # hpux doesn't like the default, either.
7796                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7797                 ;;
7798         *)
7799                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7800                 ;;
7801         esac
7802         case "$xxx" in
7803         '') ;;
7804         *)      
7805                 # Only add $xxx if it isn't already in ccdlflags.
7806                 case " $ccdlflags " in
7807                 *" $xxx "*)     ;;
7808                 *)      ccdlflags="$ccdlflags $xxx"
7809                         cat <<EOM >&4
7810
7811 Adding $xxx to the flags
7812 passed to $ld so that the perl executable will find the 
7813 installed shared $libperl.
7814
7815 EOM
7816                         ;;
7817                 esac
7818                 ;;
7819         esac
7820 fi
7821 # Fix ccdlflags in AIX for building external extensions.
7822 # (For building Perl itself bare -bE:perl.exp is needed,
7823 #  Makefile.SH takes care of this.)
7824 case "$osname" in
7825 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7826 esac
7827 # Respect a hint or command-line value.
7828 case "$shrpenv" in
7829 '') shrpenv="$tmp_shrpenv" ;;
7830 esac
7831 case "$ldlibpthname" in
7832 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7833 none)   ldlibpthname='' ;;
7834 esac
7835
7836 : determine where manual pages are on this system
7837 echo " "
7838 case "$sysman" in
7839 '') 
7840         syspath='/usr/share/man/man1 /usr/man/man1'
7841         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7842         syspath="$syspath /usr/man/u_man/man1"
7843         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7844         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7845         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7846         sysman=`./loc . /usr/man/man1 $syspath`
7847         ;;
7848 esac
7849 if $test -d "$sysman"; then
7850         echo "System manual is in $sysman." >&4
7851 else
7852         echo "Could not find manual pages in source form." >&4
7853 fi
7854
7855 : determine where manual pages go
7856 set man1dir man1dir none
7857 eval $prefixit
7858 $cat <<EOM
7859
7860 $spackage has manual pages available in source form.
7861 EOM
7862 case "$nroff" in
7863 nroff)
7864         echo "However, you don't have nroff, so they're probably useless to you."
7865         case "$man1dir" in
7866         '') man1dir="none";;
7867         esac;;
7868 esac
7869 echo "If you don't want the manual sources installed, answer 'none'."
7870 case "$man1dir" in
7871 ' ') dflt=none
7872         ;;
7873 '')
7874         lookpath="$prefixexp/share/man/man1"
7875         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7876         lookpath="$lookpath $prefixexp/man/p_man/man1"
7877         lookpath="$lookpath $prefixexp/man/u_man/man1"
7878         lookpath="$lookpath $prefixexp/man/man.1"
7879         case "$sysman" in
7880         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7881         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7882         esac
7883         set dflt
7884         eval $prefixup
7885         ;;
7886 *)  dflt="$man1dir"
7887         ;;
7888 esac
7889 echo " "
7890 fn=dn+~
7891 rp="Where do the main $spackage manual pages (source) go?"
7892 . ./getfile
7893 if $test "X$man1direxp" != "X$ansexp"; then
7894         installman1dir=''
7895 fi
7896 man1dir="$ans"
7897 man1direxp="$ansexp"
7898 case "$man1dir" in
7899 '')     man1dir=' '
7900         installman1dir='';;
7901 esac
7902
7903 : Change installation prefix, if necessary.
7904 if $test X"$prefix" != X"$installprefix"; then
7905         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7906 else
7907         installman1dir="$man1direxp"
7908 fi
7909
7910 : What suffix to use on installed man pages
7911
7912 case "$man1dir" in
7913 ' ')
7914         man1ext='0'
7915         ;;
7916 *)
7917         rp="What suffix should be used for the main $spackage man pages?"
7918         case "$man1ext" in
7919         '')     case "$man1dir" in
7920                 *1)  dflt=1 ;;
7921                 *1p) dflt=1p ;;
7922                 *1pm) dflt=1pm ;;
7923                 *l) dflt=l;;
7924                 *n) dflt=n;;
7925                 *o) dflt=o;;
7926                 *p) dflt=p;;
7927                 *C) dflt=C;;
7928                 *L) dflt=L;;
7929                 *L1) dflt=L1;;
7930                 *) dflt=1;;
7931                 esac
7932                 ;;
7933         *)      dflt="$man1ext";;
7934         esac
7935         . ./myread
7936         man1ext="$ans"
7937         ;;
7938 esac
7939
7940 : see if we can have long filenames
7941 echo " "
7942 first=123456789abcdef
7943 $rm -f $first
7944 if (echo hi >$first) 2>/dev/null; then
7945         if $test -f 123456789abcde; then
7946                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7947                 val="$undef"
7948         else
7949                 echo 'You can have filenames longer than 14 characters.'>&4
7950                 val="$define"
7951         fi
7952 else
7953         $cat <<'EOM'
7954 You can't have filenames longer than 14 chars.
7955 You can't even think about them!
7956 EOM
7957         val="$undef"
7958 fi 
7959 set d_flexfnam
7960 eval $setvar
7961 $rm -rf 123456789abcde*
7962
7963 : determine where library module manual pages go
7964 set man3dir man3dir none
7965 eval $prefixit
7966 $cat <<EOM
7967
7968 $spackage has manual pages for many of the library modules.
7969 EOM
7970
7971 case "$nroff" in
7972 nroff)
7973         $cat <<'EOM'
7974 However, you don't have nroff, so they're probably useless to you.
7975 EOM
7976         case "$man3dir" in
7977         '') man3dir="none";;
7978         esac;;
7979 esac
7980
7981 case "$d_flexfnam" in
7982 undef)
7983         $cat <<'EOM'
7984 However, your system can't handle the long file names like File::Basename.3. 
7985 EOM
7986         case "$man3dir" in
7987         '') man3dir="none";;
7988         esac;;
7989 esac
7990
7991 echo "If you don't want the manual sources installed, answer 'none'."
7992 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7993 case "$man3dir" in
7994 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7995         if $test -d "$privlib/man/man3"; then
7996                 cat <<EOM >&4
7997
7998 WARNING:  Previous versions of perl installed man3 pages into
7999 $privlib/man/man3.  This version will suggest a 
8000 new default of $dflt.  
8001 EOM
8002                 tdflt=$dflt
8003                 dflt='n'
8004                 rp='Do you wish to preserve the old behavior?(y/n)'
8005                 . ./myread
8006                 case "$ans" in
8007                 y*) dflt="$privlib/man/man3" ;;
8008                 *)  dflt=$tdflt ;;
8009                 esac
8010     fi
8011         ;;
8012 *)      dflt="$man3dir" ;;
8013 esac
8014 case "$dflt" in
8015 ' ') dflt=none ;;
8016 esac
8017 echo " "
8018 fn=dn+~
8019 rp="Where do the $package library man pages (source) go?"
8020 . ./getfile
8021 man3dir="$ans"
8022 man3direxp="$ansexp"
8023 case "$man3dir" in
8024 '')     man3dir=' '
8025         installman3dir='';;
8026 esac
8027
8028 : Change installation prefix, if necessary.
8029 if $test X"$prefix" != X"$installprefix"; then
8030         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8031 else
8032         installman3dir="$man3direxp"
8033 fi
8034
8035 : What suffix to use on installed man pages
8036 case "$man3dir" in
8037 ' ')
8038         man3ext='0'
8039         ;;
8040 *)
8041         rp="What suffix should be used for the $package library man pages?"
8042         case "$man3ext" in
8043         '')     case "$man3dir" in
8044                 *3)  dflt=3 ;;
8045                 *3p) dflt=3p ;;
8046                 *3pm) dflt=3pm ;;
8047                 *l) dflt=l;;
8048                 *n) dflt=n;;
8049                 *o) dflt=o;;
8050                 *p) dflt=p;;
8051                 *C) dflt=C;;
8052                 *L) dflt=L;;
8053                 *L3) dflt=L3;;
8054                 *) dflt=3;;
8055                 esac
8056                 ;;
8057         *)      dflt="$man3ext";;
8058         esac
8059         . ./myread
8060         man3ext="$ans"
8061         ;;
8062 esac
8063
8064 : see if we have to deal with yellow pages, now NIS.
8065 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8066         if $test -f /usr/etc/nibindd; then
8067                 echo " "
8068                 echo "I'm fairly confident you're on a NeXT."
8069                 echo " "
8070                 rp='Do you get the hosts file via NetInfo?'
8071                 dflt=y
8072                 case "$hostcat" in
8073                 nidump*) ;;
8074                 '') ;;
8075                 *) dflt=n;;
8076                 esac
8077                 . ./myread
8078                 case "$ans" in
8079                 y*) hostcat='nidump hosts .';;
8080                 *)      case "$hostcat" in
8081                         nidump*) hostcat='';;
8082                         esac
8083                         ;;
8084                 esac
8085         fi
8086         case "$hostcat" in
8087         nidump*) ;;
8088         *)
8089                 case "$hostcat" in
8090                 *ypcat*) dflt=y;;
8091                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8092                                 dflt=y
8093                         else
8094                                 dflt=n
8095                         fi;;
8096                 *) dflt=n;;
8097                 esac
8098                 echo " "
8099                 rp='Are you getting the hosts file via yellow pages?'
8100                 . ./myread
8101                 case "$ans" in
8102                 y*) hostcat='ypcat hosts';;
8103                 *) hostcat='cat /etc/hosts';;
8104                 esac
8105                 ;;
8106         esac
8107 fi
8108 case "$hostcat" in
8109 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8110 esac
8111 case "$groupcat" in
8112 '') test -f /etc/group && groupcat='cat /etc/group';;
8113 esac
8114 case "$passcat" in
8115 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8116 esac
8117
8118 : now get the host name
8119 echo " "
8120 echo "Figuring out host name..." >&4
8121 case "$myhostname" in
8122 '') cont=true
8123         echo 'Maybe "hostname" will work...'
8124         if tans=`sh -c hostname 2>&1` ; then
8125                 myhostname=$tans
8126                 phostname=hostname
8127                 cont=''
8128         fi
8129         ;;
8130 *) cont='';;
8131 esac
8132 if $test "$cont"; then
8133         if ./xenix; then
8134                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8135                 if tans=`cat /etc/systemid 2>&1` ; then
8136                         myhostname=$tans
8137                         phostname='cat /etc/systemid'
8138                         echo "Whadyaknow.  Xenix always was a bit strange..."
8139                         cont=''
8140                 fi
8141         elif $test -r /etc/systemid; then
8142                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8143         fi
8144 fi
8145 if $test "$cont"; then
8146         echo 'No, maybe "uuname -l" will work...'
8147         if tans=`sh -c 'uuname -l' 2>&1` ; then
8148                 myhostname=$tans
8149                 phostname='uuname -l'
8150         else
8151                 echo 'Strange.  Maybe "uname -n" will work...'
8152                 if tans=`sh -c 'uname -n' 2>&1` ; then
8153                         myhostname=$tans
8154                         phostname='uname -n'
8155                 else
8156                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8157                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8158                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8159                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8160                         else
8161                                 case "$myhostname" in
8162                                 '') echo "Does this machine have an identity crisis or something?"
8163                                         phostname='';;
8164                                 *)
8165                                         echo "Well, you said $myhostname before..."
8166                                         phostname='echo $myhostname';;
8167                                 esac
8168                         fi
8169                 fi
8170         fi
8171 fi
8172 case "$myhostname" in
8173 '') myhostname=noname ;;
8174 esac
8175 : you do not want to know about this
8176 set $myhostname
8177 myhostname=$1
8178
8179 : verify guess
8180 if $test "$myhostname" ; then
8181         dflt=y
8182         rp='Your host name appears to be "'$myhostname'".'" Right?"
8183         . ./myread
8184         case "$ans" in
8185         y*) ;;
8186         *) myhostname='';;
8187         esac
8188 fi
8189
8190 : bad guess or no guess
8191 while $test "X$myhostname" = X ; do
8192         dflt=''
8193         rp="Please type the (one word) name of your host:"
8194         . ./myread
8195         myhostname="$ans"
8196 done
8197
8198 : translate upper to lower if necessary
8199 case "$myhostname" in
8200 *[A-Z]*)
8201         echo "(Normalizing case in your host name)"
8202         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8203         ;;
8204 esac
8205
8206 case "$myhostname" in
8207 *.*)
8208         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8209         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8210         echo "(Trimming domain name from host name--host name is now $myhostname)"
8211         ;;
8212 *) case "$mydomain" in
8213         '')
8214                 {
8215                         test "X$hostcat" = "Xypcat hosts" &&
8216                         ypmatch "$myhostname" hosts 2>/dev/null |\
8217                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8218                         $test -s hosts
8219                 } || {
8220                         test "X$hostcat" != "X" &&
8221                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8222                                         /[       ]$myhostname[  . ]/p" > hosts
8223                 }
8224                 tmp_re="[       . ]"
8225                 if $test -f hosts; then
8226                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8227                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8228                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8229                                 hosts | $sort | $uniq | \
8230                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8231                         case `$echo X$dflt` in
8232                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8233                                 dflt=.
8234                                 ;;
8235                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8236                                 ;;
8237                         esac
8238                 else
8239                         echo "(I cannot locate a hosts database anywhere)"
8240                         dflt=.
8241                 fi
8242                 case "$dflt" in
8243                 .)
8244                         tans=`./loc resolv.conf X /etc /usr/etc`
8245                         if $test -f "$tans"; then
8246                                 echo "(Attempting domain name extraction from $tans)"
8247                                 dflt=.`$sed -n -e 's/   / /g' \
8248                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8249                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8250                                 case "$dflt" in
8251                                 .) dflt=.`$sed -n -e 's/        / /g' \
8252                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8253                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8254                                         ;;
8255                                 esac
8256                         fi
8257                         ;;
8258                 esac
8259                 case "$dflt" in
8260                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8261                         dflt=.`sh -c domainname 2>/dev/null`
8262                         case "$dflt" in
8263                         '') dflt='.';;
8264                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8265                         esac
8266                         ;;
8267                 esac
8268                 case "$dflt$osname" in
8269                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8270                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8271                         ;;
8272                 esac
8273                 case "$dflt" in
8274                 .) echo "(Lost all hope -- silly guess then)"
8275                         dflt='.nonet'
8276                         ;;
8277                 esac
8278                 $rm -f hosts
8279                 ;;
8280         *) dflt="$mydomain";;
8281         esac;;
8282 esac
8283 echo " "
8284 rp="What is your domain name?"
8285 . ./myread
8286 tans="$ans"
8287 case "$ans" in
8288 '') ;;
8289 .*) ;;
8290 *) tans=".$tans";;
8291 esac
8292 mydomain="$tans"
8293
8294 : translate upper to lower if necessary
8295 case "$mydomain" in
8296 *[A-Z]*)
8297         echo "(Normalizing case in your domain name)"
8298         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8299         ;;
8300 esac
8301
8302 : a little sanity check here
8303 case "$phostname" in
8304 '') ;;
8305 *)
8306         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8307         $myhostname$mydomain|$myhostname) ;;
8308         *)
8309                 case "$phostname" in
8310                 sed*)
8311                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8312                         ;;
8313                 *)
8314                         echo "(That doesn't agree with your $phostname command, by the way.)"
8315                         ;;
8316                 esac
8317         ;;
8318         esac
8319         ;;
8320 esac
8321
8322 $cat <<EOM
8323
8324 I need to get your e-mail address in Internet format if possible, i.e.
8325 something like user@host.domain. Please answer accurately since I have
8326 no easy means to double check it. The default value provided below
8327 is most probably close to reality but may not be valid from outside
8328 your organization...
8329
8330 EOM
8331 cont=x
8332 while test "$cont"; do
8333         case "$cf_email" in
8334         '') dflt="$cf_by@$myhostname$mydomain";;
8335         *) dflt="$cf_email";;
8336         esac
8337         rp='What is your e-mail address?'
8338         . ./myread
8339         cf_email="$ans"
8340         case "$cf_email" in
8341         *@*.*) cont='' ;;
8342         *)
8343                 rp='Address does not look like an Internet one.  Use it anyway?'
8344                 case "$fastread" in
8345                 yes) dflt=y ;;
8346                 *) dflt=n ;;
8347                 esac
8348                 . ./myread
8349                 case "$ans" in
8350                 y*) cont='' ;;
8351                 *) echo " " ;;
8352                 esac
8353                 ;;
8354         esac
8355 done
8356
8357 $cat <<EOM
8358
8359 If you or somebody else will be maintaining perl at your site, please
8360 fill in the correct e-mail address here so that they may be contacted
8361 if necessary. Currently, the "perlbug" program included with perl
8362 will send mail to this address in addition to perlbug@perl.org. You may
8363 enter "none" for no administrator.
8364
8365 EOM
8366 case "$perladmin" in
8367 '') dflt="$cf_email";;
8368 *) dflt="$perladmin";;
8369 esac
8370 rp='Perl administrator e-mail address'
8371 . ./myread
8372 perladmin="$ans"
8373
8374 : determine whether to only install version-specific parts.
8375 echo " "
8376 $cat <<EOM
8377 Do you want to install only the version-specific parts of the perl
8378 distribution?  Usually you do *not* want to do this.
8379 EOM
8380 case "$versiononly" in
8381 "$define"|[Yy]*|true) dflt='y' ;;
8382 *) dflt='n';
8383 esac
8384 rp="Do you want to install only the version-specific parts of perl?"
8385 . ./myread
8386 case "$ans" in
8387 [yY]*)  val="$define";;
8388 *)      val="$undef" ;;
8389 esac
8390 set versiononly
8391 eval $setvar
8392
8393 case "$versiononly" in
8394 "$define") inc_version_list=''
8395            inc_version_list_init=0
8396            ;;
8397 esac
8398
8399 : figure out how to guarantee perl startup
8400 case "$startperl" in
8401 '')
8402         case "$sharpbang" in
8403         *!)
8404                 $cat <<EOH
8405
8406 I can use the #! construct to start perl on your system. This will
8407 make startup of perl scripts faster, but may cause problems if you
8408 want to share those scripts and perl is not in a standard place
8409 ($binexp/perl) on all your platforms. The alternative is to force
8410 a shell by starting the script with a single ':' character.
8411
8412 EOH
8413                 case "$versiononly" in
8414                 "$define")      dflt="$binexp/perl$version";;  
8415                 *)              dflt="$binexp/perl";;
8416                 esac
8417                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8418                 . ./myread
8419                 case "$ans" in
8420                 none)   startperl=": # use perl";;
8421                 *)      startperl="#!$ans"
8422                         if $test 30 -lt `echo "$ans" | wc -c`; then
8423                                 $cat >&4 <<EOM
8424
8425 WARNING:  Some systems limit the #! command to 32 characters.
8426 If you experience difficulty running Perl scripts with #!, try
8427 installing Perl in a directory with a shorter pathname.
8428
8429 EOM
8430                         fi ;;
8431                 esac
8432                 ;;
8433         *) startperl=": # use perl"
8434                 ;;
8435         esac
8436         ;;
8437 esac
8438 echo "I'll use $startperl to start perl scripts."
8439
8440 : figure best path for perl in scripts
8441 case "$perlpath" in
8442 '')
8443         case "$versiononly" in
8444         "$define")      perlpath="$binexp/perl$version";;
8445         *)              perlpath="$binexp/perl";;
8446         esac
8447         case "$startperl" in
8448         *!*) ;;
8449         *)
8450                 $cat <<EOH
8451
8452 I will use the "eval 'exec'" idiom to start Perl on your system.
8453 I can use the full path of your Perl binary for this purpose, but
8454 doing so may cause problems if you want to share those scripts and
8455 Perl is not always in a standard place ($binexp/perl).
8456
8457 EOH
8458                 dflt="$binexp/perl"
8459                 rp="What path shall I use in \"eval 'exec'\"?"
8460                 . ./myread
8461                 perlpath="$ans"
8462                 ;;
8463         esac
8464         ;;
8465 esac
8466 case "$startperl" in
8467 *!*)    ;;
8468 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8469 esac
8470
8471 : determine where public executable scripts go
8472 set scriptdir scriptdir
8473 eval $prefixit
8474 case "$scriptdir" in
8475 '')
8476         dflt="$bin"
8477         : guess some guesses
8478         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8479         $test -d /usr/share/bin     && dflt=/usr/share/bin
8480         $test -d /usr/local/script  && dflt=/usr/local/script
8481         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8482         $test -d $prefixexp/script  && dflt=$prefixexp/script
8483         set dflt
8484         eval $prefixup
8485         ;;
8486 *)  dflt="$scriptdir"
8487         ;;
8488 esac
8489 $cat <<EOM
8490  
8491 Some installations have a separate directory just for executable scripts so
8492 that they can mount it across multiple architectures but keep the scripts in
8493 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8494 Or you might just lump your scripts in with all your other executables.
8495  
8496 EOM
8497 fn=d~
8498 rp='Where do you keep publicly executable scripts?'
8499 . ./getfile
8500 if $test "X$ansexp" != "X$scriptdirexp"; then
8501         installscript=''
8502 fi
8503 scriptdir="$ans"
8504 scriptdirexp="$ansexp"
8505 : Change installation prefix, if necessary.
8506 if $test X"$prefix" != X"$installprefix"; then
8507         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8508 else
8509         installscript="$scriptdirexp"
8510 fi
8511
8512 : determine where add-on public executables go
8513 case "$sitebin" in
8514 '')     dflt=$siteprefix/bin ;;
8515 *)      dflt=$sitebin ;;
8516 esac
8517 fn=d~
8518 rp='Pathname where the add-on public executables should be installed?'
8519 . ./getfile
8520 sitebin="$ans"
8521 sitebinexp="$ansexp"
8522 : Change installation prefix, if necessary.
8523 if $test X"$prefix" != X"$installprefix"; then
8524         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8525 else
8526         installsitebin="$sitebinexp"
8527 fi
8528
8529 : determine where add-on html pages go
8530 : There is no standard location, so try to copy the previously-selected 
8531 : directory structure for the core html pages.
8532 case "$sitehtml1" in
8533 '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8534 *)      dflt=$sitehtml1 ;;
8535 esac
8536 case "$dflt" in
8537 ''|' ') dflt=none ;;
8538 esac
8539 fn=dn+~
8540 rp='Pathname where the site-specific html pages should be installed?'
8541 . ./getfile
8542 sitehtml1="$ans"
8543 sitehtml1exp="$ansexp"
8544 : Use ' ' for none so value is preserved next time through Configure
8545 $test X"$sitehtml1" = "X" && sitehtml1=' '
8546 : Change installation prefix, if necessary.
8547 if $test X"$prefix" != X"$installprefix"; then
8548         installsitehtml1=`echo "$sitehtml1exp" | $sed "s#^$prefix#$installprefix#"`
8549 else
8550         installsitehtml1="$sitehtml1exp"
8551 fi
8552
8553 : determine where add-on library html pages go
8554 : There is no standard location, so try to copy the previously-selected
8555 : directory structure for the core html pages.
8556 case "$sitehtml3" in
8557 '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8558 *)      dflt=$sitehtml3 ;;
8559 esac
8560 case "$dflt" in
8561 ''|' ') dflt=none ;;
8562 esac
8563 fn=dn+~
8564 rp='Pathname where the site-specific library html pages should be installed?'
8565 . ./getfile
8566 sitehtml3="$ans"
8567 sitehtml3exp="$ansexp"
8568 : Use ' ' for none so value is preserved next time through Configure
8569 $test X"$sitehtml3" = "X" && sitehtml3=' '
8570 : Change installation prefix, if necessary.
8571 if $test X"$prefix" != X"$installprefix"; then
8572         installsitehtml3=`echo "$sitehtml3exp" | $sed "s#^$prefix#$installprefix#"`
8573 else
8574         installsitehtml3="$sitehtml3exp"
8575 fi
8576
8577 : determine where add-on manual pages go
8578 case "$siteman1" in
8579 '')     dflt=`echo "$man1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8580 *)      dflt=$siteman1 ;;
8581 esac
8582 case "$dflt" in
8583 ''|' ') dflt=none ;;
8584 esac
8585 fn=dn+~
8586 rp='Pathname where the site-specific manual pages should be installed?'
8587 . ./getfile
8588 siteman1="$ans"
8589 siteman1exp="$ansexp"
8590 : Use ' ' for none so value is preserved next time through Configure
8591 $test X"$siteman1" = "X" && siteman1=' '
8592 : Change installation prefix, if necessary.
8593 if $test X"$prefix" != X"$installprefix"; then
8594         installsiteman1=`echo "$siteman1exp" | $sed "s#^$prefix#$installprefix#"`
8595 else
8596         installsiteman1="$siteman1exp"
8597 fi
8598
8599 : determine where add-on library man pages go
8600 case "$siteman3" in
8601 '')     dflt=`echo "$man3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8602 *)      dflt=$siteman3 ;;
8603 esac
8604 case "$dflt" in
8605 ''|' ') dflt=none ;;
8606 esac
8607 fn=dn+~
8608 rp='Pathname where the site-specific library manual pages should be installed?'
8609 . ./getfile
8610 siteman3="$ans"
8611 siteman3exp="$ansexp"
8612 : Use ' ' for none so value is preserved next time through Configure
8613 $test X"$siteman3" = "X" && siteman3=' '
8614 : Change installation prefix, if necessary.
8615 if $test X"$prefix" != X"$installprefix"; then
8616         installsiteman3=`echo "$siteman3exp" | $sed "s#^$prefix#$installprefix#"`
8617 else
8618         installsiteman3="$siteman3exp"
8619 fi
8620
8621 : determine where add-on public executable scripts go
8622 case "$sitescript" in
8623 '')     dflt=$siteprefix/script
8624         $test -d $dflt || dflt=$sitebin ;;
8625 *)  dflt="$sitescript" ;;
8626 esac
8627 fn=d~+
8628 rp='Pathname where add-on public executable scripts should be installed?'
8629 . ./getfile
8630 sitescript="$ans"
8631 sitescriptexp="$ansexp"
8632 : Change installation prefix, if necessary.
8633 if $test X"$prefix" != X"$installprefix"; then
8634         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8635 else
8636         installsitescript="$sitescriptexp"
8637 fi
8638
8639 : define an is-a-typedef? function
8640 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8641 case "$inclist" in
8642 "") inclist="sys/types.h";;
8643 esac;
8644 eval "varval=\$$var";
8645 case "$varval" in
8646 "")
8647         $rm -f temp.c;
8648         for inc in $inclist; do
8649                 echo "#include <$inc>" >>temp.c;
8650         done;
8651         echo "#ifdef $type" >> temp.c;
8652         echo "printf(\"We have $type\");" >> temp.c;
8653         echo "#endif" >> temp.c;
8654         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8655         if $contains $type temp.E >/dev/null 2>&1; then
8656                 eval "$var=\$type";
8657         else
8658                 eval "$var=\$def";
8659         fi;
8660         $rm -f temp.?;;
8661 *) eval "$var=\$varval";;
8662 esac'
8663
8664 : define an is-a-typedef? function that prompts if the type is not available.
8665 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8666 case "$inclist" in
8667 "") inclist="sys/types.h";;
8668 esac;
8669 eval "varval=\$$var";
8670 case "$varval" in
8671 "")
8672         $rm -f temp.c;
8673         for inc in $inclist; do
8674                 echo "#include <$inc>" >>temp.c;
8675         done;
8676         echo "#ifdef $type" >> temp.c;
8677         echo "printf(\"We have $type\");" >> temp.c;
8678         echo "#endif" >> temp.c;
8679         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8680         echo " " ;
8681         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8682         if $contains $type temp.E >/dev/null 2>&1; then
8683                 echo "$type found." >&4;
8684                 eval "$var=\$type";
8685         else
8686                 echo "$type NOT found." >&4;
8687                 dflt="$def";
8688                 . ./myread ;
8689                 eval "$var=\$ans";
8690         fi;
8691         $rm -f temp.?;;
8692 *) eval "$var=\$varval";;
8693 esac'
8694
8695 : see what type lseek is declared as in the kernel
8696 rp="What is the type used for lseek's offset on this system?"
8697 set off_t lseektype long stdio.h sys/types.h
8698 eval $typedef_ask
8699
8700 echo " "
8701 echo "Checking to see how big your file offsets are..." >&4
8702 $cat >try.c <<EOCP
8703 #include <sys/types.h>
8704 #include <stdio.h>
8705 int main()
8706 {
8707     printf("%d\n", (int)sizeof($lseektype));
8708     return(0); 
8709 }
8710 EOCP
8711 set try
8712 if eval $compile_ok; then
8713         lseeksize=`$run ./try`
8714         echo "Your file offsets are $lseeksize bytes long."
8715 else
8716         dflt=$longsize
8717         echo " "
8718         echo "(I can't seem to compile the test program.  Guessing...)"
8719         rp="What is the size of your file offsets (in bytes)?"
8720         . ./myread
8721         lseeksize="$ans"
8722 fi
8723 $rm -f try.c try
8724
8725 : see what type file positions are declared as in the library
8726 rp="What is the type for file position used by fsetpos()?"
8727 set fpos_t fpostype long stdio.h sys/types.h
8728 eval $typedef_ask
8729
8730 echo " "
8731 case "$fpostype" in
8732 *_t) zzz="$fpostype"    ;;
8733 *)   zzz="fpos_t"       ;;
8734 esac
8735 echo "Checking the size of $zzz..." >&4 
8736 cat > try.c <<EOCP
8737 #include <sys/types.h>
8738 #include <stdio.h>
8739 #$i_stdlib I_STDLIB
8740 #ifdef I_STDLIB
8741 #include <stdlib.h>
8742 #endif
8743 int main() {
8744     printf("%d\n", (int)sizeof($fpostype));
8745     exit(0);
8746 }
8747 EOCP
8748 set try
8749 if eval $compile_ok; then
8750         yyy=`$run ./try`
8751         case "$yyy" in
8752         '')     fpossize=4
8753                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8754                 ;;
8755         *)      fpossize=$yyy
8756                 echo "Your $zzz is $fpossize bytes long."
8757                 ;;
8758         esac
8759 else
8760         dflt="$longsize"
8761         echo " " >&4
8762         echo "(I can't compile the test program.  Guessing...)" >&4
8763         rp="What is the size of your file positions (in bytes)?"
8764         . ./myread
8765         fpossize="$ans"
8766 fi
8767
8768 # Backward compatibility (uselfs is deprecated).
8769 case "$uselfs" in
8770 "$define"|true|[yY]*)
8771         cat <<EOM >&4
8772
8773 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8774 EOM
8775         uselargefiles="$define"
8776         ;;
8777 esac                          
8778
8779 case "$lseeksize:$fpossize" in
8780 8:8) cat <<EOM
8781
8782 You can have files larger than 2 gigabytes.
8783 EOM
8784    val="$define" ;;
8785 *)    case "$uselargefiles" in
8786    "$undef"|false|[nN]*) dflt='n' ;;
8787    *)   dflt='y' ;;
8788    esac
8789    cat <<EOM
8790
8791 Perl can be built to understand large files (files larger than 2 gigabytes)
8792 on some systems.  To do so, Configure can be run with -Duselargefiles.
8793
8794 If this doesn't make any sense to you, just accept the default '$dflt'.
8795 EOM
8796    rp='Try to understand large files, if available?'
8797    . ./myread
8798    case "$ans" in
8799    y|Y)         val="$define" ;;
8800    *)           val="$undef"  ;;
8801    esac
8802    ;;
8803 esac
8804 set uselargefiles
8805 eval $setvar
8806 case "$uselargefiles" in
8807 "$define")
8808 : Look for a hint-file generated 'call-back-unit'.  If the
8809 : user has specified that a large files perl is to be built,
8810 : we may need to set or change some other defaults.
8811         if $test -f uselargefiles.cbu; then
8812                 echo "Your platform has some specific hints for large file builds, using them..."
8813                 . ./uselargefiles.cbu
8814                 echo " "
8815                 echo "Rechecking 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 now $lseeksize bytes long."
8829                 else
8830                         dflt="$lseeksize"
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                 case "$fpostype" in
8838                 *_t) zzz="$fpostype"    ;;
8839                 *)   zzz="fpos_t"       ;;
8840                 esac
8841                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8842                 $cat > try.c <<EOCP
8843 #include <sys/types.h>
8844 #include <stdio.h>
8845 #$i_stdlib I_STDLIB
8846 #ifdef I_STDLIB
8847 #include <stdlib.h>
8848 #endif
8849 int main() {
8850     printf("%d\n", (int)sizeof($fpostype));
8851     return(0);
8852 }
8853 EOCP
8854                 set try
8855                 if eval $compile_ok; then
8856                         yyy=`$run ./try`
8857                         dflt="$lseeksize"
8858                         case "$yyy" in
8859                         '')     echo " "
8860                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8861                                 ;;
8862                         *)      fpossize=$yyy
8863                                 echo " $fpossize bytes." >&4
8864                                 ;;
8865                         esac
8866                 else
8867                         dflt="$fpossize"
8868                         echo " "
8869                         echo "(I can't compile the test program.  Guessing...)" >&4
8870                         rp="What is the size of your file positions (in bytes)?"
8871                         . ./myread
8872                         fpossize="$ans"
8873                 fi
8874                 $rm -f try.c try
8875         fi
8876         ;;
8877 esac
8878
8879 case "$vendorprefix" in
8880 '')     d_vendorbin="$undef"
8881         vendorbin=''
8882         vendorbinexp=''
8883         ;;
8884 *)      d_vendorbin="$define"
8885         : determine where vendor-supplied executables go.
8886         case "$vendorbin" in
8887         '') dflt=$vendorprefix/bin ;;
8888         *)      dflt="$vendorbin" ;;
8889         esac
8890         fn=d~+
8891         rp='Pathname for the vendor-supplied executables directory?'
8892         . ./getfile
8893         vendorbin="$ans"
8894         vendorbinexp="$ansexp"
8895         ;;
8896 esac
8897 : Change installation prefix, if necessary.
8898 if $test X"$prefix" != X"$installprefix"; then
8899         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8900 else
8901         installvendorbin="$vendorbinexp"
8902 fi
8903
8904 case "$vendorprefix" in
8905 '')     vendorhtml1=''
8906         vendorhtml1exp=''
8907         ;;
8908 *)      : determine where vendor-supplied html pages go.
8909         : There is no standard location, so try to copy the previously-selected
8910         : directory structure for the core html pages.
8911         : XXX Better default suggestions would be welcome.
8912         case "$vendorhtml1" in
8913         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8914         *)      dflt=$vendorhtml1 ;;
8915         esac
8916         case "$dflt" in
8917         ''|' ') dflt=none ;;
8918         esac
8919         fn=dn+~
8920         rp='Pathname for the vendor-supplied html pages?'
8921         . ./getfile
8922         vendorhtml1="$ans"
8923         vendorhtml1exp="$ansexp"
8924         ;;
8925 esac
8926 : Use ' ' for none so value is preserved next time through Configure
8927 $test X"$vendorhtml1" = "X" && vendorhtml1=' '
8928 : Change installation prefix, if necessary.
8929 if $test X"$prefix" != X"$installprefix"; then
8930         installvendorhtml1=`echo $vendorhtml1exp | $sed "s#^$prefix#$installprefix#"`
8931 else
8932         installvendorhtml1="$vendorhtml1exp"
8933 fi
8934
8935 case "$vendorprefix" in
8936 '')     vendorhtml3=''
8937         vendorhtml3exp=''
8938         ;;
8939 *)      : determine where vendor-supplied module html pages go.
8940         : There is no standard location, so try to copy the previously-selected
8941         : directory structure for the core html pages.
8942         : XXX Better default suggestions would be welcome.
8943         case "$vendorhtml3" in
8944         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8945         *)      dflt=$vendorhtml3 ;;
8946         esac
8947         case "$dflt" in
8948         ''|' ') dflt=none ;;
8949         esac
8950         fn=dn+~
8951         rp='Pathname for the vendor-supplied html pages?'
8952         . ./getfile
8953         vendorhtml3="$ans"
8954         vendorhtml3exp="$ansexp"
8955         ;;
8956 esac
8957 : Use ' ' for none so value is preserved next time through Configure
8958 $test X"$vendorhtml3" = "X" && vendorhtml3=' '
8959 : Change installation prefix, if necessary.
8960 if $test X"$prefix" != X"$installprefix"; then
8961         installvendorhtml3=`echo $vendorhtml3exp | $sed "s#^$prefix#$installprefix#"`
8962 else
8963         installvendorhtml3="$vendorhtml3exp"
8964 fi
8965
8966 case "$vendorprefix" in
8967 '')     vendorman1=''
8968         vendorman1exp=''
8969         ;;
8970 *)      : determine where vendor-supplied manual pages go.
8971         case "$vendorman1" in
8972         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8973         *)      dflt=$vendorman1 ;;
8974         esac
8975         case "$dflt" in
8976         ''|' ') dflt=none ;;
8977         esac
8978         fn=nd~+
8979         rp='Pathname for the vendor-supplied manual section 1 pages?'
8980         . ./getfile
8981         vendorman1="$ans"
8982         vendorman1exp="$ansexp"
8983         ;;
8984 esac
8985 : Use ' ' for none so value is preserved next time through Configure
8986 $test X"$vendorman1" = "X" && vendorman1=' '
8987 : Change installation prefix, if necessary.
8988 if $test X"$prefix" != X"$installprefix"; then
8989         installvendorman1=`echo "$vendorman1exp" | $sed "s#^$prefix#$installprefix#"`
8990 else
8991         installvendorman1="$vendorman1exp"
8992 fi
8993
8994 case "$vendorprefix" in
8995 '')     vendorman3=''
8996         vendorman3exp=''
8997         ;;
8998 *)      : determine where vendor-supplied module manual pages go.
8999         case "$vendorman3" in
9000         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9001         *)      dflt=$vendorman3 ;;
9002         esac
9003         case "$dflt" in
9004         ''|' ') dflt=none ;;
9005         esac
9006         fn=nd~+
9007         rp='Pathname for the vendor-supplied manual section 3 pages?'
9008         . ./getfile
9009         vendorman3="$ans"
9010         vendorman3exp="$ansexp"
9011         ;;
9012 esac
9013 : Use ' ' for none so value is preserved next time through Configure
9014 $test X"$vendorman3" = "X" && vendorman3=' '
9015 : Change installation prefix, if necessary.
9016 if $test X"$prefix" != X"$installprefix"; then
9017         installvendorman3=`echo "$vendorman3exp" | $sed "s#^$prefix#$installprefix#"`
9018 else
9019         installvendorman3="$vendorman3exp"
9020 fi
9021
9022 case "$vendorprefix" in
9023 '')     d_vendorscript="$undef"
9024         vendorscript=''
9025         vendorscriptexp=''
9026         ;;
9027 *)      d_vendorscript="$define"
9028         : determine where vendor-supplied scripts go.
9029         case "$vendorscript" in
9030         '')     dflt=$vendorprefix/script
9031                 $test -d $dflt || dflt=$vendorbin ;;
9032         *)  dflt="$vendorscript" ;;
9033         esac
9034         $cat <<EOM
9035
9036 The installation process will create a directory for 
9037 vendor-supplied scripts.
9038
9039 EOM
9040         fn=d~+
9041         rp='Pathname for the vendor-supplied scripts directory?'
9042         . ./getfile
9043         vendorscript="$ans"
9044         vendorscriptexp="$ansexp"
9045         ;;
9046 esac
9047 : Change installation prefix, if necessary.
9048 if $test X"$prefix" != X"$installprefix"; then
9049         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9050 else
9051         installvendorscript="$vendorscriptexp"
9052 fi
9053
9054 : see if qgcvt exists
9055 set qgcvt d_qgcvt
9056 eval $inlibc
9057
9058 echo " "
9059
9060 if $test X"$d_longdbl" = X"$define"; then
9061
9062 echo "Checking how to print long doubles..." >&4
9063
9064 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9065         $cat >try.c <<'EOCP'
9066 #include <sys/types.h>
9067 #include <stdio.h>
9068 int main() {
9069   double d = 123.456;
9070   printf("%.3f\n", d);
9071 }
9072 EOCP
9073         set try
9074         if eval $compile; then
9075                 yyy=`$run ./try`
9076                 case "$yyy" in
9077                 123.456)
9078                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9079                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9080                         echo "We will use %f."
9081                         ;;
9082                 esac
9083         fi
9084 fi
9085
9086 if $test X"$sPRIfldbl" = X; then
9087         $cat >try.c <<'EOCP'
9088 #include <sys/types.h>
9089 #include <stdio.h>
9090 int main() {
9091   long double d = 123.456;
9092   printf("%.3Lf\n", d);
9093 }
9094 EOCP
9095         set try
9096         if eval $compile; then
9097                 yyy=`$run ./try`
9098                 case "$yyy" in
9099                 123.456)
9100                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9101                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9102                         echo "We will use %Lf."
9103                         ;;
9104                 esac
9105         fi
9106 fi
9107
9108 if $test X"$sPRIfldbl" = X; then
9109         $cat >try.c <<'EOCP'
9110 #include <sys/types.h>
9111 #include <stdio.h>
9112 int main() {
9113   long double d = 123.456;
9114   printf("%.3llf\n", d);
9115 }
9116 EOCP
9117         set try
9118         if eval $compile; then
9119                 yyy=`$run ./try`
9120                 case "$yyy" in
9121                 123.456)
9122                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9123                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9124                         echo "We will use %llf."
9125                         ;;
9126                 esac
9127         fi
9128 fi
9129
9130 if $test X"$sPRIfldbl" = X; then
9131         $cat >try.c <<'EOCP'
9132 #include <sys/types.h>
9133 #include <stdio.h>
9134 int main() {
9135   long double d = 123.456;
9136   printf("%.3lf\n", d);
9137 }
9138 EOCP
9139         set try
9140         if eval $compile; then
9141                 yyy=`$run ./try`
9142                 case "$yyy" in
9143                 123.456)
9144                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9145                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9146                         echo "We will use %lf."
9147                         ;;
9148                 esac
9149         fi
9150 fi
9151
9152 if $test X"$sPRIfldbl" = X; then
9153         echo "Cannot figure out how to print long doubles." >&4
9154 else
9155         sSCNfldbl=$sPRIfldbl    # expect consistency
9156 fi
9157
9158 $rm -f try try.*
9159
9160 fi # d_longdbl
9161
9162 case "$sPRIfldbl" in
9163 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9164         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9165         d_SCNfldbl="$undef";
9166         ;;
9167 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9168         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9169         d_SCNfldbl="$define";
9170         ;;
9171 esac
9172
9173 : Check how to convert floats to strings.
9174
9175 if test "X$d_Gconvert" = X; then
9176
9177 echo " "
9178 echo "Checking for an efficient way to convert floats to strings."
9179 echo " " > try.c
9180 case "$uselongdouble" in
9181 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9182 esac
9183 case "$d_longdbl" in
9184 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9185 esac
9186 case "$d_PRIgldbl" in
9187 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9188 esac
9189 $cat >>try.c <<EOP
9190 #ifdef TRY_gconvert
9191 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9192 char *myname = "gconvert";
9193 #endif
9194 #ifdef TRY_gcvt
9195 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9196 char *myname = "gcvt";
9197 #endif
9198 #ifdef TRY_qgcvt
9199 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9200 char *myname = "qgcvt";
9201 #define DOUBLETYPE long double
9202 #endif
9203 #ifdef TRY_sprintf
9204 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9205 #ifdef HAS_PRIgldbl
9206 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9207 #else
9208 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9209 #endif
9210 #else
9211 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9212 #endif
9213 char *myname = "sprintf";
9214 #endif
9215
9216 #ifndef DOUBLETYPE
9217 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9218 #define DOUBLETYPE long double
9219 #else
9220 #define DOUBLETYPE double
9221 #endif
9222 #endif
9223
9224 #include <stdio.h>
9225
9226 #define I_STDLIB $i_stdlib
9227 #ifdef I_STDLIB
9228 #include <stdlib.h>
9229 #endif
9230
9231 int
9232 checkit(expect, got)
9233 char *expect;
9234 char *got;
9235 {
9236     if (strcmp(expect, got)) {
9237                 printf("%s oddity:  Expected %s, got %s\n",
9238                         myname, expect, got);
9239                 exit(1);
9240         }
9241 }
9242
9243 int main()
9244
9245         char buf[64]; 
9246         buf[63] = '\0';
9247
9248         /* This must be 1st test on (which?) platform */
9249         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9250         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9251         checkit("0.1", buf);
9252
9253         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9254         checkit("0.01", buf);
9255
9256         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9257         checkit("0.001", buf);
9258
9259         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9260         checkit("0.0001", buf);
9261
9262         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9263         if (strlen(buf) > 5)
9264             checkit("9e-005", buf); /* for Microsoft ?? */
9265         else
9266             checkit("9e-05", buf);
9267
9268         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9269         checkit("1", buf);
9270
9271         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9272         checkit("1.1", buf);
9273
9274         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9275         checkit("1.01", buf);
9276
9277         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9278         checkit("1.001", buf);
9279
9280         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9281         checkit("1.0001", buf);
9282
9283         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9284         checkit("1.00001", buf);
9285
9286         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9287         checkit("1.000001", buf);
9288
9289         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9290         checkit("0", buf);
9291
9292         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9293         checkit("-1", buf);
9294
9295         /* Some Linux gcvt's give 1.e+5 here. */
9296         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9297         checkit("100000", buf);
9298         
9299         /* Some Linux gcvt's give -1.e+5 here. */
9300         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9301         checkit("-100000", buf);
9302
9303         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9304         checkit("123.456", buf);
9305
9306         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9307         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9308         /* 34 should be enough to scare even long double
9309          * places into using the e notation. */
9310         if (strlen(buf) > 5)
9311             checkit("1e+034", buf); /* for Microsoft */
9312         else
9313             checkit("1e+34", buf);
9314
9315         /* For Perl, if you add additional tests here, also add them to
9316          * t/base/num.t for benefit of platforms not using Configure or
9317          * overriding d_Gconvert */
9318
9319         exit(0);
9320 }
9321 EOP
9322 : first add preferred functions to our list
9323 xxx_list=""
9324 for xxx_convert in $gconvert_preference; do
9325     case $xxx_convert in
9326     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9327     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9328     esac 
9329 done
9330 : then add any others
9331 for xxx_convert in gconvert gcvt sprintf; do
9332     case "$xxx_list" in
9333     *$xxx_convert*) ;;
9334     *) xxx_list="$xxx_list $xxx_convert" ;;
9335     esac 
9336 done
9337
9338 case "$d_longdbl$uselongdouble" in
9339 "$define$define")
9340     : again, add prefered functions to our list first
9341     xxx_ld_list=""
9342     for xxx_convert in $gconvert_ld_preference; do
9343         case $xxx_convert in
9344         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9345         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9346         esac
9347     done
9348     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9349     for xxx_convert in qgcvt sprintf $xxx_list; do
9350         case "$xxx_ld_list" in
9351         $xxx_convert*|*" $xxx_convert"*) ;;
9352         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9353         esac
9354     done
9355     : if sprintf cannot do long doubles, move it to the end
9356     if test "$d_PRIgldbl" != "$define"; then
9357         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9358     fi
9359     : if no qgcvt, remove it
9360     if test "$d_qgcvt" != "$define"; then
9361         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9362     fi
9363     : use the ld_list
9364     xxx_list="$xxx_ld_list"
9365     ;;
9366 esac
9367
9368 for xxx_convert in $xxx_list; do
9369         echo "Trying $xxx_convert..."
9370         $rm -f try try$_o
9371         set try -DTRY_$xxx_convert
9372         if eval $compile; then
9373                 echo "$xxx_convert() found." >&4
9374                 if $run ./try; then
9375                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9376                         break;
9377                 else
9378                         echo "...But $xxx_convert didn't work as I expected."
9379                         xxx_convert=''
9380                 fi
9381         else
9382                 echo "$xxx_convert NOT found." >&4
9383         fi
9384 done
9385
9386 if test X$xxx_convert = X; then
9387     echo "*** WHOA THERE!!! ***" >&4
9388     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9389     xxx_convert=sprintf
9390 fi
9391
9392 case "$xxx_convert" in
9393 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9394 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9395 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9396 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9397    "$define$define$define")
9398       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9399    "$define$define$undef")
9400       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9401    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9402    esac
9403    ;;  
9404 esac
9405
9406 fi
9407
9408 : see if _fwalk exists
9409 set fwalk d__fwalk
9410 eval $inlibc
9411
9412 : Initialize h_fcntl
9413 h_fcntl=false
9414
9415 : Initialize h_sysfile
9416 h_sysfile=false
9417
9418 : access call always available on UNIX
9419 set access d_access
9420 eval $inlibc
9421
9422 : locate the flags for 'access()'
9423 case "$d_access" in
9424 "$define")
9425         echo " "
9426         $cat >access.c <<EOCP
9427 #include <sys/types.h>
9428 #ifdef I_FCNTL
9429 #include <fcntl.h>
9430 #endif
9431 #ifdef I_SYS_FILE
9432 #include <sys/file.h>
9433 #endif
9434 #ifdef I_UNISTD
9435 #include <unistd.h>
9436 #endif
9437 #$i_stdlib I_STDLIB
9438 #ifdef I_STDLIB
9439 #include <stdlib.h>
9440 #endif
9441 int main() {
9442         exit(R_OK);
9443 }
9444 EOCP
9445         : check sys/file.h first, no particular reason here
9446         if $test `./findhdr sys/file.h` && \
9447                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9448                 h_sysfile=true;
9449                 echo "<sys/file.h> defines the *_OK access constants." >&4
9450         elif $test `./findhdr fcntl.h` && \
9451                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9452                 h_fcntl=true;
9453                 echo "<fcntl.h> defines the *_OK access constants." >&4
9454         elif $test `./findhdr unistd.h` && \
9455                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9456                 echo "<unistd.h> defines the *_OK access constants." >&4
9457         else
9458                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9459         fi
9460         ;;
9461 esac
9462 $rm -f access*
9463
9464 : see if accessx exists
9465 set accessx d_accessx
9466 eval $inlibc
9467
9468 : see if aintl exists
9469 set aintl d_aintl
9470 eval $inlibc
9471
9472 : see if alarm exists
9473 set alarm d_alarm
9474 eval $inlibc
9475
9476 : see if POSIX threads are available
9477 set pthread.h i_pthread
9478 eval $inhdr
9479
9480 : define a fucntion to check prototypes
9481 $cat > protochk <<EOSH
9482 $startsh
9483 cc="$cc"
9484 optimize="$optimize"
9485 ccflags="$ccflags"
9486 prototype="$prototype"
9487 define="$define"
9488 rm=$rm
9489 usethreads=$usethreads
9490 i_pthread=$i_pthread
9491 pthread_h_first=$pthread_h_first
9492 EOSH
9493
9494 $cat >> protochk <<'EOSH'
9495
9496 $rm -f try.c
9497 foo="$1"
9498 shift
9499 while test $# -ge 2; do
9500         case "$1" in
9501                 $define) echo "#include <$2>" >> try.c ;;
9502                 literal) echo "$2" >> try.c ;;
9503         esac
9504     # Extra magic for the benefit of systems that need pthread.h
9505     # to be included early to correctly detect threadsafe functions.
9506     # Such functions must guarantee themselves, though, that the usethreads
9507     # and i_pthread have been defined, before calling protochk.
9508     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9509         echo "#include <pthread.h>" >> try.c
9510         pthread_h_done=yes
9511     fi
9512     shift 2
9513 done
9514 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9515 cat >> try.c <<'EOCP'
9516 #ifdef CAN_PROTOTYPE
9517 #define _(args) args
9518 #else
9519 #define _(args) ()
9520 #endif
9521 EOCP
9522 echo "$foo" >> try.c
9523 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9524 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9525 status=$?
9526 $rm -f try.[co]
9527 exit $status
9528 EOSH
9529 chmod +x protochk
9530 $eunicefix protochk
9531
9532 hasproto='varname=$1; func=$2; shift; shift;
9533 while $test $# -ge 2; do
9534         case "$1" in
9535         $define) echo "#include <$2>";;
9536         esac ;
9537     shift 2;
9538 done > try.c;
9539 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9540 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9541         echo "$func() prototype found.";
9542         val="$define";
9543 else
9544         echo "$func() prototype NOT found.";
9545         val="$undef";
9546 fi;
9547 set $varname;
9548 eval $setvar;
9549 $rm -f try.c tryout.c'
9550
9551 : see if sys/types.h has to be included
9552 set sys/types.h i_systypes
9553 eval $inhdr
9554
9555 : see if sys/select.h has to be included
9556 set sys/select.h i_sysselct
9557 eval $inhdr
9558
9559 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9560 while $test $# -ge 2; do
9561         case "$1" in
9562         $define) echo "#include <$2>";;
9563         esac ;
9564     shift 2;
9565 done > try.c;
9566 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9567 set try;
9568 if eval $compile; then
9569         val="$define";
9570 else
9571         val="$undef";
9572 fi;
9573 set $varname;
9574 eval $setvar;
9575 $rm -f try.c try.o'
9576
9577 : see if we should include time.h, sys/time.h, or both
9578 echo " "
9579 if test "X$timeincl" = X; then
9580         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9581         $echo $n "I'm now running the test program...$c"
9582         $cat >try.c <<EOCP
9583 #include <sys/types.h>
9584 #ifdef I_TIME
9585 #include <time.h>
9586 #endif
9587 #ifdef I_SYSTIME
9588 #ifdef SYSTIMEKERNEL
9589 #define KERNEL
9590 #endif
9591 #include <sys/time.h>
9592 #endif
9593 #ifdef I_SYSSELECT
9594 #include <sys/select.h>
9595 #endif
9596 #$i_stdlib I_STDLIB
9597 #ifdef I_STDLIB
9598 #include <stdlib.h>
9599 #endif
9600 int main()
9601 {
9602         struct tm foo;
9603 #ifdef S_TIMEVAL
9604         struct timeval bar;
9605 #endif
9606 #ifdef S_TIMEZONE
9607         struct timezone tzp;
9608 #endif
9609         if (foo.tm_sec == foo.tm_sec)
9610                 exit(0);
9611 #ifdef S_TIMEVAL
9612         if (bar.tv_sec == bar.tv_sec)
9613                 exit(0);
9614 #endif
9615         exit(1);
9616 }
9617 EOCP
9618         flags=''
9619         for s_timezone in '-DS_TIMEZONE' ''; do
9620         sysselect=''
9621         for s_timeval in '-DS_TIMEVAL' ''; do
9622         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9623         for i_time in '' '-DI_TIME'; do
9624         for i_systime in '-DI_SYSTIME' ''; do
9625                 case "$flags" in
9626                 '') $echo $n ".$c"
9627                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9628                         if eval $compile; then
9629                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9630                                 shift
9631                                 flags="$*"
9632                                 echo " "
9633                                 $echo $n "Succeeded with $flags$c"
9634                         fi
9635                         ;;
9636                 esac
9637         done
9638         done
9639         done
9640         done
9641         done
9642         timeincl=''
9643         echo " "
9644         case "$flags" in
9645         *SYSTIMEKERNEL*) i_systimek="$define"
9646                 timeincl=`./findhdr sys/time.h`
9647                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9648         *) i_systimek="$undef";;
9649         esac
9650         case "$flags" in
9651         *I_TIME*) i_time="$define"
9652                 timeincl=`./findhdr time.h`" $timeincl"
9653                 echo "We'll include <time.h>." >&4;;
9654         *) i_time="$undef";;
9655         esac
9656         case "$flags" in
9657         *I_SYSTIME*) i_systime="$define"
9658                 timeincl=`./findhdr sys/time.h`" $timeincl"
9659                 echo "We'll include <sys/time.h>." >&4;;
9660         *) i_systime="$undef";;
9661         esac
9662         $rm -f try.c try
9663 fi
9664 : see if struct tm knows about tm_zone
9665 case "$i_systime$i_time" in
9666 *$define*) 
9667         echo " "
9668         echo "Checking to see if your struct tm has tm_zone field..." >&4
9669         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9670         eval $hasfield
9671         ;;
9672 *)      val="$undef"
9673         set d_tm_tm_zone
9674         eval $setvar
9675         ;;
9676 esac
9677 case "$d_tm_tm_zone" in
9678 "$define")      echo "Yes, it does."   ;;
9679 *)              echo "No, it doesn't." ;;
9680 esac
9681 : see if struct tm knows about tm_gmtoff
9682 case "$i_systime$i_time" in
9683 *$define*) 
9684         echo " "
9685         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9686         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9687         eval $hasfield
9688         ;;
9689 *)      val="$undef"
9690         set d_tm_tm_gmtoff
9691         eval $setvar
9692         ;;
9693 esac
9694 case "$d_tm_tm_gmtoff" in
9695 "$define")      echo "Yes, it does."   ;;
9696 *)              echo "No, it doesn't." ;;
9697 esac
9698
9699 : see if asctime_r exists
9700 set asctime_r d_asctime_r
9701 eval $inlibc
9702 case "$d_asctime_r" in
9703 "$define")
9704         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9705         case "$d_asctime_r_proto:$usethreads" in
9706         ":define")      d_asctime_r_proto=define
9707                 set d_asctime_r_proto asctime_r $hdrs
9708                 eval $hasproto ;;
9709         *)      ;;
9710         esac
9711         case "$d_asctime_r_proto" in
9712         define)
9713         case "$asctime_r_proto" in
9714         ''|0) try='char* asctime_r(const struct tm*, char*);'
9715         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9716         esac
9717         case "$asctime_r_proto" in
9718         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9719         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9720         esac
9721         case "$asctime_r_proto" in
9722         ''|0) try='int asctime_r(const struct tm*, char*);'
9723         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9724         esac
9725         case "$asctime_r_proto" in
9726         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9727         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9728         esac
9729         case "$asctime_r_proto" in
9730         ''|0)   d_asctime_r=undef
9731                 asctime_r_proto=0
9732                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9733         * )     case "$asctime_r_proto" in
9734                 REENTRANT_PROTO*) ;;
9735                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9736                 esac
9737                 echo "Prototype: $try" ;;
9738         esac
9739         ;;
9740         *)      case "$usethreads" in
9741                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9742                 esac
9743                 d_asctime_r=undef
9744                 asctime_r_proto=0
9745                 ;;
9746         esac
9747         ;;
9748 *)      asctime_r_proto=0
9749         ;;
9750 esac
9751
9752 : see if atolf exists
9753 set atolf d_atolf
9754 eval $inlibc
9755
9756 : see if atoll exists
9757 set atoll d_atoll
9758 eval $inlibc
9759
9760 : Look for GNU-cc style attribute checking
9761 echo " "
9762 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9763 $cat >attrib.c <<'EOCP'
9764 #include <stdio.h>
9765 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
9766 EOCP
9767 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9768         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9769                 echo "Your C compiler doesn't fully support __attribute__."
9770                 val="$undef"
9771         else
9772                 echo "Your C compiler supports __attribute__."
9773                 val="$define"
9774         fi
9775 else
9776         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9777         val="$undef"
9778 fi
9779 set d_attribut
9780 eval $setvar
9781 $rm -f attrib*
9782
9783 : see if bcmp exists
9784 set bcmp d_bcmp
9785 eval $inlibc
9786
9787 : see if bcopy exists
9788 set bcopy d_bcopy
9789 eval $inlibc
9790
9791 : see if this is a unistd.h system
9792 set unistd.h i_unistd
9793 eval $inhdr
9794
9795 : see if getpgrp exists
9796 set getpgrp d_getpgrp
9797 eval $inlibc
9798
9799 case "$d_getpgrp" in
9800 "$define")
9801         echo " "
9802         echo "Checking to see which flavor of getpgrp is in use..."
9803         $cat >try.c <<EOP
9804 #$i_unistd I_UNISTD
9805 #include <sys/types.h>
9806 #ifdef I_UNISTD
9807 #  include <unistd.h>
9808 #endif
9809 #$i_stdlib I_STDLIB
9810 #ifdef I_STDLIB
9811 #include <stdlib.h>
9812 #endif
9813 int main()
9814 {
9815         if (getuid() == 0) {
9816                 printf("(I see you are running Configure as super-user...)\n");
9817                 setuid(1);
9818         }
9819 #ifdef TRY_BSD_PGRP
9820         if (getpgrp(1) == 0)
9821                 exit(0);
9822 #else
9823         if (getpgrp() > 0)
9824                 exit(0);
9825 #endif
9826         exit(1);
9827 }
9828 EOP
9829         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9830                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9831                 val="$define"
9832         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9833                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9834                 val="$undef"
9835         else
9836                 echo "I can't seem to compile and run the test program."
9837                 if ./usg; then
9838                         xxx="a USG one, i.e. you use getpgrp()."
9839                 else
9840                         # SVR4 systems can appear rather BSD-ish.
9841                         case "$i_unistd" in
9842                         $undef)
9843                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9844                                 val="$define"
9845                                 ;;
9846                         $define)
9847                                 xxx="probably a USG one, i.e. you use getpgrp()."
9848                                 val="$undef"
9849                                 ;;
9850                         esac
9851                 fi
9852                 echo "Assuming your getpgrp is $xxx" >&4
9853         fi
9854         ;;
9855 *) val="$undef";;
9856 esac
9857 set d_bsdgetpgrp
9858 eval $setvar
9859 $rm -f try try.*
9860
9861 : see if setpgrp exists
9862 set setpgrp d_setpgrp
9863 eval $inlibc
9864
9865 case "$d_setpgrp" in
9866 "$define")
9867         echo " "
9868         echo "Checking to see which flavor of setpgrp is in use..."
9869         $cat >try.c <<EOP
9870 #$i_unistd I_UNISTD
9871 #include <sys/types.h>
9872 #ifdef I_UNISTD
9873 #  include <unistd.h>
9874 #endif
9875 #$i_stdlib I_STDLIB
9876 #ifdef I_STDLIB
9877 #include <stdlib.h>
9878 #endif
9879 int main()
9880 {
9881         if (getuid() == 0) {
9882                 printf("(I see you are running Configure as super-user...)\n");
9883                 setuid(1);
9884         }
9885 #ifdef TRY_BSD_PGRP
9886         if (-1 == setpgrp(1, 1))
9887                 exit(0);
9888 #else
9889         if (setpgrp() != -1)
9890                 exit(0);
9891 #endif
9892         exit(1);
9893 }
9894 EOP
9895         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9896                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9897                 val="$define"
9898         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9899                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9900                 val="$undef"
9901         else
9902                 echo "(I can't seem to compile and run the test program.)"
9903                 if ./usg; then
9904                         xxx="a USG one, i.e. you use setpgrp()."
9905                 else
9906                         # SVR4 systems can appear rather BSD-ish.
9907                         case "$i_unistd" in
9908                         $undef)
9909                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9910                                 val="$define"
9911                                 ;;
9912                         $define)
9913                                 xxx="probably a USG one, i.e. you use setpgrp()."
9914                                 val="$undef"
9915                                 ;;
9916                         esac
9917                 fi
9918                 echo "Assuming your setpgrp is $xxx" >&4
9919         fi
9920         ;;
9921 *) val="$undef";;
9922 esac
9923 set d_bsdsetpgrp
9924 eval $setvar
9925 $rm -f try try.*
9926 : see if bzero exists
9927 set bzero d_bzero
9928 eval $inlibc
9929
9930 : see if signal is declared as pointer to function returning int or void
9931 echo " "
9932 xxx=`./findhdr signal.h`
9933 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9934 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
9935         echo "You have int (*signal())() instead of void." >&4
9936         val="$undef"
9937 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
9938         echo "You have void (*signal())()." >&4
9939         val="$define"
9940 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9941         echo "You have int (*signal())() instead of void." >&4
9942         val="$undef"
9943 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9944         echo "You have void (*signal())()." >&4
9945         val="$define"
9946 else
9947         case "$d_voidsig" in
9948         '')
9949         echo "I can't determine whether signal handler returns void or int..." >&4
9950                 dflt=void
9951                 rp="What type does your signal handler return?"
9952                 . ./myread
9953                 case "$ans" in
9954                 v*) val="$define";;
9955                 *) val="$undef";;
9956                 esac;;
9957         "$define")
9958                 echo "As you already told me, signal handler returns void." >&4
9959                 val="$define"
9960                 ;;
9961         *)      echo "As you already told me, signal handler returns int." >&4
9962                 val="$undef"
9963                 ;;
9964         esac
9965 fi
9966 set d_voidsig
9967 eval $setvar
9968 case "$d_voidsig" in
9969 "$define") signal_t="void";;
9970 *) signal_t="int";;
9971 esac
9972 $rm -f $$.tmp
9973
9974 : check for ability to cast large floats to 32-bit ints.
9975 echo " "
9976 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
9977 if $test "$intsize" -ge 4; then
9978         xxx=int
9979 else
9980         xxx=long
9981 fi
9982 $cat >try.c <<EOCP
9983 #include <stdio.h>
9984 #$i_stdlib I_STDLIB
9985 #ifdef I_STDLIB
9986 #include <stdlib.h>
9987 #endif
9988 #include <sys/types.h>
9989 #include <signal.h>
9990 $signal_t blech(s) int s; { exit(3); }
9991 int main()
9992 {
9993         $xxx i32;
9994         double f, g;
9995         int result = 0;
9996         char str[16];
9997         signal(SIGFPE, blech);
9998
9999         /* Don't let compiler optimize the test away.  Store the number 
10000            in a writable string for gcc to pass to sscanf under HP/UX.
10001         */
10002         sprintf(str, "2147483647");
10003         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10004         g = 10 * f;
10005         i32  = ($xxx) g;
10006
10007         /* x86 processors will probably give 0x8000 0000, which is a
10008        sign change.  We don't want that.  We want to mimic SPARC
10009            behavior here, which is to preserve the sign and give
10010            back 0x7fff ffff.
10011         */
10012         if (i32 != ($xxx) f)
10013                 result |= 1;
10014         exit(result);
10015 }
10016 EOCP
10017 set try
10018 if eval $compile_ok; then
10019         $run ./try
10020         yyy=$?
10021 else
10022         echo "(I can't seem to compile the test program--assuming it can't)"
10023         yyy=1
10024 fi
10025 case "$yyy" in
10026 0)      val="$define"
10027         echo "Yup, it can."
10028         ;;
10029 *)      val="$undef"
10030         echo "Nope, it can't."
10031         ;;
10032 esac
10033 set d_casti32
10034 eval $setvar
10035 $rm -f try try.*
10036
10037 : check for ability to cast negative floats to unsigned
10038 echo " "
10039 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10040 $cat >try.c <<EOCP
10041 #include <stdio.h>
10042 #$i_stdlib I_STDLIB
10043 #ifdef I_STDLIB
10044 #include <stdlib.h>
10045 #endif
10046 #include <sys/types.h>
10047 #include <signal.h>
10048 $signal_t blech(s) int s; { exit(7); }
10049 $signal_t blech_in_list(s) int s; { exit(4); }
10050 unsigned long dummy_long(p) unsigned long p; { return p; }
10051 unsigned int dummy_int(p) unsigned int p; { return p; }
10052 unsigned short dummy_short(p) unsigned short p; { return p; }
10053 int main()
10054 {
10055         double f;
10056         unsigned long along;
10057         unsigned int aint;
10058         unsigned short ashort;
10059         int result = 0;
10060         char str[16];
10061         
10062         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10063            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10064            optimized the whole file away
10065         */
10066         /* Store the number in a writable string for gcc to pass to 
10067            sscanf under HP/UX.
10068         */
10069         sprintf(str, "-123");
10070         sscanf(str, "%lf", &f);  /* f = -123.; */
10071
10072         signal(SIGFPE, blech);
10073         along = (unsigned long)f;
10074         aint = (unsigned int)f;
10075         ashort = (unsigned short)f;
10076         if (along != (unsigned long)-123)
10077                 result |= 1;
10078         if (aint != (unsigned int)-123)
10079                 result |= 1;
10080         if (ashort != (unsigned short)-123)
10081                 result |= 1;
10082         sprintf(str, "1073741824.");
10083         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10084         f = f + f;
10085         along = 0;
10086         along = (unsigned long)f;
10087         if (along != 0x80000000)
10088                 result |= 2;
10089         f -= 1.;
10090         along = 0;
10091         along = (unsigned long)f;
10092         if (along != 0x7fffffff)
10093                 result |= 1;
10094         f += 2.;
10095         along = 0;
10096         along = (unsigned long)f;
10097         if (along != 0x80000001)
10098                 result |= 2;
10099         if (result)
10100                 exit(result);
10101         signal(SIGFPE, blech_in_list);
10102         sprintf(str, "123.");
10103         sscanf(str, "%lf", &f);  /* f = 123.; */
10104         along = dummy_long((unsigned long)f);
10105         aint = dummy_int((unsigned int)f);
10106         ashort = dummy_short((unsigned short)f);
10107         if (along != (unsigned long)123)
10108                 result |= 4;
10109         if (aint != (unsigned int)123)
10110                 result |= 4;
10111         if (ashort != (unsigned short)123)
10112                 result |= 4;
10113         exit(result);
10114
10115 }
10116 EOCP
10117 set try
10118 if eval $compile_ok; then
10119         $run ./try
10120         castflags=$?
10121 else
10122         echo "(I can't seem to compile the test program--assuming it can't)"
10123         castflags=7
10124 fi
10125 case "$castflags" in
10126 0)      val="$define"
10127         echo "Yup, it can."
10128         ;;
10129 *)      val="$undef"
10130         echo "Nope, it can't."
10131         ;;
10132 esac
10133 set d_castneg
10134 eval $setvar
10135 $rm -f try.*
10136
10137 : see if vprintf exists
10138 echo " "
10139 if set vprintf val -f d_vprintf; eval $csym; $val; then
10140         echo 'vprintf() found.' >&4
10141         val="$define"
10142         $cat >try.c <<EOF
10143 #include <varargs.h>
10144 #$i_stdlib I_STDLIB
10145 #ifdef I_STDLIB
10146 #include <stdlib.h>
10147 #endif
10148
10149 int main() { xxx("foo"); }
10150
10151 xxx(va_alist)
10152 va_dcl
10153 {
10154         va_list args;
10155         char buf[10];
10156
10157         va_start(args);
10158         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10159 }
10160 EOF
10161         set try
10162         if eval $compile && $run ./try; then
10163                 echo "Your vsprintf() returns (int)." >&4
10164                 val2="$undef"
10165         else
10166                 echo "Your vsprintf() returns (char*)." >&4
10167                 val2="$define"
10168         fi
10169 else
10170         echo 'vprintf() NOT found.' >&4
10171                 val="$undef"
10172                 val2="$undef"
10173 fi
10174 $rm -f try try.*
10175 set d_vprintf
10176 eval $setvar
10177 val=$val2
10178 set d_charvspr
10179 eval $setvar
10180
10181 : see if chown exists
10182 set chown d_chown
10183 eval $inlibc
10184
10185 : see if chroot exists
10186 set chroot d_chroot
10187 eval $inlibc
10188
10189 : see if chsize exists
10190 set chsize d_chsize
10191 eval $inlibc
10192
10193 : see if class exists
10194 set class d_class
10195 eval $inlibc
10196
10197 hasstruct='varname=$1; struct=$2; shift; shift;
10198 while $test $# -ge 2; do
10199         case "$1" in
10200         $define) echo "#include <$2>";;
10201         esac ;
10202     shift 2;
10203 done > try.c;
10204 echo "int main () { struct $struct foo; }" >> try.c;
10205 set try;
10206 if eval $compile; then
10207         val="$define";
10208 else
10209         val="$undef";
10210 fi;
10211 set $varname;
10212 eval $setvar;
10213 $rm -f try.c try.o'
10214
10215 socketlib=''
10216 sockethdr=''
10217 : see whether socket exists
10218 echo " "
10219 $echo $n "Hmm... $c" >&4
10220 if set socket val -f d_socket; eval $csym; $val; then
10221         echo "Looks like you have Berkeley networking support." >&4
10222         d_socket="$define"
10223         if set setsockopt val -f; eval $csym; $val; then
10224                 d_oldsock="$undef"
10225         else
10226                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10227                 d_oldsock="$define"
10228         fi
10229 else
10230         if $contains socklib libc.list >/dev/null 2>&1; then
10231                 echo "Looks like you have Berkeley networking support." >&4
10232                 d_socket="$define"
10233                 : we will have to assume that it supports the 4.2 BSD interface
10234                 d_oldsock="$undef"
10235         else
10236                 echo "You don't have Berkeley networking in libc$_a..." >&4
10237                 if test "X$d_socket" = "X$define"; then
10238                    echo "...but you seem to believe that you have sockets." >&4
10239                 else
10240                         for net in net socket
10241                         do
10242                                 if test -f /usr/lib/lib$net$_a; then
10243                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10244                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10245                                         if $contains socket libc.list >/dev/null 2>&1; then
10246                                                 d_socket="$define"
10247                                                 socketlib="-l$net"
10248                                                 case "$net" in
10249                                                 net)
10250                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10251                                                         sockethdr="-I/usr/netinclude"
10252                                                         ;;
10253                                                 esac
10254                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10255                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10256                                                         d_oldsock="$undef"
10257                                                 else
10258                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10259                                                         d_oldsock="$define"
10260                                                 fi
10261                                                 break
10262                                         fi
10263                                 fi
10264                         done
10265                         if test "X$d_socket" != "X$define"; then
10266                            echo "or anywhere else I see." >&4
10267                            d_socket="$undef"
10268                            d_oldsock="$undef"
10269                         fi
10270                 fi
10271         fi
10272 fi
10273
10274 : see if socketpair exists
10275 set socketpair d_sockpair
10276 eval $inlibc
10277
10278
10279 echo " "
10280 echo "Checking the availability of certain socket constants..." >&4
10281 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10282         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10283         $cat >try.c <<EOF
10284 #include <sys/types.h>
10285 #include <sys/socket.h>
10286 int main() {
10287     int i = $ENUM;
10288 }
10289 EOF
10290         val="$undef"
10291         set try; if eval $compile; then
10292                 val="$define"
10293         fi
10294         set d_${enum}; eval $setvar
10295         $rm -f try.c try
10296 done
10297
10298 : see if this is a sys/uio.h system
10299 set sys/uio.h i_sysuio
10300 eval $inhdr
10301
10302
10303 echo " "
10304 echo "Checking to see if your system supports struct cmsghdr..." >&4
10305 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10306 eval $hasstruct
10307 case "$d_cmsghdr_s" in
10308 "$define")      echo "Yes, it does."   ;;
10309 *)              echo "No, it doesn't." ;;
10310 esac
10311
10312
10313 : check for const keyword
10314 echo " "
10315 echo 'Checking to see if your C compiler knows about "const"...' >&4
10316 $cat >const.c <<'EOCP'
10317 typedef struct spug { int drokk; } spug;
10318 int main()
10319 {
10320         const char *foo;
10321         const spug y;
10322 }
10323 EOCP
10324 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10325         val="$define"
10326         echo "Yup, it does."
10327 else
10328         val="$undef"
10329         echo "Nope, it doesn't."
10330 fi
10331 set d_const
10332 eval $setvar
10333
10334 : see if copysignl exists
10335 set copysignl d_copysignl
10336 eval $inlibc
10337
10338 : see if crypt exists
10339 echo " "
10340 set crypt d_crypt
10341 eval $inlibc
10342 case "$d_crypt" in
10343 $define) cryptlib='' ;;
10344 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10345                 echo 'crypt() found.' >&4
10346                 val="$define"
10347                 cryptlib=''
10348         else
10349                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10350                 if $test -z "$cryptlib"; then
10351                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10352                 else
10353                         cryptlib=-lcrypt
10354                 fi
10355                 if $test -z "$cryptlib"; then
10356                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10357                 else
10358                         cryptlib=-lcrypt
10359                 fi
10360                 if $test -z "$cryptlib"; then
10361                         cryptlib=`./loc libcrypt$_a "" $libpth`
10362                 else
10363                         cryptlib=-lcrypt
10364                 fi
10365                 if $test -z "$cryptlib"; then
10366                         echo 'crypt() NOT found.' >&4
10367                         val="$undef"
10368                 else
10369                         val="$define"
10370                 fi
10371         fi
10372         set d_crypt
10373         eval $setvar
10374         ;;
10375 esac
10376
10377 : see if this is a crypt.h system
10378 set crypt.h i_crypt
10379 eval $inhdr
10380
10381 : see if crypt_r exists
10382 set crypt_r d_crypt_r
10383 eval $inlibc
10384 case "$d_crypt_r" in
10385 "$define")
10386         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10387         case "$d_crypt_r_proto:$usethreads" in
10388         ":define")      d_crypt_r_proto=define
10389                 set d_crypt_r_proto crypt_r $hdrs
10390                 eval $hasproto ;;
10391         *)      ;;
10392         esac
10393         case "$d_crypt_r_proto" in
10394         define)
10395         case "$crypt_r_proto" in
10396         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10397         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10398         esac
10399         case "$crypt_r_proto" in
10400         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10401         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10402         esac
10403         case "$crypt_r_proto" in
10404         ''|0)   d_crypt_r=undef
10405                 crypt_r_proto=0
10406                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10407         * )     case "$crypt_r_proto" in
10408                 REENTRANT_PROTO*) ;;
10409                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10410                 esac
10411                 echo "Prototype: $try" ;;
10412         esac
10413         ;;
10414         *)      case "$usethreads" in
10415                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10416                 esac
10417                 d_crypt_r=undef
10418                 crypt_r_proto=0
10419                 ;;
10420         esac
10421         ;;
10422 *)      crypt_r_proto=0
10423         ;;
10424 esac
10425
10426 : get csh whereabouts
10427 case "$csh" in
10428 'csh') val="$undef" ;;
10429 *) val="$define" ;;
10430 esac
10431 set d_csh
10432 eval $setvar
10433 : Respect a hint or command line value for full_csh.
10434 case "$full_csh" in
10435 '') full_csh=$csh ;;
10436 esac
10437
10438 : see if ctermid_r exists
10439 set ctermid_r d_ctermid_r
10440 eval $inlibc
10441 case "$d_ctermid_r" in
10442 "$define")
10443         hdrs="$i_systypes sys/types.h define stdio.h "
10444         case "$d_ctermid_r_proto:$usethreads" in
10445         ":define")      d_ctermid_r_proto=define
10446                 set d_ctermid_r_proto ctermid_r $hdrs
10447                 eval $hasproto ;;
10448         *)      ;;
10449         esac
10450         case "$d_ctermid_r_proto" in
10451         define)
10452         case "$ctermid_r_proto" in
10453         ''|0) try='char* ctermid_r(char*);'
10454         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10455         esac
10456         case "$ctermid_r_proto" in
10457         ''|0)   d_ctermid_r=undef
10458                 ctermid_r_proto=0
10459                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10460         * )     case "$ctermid_r_proto" in
10461                 REENTRANT_PROTO*) ;;
10462                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10463                 esac
10464                 echo "Prototype: $try" ;;
10465         esac
10466         ;;
10467         *)      case "$usethreads" in
10468                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10469                 esac
10470                 d_ctermid_r=undef
10471                 ctermid_r_proto=0
10472                 ;;
10473         esac
10474         ;;
10475 *)      ctermid_r_proto=0
10476         ;;
10477 esac
10478
10479 : see if ctime_r exists
10480 set ctime_r d_ctime_r
10481 eval $inlibc
10482 case "$d_ctime_r" in
10483 "$define")
10484         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10485         case "$d_ctime_r_proto:$usethreads" in
10486         ":define")      d_ctime_r_proto=define
10487                 set d_ctime_r_proto ctime_r $hdrs
10488                 eval $hasproto ;;
10489         *)      ;;
10490         esac
10491         case "$d_ctime_r_proto" in
10492         define)
10493         case "$ctime_r_proto" in
10494         ''|0) try='char* ctime_r(const time_t*, char*);'
10495         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10496         esac
10497         case "$ctime_r_proto" in
10498         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10499         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10500         esac
10501         case "$ctime_r_proto" in
10502         ''|0) try='int ctime_r(const time_t*, char*);'
10503         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10504         esac
10505         case "$ctime_r_proto" in
10506         ''|0) try='int ctime_r(const time_t*, char*, int);'
10507         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10508         esac
10509         case "$ctime_r_proto" in
10510         ''|0)   d_ctime_r=undef
10511                 ctime_r_proto=0
10512                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10513         * )     case "$ctime_r_proto" in
10514                 REENTRANT_PROTO*) ;;
10515                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10516                 esac
10517                 echo "Prototype: $try" ;;
10518         esac
10519         ;;
10520         *)      case "$usethreads" in
10521                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10522                 esac
10523                 d_ctime_r=undef
10524                 ctime_r_proto=0
10525                 ;;
10526         esac
10527         ;;
10528 *)      ctime_r_proto=0
10529         ;;
10530 esac
10531
10532 : see if cuserid exists
10533 set cuserid d_cuserid
10534 eval $inlibc
10535
10536 : see if this is a limits.h system
10537 set limits.h i_limits
10538 eval $inhdr
10539
10540 : see if this is a float.h system
10541 set float.h i_float
10542 eval $inhdr
10543
10544 : See if number of significant digits in a double precision number is known
10545 echo " "
10546 $cat >dbl_dig.c <<EOM
10547 #$i_limits I_LIMITS
10548 #$i_float I_FLOAT
10549 #ifdef I_LIMITS
10550 #include <limits.h>
10551 #endif
10552 #ifdef I_FLOAT
10553 #include <float.h>
10554 #endif
10555 #ifdef DBL_DIG
10556 printf("Contains DBL_DIG");
10557 #endif
10558 EOM
10559 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10560 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10561         echo "DBL_DIG found." >&4
10562         val="$define"
10563 else
10564         echo "DBL_DIG NOT found." >&4
10565         val="$undef"
10566 fi
10567 $rm -f dbl_dig.?
10568 set d_dbl_dig
10569 eval $setvar
10570
10571 : see if dbm.h is available
10572 : see if dbmclose exists
10573 set dbmclose d_dbmclose
10574 eval $inlibc
10575
10576 case "$d_dbmclose" in
10577 $define)
10578         set dbm.h i_dbm
10579         eval $inhdr
10580         case "$i_dbm" in
10581         $define)
10582                 val="$undef"
10583                 set i_rpcsvcdbm
10584                 eval $setvar
10585                 ;;
10586         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10587                 eval $inhdr
10588                 ;;
10589         esac
10590         ;;
10591 *)      echo "We won't be including <dbm.h>"
10592         val="$undef"
10593         set i_dbm
10594         eval $setvar
10595         val="$undef"
10596         set i_rpcsvcdbm
10597         eval $setvar
10598         ;;
10599 esac
10600
10601 : see if prototype for dbminit is available
10602 echo " "
10603 set d_dbminitproto dbminit $i_dbm dbm.h
10604 eval $hasproto
10605
10606 : see if difftime exists
10607 set difftime d_difftime
10608 eval $inlibc
10609
10610 : see if this is a dirent system
10611 echo " "
10612 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10613         val="$define"
10614         echo "<dirent.h> found." >&4
10615 else
10616         val="$undef"
10617         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10618                 echo "<sys/dir.h> found." >&4
10619                 echo " "
10620         else
10621                 xinc=`./findhdr sys/ndir.h`
10622         fi
10623         echo "<dirent.h> NOT found." >&4
10624 fi
10625 set i_dirent
10626 eval $setvar
10627
10628 : Look for type of directory structure.
10629 echo " "
10630 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10631
10632 case "$direntrytype" in
10633 ''|' ')
10634         case "$i_dirent" in
10635         $define) guess1='struct dirent' ;;
10636         *) guess1='struct direct'  ;;
10637         esac
10638         ;;
10639 *)      guess1="$direntrytype"
10640         ;;
10641 esac
10642
10643 case "$guess1" in
10644 'struct dirent') guess2='struct direct' ;;
10645 *) guess2='struct dirent' ;;
10646 esac
10647                 
10648 if $contains "$guess1" try.c >/dev/null 2>&1; then
10649         direntrytype="$guess1"
10650         echo "Your directory entries are $direntrytype." >&4
10651 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10652         direntrytype="$guess2"
10653         echo "Your directory entries seem to be $direntrytype." >&4
10654 else
10655         echo "I don't recognize your system's directory entries." >&4
10656         rp="What type is used for directory entries on this system?"
10657         dflt="$guess1"
10658         . ./myread
10659         direntrytype="$ans"
10660 fi
10661 $rm -f try.c
10662
10663
10664 : see if the directory entry stores field length
10665 echo " "
10666 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10667 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10668         echo "Good, your directory entry keeps length information in d_namlen." >&4
10669         val="$define"
10670 else
10671         echo "Your directory entry does not know about the d_namlen field." >&4
10672         val="$undef"
10673 fi
10674 set d_dirnamlen
10675 eval $setvar
10676 $rm -f try.c
10677
10678 : see if this is an sysdir system
10679 set sys/dir.h i_sysdir
10680 eval $inhdr
10681
10682 : see if this is an sysndir system
10683 set sys/ndir.h i_sysndir
10684 eval $inhdr
10685
10686 : Look for dirfd
10687 echo " "
10688 $cat >dirfd.c <<EOM
10689 #include <stdio.h>
10690 #$i_stdlib I_STDLIB
10691 #ifdef I_STDLIB
10692 #include <stdlib.h>
10693 #endif
10694 #$i_dirent I_DIRENT             /**/
10695 #$i_sysdir I_SYS_DIR            /**/
10696 #$i_sysndir I_SYS_NDIR          /**/
10697 #$i_systypes I_SYS_TYPES        /**/
10698 #if defined(I_SYS_TYPES)
10699 #include <sys/types.h>
10700 #endif
10701 #if defined(I_DIRENT)
10702 #include <dirent.h>
10703 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10704 #include <sys/dir.h>
10705 #endif
10706 #else
10707 #ifdef I_SYS_NDIR
10708 #include <sys/ndir.h>
10709 #else
10710 #ifdef I_SYS_DIR
10711 #ifdef hp9000s500
10712 #include <ndir.h>       /* may be wrong in the future */
10713 #else
10714 #include <sys/dir.h>
10715 #endif
10716 #endif
10717 #endif
10718 #endif 
10719 int main() {
10720         DIR *dirp = opendir(".");
10721         if (dirfd(dirp) >= 0)
10722                 exit(0);
10723         else
10724                 exit(1);
10725 }
10726 EOM
10727 set dirfd
10728 if eval $compile; then
10729         val="$define"
10730 fi
10731 case "$val" in
10732 $define)        echo "dirfd() found." >&4       ;;
10733 *)              echo "dirfd() NOT found." >&4   ;;
10734 esac
10735 set d_dirfd
10736 eval $setvar
10737 $rm -f dirfd*
10738
10739 : see if dlerror exists
10740 xxx_runnm="$runnm"
10741 runnm=false
10742 set dlerror d_dlerror
10743 eval $inlibc
10744 runnm="$xxx_runnm"
10745
10746 : see if dlfcn is available
10747 set dlfcn.h i_dlfcn
10748 eval $inhdr
10749
10750 case "$usedl" in
10751 $define|y|true)
10752         $cat << EOM
10753
10754 On a few systems, the dynamically loaded modules that perl generates and uses
10755 will need a different extension than shared libs. The default will probably
10756 be appropriate.
10757
10758 EOM
10759         case "$dlext" in
10760         '')     dflt="$so" ;;
10761         *)      dflt="$dlext" ;;
10762         esac
10763         rp='What is the extension of dynamically loaded modules'
10764         . ./myread
10765         dlext="$ans"
10766         ;;
10767 *)
10768         dlext="none"
10769         ;;
10770 esac
10771
10772 : Check if dlsym need a leading underscore
10773 echo " "
10774 val="$undef"
10775
10776 case "$dlsrc" in
10777 dl_dlopen.xs)
10778         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10779         $cat >dyna.c <<'EOM'
10780 fred () { }
10781 EOM
10782
10783 $cat >fred.c<<EOM
10784
10785 #include <stdio.h>
10786 #$i_stdlib I_STDLIB
10787 #ifdef I_STDLIB
10788 #include <stdlib.h>
10789 #endif
10790 #$i_dlfcn I_DLFCN
10791 #ifdef I_DLFCN
10792 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10793 #else
10794 #include <sys/types.h>
10795 #include <nlist.h>
10796 #include <link.h>
10797 #endif
10798
10799 extern int fred() ;
10800
10801 int main()
10802 {
10803     void * handle ;
10804     void * symbol ;
10805 #ifndef RTLD_LAZY
10806     int mode = 1 ;
10807 #else
10808     int mode = RTLD_LAZY ;
10809 #endif
10810     handle = dlopen("./dyna.$dlext", mode) ;
10811     if (handle == NULL) {
10812         printf ("1\n") ;
10813         fflush (stdout) ;
10814         exit(0);
10815     }
10816     symbol = dlsym(handle, "fred") ;
10817     if (symbol == NULL) {
10818         /* try putting a leading underscore */
10819         symbol = dlsym(handle, "_fred") ;
10820         if (symbol == NULL) {
10821             printf ("2\n") ;
10822             fflush (stdout) ;
10823             exit(0);
10824         }
10825         printf ("3\n") ;
10826     }
10827     else
10828         printf ("4\n") ;
10829     fflush (stdout) ;
10830     exit(0);
10831 }
10832 EOM
10833         : Call the object file tmp-dyna.o in case dlext=o.
10834         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10835                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10836                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10837                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10838                 xxx=`$run ./fred`
10839                 case $xxx in
10840                 1)      echo "Test program failed using dlopen." >&4
10841                         echo "Perhaps you should not use dynamic loading." >&4;;
10842                 2)      echo "Test program failed using dlsym." >&4
10843                         echo "Perhaps you should not use dynamic loading." >&4;;
10844                 3)      echo "dlsym needs a leading underscore" >&4
10845                         val="$define" ;;
10846                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10847                 esac
10848         else
10849                 echo "I can't compile and run the test program." >&4
10850                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10851         fi
10852         ;;
10853 esac
10854                 
10855 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10856
10857 set d_dlsymun
10858 eval $setvar
10859
10860 : see if drand48_r exists
10861 set drand48_r d_drand48_r
10862 eval $inlibc
10863 case "$d_drand48_r" in
10864 "$define")
10865         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10866         case "$d_drand48_r_proto:$usethreads" in
10867         ":define")      d_drand48_r_proto=define
10868                 set d_drand48_r_proto drand48_r $hdrs
10869                 eval $hasproto ;;
10870         *)      ;;
10871         esac
10872         case "$d_drand48_r_proto" in
10873         define)
10874         case "$drand48_r_proto" in
10875         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10876         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10877         esac
10878         case "$drand48_r_proto" in
10879         ''|0)   d_drand48_r=undef
10880                 drand48_r_proto=0
10881                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10882         * )     case "$drand48_r_proto" in
10883                 REENTRANT_PROTO*) ;;
10884                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10885                 esac
10886                 echo "Prototype: $try" ;;
10887         esac
10888         ;;
10889         *)      case "$usethreads" in
10890                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10891                 esac
10892                 d_drand48_r=undef
10893                 drand48_r_proto=0
10894                 ;;
10895         esac
10896         ;;
10897 *)      drand48_r_proto=0
10898         ;;
10899 esac
10900
10901 : see if prototype for drand48 is available
10902 echo " "
10903 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10904 eval $hasproto
10905
10906 : see if dup2 exists
10907 set dup2 d_dup2
10908 eval $inlibc
10909
10910 : see if eaccess exists
10911 set eaccess d_eaccess
10912 eval $inlibc
10913
10914 : see if endgrent exists
10915 set endgrent d_endgrent
10916 eval $inlibc
10917
10918 : see if this is an grp system
10919 set grp.h i_grp
10920 eval $inhdr
10921
10922 case "$i_grp" in
10923 $define)
10924         xxx=`./findhdr grp.h`
10925         $cppstdin $cppflags $cppminus < $xxx >$$.h
10926
10927         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10928                 val="$define"
10929         else
10930                 val="$undef"
10931         fi
10932         set d_grpasswd
10933         eval $setvar
10934
10935         $rm -f $$.h
10936         ;;
10937 *)
10938         val="$undef";
10939         set d_grpasswd; eval $setvar
10940         ;;
10941 esac
10942
10943 : see if endgrent_r exists
10944 set endgrent_r d_endgrent_r
10945 eval $inlibc
10946 case "$d_endgrent_r" in
10947 "$define")
10948         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
10949         case "$d_endgrent_r_proto:$usethreads" in
10950         ":define")      d_endgrent_r_proto=define
10951                 set d_endgrent_r_proto endgrent_r $hdrs
10952                 eval $hasproto ;;
10953         *)      ;;
10954         esac
10955         case "$d_endgrent_r_proto" in
10956         define)
10957         case "$endgrent_r_proto" in
10958         ''|0) try='int endgrent_r(FILE**);'
10959         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
10960         esac
10961         case "$endgrent_r_proto" in
10962         ''|0) try='void endgrent_r(FILE**);'
10963         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
10964         esac
10965         case "$endgrent_r_proto" in
10966         ''|0)   d_endgrent_r=undef
10967                 endgrent_r_proto=0
10968                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
10969         * )     case "$endgrent_r_proto" in
10970                 REENTRANT_PROTO*) ;;
10971                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
10972                 esac
10973                 echo "Prototype: $try" ;;
10974         esac
10975         ;;
10976         *)      case "$usethreads" in
10977                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
10978                 esac
10979                 d_endgrent_r=undef
10980                 endgrent_r_proto=0
10981                 ;;
10982         esac
10983         ;;
10984 *)      endgrent_r_proto=0
10985         ;;
10986 esac
10987
10988 : see if endhostent exists
10989 set endhostent d_endhent
10990 eval $inlibc
10991
10992 : see if this is a netdb.h system
10993 set netdb.h i_netdb
10994 eval $inhdr
10995
10996 : see if endhostent_r exists
10997 set endhostent_r d_endhostent_r
10998 eval $inlibc
10999 case "$d_endhostent_r" in
11000 "$define")
11001         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11002         case "$d_endhostent_r_proto:$usethreads" in
11003         ":define")      d_endhostent_r_proto=define
11004                 set d_endhostent_r_proto endhostent_r $hdrs
11005                 eval $hasproto ;;
11006         *)      ;;
11007         esac
11008         case "$d_endhostent_r_proto" in
11009         define)
11010         case "$endhostent_r_proto" in
11011         ''|0) try='int endhostent_r(struct hostent_data*);'
11012         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11013         esac
11014         case "$endhostent_r_proto" in
11015         ''|0) try='void endhostent_r(struct hostent_data*);'
11016         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11017         esac
11018         case "$endhostent_r_proto" in
11019         ''|0)   d_endhostent_r=undef
11020                 endhostent_r_proto=0
11021                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11022         * )     case "$endhostent_r_proto" in
11023                 REENTRANT_PROTO*) ;;
11024                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11025                 esac
11026                 echo "Prototype: $try" ;;
11027         esac
11028         ;;
11029         *)      case "$usethreads" in
11030                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11031                 esac
11032                 d_endhostent_r=undef
11033                 endhostent_r_proto=0
11034                 ;;
11035         esac
11036         ;;
11037 *)      endhostent_r_proto=0
11038         ;;
11039 esac
11040
11041 : see if endnetent exists
11042 set endnetent d_endnent
11043 eval $inlibc
11044
11045 : see if endnetent_r exists
11046 set endnetent_r d_endnetent_r
11047 eval $inlibc
11048 case "$d_endnetent_r" in
11049 "$define")
11050         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11051         case "$d_endnetent_r_proto:$usethreads" in
11052         ":define")      d_endnetent_r_proto=define
11053                 set d_endnetent_r_proto endnetent_r $hdrs
11054                 eval $hasproto ;;
11055         *)      ;;
11056         esac
11057         case "$d_endnetent_r_proto" in
11058         define)
11059         case "$endnetent_r_proto" in
11060         ''|0) try='int endnetent_r(struct netent_data*);'
11061         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11062         esac
11063         case "$endnetent_r_proto" in
11064         ''|0) try='void endnetent_r(struct netent_data*);'
11065         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11066         esac
11067         case "$endnetent_r_proto" in
11068         ''|0)   d_endnetent_r=undef
11069                 endnetent_r_proto=0
11070                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11071         * )     case "$endnetent_r_proto" in
11072                 REENTRANT_PROTO*) ;;
11073                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11074                 esac
11075                 echo "Prototype: $try" ;;
11076         esac
11077         ;;
11078         *)      case "$usethreads" in
11079                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11080                 esac
11081                 d_endnetent_r=undef
11082                 endnetent_r_proto=0
11083                 ;;
11084         esac
11085         ;;
11086 *)      endnetent_r_proto=0
11087         ;;
11088 esac
11089
11090 : see if endprotoent exists
11091 set endprotoent d_endpent
11092 eval $inlibc
11093
11094 : see if endprotoent_r exists
11095 set endprotoent_r d_endprotoent_r
11096 eval $inlibc
11097 case "$d_endprotoent_r" in
11098 "$define")
11099         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11100         case "$d_endprotoent_r_proto:$usethreads" in
11101         ":define")      d_endprotoent_r_proto=define
11102                 set d_endprotoent_r_proto endprotoent_r $hdrs
11103                 eval $hasproto ;;
11104         *)      ;;
11105         esac
11106         case "$d_endprotoent_r_proto" in
11107         define)
11108         case "$endprotoent_r_proto" in
11109         ''|0) try='int endprotoent_r(struct protoent_data*);'
11110         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11111         esac
11112         case "$endprotoent_r_proto" in
11113         ''|0) try='void endprotoent_r(struct protoent_data*);'
11114         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11115         esac
11116         case "$endprotoent_r_proto" in
11117         ''|0)   d_endprotoent_r=undef
11118                 endprotoent_r_proto=0
11119                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11120         * )     case "$endprotoent_r_proto" in
11121                 REENTRANT_PROTO*) ;;
11122                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11123                 esac
11124                 echo "Prototype: $try" ;;
11125         esac
11126         ;;
11127         *)      case "$usethreads" in
11128                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11129                 esac
11130                 d_endprotoent_r=undef
11131                 endprotoent_r_proto=0
11132                 ;;
11133         esac
11134         ;;
11135 *)      endprotoent_r_proto=0
11136         ;;
11137 esac
11138
11139 : see if endpwent exists
11140 set endpwent d_endpwent
11141 eval $inlibc
11142
11143 : see if this is a pwd.h system
11144 set pwd.h i_pwd
11145 eval $inhdr
11146
11147 case "$i_pwd" in
11148 $define)
11149         xxx=`./findhdr pwd.h`
11150         $cppstdin $cppflags $cppminus < $xxx >$$.h
11151
11152         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11153                 val="$define"
11154         else
11155                 val="$undef"
11156         fi
11157         set d_pwquota
11158         eval $setvar
11159
11160         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11161                 val="$define"
11162         else
11163                 val="$undef"
11164         fi
11165         set d_pwage
11166         eval $setvar
11167
11168         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11169                 val="$define"
11170         else
11171                 val="$undef"
11172         fi
11173         set d_pwchange
11174         eval $setvar
11175
11176         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11177                 val="$define"
11178         else
11179                 val="$undef"
11180         fi
11181         set d_pwclass
11182         eval $setvar
11183
11184         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11185                 val="$define"
11186         else
11187                 val="$undef"
11188         fi
11189         set d_pwexpire
11190         eval $setvar
11191
11192         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11193                 val="$define"
11194         else
11195                 val="$undef"
11196         fi
11197         set d_pwcomment
11198         eval $setvar
11199
11200         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11201                 val="$define"
11202         else
11203                 val="$undef"
11204         fi
11205         set d_pwgecos
11206         eval $setvar
11207
11208         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11209                 val="$define"
11210         else
11211                 val="$undef"
11212         fi
11213         set d_pwpasswd
11214         eval $setvar
11215
11216         $rm -f $$.h
11217         ;;
11218 *)
11219         val="$undef"; 
11220         set d_pwquota; eval $setvar
11221         set d_pwage; eval $setvar
11222         set d_pwchange; eval $setvar
11223         set d_pwclass; eval $setvar
11224         set d_pwexpire; eval $setvar
11225         set d_pwcomment; eval $setvar
11226         set d_pwgecos; eval $setvar
11227         set d_pwpasswd; eval $setvar
11228         ;;
11229 esac
11230
11231 : see if endpwent_r exists
11232 set endpwent_r d_endpwent_r
11233 eval $inlibc
11234 case "$d_endpwent_r" in
11235 "$define")
11236         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11237         case "$d_endpwent_r_proto:$usethreads" in
11238         ":define")      d_endpwent_r_proto=define
11239                 set d_endpwent_r_proto endpwent_r $hdrs
11240                 eval $hasproto ;;
11241         *)      ;;
11242         esac
11243         case "$d_endpwent_r_proto" in
11244         define)
11245         case "$endpwent_r_proto" in
11246         ''|0) try='int endpwent_r(FILE**);'
11247         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11248         esac
11249         case "$endpwent_r_proto" in
11250         ''|0) try='void endpwent_r(FILE**);'
11251         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11252         esac
11253         case "$endpwent_r_proto" in
11254         ''|0)   d_endpwent_r=undef
11255                 endpwent_r_proto=0
11256                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11257         * )     case "$endpwent_r_proto" in
11258                 REENTRANT_PROTO*) ;;
11259                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11260                 esac
11261                 echo "Prototype: $try" ;;
11262         esac
11263         ;;
11264         *)      case "$usethreads" in
11265                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11266                 esac
11267                 d_endpwent_r=undef
11268                 endpwent_r_proto=0
11269                 ;;
11270         esac
11271         ;;
11272 *)      endpwent_r_proto=0
11273         ;;
11274 esac
11275
11276 : see if endservent exists
11277 set endservent d_endsent
11278 eval $inlibc
11279
11280 : see if endservent_r exists
11281 set endservent_r d_endservent_r
11282 eval $inlibc
11283 case "$d_endservent_r" in
11284 "$define")
11285         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11286         case "$d_endservent_r_proto:$usethreads" in
11287         ":define")      d_endservent_r_proto=define
11288                 set d_endservent_r_proto endservent_r $hdrs
11289                 eval $hasproto ;;
11290         *)      ;;
11291         esac
11292         case "$d_endservent_r_proto" in
11293         define)
11294         case "$endservent_r_proto" in
11295         ''|0) try='int endservent_r(struct servent_data*);'
11296         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11297         esac
11298         case "$endservent_r_proto" in
11299         ''|0) try='void endservent_r(struct servent_data*);'
11300         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11301         esac
11302         case "$endservent_r_proto" in
11303         ''|0)   d_endservent_r=undef
11304                 endservent_r_proto=0
11305                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11306         * )     case "$endservent_r_proto" in
11307                 REENTRANT_PROTO*) ;;
11308                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11309                 esac
11310                 echo "Prototype: $try" ;;
11311         esac
11312         ;;
11313         *)      case "$usethreads" in
11314                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11315                 esac
11316                 d_endservent_r=undef
11317                 endservent_r_proto=0
11318                 ;;
11319         esac
11320         ;;
11321 *)      endservent_r_proto=0
11322         ;;
11323 esac
11324
11325 : Locate the flags for 'open()'
11326 echo " "
11327 $cat >try.c <<EOCP
11328 #include <sys/types.h>
11329 #ifdef I_FCNTL
11330 #include <fcntl.h>
11331 #endif
11332 #ifdef I_SYS_FILE
11333 #include <sys/file.h>
11334 #endif
11335 #$i_stdlib I_STDLIB
11336 #ifdef I_STDLIB
11337 #include <stdlib.h>
11338 #endif
11339 int main() {
11340         if(O_RDONLY);
11341 #ifdef O_TRUNC
11342         exit(0);
11343 #else
11344         exit(1);
11345 #endif
11346 }
11347 EOCP
11348 : check sys/file.h first to get FREAD on Sun
11349 if $test `./findhdr sys/file.h` && \
11350                 set try -DI_SYS_FILE && eval $compile; then
11351         h_sysfile=true;
11352         echo "<sys/file.h> defines the O_* constants..." >&4
11353         if $run ./try; then
11354                 echo "and you have the 3 argument form of open()." >&4
11355                 val="$define"
11356         else
11357                 echo "but not the 3 argument form of open().  Oh, well." >&4
11358                 val="$undef"
11359         fi
11360 elif $test `./findhdr fcntl.h` && \
11361                 set try -DI_FCNTL && eval $compile; then
11362         h_fcntl=true;
11363         echo "<fcntl.h> defines the O_* constants..." >&4
11364         if $run ./try; then
11365                 echo "and you have the 3 argument form of open()." >&4
11366                 val="$define"
11367         else
11368                 echo "but not the 3 argument form of open().  Oh, well." >&4
11369                 val="$undef"
11370         fi
11371 else
11372         val="$undef"
11373         echo "I can't find the O_* constant definitions!  You got problems." >&4
11374 fi
11375 set d_open3
11376 eval $setvar
11377 $rm -f try try.*
11378
11379 : see which of string.h or strings.h is needed
11380 echo " "
11381 strings=`./findhdr string.h`
11382 if $test "$strings" && $test -r "$strings"; then
11383         echo "Using <string.h> instead of <strings.h>." >&4
11384         val="$define"
11385 else
11386         val="$undef"
11387         strings=`./findhdr strings.h`
11388         if $test "$strings" && $test -r "$strings"; then
11389                 echo "Using <strings.h> instead of <string.h>." >&4
11390         else
11391                 echo "No string header found -- You'll surely have problems." >&4
11392         fi
11393 fi
11394 set i_string
11395 eval $setvar
11396 case "$i_string" in
11397 "$undef") strings=`./findhdr strings.h`;;
11398 *)        strings=`./findhdr string.h`;;
11399 esac
11400
11401 : see if this is a sys/file.h system
11402 val=''
11403 set sys/file.h val
11404 eval $inhdr
11405
11406 : do we need to include sys/file.h ?
11407 case "$val" in
11408 "$define")
11409         echo " "
11410         if $h_sysfile; then
11411                 val="$define"
11412                 echo "We'll be including <sys/file.h>." >&4
11413         else
11414                 val="$undef"
11415                 echo "We won't be including <sys/file.h>." >&4
11416         fi
11417         ;;
11418 *)
11419         h_sysfile=false
11420         ;;
11421 esac
11422 set i_sysfile
11423 eval $setvar
11424
11425 : see if fcntl.h is there
11426 val=''
11427 set fcntl.h val
11428 eval $inhdr
11429
11430 : see if we can include fcntl.h
11431 case "$val" in
11432 "$define")
11433         echo " "
11434         if $h_fcntl; then
11435                 val="$define"
11436                 echo "We'll be including <fcntl.h>." >&4
11437         else
11438                 val="$undef"
11439                 if $h_sysfile; then
11440         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11441                 else
11442                         echo "We won't be including <fcntl.h>." >&4
11443                 fi
11444         fi
11445         ;;
11446 *)
11447         h_fcntl=false
11448         val="$undef"
11449         ;;
11450 esac
11451 set i_fcntl
11452 eval $setvar
11453
11454 : check for non-blocking I/O stuff
11455 case "$h_sysfile" in
11456 true) echo "#include <sys/file.h>" > head.c;;
11457 *)
11458        case "$h_fcntl" in
11459        true) echo "#include <fcntl.h>" > head.c;;
11460        *) echo "#include <sys/fcntl.h>" > head.c;;
11461        esac
11462        ;;
11463 esac
11464 echo " "
11465 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11466 case "$o_nonblock" in
11467 '')
11468         $cat head.c > try.c
11469         $cat >>try.c <<EOCP
11470 #include <stdio.h>
11471 #$i_stdlib I_STDLIB
11472 #ifdef I_STDLIB
11473 #include <stdlib.h>
11474 #endif
11475 #$i_fcntl I_FCNTL
11476 #ifdef I_FCNTL
11477 #include <fcntl.h>
11478 #endif
11479 int main() {
11480 #ifdef O_NONBLOCK
11481         printf("O_NONBLOCK\n");
11482         exit(0);
11483 #endif
11484 #ifdef O_NDELAY
11485         printf("O_NDELAY\n");
11486         exit(0);
11487 #endif
11488 #ifdef FNDELAY
11489         printf("FNDELAY\n");
11490         exit(0);
11491 #endif
11492         exit(0);
11493 }
11494 EOCP
11495         set try
11496         if eval $compile_ok; then
11497                 o_nonblock=`$run ./try`
11498                 case "$o_nonblock" in
11499                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11500                 *) echo "Seems like we can use $o_nonblock.";;
11501                 esac
11502         else
11503                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11504         fi
11505         ;;
11506 *) echo "Using $hint value $o_nonblock.";;
11507 esac
11508 $rm -f try try.* .out core
11509
11510 echo " "
11511 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11512 case "$eagain" in
11513 '')
11514         $cat head.c > try.c
11515         $cat >>try.c <<EOCP
11516 #include <errno.h>
11517 #include <sys/types.h>
11518 #include <signal.h>
11519 #include <stdio.h> 
11520 #$i_stdlib I_STDLIB
11521 #ifdef I_STDLIB
11522 #include <stdlib.h>
11523 #endif
11524 #$i_fcntl I_FCNTL
11525 #ifdef I_FCNTL
11526 #include <fcntl.h>
11527 #endif
11528 #define MY_O_NONBLOCK $o_nonblock
11529 #ifndef errno  /* XXX need better Configure test */
11530 extern int errno;
11531 #endif
11532 #$i_unistd I_UNISTD
11533 #ifdef I_UNISTD
11534 #include <unistd.h>
11535 #endif
11536 #$i_string I_STRING
11537 #ifdef I_STRING
11538 #include <string.h>
11539 #else
11540 #include <strings.h>
11541 #endif
11542 $signal_t blech(x) int x; { exit(3); }
11543 EOCP
11544         $cat >> try.c <<'EOCP'
11545 int main()
11546 {
11547         int pd[2];
11548         int pu[2];
11549         char buf[1];
11550         char string[100];
11551
11552         pipe(pd);       /* Down: child -> parent */
11553         pipe(pu);       /* Up: parent -> child */
11554         if (0 != fork()) {
11555                 int ret;
11556                 close(pd[1]);   /* Parent reads from pd[0] */
11557                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11558 #ifdef F_SETFL
11559                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11560                         exit(1);
11561 #else
11562                 exit(4);
11563 #endif
11564                 signal(SIGALRM, blech);
11565                 alarm(5);
11566                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11567                         exit(2);
11568                 sprintf(string, "%d\n", ret);
11569                 write(2, string, strlen(string));
11570                 alarm(0);
11571 #ifdef EAGAIN
11572                 if (errno == EAGAIN) {
11573                         printf("EAGAIN\n");
11574                         goto ok;
11575                 }
11576 #endif
11577 #ifdef EWOULDBLOCK
11578                 if (errno == EWOULDBLOCK)
11579                         printf("EWOULDBLOCK\n");
11580 #endif
11581         ok:
11582                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11583                 sleep(2);                               /* Give it time to close our pipe */
11584                 alarm(5);
11585                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11586                 alarm(0);
11587                 sprintf(string, "%d\n", ret);
11588                 write(4, string, strlen(string));
11589                 exit(0);
11590         }
11591
11592         close(pd[0]);                   /* We write to pd[1] */
11593         close(pu[1]);                   /* We read from pu[0] */
11594         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11595         close(pd[1]);                   /* Pipe pd is now fully closed! */
11596         exit(0);                                /* Bye bye, thank you for playing! */
11597 }
11598 EOCP
11599         set try
11600         if eval $compile_ok; then
11601                 echo "$startsh" >mtry
11602                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11603                 chmod +x mtry
11604                 ./mtry >/dev/null 2>&1
11605                 case $? in
11606                 0) eagain=`$cat try.out`;;
11607                 1) echo "Could not perform non-blocking setting!";;
11608                 2) echo "I did a successful read() for something that was not there!";;
11609                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11610                 4) echo "Could not find F_SETFL!";;
11611                 *) echo "Something terribly wrong happened during testing.";;
11612                 esac
11613                 rd_nodata=`$cat try.ret`
11614                 echo "A read() system call with no data present returns $rd_nodata."
11615                 case "$rd_nodata" in
11616                 0|-1) ;;
11617                 *)
11618                         echo "(That's peculiar, fixing that to be -1.)"
11619                         rd_nodata=-1
11620                         ;;
11621                 esac
11622                 case "$eagain" in
11623                 '')
11624                         echo "Forcing errno EAGAIN on read() with no data available."
11625                         eagain=EAGAIN
11626                         ;;
11627                 *)
11628                         echo "Your read() sets errno to $eagain when no data is available."
11629                         ;;
11630                 esac
11631                 status=`$cat try.err`
11632                 case "$status" in
11633                 0) echo "And it correctly returns 0 to signal EOF.";;
11634                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11635                 *) echo "However, your read() returns '$status' on EOF??";;
11636                 esac
11637                 val="$define"
11638                 if test "$status" = "$rd_nodata"; then
11639                         echo "WARNING: you can't distinguish between EOF and no data!"
11640                         val="$undef"
11641                 fi
11642         else
11643                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11644                 eagain=EAGAIN
11645         fi
11646         set d_eofnblk
11647         eval $setvar
11648         ;;
11649 *)
11650         echo "Using $hint value $eagain."
11651         echo "Your read() returns $rd_nodata when no data is present."
11652         case "$d_eofnblk" in
11653         "$define") echo "And you can see EOF because read() returns 0.";;
11654         "$undef") echo "But you can't see EOF status from read() returned value.";;
11655         *)
11656                 echo "(Assuming you can't see EOF status from read anyway.)"
11657                 d_eofnblk=$undef
11658                 ;;
11659         esac
11660         ;;
11661 esac
11662 $rm -f try try.* .out core head.c mtry
11663
11664 : see if fchdir exists
11665 set fchdir d_fchdir
11666 eval $inlibc
11667
11668 : see if fchmod exists
11669 set fchmod d_fchmod
11670 eval $inlibc
11671
11672 : see if fchown exists
11673 set fchown d_fchown
11674 eval $inlibc
11675
11676 : see if this is an fcntl system
11677 set fcntl d_fcntl
11678 eval $inlibc
11679
11680 echo " "
11681 : See if fcntl-based locking works.
11682 $cat >try.c <<EOCP
11683 #$i_stdlib I_STDLIB
11684 #ifdef I_STDLIB
11685 #include <stdlib.h>
11686 #endif
11687 #include <unistd.h>
11688 #include <fcntl.h>
11689 #include <signal.h>
11690 $signal_t blech(x) int x; { exit(3); }
11691 int main() {
11692 #if defined(F_SETLK) && defined(F_SETLKW)
11693      struct flock flock;
11694      int retval, fd;
11695      fd = open("try.c", O_RDONLY);
11696      flock.l_type = F_RDLCK;
11697      flock.l_whence = SEEK_SET;
11698      flock.l_start = flock.l_len = 0;
11699      signal(SIGALRM, blech);
11700      alarm(10);
11701      retval = fcntl(fd, F_SETLK, &flock);
11702      close(fd);
11703      (retval < 0 ? exit(2) : exit(0));
11704 #else
11705      exit(2);
11706 #endif
11707 }
11708 EOCP
11709 echo "Checking if fcntl-based file locking works... "
11710 case "$d_fcntl" in
11711 "$define")
11712         set try
11713         if eval $compile_ok; then
11714                 if $run ./try; then
11715                         echo "Yes, it seems to work."
11716                         val="$define"
11717                 else
11718                         echo "Nope, it didn't work."
11719                         val="$undef"
11720                         case "$?" in
11721                         3) $cat >&4 <<EOM
11722 ***
11723 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
11724 *** This is (almost) impossible.
11725 *** If your NFS lock daemons are not feeling well, something like
11726 *** this may happen, please investigate.  Cannot continue, aborting.
11727 ***
11728 EOM
11729                                 exit 1
11730                                 ;;
11731                         esac
11732                 fi
11733         else
11734                 echo "I'm unable to compile the test program, so I'll assume not."
11735                 val="$undef"
11736         fi
11737         ;;
11738 *) val="$undef";
11739         echo "Nope, since you don't even have fcntl()."
11740         ;;
11741 esac
11742 set d_fcntl_can_lock
11743 eval $setvar
11744 $rm -f try*
11745
11746
11747 : check for fd_set items
11748 $cat <<EOM
11749
11750 Checking to see how well your C compiler handles fd_set and friends ...
11751 EOM
11752 $cat >try.c <<EOCP
11753 #$i_stdlib I_STDLIB
11754 #ifdef I_STDLIB
11755 #include <stdlib.h>
11756 #endif
11757 #$i_systime I_SYS_TIME
11758 #$i_sysselct I_SYS_SELECT
11759 #$d_socket HAS_SOCKET
11760 #include <sys/types.h>
11761 #ifdef HAS_SOCKET
11762 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
11763 #endif
11764 #ifdef I_SYS_TIME
11765 #include <sys/time.h>
11766 #endif
11767 #ifdef I_SYS_SELECT
11768 #include <sys/select.h>
11769 #endif
11770 int main() {
11771         fd_set fds;
11772
11773 #ifdef TRYBITS
11774         if(fds.fds_bits);
11775 #endif
11776
11777 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
11778         exit(0);
11779 #else
11780         exit(1);
11781 #endif
11782 }
11783 EOCP
11784 set try -DTRYBITS
11785 if eval $compile; then
11786         d_fds_bits="$define"
11787         d_fd_set="$define"
11788         echo "Well, your system knows about the normal fd_set typedef..." >&4
11789         if $run ./try; then
11790                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
11791                 d_fd_macros="$define"
11792         else
11793                 $cat >&4 <<'EOM'
11794 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
11795 EOM
11796                 d_fd_macros="$undef"
11797         fi
11798 else
11799         $cat <<'EOM'
11800 Hmm, your compiler has some difficulty with fd_set.  Checking further...
11801 EOM
11802         set try
11803         if eval $compile; then
11804                 d_fds_bits="$undef"
11805                 d_fd_set="$define"
11806                 echo "Well, your system has some sort of fd_set available..." >&4
11807                 if $run ./try; then
11808                         echo "and you have the normal fd_set macros." >&4
11809                         d_fd_macros="$define"
11810                 else
11811                         $cat <<'EOM'
11812 but not the normal fd_set macros!  Gross!  More work for me...
11813 EOM
11814                         d_fd_macros="$undef"
11815                 fi
11816         else
11817         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
11818                 d_fd_set="$undef"
11819                 d_fds_bits="$undef"
11820                 d_fd_macros="$undef"
11821         fi
11822 fi
11823 $rm -f try try.*
11824
11825 : see if fgetpos exists
11826 set fgetpos d_fgetpos
11827 eval $inlibc
11828
11829 : see if finite exists
11830 set finite d_finite
11831 eval $inlibc
11832
11833 : see if finitel exists
11834 set finitel d_finitel
11835 eval $inlibc
11836
11837 : see if flock exists
11838 set flock d_flock
11839 eval $inlibc
11840
11841 : see if prototype for flock is available
11842 echo " "
11843 set d_flockproto flock $i_sysfile sys/file.h
11844 eval $hasproto
11845
11846 : see if fork exists
11847 set fork d_fork
11848 eval $inlibc
11849
11850 : see if fp_class exists
11851 set fp_class d_fp_class
11852 eval $inlibc
11853
11854 : see if pathconf exists
11855 set pathconf d_pathconf
11856 eval $inlibc
11857
11858 : see if fpathconf exists
11859 set fpathconf d_fpathconf
11860 eval $inlibc
11861
11862 : see if fpclass exists
11863 set fpclass d_fpclass
11864 eval $inlibc
11865
11866 : see if fpclassify exists
11867 set fpclassify d_fpclassify
11868 eval $inlibc
11869
11870 : see if fpclassl exists
11871 set fpclassl d_fpclassl
11872 eval $inlibc
11873
11874
11875 : check for fpos64_t
11876 echo " "
11877 echo "Checking to see if you have fpos64_t..." >&4
11878 $cat >try.c <<EOCP
11879 #include <stdio.h>
11880 int main() { fpos64_t x = 7; }
11881 EOCP
11882 set try
11883 if eval $compile; then
11884         val="$define"
11885         echo "You have fpos64_t."
11886 else
11887         val="$undef"
11888         echo "You do not have fpos64_t."
11889         case "$fpossize" in
11890         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
11891         esac
11892 fi
11893 $rm -f try.* try
11894 set d_fpos64_t
11895 eval $setvar
11896
11897 : see if frexpl exists
11898 set frexpl d_frexpl
11899 eval $inlibc
11900
11901 : see if this is a sys/param system
11902 set sys/param.h i_sysparam
11903 eval $inhdr
11904
11905 : see if this is a sys/mount.h system
11906 set sys/mount.h i_sysmount
11907 eval $inhdr
11908
11909
11910 echo " "
11911 echo "Checking to see if your system supports struct fs_data..." >&4
11912 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
11913 eval $hasstruct
11914 case "$d_fs_data_s" in
11915 "$define")      echo "Yes, it does."   ;;
11916 *)              echo "No, it doesn't." ;;
11917 esac
11918
11919 : see if fseeko exists
11920 set fseeko d_fseeko
11921 eval $inlibc
11922 case "$longsize" in
11923 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
11924 esac
11925
11926 : see if fsetpos exists
11927 set fsetpos d_fsetpos
11928 eval $inlibc
11929
11930
11931 : see if fstatfs exists
11932 set fstatfs d_fstatfs
11933 eval $inlibc
11934
11935
11936 : see if statvfs exists
11937 set statvfs d_statvfs
11938 eval $inlibc
11939
11940 : see if fstatvfs exists
11941 set fstatvfs d_fstatvfs
11942 eval $inlibc
11943
11944
11945 : see if fsync exists
11946 set fsync d_fsync
11947 eval $inlibc
11948
11949 : see if ftello exists
11950 set ftello d_ftello
11951 eval $inlibc
11952 case "$longsize" in
11953 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
11954 esac
11955
11956 : see if getcwd exists
11957 set getcwd d_getcwd
11958 eval $inlibc
11959
11960 : see if getespwnam exists
11961 set getespwnam d_getespwnam
11962 eval $inlibc
11963
11964
11965 : see if getfsstat exists
11966 set getfsstat d_getfsstat
11967 eval $inlibc
11968
11969 : see if getgrent exists
11970 set getgrent d_getgrent
11971 eval $inlibc
11972
11973 : see if getgrent_r exists
11974 set getgrent_r d_getgrent_r
11975 eval $inlibc
11976 case "$d_getgrent_r" in
11977 "$define")
11978         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11979         case "$d_getgrent_r_proto:$usethreads" in
11980         ":define")      d_getgrent_r_proto=define
11981                 set d_getgrent_r_proto getgrent_r $hdrs
11982                 eval $hasproto ;;
11983         *)      ;;
11984         esac
11985         case "$d_getgrent_r_proto" in
11986         define)
11987         case "$getgrent_r_proto" in
11988         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
11989         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
11990         esac
11991         case "$getgrent_r_proto" in
11992         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
11993         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
11994         esac
11995         case "$getgrent_r_proto" in
11996         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
11997         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
11998         esac
11999         case "$getgrent_r_proto" in
12000         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12001         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12002         esac
12003         case "$getgrent_r_proto" in
12004         ''|0) try='int getgrent_r(struct group*, char*, int);'
12005         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12006         esac
12007         case "$getgrent_r_proto" in
12008         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12009         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12010         esac
12011         case "$getgrent_r_proto" in
12012         ''|0)   d_getgrent_r=undef
12013                 getgrent_r_proto=0
12014                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12015         * )     case "$getgrent_r_proto" in
12016                 REENTRANT_PROTO*) ;;
12017                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12018                 esac
12019                 echo "Prototype: $try" ;;
12020         esac
12021         ;;
12022         *)      case "$usethreads" in
12023                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12024                 esac
12025                 d_getgrent_r=undef
12026                 getgrent_r_proto=0
12027                 ;;
12028         esac
12029         ;;
12030 *)      getgrent_r_proto=0
12031         ;;
12032 esac
12033
12034 : see if getgrgid_r exists
12035 set getgrgid_r d_getgrgid_r
12036 eval $inlibc
12037 case "$d_getgrgid_r" in
12038 "$define")
12039         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12040         case "$d_getgrgid_r_proto:$usethreads" in
12041         ":define")      d_getgrgid_r_proto=define
12042                 set d_getgrgid_r_proto getgrgid_r $hdrs
12043                 eval $hasproto ;;
12044         *)      ;;
12045         esac
12046         case "$d_getgrgid_r_proto" in
12047         define)
12048         case "$getgrgid_r_proto" in
12049         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12050         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12051         esac
12052         case "$getgrgid_r_proto" in
12053         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12054         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12055         esac
12056         case "$getgrgid_r_proto" in
12057         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12058         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12059         esac
12060         case "$getgrgid_r_proto" in
12061         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12062         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12063         esac
12064         case "$getgrgid_r_proto" in
12065         ''|0)   d_getgrgid_r=undef
12066                 getgrgid_r_proto=0
12067                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12068         * )     case "$getgrgid_r_proto" in
12069                 REENTRANT_PROTO*) ;;
12070                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12071                 esac
12072                 echo "Prototype: $try" ;;
12073         esac
12074         ;;
12075         *)      case "$usethreads" in
12076                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12077                 esac
12078                 d_getgrgid_r=undef
12079                 getgrgid_r_proto=0
12080                 ;;
12081         esac
12082         ;;
12083 *)      getgrgid_r_proto=0
12084         ;;
12085 esac
12086
12087 : see if getgrnam_r exists
12088 set getgrnam_r d_getgrnam_r
12089 eval $inlibc
12090 case "$d_getgrnam_r" in
12091 "$define")
12092         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12093         case "$d_getgrnam_r_proto:$usethreads" in
12094         ":define")      d_getgrnam_r_proto=define
12095                 set d_getgrnam_r_proto getgrnam_r $hdrs
12096                 eval $hasproto ;;
12097         *)      ;;
12098         esac
12099         case "$d_getgrnam_r_proto" in
12100         define)
12101         case "$getgrnam_r_proto" in
12102         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12103         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12104         esac
12105         case "$getgrnam_r_proto" in
12106         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12107         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12108         esac
12109         case "$getgrnam_r_proto" in
12110         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12111         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12112         esac
12113         case "$getgrnam_r_proto" in
12114         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12115         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12116         esac
12117         case "$getgrnam_r_proto" in
12118         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12119         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12120         esac
12121         case "$getgrnam_r_proto" in
12122         ''|0)   d_getgrnam_r=undef
12123                 getgrnam_r_proto=0
12124                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12125         * )     case "$getgrnam_r_proto" in
12126                 REENTRANT_PROTO*) ;;
12127                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12128                 esac
12129                 echo "Prototype: $try" ;;
12130         esac
12131         ;;
12132         *)      case "$usethreads" in
12133                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12134                 esac
12135                 d_getgrnam_r=undef
12136                 getgrnam_r_proto=0
12137                 ;;
12138         esac
12139         ;;
12140 *)      getgrnam_r_proto=0
12141         ;;
12142 esac
12143
12144 : see if gethostbyaddr exists
12145 set gethostbyaddr d_gethbyaddr
12146 eval $inlibc
12147
12148 : see if gethostbyname exists
12149 set gethostbyname d_gethbyname
12150 eval $inlibc
12151
12152 : see if gethostent exists
12153 set gethostent d_gethent
12154 eval $inlibc
12155
12156 : see how we will look up host name
12157 echo " "
12158 call=''
12159 if set gethostname val -f d_gethname; eval $csym; $val; then
12160         echo 'gethostname() found.' >&4
12161         d_gethname="$define"
12162         call=gethostname
12163 fi
12164 if set uname val -f d_uname; eval $csym; $val; then
12165         if ./xenix; then
12166                 $cat <<'EOM'
12167 uname() was found, but you're running xenix, and older versions of xenix
12168 have a broken uname(). If you don't really know whether your xenix is old
12169 enough to have a broken system call, use the default answer.
12170
12171 EOM
12172                 dflt=y
12173                 case "$d_uname" in
12174                 "$define") dflt=n;;
12175                 esac
12176                 rp='Is your uname() broken?'
12177                 . ./myread
12178                 case "$ans" in
12179                 n*) d_uname="$define"; call=uname;;
12180                 esac
12181         else
12182                 echo 'uname() found.' >&4
12183                 d_uname="$define"
12184                 case "$call" in
12185                 '') call=uname ;;
12186                 esac
12187         fi
12188 fi
12189 case "$d_gethname" in
12190 '') d_gethname="$undef";;
12191 esac
12192 case "$d_uname" in
12193 '') d_uname="$undef";;
12194 esac
12195 case "$d_uname$d_gethname" in
12196 *define*)
12197         dflt=n
12198         cat <<EOM
12199  
12200 Every now and then someone has a $call() that lies about the hostname
12201 but can't be fixed for political or economic reasons.  If you wish, I can
12202 pretend $call() isn't there and maybe compute hostname at run-time
12203 thanks to the '$phostname' command.
12204
12205 EOM
12206         rp="Shall I ignore $call() from now on?"
12207         . ./myread
12208         case "$ans" in
12209         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12210         esac;;
12211 esac
12212 case "$phostname" in
12213 '') aphostname='';;
12214 *) case "$aphostname" in
12215         /*) ;;
12216         *) set X $phostname
12217                 shift
12218                 file=$1
12219                 shift
12220                 file=`./loc $file $file $pth`
12221                 aphostname=`echo $file $*`
12222                 ;;
12223         esac
12224         ;;
12225 esac
12226 case "$d_uname$d_gethname" in
12227 *define*) ;;
12228 *)
12229         case "$phostname" in
12230         '')
12231                 echo "There will be no way for $package to get your hostname." >&4;;
12232         *)
12233         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12234                 ;;
12235         esac;;
12236 esac
12237 case "$d_phostname" in
12238 '') d_phostname="$undef";;
12239 esac
12240
12241 : see if gethostbyaddr_r exists
12242 set gethostbyaddr_r d_gethostbyaddr_r
12243 eval $inlibc
12244 case "$d_gethostbyaddr_r" in
12245 "$define")
12246         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12247         case "$d_gethostbyaddr_r_proto:$usethreads" in
12248         ":define")      d_gethostbyaddr_r_proto=define
12249                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12250                 eval $hasproto ;;
12251         *)      ;;
12252         esac
12253         case "$d_gethostbyaddr_r_proto" in
12254         define)
12255         case "$gethostbyaddr_r_proto" in
12256         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12257         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12258         esac
12259         case "$gethostbyaddr_r_proto" in
12260         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12261         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12262         esac
12263         case "$gethostbyaddr_r_proto" in
12264         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12265         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12266         esac
12267         case "$gethostbyaddr_r_proto" in
12268         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12269         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12270         esac
12271         case "$gethostbyaddr_r_proto" in
12272         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12273         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12274         esac
12275         case "$gethostbyaddr_r_proto" in
12276         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12277         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12278         esac
12279         case "$gethostbyaddr_r_proto" in
12280         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12281         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12282         esac
12283         case "$gethostbyaddr_r_proto" in
12284         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12285         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12286         esac
12287         case "$gethostbyaddr_r_proto" in
12288         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12289         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12290         esac
12291         case "$gethostbyaddr_r_proto" in
12292         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12293         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12294         esac
12295         case "$gethostbyaddr_r_proto" in
12296         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12297         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12298         esac
12299         case "$gethostbyaddr_r_proto" in
12300         ''|0)   d_gethostbyaddr_r=undef
12301                 gethostbyaddr_r_proto=0
12302                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12303         * )     case "$gethostbyaddr_r_proto" in
12304                 REENTRANT_PROTO*) ;;
12305                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12306                 esac
12307                 echo "Prototype: $try" ;;
12308         esac
12309         ;;
12310         *)      case "$usethreads" in
12311                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12312                 esac
12313                 d_gethostbyaddr_r=undef
12314                 gethostbyaddr_r_proto=0
12315                 ;;
12316         esac
12317         ;;
12318 *)      gethostbyaddr_r_proto=0
12319         ;;
12320 esac
12321
12322 : see if gethostbyname_r exists
12323 set gethostbyname_r d_gethostbyname_r
12324 eval $inlibc
12325 case "$d_gethostbyname_r" in
12326 "$define")
12327         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12328         case "$d_gethostbyname_r_proto:$usethreads" in
12329         ":define")      d_gethostbyname_r_proto=define
12330                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12331                 eval $hasproto ;;
12332         *)      ;;
12333         esac
12334         case "$d_gethostbyname_r_proto" in
12335         define)
12336         case "$gethostbyname_r_proto" in
12337         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12338         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12339         esac
12340         case "$gethostbyname_r_proto" in
12341         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12342         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12343         esac
12344         case "$gethostbyname_r_proto" in
12345         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12346         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12347         esac
12348         case "$gethostbyname_r_proto" in
12349         ''|0)   d_gethostbyname_r=undef
12350                 gethostbyname_r_proto=0
12351                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12352         * )     case "$gethostbyname_r_proto" in
12353                 REENTRANT_PROTO*) ;;
12354                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12355                 esac
12356                 echo "Prototype: $try" ;;
12357         esac
12358         ;;
12359         *)      case "$usethreads" in
12360                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12361                 esac
12362                 d_gethostbyname_r=undef
12363                 gethostbyname_r_proto=0
12364                 ;;
12365         esac
12366         ;;
12367 *)      gethostbyname_r_proto=0
12368         ;;
12369 esac
12370
12371 : see if gethostent_r exists
12372 set gethostent_r d_gethostent_r
12373 eval $inlibc
12374 case "$d_gethostent_r" in
12375 "$define")
12376         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12377         case "$d_gethostent_r_proto:$usethreads" in
12378         ":define")      d_gethostent_r_proto=define
12379                 set d_gethostent_r_proto gethostent_r $hdrs
12380                 eval $hasproto ;;
12381         *)      ;;
12382         esac
12383         case "$d_gethostent_r_proto" in
12384         define)
12385         case "$gethostent_r_proto" in
12386         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12387         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12388         esac
12389         case "$gethostent_r_proto" in
12390         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12391         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12392         esac
12393         case "$gethostent_r_proto" in
12394         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12395         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12396         esac
12397         case "$gethostent_r_proto" in
12398         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12399         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12400         esac
12401         case "$gethostent_r_proto" in
12402         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12403         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12404         esac
12405         case "$gethostent_r_proto" in
12406         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12407         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12408         esac
12409         case "$gethostent_r_proto" in
12410         ''|0)   d_gethostent_r=undef
12411                 gethostent_r_proto=0
12412                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12413         * )     case "$gethostent_r_proto" in
12414                 REENTRANT_PROTO*) ;;
12415                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12416                 esac
12417                 echo "Prototype: $try" ;;
12418         esac
12419         ;;
12420         *)      case "$usethreads" in
12421                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12422                 esac
12423                 d_gethostent_r=undef
12424                 gethostent_r_proto=0
12425                 ;;
12426         esac
12427         ;;
12428 *)      gethostent_r_proto=0
12429         ;;
12430 esac
12431
12432 : see if prototypes for various gethostxxx netdb.h functions are available
12433 echo " "
12434 set d_gethostprotos gethostent $i_netdb netdb.h
12435 eval $hasproto
12436
12437 : see if getitimer exists
12438 set getitimer d_getitimer
12439 eval $inlibc
12440
12441 : see if getlogin exists
12442 set getlogin d_getlogin
12443 eval $inlibc
12444
12445 : see if getlogin_r exists
12446 set getlogin_r d_getlogin_r
12447 eval $inlibc
12448 case "$d_getlogin_r" in
12449 "$define")
12450         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12451         case "$d_getlogin_r_proto:$usethreads" in
12452         ":define")      d_getlogin_r_proto=define
12453                 set d_getlogin_r_proto getlogin_r $hdrs
12454                 eval $hasproto ;;
12455         *)      ;;
12456         esac
12457         case "$d_getlogin_r_proto" in
12458         define)
12459         case "$getlogin_r_proto" in
12460         ''|0) try='int getlogin_r(char*, size_t);'
12461         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12462         esac
12463         case "$getlogin_r_proto" in
12464         ''|0) try='int getlogin_r(char*, int);'
12465         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12466         esac
12467         case "$getlogin_r_proto" in
12468         ''|0) try='char* getlogin_r(char*, size_t);'
12469         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12470         esac
12471         case "$getlogin_r_proto" in
12472         ''|0) try='char* getlogin_r(char*, int);'
12473         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12474         esac
12475         case "$getlogin_r_proto" in
12476         ''|0)   d_getlogin_r=undef
12477                 getlogin_r_proto=0
12478                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12479         * )     case "$getlogin_r_proto" in
12480                 REENTRANT_PROTO*) ;;
12481                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12482                 esac
12483                 echo "Prototype: $try" ;;
12484         esac
12485         ;;
12486         *)      case "$usethreads" in
12487                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12488                 esac
12489                 d_getlogin_r=undef
12490                 getlogin_r_proto=0
12491                 ;;
12492         esac
12493         ;;
12494 *)      getlogin_r_proto=0
12495         ;;
12496 esac
12497
12498 : see if getmnt exists
12499 set getmnt d_getmnt
12500 eval $inlibc
12501
12502 : see if getmntent exists
12503 set getmntent d_getmntent
12504 eval $inlibc
12505
12506 : see if getnetbyaddr exists
12507 set getnetbyaddr d_getnbyaddr
12508 eval $inlibc
12509
12510 : see if getnetbyname exists
12511 set getnetbyname d_getnbyname
12512 eval $inlibc
12513
12514 : see if getnetent exists
12515 set getnetent d_getnent
12516 eval $inlibc
12517
12518 : see if getnetbyaddr_r exists
12519 set getnetbyaddr_r d_getnetbyaddr_r
12520 eval $inlibc
12521 case "$d_getnetbyaddr_r" in
12522 "$define")
12523         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12524         case "$d_getnetbyaddr_r_proto:$usethreads" in
12525         ":define")      d_getnetbyaddr_r_proto=define
12526                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12527                 eval $hasproto ;;
12528         *)      ;;
12529         esac
12530         case "$d_getnetbyaddr_r_proto" in
12531         define)
12532         case "$getnetbyaddr_r_proto" in
12533         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12534         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12535         esac
12536         case "$getnetbyaddr_r_proto" in
12537         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12538         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12539         esac
12540         case "$getnetbyaddr_r_proto" in
12541         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12542         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12543         esac
12544         case "$getnetbyaddr_r_proto" in
12545         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12546         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12547         esac
12548         case "$getnetbyaddr_r_proto" in
12549         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12550         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12551         esac
12552         case "$getnetbyaddr_r_proto" in
12553         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12554         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12555         esac
12556         case "$getnetbyaddr_r_proto" in
12557         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12558         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12559         esac
12560         case "$getnetbyaddr_r_proto" in
12561         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12562         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12563         esac
12564         case "$getnetbyaddr_r_proto" in
12565         ''|0)   d_getnetbyaddr_r=undef
12566                 getnetbyaddr_r_proto=0
12567                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12568         * )     case "$getnetbyaddr_r_proto" in
12569                 REENTRANT_PROTO*) ;;
12570                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12571                 esac
12572                 echo "Prototype: $try" ;;
12573         esac
12574         ;;
12575         *)      case "$usethreads" in
12576                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12577                 esac
12578                 d_getnetbyaddr_r=undef
12579                 getnetbyaddr_r_proto=0
12580                 ;;
12581         esac
12582         ;;
12583 *)      getnetbyaddr_r_proto=0
12584         ;;
12585 esac
12586
12587 : see if getnetbyname_r exists
12588 set getnetbyname_r d_getnetbyname_r
12589 eval $inlibc
12590 case "$d_getnetbyname_r" in
12591 "$define")
12592         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12593         case "$d_getnetbyname_r_proto:$usethreads" in
12594         ":define")      d_getnetbyname_r_proto=define
12595                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12596                 eval $hasproto ;;
12597         *)      ;;
12598         esac
12599         case "$d_getnetbyname_r_proto" in
12600         define)
12601         case "$getnetbyname_r_proto" in
12602         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12603         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12604         esac
12605         case "$getnetbyname_r_proto" in
12606         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12607         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12608         esac
12609         case "$getnetbyname_r_proto" in
12610         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12611         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12612         esac
12613         case "$getnetbyname_r_proto" in
12614         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12615         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12616         esac
12617         case "$getnetbyname_r_proto" in
12618         ''|0)   d_getnetbyname_r=undef
12619                 getnetbyname_r_proto=0
12620                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12621         * )     case "$getnetbyname_r_proto" in
12622                 REENTRANT_PROTO*) ;;
12623                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12624                 esac
12625                 echo "Prototype: $try" ;;
12626         esac
12627         ;;
12628         *)      case "$usethreads" in
12629                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12630                 esac
12631                 d_getnetbyname_r=undef
12632                 getnetbyname_r_proto=0
12633                 ;;
12634         esac
12635         ;;
12636 *)      getnetbyname_r_proto=0
12637         ;;
12638 esac
12639
12640 : see if getnetent_r exists
12641 set getnetent_r d_getnetent_r
12642 eval $inlibc
12643 case "$d_getnetent_r" in
12644 "$define")
12645         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12646         case "$d_getnetent_r_proto:$usethreads" in
12647         ":define")      d_getnetent_r_proto=define
12648                 set d_getnetent_r_proto getnetent_r $hdrs
12649                 eval $hasproto ;;
12650         *)      ;;
12651         esac
12652         case "$d_getnetent_r_proto" in
12653         define)
12654         case "$getnetent_r_proto" in
12655         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
12656         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
12657         esac
12658         case "$getnetent_r_proto" in
12659         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
12660         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
12661         esac
12662         case "$getnetent_r_proto" in
12663         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
12664         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
12665         esac
12666         case "$getnetent_r_proto" in
12667         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
12668         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
12669         esac
12670         case "$getnetent_r_proto" in
12671         ''|0) try='int getnetent_r(struct netent*, char*, int);'
12672         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
12673         esac
12674         case "$getnetent_r_proto" in
12675         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
12676         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
12677         esac
12678         case "$getnetent_r_proto" in
12679         ''|0)   d_getnetent_r=undef
12680                 getnetent_r_proto=0
12681                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
12682         * )     case "$getnetent_r_proto" in
12683                 REENTRANT_PROTO*) ;;
12684                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
12685                 esac
12686                 echo "Prototype: $try" ;;
12687         esac
12688         ;;
12689         *)      case "$usethreads" in
12690                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
12691                 esac
12692                 d_getnetent_r=undef
12693                 getnetent_r_proto=0
12694                 ;;
12695         esac
12696         ;;
12697 *)      getnetent_r_proto=0
12698         ;;
12699 esac
12700
12701 : see if prototypes for various getnetxxx netdb.h functions are available
12702 echo " "
12703 set d_getnetprotos getnetent $i_netdb netdb.h
12704 eval $hasproto
12705
12706 : see if getpagesize exists
12707 set getpagesize d_getpagsz
12708 eval $inlibc
12709
12710
12711 : see if getprotobyname exists
12712 set getprotobyname d_getpbyname
12713 eval $inlibc
12714
12715 : see if getprotobynumber exists
12716 set getprotobynumber d_getpbynumber
12717 eval $inlibc
12718
12719 : see if getprotoent exists
12720 set getprotoent d_getpent
12721 eval $inlibc
12722
12723 : see if getpgid exists
12724 set getpgid d_getpgid
12725 eval $inlibc
12726
12727 : see if getpgrp2 exists
12728 set getpgrp2 d_getpgrp2
12729 eval $inlibc
12730
12731 : see if getppid exists
12732 set getppid d_getppid
12733 eval $inlibc
12734
12735 : see if getpriority exists
12736 set getpriority d_getprior
12737 eval $inlibc
12738
12739 : see if getprotobyname_r exists
12740 set getprotobyname_r d_getprotobyname_r
12741 eval $inlibc
12742 case "$d_getprotobyname_r" in
12743 "$define")
12744         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12745         case "$d_getprotobyname_r_proto:$usethreads" in
12746         ":define")      d_getprotobyname_r_proto=define
12747                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
12748                 eval $hasproto ;;
12749         *)      ;;
12750         esac
12751         case "$d_getprotobyname_r_proto" in
12752         define)
12753         case "$getprotobyname_r_proto" in
12754         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
12755         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
12756         esac
12757         case "$getprotobyname_r_proto" in
12758         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
12759         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
12760         esac
12761         case "$getprotobyname_r_proto" in
12762         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
12763         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
12764         esac
12765         case "$getprotobyname_r_proto" in
12766         ''|0)   d_getprotobyname_r=undef
12767                 getprotobyname_r_proto=0
12768                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
12769         * )     case "$getprotobyname_r_proto" in
12770                 REENTRANT_PROTO*) ;;
12771                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
12772                 esac
12773                 echo "Prototype: $try" ;;
12774         esac
12775         ;;
12776         *)      case "$usethreads" in
12777                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
12778                 esac
12779                 d_getprotobyname_r=undef
12780                 getprotobyname_r_proto=0
12781                 ;;
12782         esac
12783         ;;
12784 *)      getprotobyname_r_proto=0
12785         ;;
12786 esac
12787
12788 : see if getprotobynumber_r exists
12789 set getprotobynumber_r d_getprotobynumber_r
12790 eval $inlibc
12791 case "$d_getprotobynumber_r" in
12792 "$define")
12793         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12794         case "$d_getprotobynumber_r_proto:$usethreads" in
12795         ":define")      d_getprotobynumber_r_proto=define
12796                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
12797                 eval $hasproto ;;
12798         *)      ;;
12799         esac
12800         case "$d_getprotobynumber_r_proto" in
12801         define)
12802         case "$getprotobynumber_r_proto" in
12803         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
12804         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
12805         esac
12806         case "$getprotobynumber_r_proto" in
12807         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
12808         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
12809         esac
12810         case "$getprotobynumber_r_proto" in
12811         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
12812         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
12813         esac
12814         case "$getprotobynumber_r_proto" in
12815         ''|0)   d_getprotobynumber_r=undef
12816                 getprotobynumber_r_proto=0
12817                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
12818         * )     case "$getprotobynumber_r_proto" in
12819                 REENTRANT_PROTO*) ;;
12820                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
12821                 esac
12822                 echo "Prototype: $try" ;;
12823         esac
12824         ;;
12825         *)      case "$usethreads" in
12826                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
12827                 esac
12828                 d_getprotobynumber_r=undef
12829                 getprotobynumber_r_proto=0
12830                 ;;
12831         esac
12832         ;;
12833 *)      getprotobynumber_r_proto=0
12834         ;;
12835 esac
12836
12837 : see if getprotoent_r exists
12838 set getprotoent_r d_getprotoent_r
12839 eval $inlibc
12840 case "$d_getprotoent_r" in
12841 "$define")
12842         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12843         case "$d_getprotoent_r_proto:$usethreads" in
12844         ":define")      d_getprotoent_r_proto=define
12845                 set d_getprotoent_r_proto getprotoent_r $hdrs
12846                 eval $hasproto ;;
12847         *)      ;;
12848         esac
12849         case "$d_getprotoent_r_proto" in
12850         define)
12851         case "$getprotoent_r_proto" in
12852         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
12853         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
12854         esac
12855         case "$getprotoent_r_proto" in
12856         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
12857         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
12858         esac
12859         case "$getprotoent_r_proto" in
12860         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
12861         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
12862         esac
12863         case "$getprotoent_r_proto" in
12864         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
12865         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
12866         esac
12867         case "$getprotoent_r_proto" in
12868         ''|0)   d_getprotoent_r=undef
12869                 getprotoent_r_proto=0
12870                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
12871         * )     case "$getprotoent_r_proto" in
12872                 REENTRANT_PROTO*) ;;
12873                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
12874                 esac
12875                 echo "Prototype: $try" ;;
12876         esac
12877         ;;
12878         *)      case "$usethreads" in
12879                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
12880                 esac
12881                 d_getprotoent_r=undef
12882                 getprotoent_r_proto=0
12883                 ;;
12884         esac
12885         ;;
12886 *)      getprotoent_r_proto=0
12887         ;;
12888 esac
12889
12890 : see if prototypes for various getprotoxxx netdb.h functions are available
12891 echo " "
12892 set d_getprotoprotos getprotoent $i_netdb netdb.h
12893 eval $hasproto
12894
12895 : see if getprpwnam exists
12896 set getprpwnam d_getprpwnam
12897 eval $inlibc
12898
12899 : see if getpwent exists
12900 set getpwent d_getpwent
12901 eval $inlibc
12902
12903 : see if getpwent_r exists
12904 set getpwent_r d_getpwent_r
12905 eval $inlibc
12906 case "$d_getpwent_r" in
12907 "$define")
12908         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12909         case "$d_getpwent_r_proto:$usethreads" in
12910         ":define")      d_getpwent_r_proto=define
12911                 set d_getpwent_r_proto getpwent_r $hdrs
12912                 eval $hasproto ;;
12913         *)      ;;
12914         esac
12915         case "$d_getpwent_r_proto" in
12916         define)
12917         case "$getpwent_r_proto" in
12918         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
12919         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
12920         esac
12921         case "$getpwent_r_proto" in
12922         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
12923         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
12924         esac
12925         case "$getpwent_r_proto" in
12926         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
12927         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
12928         esac
12929         case "$getpwent_r_proto" in
12930         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
12931         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
12932         esac
12933         case "$getpwent_r_proto" in
12934         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
12935         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
12936         esac
12937         case "$getpwent_r_proto" in
12938         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
12939         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
12940         esac
12941         case "$getpwent_r_proto" in
12942         ''|0)   d_getpwent_r=undef
12943                 getpwent_r_proto=0
12944                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
12945         * )     case "$getpwent_r_proto" in
12946                 REENTRANT_PROTO*) ;;
12947                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
12948                 esac
12949                 echo "Prototype: $try" ;;
12950         esac
12951         ;;
12952         *)      case "$usethreads" in
12953                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
12954                 esac
12955                 d_getpwent_r=undef
12956                 getpwent_r_proto=0
12957                 ;;
12958         esac
12959         ;;
12960 *)      getpwent_r_proto=0
12961         ;;
12962 esac
12963
12964 : see if getpwnam_r exists
12965 set getpwnam_r d_getpwnam_r
12966 eval $inlibc
12967 case "$d_getpwnam_r" in
12968 "$define")
12969         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12970         case "$d_getpwnam_r_proto:$usethreads" in
12971         ":define")      d_getpwnam_r_proto=define
12972                 set d_getpwnam_r_proto getpwnam_r $hdrs
12973                 eval $hasproto ;;
12974         *)      ;;
12975         esac
12976         case "$d_getpwnam_r_proto" in
12977         define)
12978         case "$getpwnam_r_proto" in
12979         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
12980         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
12981         esac
12982         case "$getpwnam_r_proto" in
12983         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
12984         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
12985         esac
12986         case "$getpwnam_r_proto" in
12987         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
12988         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
12989         esac
12990         case "$getpwnam_r_proto" in
12991         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
12992         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
12993         esac
12994         case "$getpwnam_r_proto" in
12995         ''|0)   d_getpwnam_r=undef
12996                 getpwnam_r_proto=0
12997                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
12998         * )     case "$getpwnam_r_proto" in
12999                 REENTRANT_PROTO*) ;;
13000                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13001                 esac
13002                 echo "Prototype: $try" ;;
13003         esac
13004         ;;
13005         *)      case "$usethreads" in
13006                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13007                 esac
13008                 d_getpwnam_r=undef
13009                 getpwnam_r_proto=0
13010                 ;;
13011         esac
13012         ;;
13013 *)      getpwnam_r_proto=0
13014         ;;
13015 esac
13016
13017 : see if getpwuid_r exists
13018 set getpwuid_r d_getpwuid_r
13019 eval $inlibc
13020 case "$d_getpwuid_r" in
13021 "$define")
13022         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13023         case "$d_getpwuid_r_proto:$usethreads" in
13024         ":define")      d_getpwuid_r_proto=define
13025                 set d_getpwuid_r_proto getpwuid_r $hdrs
13026                 eval $hasproto ;;
13027         *)      ;;
13028         esac
13029         case "$d_getpwuid_r_proto" in
13030         define)
13031         case "$getpwuid_r_proto" in
13032         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13033         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13034         esac
13035         case "$getpwuid_r_proto" in
13036         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13037         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13038         esac
13039         case "$getpwuid_r_proto" in
13040         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13041         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13042         esac
13043         case "$getpwuid_r_proto" in
13044         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13045         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13046         esac
13047         case "$getpwuid_r_proto" in
13048         ''|0)   d_getpwuid_r=undef
13049                 getpwuid_r_proto=0
13050                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13051         * )     case "$getpwuid_r_proto" in
13052                 REENTRANT_PROTO*) ;;
13053                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13054                 esac
13055                 echo "Prototype: $try" ;;
13056         esac
13057         ;;
13058         *)      case "$usethreads" in
13059                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13060                 esac
13061                 d_getpwuid_r=undef
13062                 getpwuid_r_proto=0
13063                 ;;
13064         esac
13065         ;;
13066 *)      getpwuid_r_proto=0
13067         ;;
13068 esac
13069
13070
13071 : see if getservbyname exists
13072 set getservbyname d_getsbyname
13073 eval $inlibc
13074
13075 : see if getservbyport exists
13076 set getservbyport d_getsbyport
13077 eval $inlibc
13078
13079 : see if getservent exists
13080 set getservent d_getsent
13081 eval $inlibc
13082
13083 : see if getservbyname_r exists
13084 set getservbyname_r d_getservbyname_r
13085 eval $inlibc
13086 case "$d_getservbyname_r" in
13087 "$define")
13088         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13089         case "$d_getservbyname_r_proto:$usethreads" in
13090         ":define")      d_getservbyname_r_proto=define
13091                 set d_getservbyname_r_proto getservbyname_r $hdrs
13092                 eval $hasproto ;;
13093         *)      ;;
13094         esac
13095         case "$d_getservbyname_r_proto" in
13096         define)
13097         case "$getservbyname_r_proto" in
13098         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13099         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13100         esac
13101         case "$getservbyname_r_proto" in
13102         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13103         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13104         esac
13105         case "$getservbyname_r_proto" in
13106         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13107         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13108         esac
13109         case "$getservbyname_r_proto" in
13110         ''|0)   d_getservbyname_r=undef
13111                 getservbyname_r_proto=0
13112                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13113         * )     case "$getservbyname_r_proto" in
13114                 REENTRANT_PROTO*) ;;
13115                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13116                 esac
13117                 echo "Prototype: $try" ;;
13118         esac
13119         ;;
13120         *)      case "$usethreads" in
13121                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13122                 esac
13123                 d_getservbyname_r=undef
13124                 getservbyname_r_proto=0
13125                 ;;
13126         esac
13127         ;;
13128 *)      getservbyname_r_proto=0
13129         ;;
13130 esac
13131
13132 : see if getservbyport_r exists
13133 set getservbyport_r d_getservbyport_r
13134 eval $inlibc
13135 case "$d_getservbyport_r" in
13136 "$define")
13137         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13138         case "$d_getservbyport_r_proto:$usethreads" in
13139         ":define")      d_getservbyport_r_proto=define
13140                 set d_getservbyport_r_proto getservbyport_r $hdrs
13141                 eval $hasproto ;;
13142         *)      ;;
13143         esac
13144         case "$d_getservbyport_r_proto" in
13145         define)
13146         case "$getservbyport_r_proto" in
13147         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13148         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13149         esac
13150         case "$getservbyport_r_proto" in
13151         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13152         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13153         esac
13154         case "$getservbyport_r_proto" in
13155         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13156         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13157         esac
13158         case "$getservbyport_r_proto" in
13159         ''|0)   d_getservbyport_r=undef
13160                 getservbyport_r_proto=0
13161                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13162         * )     case "$getservbyport_r_proto" in
13163                 REENTRANT_PROTO*) ;;
13164                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13165                 esac
13166                 echo "Prototype: $try" ;;
13167         esac
13168         ;;
13169         *)      case "$usethreads" in
13170                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13171                 esac
13172                 d_getservbyport_r=undef
13173                 getservbyport_r_proto=0
13174                 ;;
13175         esac
13176         ;;
13177 *)      getservbyport_r_proto=0
13178         ;;
13179 esac
13180
13181 : see if getservent_r exists
13182 set getservent_r d_getservent_r
13183 eval $inlibc
13184 case "$d_getservent_r" in
13185 "$define")
13186         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13187         case "$d_getservent_r_proto:$usethreads" in
13188         ":define")      d_getservent_r_proto=define
13189                 set d_getservent_r_proto getservent_r $hdrs
13190                 eval $hasproto ;;
13191         *)      ;;
13192         esac
13193         case "$d_getservent_r_proto" in
13194         define)
13195         case "$getservent_r_proto" in
13196         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13197         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13198         esac
13199         case "$getservent_r_proto" in
13200         ''|0) try='int getservent_r(struct servent*, char*, int);'
13201         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13202         esac
13203         case "$getservent_r_proto" in
13204         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13205         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13206         esac
13207         case "$getservent_r_proto" in
13208         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13209         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13210         esac
13211         case "$getservent_r_proto" in
13212         ''|0)   d_getservent_r=undef
13213                 getservent_r_proto=0
13214                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13215         * )     case "$getservent_r_proto" in
13216                 REENTRANT_PROTO*) ;;
13217                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13218                 esac
13219                 echo "Prototype: $try" ;;
13220         esac
13221         ;;
13222         *)      case "$usethreads" in
13223                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13224                 esac
13225                 d_getservent_r=undef
13226                 getservent_r_proto=0
13227                 ;;
13228         esac
13229         ;;
13230 *)      getservent_r_proto=0
13231         ;;
13232 esac
13233
13234 : see if prototypes for various getservxxx netdb.h functions are available
13235 echo " "
13236 set d_getservprotos getservent $i_netdb netdb.h
13237 eval $hasproto
13238
13239 : see if getspnam exists
13240 set getspnam d_getspnam
13241 eval $inlibc
13242
13243 : see if this is a shadow.h system
13244 set shadow.h i_shadow
13245 eval $inhdr
13246
13247 : see if getspnam_r exists
13248 set getspnam_r d_getspnam_r
13249 eval $inlibc
13250 case "$d_getspnam_r" in
13251 "$define")
13252         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13253         case "$d_getspnam_r_proto:$usethreads" in
13254         ":define")      d_getspnam_r_proto=define
13255                 set d_getspnam_r_proto getspnam_r $hdrs
13256                 eval $hasproto ;;
13257         *)      ;;
13258         esac
13259         case "$d_getspnam_r_proto" in
13260         define)
13261         case "$getspnam_r_proto" in
13262         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13263         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13264         esac
13265         case "$getspnam_r_proto" in
13266         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13267         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13268         esac
13269         case "$getspnam_r_proto" in
13270         ''|0)   d_getspnam_r=undef
13271                 getspnam_r_proto=0
13272                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13273         * )     case "$getspnam_r_proto" in
13274                 REENTRANT_PROTO*) ;;
13275                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13276                 esac
13277                 echo "Prototype: $try" ;;
13278         esac
13279         ;;
13280         *)      case "$usethreads" in
13281                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13282                 esac
13283                 d_getspnam_r=undef
13284                 getspnam_r_proto=0
13285                 ;;
13286         esac
13287         ;;
13288 *)      getspnam_r_proto=0
13289         ;;
13290 esac
13291
13292 : see if gettimeofday or ftime exists
13293 set gettimeofday d_gettimeod
13294 eval $inlibc
13295 case "$d_gettimeod" in
13296 "$undef")
13297         set ftime d_ftime 
13298         eval $inlibc
13299         ;;
13300 *)
13301         val="$undef"; set d_ftime; eval $setvar
13302         ;;
13303 esac
13304 case "$d_gettimeod$d_ftime" in
13305 "$undef$undef")
13306         echo " "
13307         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13308         ;;
13309 esac
13310
13311 : see if gmtime_r exists
13312 set gmtime_r d_gmtime_r
13313 eval $inlibc
13314 case "$d_gmtime_r" in
13315 "$define")
13316         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13317         case "$d_gmtime_r_proto:$usethreads" in
13318         ":define")      d_gmtime_r_proto=define
13319                 set d_gmtime_r_proto gmtime_r $hdrs
13320                 eval $hasproto ;;
13321         *)      ;;
13322         esac
13323         case "$d_gmtime_r_proto" in
13324         define)
13325         case "$gmtime_r_proto" in
13326         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13327         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13328         esac
13329         case "$gmtime_r_proto" in
13330         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13331         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13332         esac
13333         case "$gmtime_r_proto" in
13334         ''|0)   d_gmtime_r=undef
13335                 gmtime_r_proto=0
13336                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13337         * )     case "$gmtime_r_proto" in
13338                 REENTRANT_PROTO*) ;;
13339                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13340                 esac
13341                 echo "Prototype: $try" ;;
13342         esac
13343         ;;
13344         *)      case "$usethreads" in
13345                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13346                 esac
13347                 d_gmtime_r=undef
13348                 gmtime_r_proto=0
13349                 ;;
13350         esac
13351         ;;
13352 *)      gmtime_r_proto=0
13353         ;;
13354 esac
13355
13356 : see if hasmntopt exists
13357 set hasmntopt d_hasmntopt
13358 eval $inlibc
13359
13360 : see if this is a netinet/in.h or sys/in.h system
13361 set netinet/in.h i_niin sys/in.h i_sysin
13362 eval $inhdr
13363
13364 : see if arpa/inet.h has to be included
13365 set arpa/inet.h i_arpainet
13366 eval $inhdr
13367
13368 : see if htonl --and friends-- exists
13369 val=''
13370 set htonl val
13371 eval $inlibc
13372
13373 : Maybe they are macros.
13374 case "$val" in
13375 $undef)
13376         $cat >htonl.c <<EOM
13377 #include <stdio.h>
13378 #include <sys/types.h>
13379 #$i_niin I_NETINET_IN
13380 #$i_sysin I_SYS_IN
13381 #$i_arpainet I_ARPA_INET
13382 #ifdef I_NETINET_IN
13383 #include <netinet/in.h>
13384 #endif
13385 #ifdef I_SYS_IN
13386 #include <sys/in.h>
13387 #endif
13388 #ifdef I_ARPA_INET
13389 #include <arpa/inet.h>
13390 #endif
13391 #ifdef htonl
13392 printf("Defined as a macro.");
13393 #endif
13394 EOM
13395         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13396         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13397                 val="$define"
13398                 echo "But it seems to be defined as a macro." >&4
13399         fi
13400         $rm -f htonl.?
13401         ;;
13402 esac
13403 set d_htonl
13404 eval $setvar
13405
13406 : see if ilogbl exists
13407 set ilogbl d_ilogbl
13408 eval $inlibc
13409
13410 : index or strchr
13411 echo " "
13412 if set index val -f; eval $csym; $val; then
13413         if set strchr val -f d_strchr; eval $csym; $val; then
13414                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13415                         val="$define"
13416                         vali="$undef"
13417                         echo "strchr() found." >&4
13418                 else
13419                         val="$undef"
13420                         vali="$define"
13421                         echo "index() found." >&4
13422                 fi
13423         else
13424                 val="$undef"
13425                 vali="$define"
13426                 echo "index() found." >&4
13427         fi
13428 else
13429         if set strchr val -f d_strchr; eval $csym; $val; then
13430                 val="$define"
13431                 vali="$undef"
13432                 echo "strchr() found." >&4
13433         else
13434                 echo "No index() or strchr() found!" >&4
13435                 val="$undef"
13436                 vali="$undef"
13437         fi
13438 fi
13439 set d_strchr; eval $setvar
13440 val="$vali"
13441 set d_index; eval $setvar
13442
13443 : check whether inet_aton exists
13444 set inet_aton d_inetaton
13445 eval $inlibc
13446
13447 : Look for isascii
13448 echo " "
13449 $cat >isascii.c <<EOCP
13450 #include <stdio.h>
13451 #include <ctype.h>
13452 #$i_stdlib I_STDLIB
13453 #ifdef I_STDLIB
13454 #include <stdlib.h>
13455 #endif
13456 int main() {
13457         int c = 'A';
13458         if (isascii(c))
13459                 exit(0);
13460         else
13461                 exit(1);
13462 }
13463 EOCP
13464 set isascii
13465 if eval $compile; then
13466         echo "isascii() found." >&4
13467         val="$define"
13468 else
13469         echo "isascii() NOT found." >&4
13470         val="$undef"
13471 fi
13472 set d_isascii
13473 eval $setvar
13474 $rm -f isascii*
13475
13476 : see if isfinite exists
13477 set isfinite d_isfinite
13478 eval $inlibc
13479
13480 : see if isinf exists
13481 set isinf d_isinf
13482 eval $inlibc
13483
13484 : see if isnan exists
13485 set isnan d_isnan
13486 eval $inlibc
13487
13488 : see if isnanl exists
13489 set isnanl d_isnanl
13490 eval $inlibc
13491
13492 : see if killpg exists
13493 set killpg d_killpg
13494 eval $inlibc
13495
13496 : see if lchown exists
13497 echo " "
13498 $cat > try.c <<'EOCP'
13499 /* System header to define __stub macros and hopefully few prototypes,
13500     which can conflict with char lchown(); below.  */
13501 #include <assert.h>
13502 /* Override any gcc2 internal prototype to avoid an error.  */
13503 /* We use char because int might match the return type of a gcc2
13504    builtin and then its argument prototype would still apply.  */
13505 char lchown();
13506 int main() {
13507     /*  The GNU C library defines this for functions which it implements
13508         to always fail with ENOSYS.  Some functions are actually named
13509         something starting with __ and the normal name is an alias.  */
13510 #if defined (__stub_lchown) || defined (__stub___lchown)
13511 choke me
13512 #else
13513 lchown();
13514 #endif
13515 ; return 0; }
13516 EOCP
13517 set try
13518 if eval $compile; then
13519     $echo "lchown() found." >&4
13520     val="$define"
13521 else
13522     $echo "lchown() NOT found." >&4
13523     val="$undef"
13524 fi
13525 set d_lchown
13526 eval $setvar
13527
13528 : See if number of significant digits in a double precision number is known
13529 echo " "
13530 $cat >ldbl_dig.c <<EOM
13531 #$i_limits I_LIMITS
13532 #$i_float I_FLOAT
13533 #ifdef I_LIMITS
13534 #include <limits.h>
13535 #endif
13536 #ifdef I_FLOAT
13537 #include <float.h>
13538 #endif
13539 #ifdef LDBL_DIG
13540 printf("Contains LDBL_DIG");
13541 #endif
13542 EOM
13543 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13544 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13545         echo "LDBL_DIG found." >&4
13546         val="$define"
13547 else
13548         echo "LDBL_DIG NOT found." >&4
13549         val="$undef"
13550 fi
13551 $rm -f ldbl_dig.?
13552 set d_ldbl_dig
13553 eval $setvar
13554
13555 : see if link exists
13556 set link d_link
13557 eval $inlibc
13558
13559 : see if localtime_r exists
13560 set localtime_r d_localtime_r
13561 eval $inlibc
13562 case "$d_localtime_r" in
13563 "$define")
13564         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13565         case "$d_localtime_r_proto:$usethreads" in
13566         ":define")      d_localtime_r_proto=define
13567                 set d_localtime_r_proto localtime_r $hdrs
13568                 eval $hasproto ;;
13569         *)      ;;
13570         esac
13571         case "$d_localtime_r_proto" in
13572         define)
13573         case "$localtime_r_proto" in
13574         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13575         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13576         esac
13577         case "$localtime_r_proto" in
13578         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13579         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13580         esac
13581         case "$localtime_r_proto" in
13582         ''|0)   d_localtime_r=undef
13583                 localtime_r_proto=0
13584                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13585         * )     case "$localtime_r_proto" in
13586                 REENTRANT_PROTO*) ;;
13587                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13588                 esac
13589                 echo "Prototype: $try" ;;
13590         esac
13591         ;;
13592         *)      case "$usethreads" in
13593                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13594                 esac
13595                 d_localtime_r=undef
13596                 localtime_r_proto=0
13597                 ;;
13598         esac
13599         ;;
13600 *)      localtime_r_proto=0
13601         ;;
13602 esac
13603
13604 : see if localeconv exists
13605 set localeconv d_locconv
13606 eval $inlibc
13607
13608 : see if lockf exists
13609 set lockf d_lockf
13610 eval $inlibc
13611
13612 : see if prototype for lseek is available
13613 echo " "
13614 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13615 eval $hasproto
13616
13617 : see if lstat exists
13618 set lstat d_lstat
13619 eval $inlibc
13620
13621 : see if madvise exists
13622 set madvise d_madvise
13623 eval $inlibc
13624
13625 : see if mblen exists
13626 set mblen d_mblen
13627 eval $inlibc
13628
13629 : see if mbstowcs exists
13630 set mbstowcs d_mbstowcs
13631 eval $inlibc
13632
13633 : see if mbtowc exists
13634 set mbtowc d_mbtowc
13635 eval $inlibc
13636
13637 : see if memchr exists
13638 set memchr d_memchr
13639 eval $inlibc
13640
13641 : see if memcmp exists
13642 set memcmp d_memcmp
13643 eval $inlibc
13644
13645 : see if memcpy exists
13646 set memcpy d_memcpy
13647 eval $inlibc
13648
13649 : see if memmove exists
13650 set memmove d_memmove
13651 eval $inlibc
13652
13653 : see if memset exists
13654 set memset d_memset
13655 eval $inlibc
13656
13657 : see if mkdir exists
13658 set mkdir d_mkdir
13659 eval $inlibc
13660
13661 : see if mkdtemp exists
13662 set mkdtemp d_mkdtemp
13663 eval $inlibc
13664
13665 : see if mkfifo exists
13666 set mkfifo d_mkfifo
13667 eval $inlibc
13668
13669 : see if mkstemp exists
13670 set mkstemp d_mkstemp
13671 eval $inlibc
13672
13673 : see if mkstemps exists
13674 set mkstemps d_mkstemps
13675 eval $inlibc
13676
13677 : see if mktime exists
13678 set mktime d_mktime
13679 eval $inlibc
13680
13681 : see if this is a sys/mman.h system
13682 set sys/mman.h i_sysmman
13683 eval $inhdr
13684
13685 : see if mmap exists
13686 set mmap d_mmap
13687 eval $inlibc
13688 : see what shmat returns
13689 : default to something harmless
13690 mmaptype='void *'
13691 case "$i_sysmman$d_mmap" in
13692 "$define$define")
13693         $cat >mmap.c <<'END'
13694 #include <sys/mman.h>
13695 void *mmap();
13696 END
13697         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
13698                 mmaptype='void *'
13699         else
13700                 mmaptype='caddr_t'
13701         fi
13702         echo "and it returns ($mmaptype)." >&4
13703         ;;
13704 esac
13705
13706
13707
13708 : see if sqrtl exists
13709 set sqrtl d_sqrtl
13710 eval $inlibc
13711
13712 : see if modfl exists
13713 set modfl d_modfl
13714 eval $inlibc
13715
13716 : see if prototype for modfl is available
13717 echo " "
13718 set d_modflproto modfl math.h
13719 eval $hasproto
13720
13721 d_modfl_pow32_bug="$undef"
13722
13723 case "$d_longdbl$d_modfl" in
13724 $define$define)
13725         $cat <<EOM
13726 Checking to see whether your modfl() is okay for large values...
13727 EOM
13728 $cat >try.c <<EOCP
13729 #include <math.h> 
13730 #include <stdio.h>
13731 EOCP
13732 if $test "X$d_modflproto" != "X$define"; then
13733         $cat >>try.c <<EOCP
13734 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
13735 long double modfl (long double, long double *);
13736 EOCP
13737 fi
13738 $cat >>try.c <<EOCP
13739 int main() {
13740     long double nv = 4294967303.15;
13741     long double v, w;
13742     v = modfl(nv, &w);         
13743 #ifdef __GLIBC__
13744     printf("glibc");
13745 #endif
13746     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
13747     return 0;
13748 }
13749 EOCP
13750         case "$osname:$gccversion" in
13751         aix:)   saveccflags="$ccflags"
13752                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
13753         esac
13754         set try
13755         if eval $compile; then
13756                 foo=`$run ./try`
13757                 case "$foo" in
13758                 *" 4294967303.150000 1.150000 4294967302.000000")
13759                         echo >&4 "Your modfl() is broken for large values."
13760                         d_modfl_pow32_bug="$define"
13761                         case "$foo" in
13762                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
13763                         ;;
13764                         esac
13765                         ;;
13766                 *" 4294967303.150000 0.150000 4294967303.000000")
13767                         echo >&4 "Your modfl() seems okay for large values."
13768                         ;;
13769                 *)      echo >&4 "I don't understand your modfl() at all."
13770                         d_modfl="$undef"
13771                         ;;
13772                 esac
13773                 $rm -f try.* try core core.try.*
13774         else
13775                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
13776                 d_modfl="$undef"
13777         fi
13778         case "$osname:$gccversion" in
13779         aix:)   ccflags="$saveccflags" ;; # restore
13780         esac
13781         ;;
13782 esac
13783
13784 if $test "$uselongdouble" = "$define"; then
13785     message=none
13786     case "$d_sqrtl:$d_modfl" in
13787     $define:$define)
13788         : You have both
13789         ;;
13790     $define:$undef)
13791         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
13792             echo "You have both aintl and copysignl, so I can emulate modfl."
13793         else
13794             message="I could not find modfl."
13795         fi
13796         ;;
13797     $undef:$define)
13798         message="I could not find sqrtl."
13799         ;;
13800     $undef:$undef)
13801         message="I found neither sqrtl nor modfl."
13802         ;;
13803     esac
13804
13805     if $test "$message" != none; then
13806         $cat <<EOM >&4
13807
13808 *** You requested the use of long doubles but you do not seem to have
13809 *** the mathematic functions for long doubles.
13810 *** ($message)
13811 *** I'm disabling the use of long doubles.
13812
13813 EOM
13814
13815         uselongdouble=$undef
13816     fi
13817 fi
13818
13819 : see if mprotect exists
13820 set mprotect d_mprotect
13821 eval $inlibc
13822
13823 : see if msgctl exists
13824 set msgctl d_msgctl
13825 eval $inlibc
13826
13827 : see if msgget exists
13828 set msgget d_msgget
13829 eval $inlibc
13830
13831 : see if msgsnd exists
13832 set msgsnd d_msgsnd
13833 eval $inlibc
13834
13835 : see if msgrcv exists
13836 set msgrcv d_msgrcv
13837 eval $inlibc
13838
13839 : see how much of the 'msg*(2)' library is present.
13840 h_msg=true
13841 echo " "
13842 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
13843 *"$undef"*) h_msg=false;;
13844 esac
13845 case "$osname" in
13846 freebsd)
13847     case "`ipcs 2>&1`" in
13848     "SVID messages"*"not configured"*)
13849         echo "Your $osname does not have the msg*(2) configured." >&4
13850         h_msg=false
13851         val="$undef"
13852         set msgctl d_msgctl
13853         eval $setvar
13854         set msgget d_msgget
13855         eval $setvar
13856         set msgsnd d_msgsnd
13857         eval $setvar
13858         set msgrcv d_msgrcv
13859         eval $setvar
13860         ;;
13861     esac
13862     ;;
13863 esac
13864 : we could also check for sys/ipc.h ...
13865 if $h_msg && $test `./findhdr sys/msg.h`; then
13866         echo "You have the full msg*(2) library." >&4
13867         val="$define"
13868 else
13869         echo "You don't have the full msg*(2) library." >&4
13870         val="$undef"
13871 fi
13872 set d_msg
13873 eval $setvar
13874
13875
13876 echo " "
13877 echo "Checking to see if your system supports struct msghdr..." >&4
13878 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
13879 eval $hasstruct
13880 case "$d_msghdr_s" in
13881 "$define")      echo "Yes, it does."   ;;
13882 *)              echo "No, it doesn't." ;;
13883 esac
13884
13885
13886 : see if msync exists
13887 set msync d_msync
13888 eval $inlibc
13889
13890 : see if munmap exists
13891 set munmap d_munmap
13892 eval $inlibc
13893
13894 : see if nanosleep exists
13895 set nanosleep d_nanosleep
13896 eval $inlibc
13897
13898 : see if nice exists
13899 set nice d_nice
13900 eval $inlibc
13901
13902 : see if this is a langinfo.h system
13903 set langinfo.h i_langinfo
13904 eval $inhdr
13905
13906 : see if nl_langinfo exists
13907 set nl_langinfo d_nl_langinfo
13908 eval $inlibc
13909
13910 : check for length of character
13911 echo " "
13912 case "$charsize" in
13913 '')
13914         echo "Checking to see how big your characters are (hey, you never know)..." >&4
13915         $cat >try.c <<EOCP
13916 #include <stdio.h>
13917 #$i_stdlib I_STDLIB
13918 #ifdef I_STDLIB
13919 #include <stdlib.h>
13920 #endif
13921 int main()
13922 {
13923     printf("%d\n", (int)sizeof(char));
13924     exit(0);
13925 }
13926 EOCP
13927         set try
13928         if eval $compile_ok; then
13929                 dflt=`$run ./try`
13930         else
13931                 dflt='1'
13932                 echo "(I can't seem to compile the test program.  Guessing...)"
13933         fi
13934         ;;
13935 *)
13936         dflt="$charsize"
13937         ;;
13938 esac
13939 rp="What is the size of a character (in bytes)?"
13940 . ./myread
13941 charsize="$ans"
13942 $rm -f try.c try
13943
13944 : check for volatile keyword
13945 echo " "
13946 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
13947 $cat >try.c <<'EOCP'
13948 int main()
13949 {
13950         typedef struct _goo_struct goo_struct;
13951         goo_struct * volatile goo = ((goo_struct *)0);
13952         struct _goo_struct {
13953                 long long_int;
13954                 int reg_int;
13955                 char char_var;
13956         };
13957         typedef unsigned short foo_t;
13958         char *volatile foo;
13959         volatile int bar;
13960         volatile foo_t blech;
13961         foo = foo;
13962 }
13963 EOCP
13964 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
13965         val="$define"
13966         echo "Yup, it does."
13967 else
13968         val="$undef"
13969         echo "Nope, it doesn't."
13970 fi
13971 set d_volatile
13972 eval $setvar
13973 $rm -f try.*
13974
13975
13976 echo " "
13977 $echo "Choosing the C types to be used for Perl's internal types..." >&4
13978
13979 case "$use64bitint:$d_quad:$quadtype" in
13980 define:define:?*)
13981         ivtype="$quadtype"
13982         uvtype="$uquadtype"
13983         ivsize=8
13984         uvsize=8
13985         ;;
13986 *)      ivtype="long"
13987         uvtype="unsigned long"
13988         ivsize=$longsize
13989         uvsize=$longsize
13990         ;;
13991 esac
13992
13993 case "$uselongdouble:$d_longdbl" in
13994 define:define)
13995         nvtype="long double"
13996         nvsize=$longdblsize
13997         ;;
13998 *)      nvtype=double
13999         nvsize=$doublesize
14000         ;;
14001 esac
14002
14003 $echo "(IV will be "$ivtype", $ivsize bytes)"
14004 $echo "(UV will be "$uvtype", $uvsize bytes)"
14005 $echo "(NV will be "$nvtype", $nvsize bytes)"
14006
14007 $cat >try.c <<EOCP
14008 #$i_inttypes I_INTTYPES
14009 #ifdef I_INTTYPES
14010 #include <inttypes.h>
14011 #endif
14012 #include <stdio.h>
14013 int main() {
14014 #ifdef INT8
14015    int8_t i =  INT8_MAX;
14016   uint8_t u = UINT8_MAX;
14017   printf("int8_t\n");
14018 #endif
14019 #ifdef INT16
14020    int16_t i =  INT16_MAX;
14021   uint16_t i = UINT16_MAX;
14022   printf("int16_t\n");
14023 #endif
14024 #ifdef INT32
14025    int32_t i =  INT32_MAX;
14026   uint32_t u = UINT32_MAX;
14027   printf("int32_t\n");
14028 #endif
14029 }
14030 EOCP
14031
14032 case "$i8type" in
14033 '')     case "$charsize" in
14034         1)      i8type=char
14035                 u8type="unsigned char"
14036                 i8size=$charsize
14037                 u8size=$charsize
14038                 ;;
14039         esac
14040         ;;
14041 esac
14042 case "$i8type" in
14043 '')     set try -DINT8
14044         if eval $compile; then
14045                 case "`$run ./try`" in
14046                 int8_t) i8type=int8_t
14047                         u8type=uint8_t
14048                         i8size=1
14049                         u8size=1
14050                         ;;
14051                 esac
14052         fi
14053         ;;
14054 esac
14055 case "$i8type" in
14056 '')     if $test $charsize -ge 1; then
14057                 i8type=char
14058                 u8type="unsigned char"
14059                 i8size=$charsize
14060                 u8size=$charsize
14061         fi
14062         ;;
14063 esac
14064
14065 case "$i16type" in
14066 '')     case "$shortsize" in
14067         2)      i16type=short
14068                 u16type="unsigned short"
14069                 i16size=$shortsize
14070                 u16size=$shortsize
14071                 ;;
14072         esac
14073         ;;
14074 esac
14075 case "$i16type" in
14076 '')     set try -DINT16
14077         if eval $compile; then
14078                 case "`$run ./try`" in
14079                 int16_t)
14080                         i16type=int16_t
14081                         u16type=uint16_t
14082                         i16size=2
14083                         u16size=2
14084                         ;;
14085                 esac
14086         fi
14087         ;;
14088 esac
14089 case "$i16type" in
14090 '')     if $test $shortsize -ge 2; then
14091                 i16type=short
14092                 u16type="unsigned short"
14093                 i16size=$shortsize
14094                 u16size=$shortsize
14095         fi
14096         ;;
14097 esac
14098
14099 case "$i32type" in
14100 '')     case "$longsize" in
14101         4)      i32type=long
14102                 u32type="unsigned long"
14103                 i32size=$longsize
14104                 u32size=$longsize
14105                 ;;
14106         *)      case "$intsize" in
14107                 4)      i32type=int
14108                         u32type="unsigned int"
14109                         i32size=$intsize
14110                         u32size=$intsize
14111                         ;;
14112                 esac
14113                 ;;
14114         esac
14115         ;;
14116 esac
14117 case "$i32type" in
14118 '')     set try -DINT32
14119         if eval $compile; then
14120                 case "`$run ./try`" in
14121                 int32_t)
14122                         i32type=int32_t
14123                         u32type=uint32_t
14124                         i32size=4
14125                         u32size=4
14126                         ;;
14127                 esac
14128         fi
14129         ;;
14130 esac
14131 case "$i32type" in
14132 '')     if $test $intsize -ge 4; then
14133                 i32type=int
14134                 u32type="unsigned int"
14135                 i32size=$intsize
14136                 u32size=$intsize
14137         fi
14138         ;;
14139 esac
14140
14141 case "$i64type" in
14142 '')     case "$d_quad:$quadtype" in
14143         define:?*)
14144                 i64type="$quadtype"
14145                 u64type="$uquadtype"
14146                 i64size=8
14147                 u64size=8
14148                 ;;
14149         esac
14150         ;;
14151 esac
14152
14153 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14154 : volatile so that the compiler has to store it out to memory.
14155 if test X"$d_volatile" = X"$define"; then
14156         volatile=volatile
14157 fi
14158 $cat <<EOP >try.c
14159 #include <stdio.h>
14160 #$i_stdlib I_STDLIB
14161 #ifdef I_STDLIB
14162 #include <stdlib.h>
14163 #endif
14164 #include <sys/types.h>
14165 #include <signal.h>
14166 #ifdef SIGFPE
14167 $volatile int bletched = 0;
14168 $signal_t blech(s) int s; { bletched = 1; }
14169 #endif
14170 int main() {
14171     $uvtype u = 0;
14172     $nvtype d;
14173     int     n = 8 * $uvsize;
14174     int     i;
14175 #ifdef SIGFPE
14176     signal(SIGFPE, blech);
14177 #endif
14178
14179     for (i = 0; i < n; i++) {
14180       u = u << 1 | ($uvtype)1;
14181       d = ($nvtype)u;
14182       if (($uvtype)d != u)
14183         break;
14184       if (d <= 0)
14185         break;
14186       d = ($nvtype)(u - 1);
14187       if (($uvtype)d != (u - 1))
14188         break;
14189 #ifdef SIGFPE
14190       if (bletched) {
14191         break;
14192 #endif
14193       } 
14194     }
14195     printf("%d\n", ((i == n) ? -n : i));
14196     exit(0);
14197 }
14198 EOP
14199 set try
14200
14201 d_nv_preserves_uv="$undef"
14202 if eval $compile; then
14203         nv_preserves_uv_bits="`$run ./try`"
14204 fi
14205 case "$nv_preserves_uv_bits" in
14206 \-[1-9]*)       
14207         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14208         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14209         d_nv_preserves_uv="$define"
14210         ;;
14211 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14212         d_nv_preserves_uv="$undef" ;;
14213 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14214         nv_preserves_uv_bits="$undef" ;;
14215 esac
14216
14217 $rm -f try.* try
14218
14219
14220 : check for off64_t
14221 echo " "
14222 echo "Checking to see if you have off64_t..." >&4
14223 $cat >try.c <<EOCP
14224 #include <sys/types.h>
14225 #include <unistd.h>
14226 int main() { off64_t x = 7; }
14227 EOCP
14228 set try
14229 if eval $compile; then
14230         val="$define"
14231         echo "You have off64_t."
14232 else
14233         val="$undef"
14234         echo "You do not have off64_t."
14235         case "$lseeksize" in
14236         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14237         esac
14238 fi
14239 $rm -f try.* try
14240 set d_off64_t
14241 eval $setvar
14242
14243 : how to create joinable pthreads
14244 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14245         echo " "
14246         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14247         $cat >try.c <<'EOCP'
14248 #include <pthread.h>
14249 int main() {
14250     int detachstate = JOINABLE;
14251 }
14252 EOCP
14253         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14254         if eval $compile; then
14255                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14256                 val="$undef" # Yes, undef.
14257                 set d_old_pthread_create_joinable
14258                 eval $setvar
14259                 val=""
14260                 set old_pthread_create_joinable
14261                 eval $setvar
14262         else
14263                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14264                 if eval $compile; then
14265                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14266                         val="$define"
14267                         set d_old_pthread_create_joinable
14268                         eval $setvar
14269                         val=PTHREAD_CREATE_UNDETACHED
14270                         set old_pthread_create_joinable
14271                         eval $setvar
14272                 else            
14273                         set try -DJOINABLE=__UNDETACHED
14274                         if eval $compile; then
14275                                 echo "You seem to use __UNDETACHED." >&4
14276                                 val="$define"
14277                                 set d_old_pthread_create_joinable
14278                                 eval $setvar
14279                                 val=__UNDETACHED
14280                                 set old_pthread_create_joinable
14281                                 eval $setvar
14282                         else
14283                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14284                                 val="$define"
14285                                 set d_old_pthread_create_joinable
14286                                 eval $setvar
14287                                 val=0
14288                                 set old_pthread_create_joinable
14289                                 eval $setvar
14290                         fi
14291                 fi
14292         fi
14293         $rm -f try try.*
14294 else
14295     d_old_pthread_create_joinable="$undef"
14296     old_pthread_create_joinable=""
14297 fi
14298
14299 : see if pause exists
14300 set pause d_pause
14301 eval $inlibc
14302
14303 : see if pipe exists
14304 set pipe d_pipe
14305 eval $inlibc
14306
14307 : see if poll exists
14308 set poll d_poll
14309 eval $inlibc
14310
14311 : see if readlink exists
14312 set readlink d_readlink
14313 eval $inlibc
14314
14315 echo " "
14316 procselfexe=''
14317 val="$undef"
14318 case "$d_readlink" in
14319 "$define")
14320         if $issymlink /proc/self/exe ; then
14321                 $ls -l /proc/self/exe > reflect
14322                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14323                         echo "You have Linux-like /proc/self/exe."
14324                         procselfexe='"/proc/self/exe"'
14325                         val="$define"
14326                 fi
14327         fi
14328         if $issymlink /proc/curproc/file ; then
14329                 $ls -l /proc/curproc/file > reflect
14330                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14331                         echo "You have BSD-like /proc/curproc/file."
14332                         procselfexe='"/proc/curproc/file"'
14333                         val="$define"
14334                 fi
14335         fi
14336         ;;
14337 esac
14338 $rm -f reflect
14339 set d_procselfexe
14340 eval $setvar
14341
14342 : see whether the pthread_atfork exists
14343 $cat >try.c <<EOP
14344 #include <pthread.h>
14345 #include <stdio.h>
14346 int main() {
14347 #ifdef  PTHREAD_ATFORK
14348         pthread_atfork(NULL,NULL,NULL);
14349 #endif
14350 }
14351 EOP
14352
14353 : see if pthread_atfork exists
14354 set try -DPTHREAD_ATFORK
14355 if eval $compile; then
14356     val="$define"
14357 else
14358     val="$undef"
14359 fi
14360 case "$usethreads" in
14361 $define)
14362         case "$val" in
14363         $define) echo 'pthread_atfork found.' >&4        ;;
14364         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14365         esac
14366 esac
14367 set d_pthread_atfork
14368 eval $setvar
14369
14370
14371 : see whether the various POSIXish _yields exist
14372 $cat >try.c <<EOP
14373 #include <pthread.h>
14374 #include <stdio.h>
14375 int main() {
14376 #ifdef SCHED_YIELD
14377         sched_yield();
14378 #else
14379 #ifdef PTHREAD_YIELD
14380         pthread_yield();
14381 #else
14382 #ifdef PTHREAD_YIELD_NULL
14383         pthread_yield(NULL);
14384 #endif
14385 #endif
14386 #endif
14387 }
14388 EOP
14389 : see if sched_yield exists
14390 set try -DSCHED_YIELD
14391 if eval $compile; then
14392     val="$define"
14393     sched_yield='sched_yield()'
14394 else
14395     val="$undef"
14396 fi
14397 case "$usethreads" in
14398 $define)
14399         case "$val" in
14400         $define) echo 'sched_yield() found.' >&4        ;;
14401         *)       echo 'sched_yield() NOT found.' >&4    ;;
14402         esac
14403 esac
14404 set d_sched_yield
14405 eval $setvar
14406
14407 : see if pthread_yield exists
14408 set try -DPTHREAD_YIELD
14409 if eval $compile; then
14410     val="$define"
14411     case "$sched_yield" in
14412     '') sched_yield='pthread_yield()' ;;
14413     esac
14414 else
14415     set try -DPTHREAD_YIELD_NULL
14416     if eval $compile; then
14417         val="$define"
14418         case "$sched_yield" in
14419         '') sched_yield='pthread_yield(NULL)' ;;
14420         esac
14421     else
14422         val="$undef"
14423     fi
14424 fi
14425 case "$usethreads" in
14426 $define)
14427         case "$val" in
14428         $define) echo 'pthread_yield() found.' >&4      ;;
14429         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14430         esac
14431         ;;
14432 esac
14433 set d_pthread_yield
14434 eval $setvar
14435
14436 case "$sched_yield" in
14437 '') sched_yield=undef ;;
14438 esac
14439
14440 $rm -f try try.*
14441
14442 : see if random_r exists
14443 set random_r d_random_r
14444 eval $inlibc
14445 case "$d_random_r" in
14446 "$define")
14447         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14448         case "$d_random_r_proto:$usethreads" in
14449         ":define")      d_random_r_proto=define
14450                 set d_random_r_proto random_r $hdrs
14451                 eval $hasproto ;;
14452         *)      ;;
14453         esac
14454         case "$d_random_r_proto" in
14455         define)
14456         case "$random_r_proto" in
14457         ''|0) try='int random_r(int*, struct random_data*);'
14458         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14459         esac
14460         case "$random_r_proto" in
14461         ''|0) try='int random_r(long*, struct random_data*);'
14462         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14463         esac
14464         case "$random_r_proto" in
14465         ''|0) try='int random_r(struct random_data*, int32_t*);'
14466         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14467         esac
14468         case "$random_r_proto" in
14469         ''|0)   d_random_r=undef
14470                 random_r_proto=0
14471                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14472         * )     case "$random_r_proto" in
14473                 REENTRANT_PROTO*) ;;
14474                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14475                 esac
14476                 echo "Prototype: $try" ;;
14477         esac
14478         ;;
14479         *)      case "$usethreads" in
14480                 define) echo "random_r has no prototype, not using it." >&4 ;;
14481                 esac
14482                 d_random_r=undef
14483                 random_r_proto=0
14484                 ;;
14485         esac
14486         ;;
14487 *)      random_r_proto=0
14488         ;;
14489 esac
14490
14491 : see if readdir and friends exist
14492 set readdir d_readdir
14493 eval $inlibc
14494 set seekdir d_seekdir
14495 eval $inlibc
14496 set telldir d_telldir
14497 eval $inlibc
14498 set rewinddir d_rewinddir
14499 eval $inlibc
14500
14501 : see if readdir64_r exists
14502 set readdir64_r d_readdir64_r
14503 eval $inlibc
14504 case "$d_readdir64_r" in
14505 "$define")
14506         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14507         case "$d_readdir64_r_proto:$usethreads" in
14508         ":define")      d_readdir64_r_proto=define
14509                 set d_readdir64_r_proto readdir64_r $hdrs
14510                 eval $hasproto ;;
14511         *)      ;;
14512         esac
14513         case "$d_readdir64_r_proto" in
14514         define)
14515         case "$readdir64_r_proto" in
14516         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14517         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14518         esac
14519         case "$readdir64_r_proto" in
14520         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14521         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14522         esac
14523         case "$readdir64_r_proto" in
14524         ''|0)   d_readdir64_r=undef
14525                 readdir64_r_proto=0
14526                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14527         * )     case "$readdir64_r_proto" in
14528                 REENTRANT_PROTO*) ;;
14529                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14530                 esac
14531                 echo "Prototype: $try" ;;
14532         esac
14533         ;;
14534         *)      case "$usethreads" in
14535                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14536                 esac
14537                 d_readdir64_r=undef
14538                 readdir64_r_proto=0
14539                 ;;
14540         esac
14541         ;;
14542 *)      readdir64_r_proto=0
14543         ;;
14544 esac
14545
14546 : see if readdir_r exists
14547 set readdir_r d_readdir_r
14548 eval $inlibc
14549 case "$d_readdir_r" in
14550 "$define")
14551         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14552         case "$d_readdir_r_proto:$usethreads" in
14553         ":define")      d_readdir_r_proto=define
14554                 set d_readdir_r_proto readdir_r $hdrs
14555                 eval $hasproto ;;
14556         *)      ;;
14557         esac
14558         case "$d_readdir_r_proto" in
14559         define)
14560         case "$readdir_r_proto" in
14561         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14562         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14563         esac
14564         case "$readdir_r_proto" in
14565         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14566         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14567         esac
14568         case "$readdir_r_proto" in
14569         ''|0)   d_readdir_r=undef
14570                 readdir_r_proto=0
14571                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14572         * )     case "$readdir_r_proto" in
14573                 REENTRANT_PROTO*) ;;
14574                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14575                 esac
14576                 echo "Prototype: $try" ;;
14577         esac
14578         ;;
14579         *)      case "$usethreads" in
14580                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14581                 esac
14582                 d_readdir_r=undef
14583                 readdir_r_proto=0
14584                 ;;
14585         esac
14586         ;;
14587 *)      readdir_r_proto=0
14588         ;;
14589 esac
14590
14591 : see if readv exists
14592 set readv d_readv
14593 eval $inlibc
14594
14595 : see if recvmsg exists
14596 set recvmsg d_recvmsg
14597 eval $inlibc
14598
14599 : see if rename exists
14600 set rename d_rename
14601 eval $inlibc
14602
14603 : see if rmdir exists
14604 set rmdir d_rmdir
14605 eval $inlibc
14606
14607 : see if memory.h is available.
14608 val=''
14609 set memory.h val
14610 eval $inhdr
14611
14612 : See if it conflicts with string.h
14613 case "$val" in
14614 $define)
14615         case "$strings" in
14616         '') ;;
14617         *)
14618                 $cppstdin $cppflags $cppminus < $strings > mem.h
14619                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14620                         echo " "
14621                         echo "We won't be including <memory.h>."
14622                         val="$undef"
14623                 fi
14624                 $rm -f mem.h
14625                 ;;
14626         esac
14627 esac
14628 set i_memory
14629 eval $setvar
14630
14631 : can bcopy handle overlapping blocks?
14632 echo " "
14633 val="$undef"
14634 case "$d_memmove" in
14635 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14636 *)      case "$d_bcopy" in
14637         "$define")
14638                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
14639                 $cat >try.c <<EOCP
14640 #$i_memory I_MEMORY
14641 #$i_stdlib I_STDLIB
14642 #$i_string I_STRING
14643 #$i_unistd I_UNISTD
14644 EOCP
14645         $cat >>try.c <<'EOCP'
14646 #include <stdio.h>
14647 #ifdef I_MEMORY
14648 #  include <memory.h>
14649 #endif
14650 #ifdef I_STDLIB
14651 #  include <stdlib.h>
14652 #endif
14653 #ifdef I_STRING
14654 #  include <string.h>
14655 #else
14656 #  include <strings.h>
14657 #endif
14658 #ifdef I_UNISTD
14659 #  include <unistd.h>  /* Needed for NetBSD */
14660 #endif
14661 int main()
14662 {
14663 char buf[128], abc[128];
14664 char *b;
14665 int len;
14666 int off;
14667 int align;
14668
14669 /* Copy "abcde..." string to char abc[] so that gcc doesn't
14670    try to store the string in read-only memory. */
14671 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
14672
14673 for (align = 7; align >= 0; align--) {
14674         for (len = 36; len; len--) {
14675                 b = buf+align;
14676                 bcopy(abc, b, len);
14677                 for (off = 1; off <= len; off++) {
14678                         bcopy(b, b+off, len);
14679                         bcopy(b+off, b, len);
14680                         if (bcmp(b, abc, len))
14681                                 exit(1);
14682                 }
14683         }
14684 }
14685 exit(0);
14686 }
14687 EOCP
14688                 set try
14689                 if eval $compile_ok; then
14690                         if ./try 2>/dev/null; then
14691                                 echo "Yes, it can."
14692                                 val="$define"
14693                         else
14694                                 echo "It can't, sorry."
14695                         fi
14696                 else
14697                         echo "(I can't compile the test program, so we'll assume not...)"
14698                 fi
14699                 ;;
14700         esac
14701         $rm -f try.* try core
14702         ;;
14703 esac
14704 set d_safebcpy
14705 eval $setvar
14706
14707 : can memcpy handle overlapping blocks?
14708 echo " "
14709 val="$undef"
14710 case "$d_memmove" in
14711 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
14712 *)      case "$d_memcpy" in
14713         "$define")
14714                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
14715                 $cat >try.c <<EOCP
14716 #$i_memory I_MEMORY
14717 #$i_stdlib I_STDLIB
14718 #$i_string I_STRING
14719 #$i_unistd I_UNISTD
14720 EOCP
14721         $cat >>try.c <<'EOCP'
14722 #include <stdio.h>
14723 #ifdef I_MEMORY
14724 #  include <memory.h>
14725 #endif
14726 #ifdef I_STDLIB
14727 #  include <stdlib.h>
14728 #endif
14729 #ifdef I_STRING
14730 #  include <string.h>
14731 #else
14732 #  include <strings.h>
14733 #endif
14734 #ifdef I_UNISTD
14735 #  include <unistd.h>  /* Needed for NetBSD */
14736 #endif
14737 int main()
14738 {
14739 char buf[128], abc[128];
14740 char *b;
14741 int len;
14742 int off;
14743 int align;
14744
14745 /* Copy "abcde..." string to char abc[] so that gcc doesn't
14746    try to store the string in read-only memory. */
14747 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
14748
14749 for (align = 7; align >= 0; align--) {
14750         for (len = 36; len; len--) {
14751                 b = buf+align;
14752                 memcpy(b, abc, len);
14753                 for (off = 1; off <= len; off++) {
14754                         memcpy(b+off, b, len);
14755                         memcpy(b, b+off, len);
14756                         if (memcmp(b, abc, len))
14757                                 exit(1);
14758                 }
14759         }
14760 }
14761 exit(0);
14762 }
14763 EOCP
14764                 set try
14765                 if eval $compile_ok; then
14766                         if ./try 2>/dev/null; then
14767                                 echo "Yes, it can."
14768                                 val="$define"
14769                         else
14770                                 echo "It can't, sorry."
14771                         fi
14772                 else
14773                         echo "(I can't compile the test program, so we'll assume not...)"
14774                 fi
14775                 ;;
14776         esac
14777         $rm -f try.* try core
14778         ;;
14779 esac
14780 set d_safemcpy
14781 eval $setvar
14782
14783 : can memcmp be trusted to compare relative magnitude?
14784 val="$undef"
14785 case "$d_memcmp" in
14786 "$define")
14787         echo " "
14788         echo "Checking if your memcmp() can compare relative magnitude..." >&4
14789         $cat >try.c <<EOCP
14790 #$i_memory I_MEMORY
14791 #$i_stdlib I_STDLIB
14792 #$i_string I_STRING
14793 #$i_unistd I_UNISTD
14794 EOCP
14795         $cat >>try.c <<'EOCP'
14796 #include <stdio.h>
14797 #ifdef I_MEMORY
14798 #  include <memory.h>
14799 #endif
14800 #ifdef I_STDLIB
14801 #  include <stdlib.h>
14802 #endif
14803 #ifdef I_STRING
14804 #  include <string.h>
14805 #else
14806 #  include <strings.h>
14807 #endif
14808 #ifdef I_UNISTD
14809 #  include <unistd.h>  /* Needed for NetBSD */
14810 #endif
14811 int main()
14812 {
14813 char a = -1;
14814 char b = 0;
14815 if ((a < b) && memcmp(&a, &b, 1) < 0)
14816         exit(1);
14817 exit(0);
14818 }
14819 EOCP
14820         set try
14821         if eval $compile_ok; then
14822                 if $run ./try 2>/dev/null; then
14823                         echo "Yes, it can."
14824                         val="$define"
14825                 else
14826                         echo "No, it can't (it uses signed chars)."
14827                 fi
14828         else
14829                 echo "(I can't compile the test program, so we'll assume not...)"
14830         fi
14831         ;;
14832 esac
14833 $rm -f try.* try core
14834 set d_sanemcmp
14835 eval $setvar
14836
14837 : see if prototype for sbrk is available
14838 echo " "
14839 set d_sbrkproto sbrk $i_unistd unistd.h
14840 eval $hasproto
14841
14842 : see if scalbnl exists
14843 set scalbnl d_scalbnl
14844 eval $inlibc
14845
14846 : see if select exists
14847 set select d_select
14848 eval $inlibc
14849
14850 : see if semctl exists
14851 set semctl d_semctl
14852 eval $inlibc
14853
14854 : see if semget exists
14855 set semget d_semget
14856 eval $inlibc
14857
14858 : see if semop exists
14859 set semop d_semop
14860 eval $inlibc
14861
14862 : see how much of the 'sem*(2)' library is present.
14863 h_sem=true
14864 echo " "
14865 case "$d_semctl$d_semget$d_semop" in
14866 *"$undef"*) h_sem=false;;
14867 esac
14868 case "$osname" in
14869 freebsd)
14870     case "`ipcs 2>&1`" in
14871     "SVID messages"*"not configured"*)
14872         echo "Your $osname does not have the sem*(2) configured." >&4
14873         h_sem=false
14874         val="$undef"
14875         set semctl d_semctl
14876         eval $setvar
14877         set semget d_semget
14878         eval $setvar
14879         set semop d_semop
14880         eval $setvar
14881         ;;
14882     esac
14883     ;;
14884 esac
14885 : we could also check for sys/ipc.h ...
14886 if $h_sem && $test `./findhdr sys/sem.h`; then
14887         echo "You have the full sem*(2) library." >&4
14888         val="$define"
14889 else
14890         echo "You don't have the full sem*(2) library." >&4
14891         val="$undef"
14892 fi
14893 set d_sem
14894 eval $setvar
14895
14896 : see whether sys/sem.h defines union semun
14897 echo " "
14898 $cat > try.c <<'END'
14899 #include <sys/types.h>
14900 #include <sys/ipc.h>
14901 #include <sys/sem.h>
14902 int main () { union semun semun; semun.buf = 0; }
14903 END
14904 set try
14905 if eval $compile; then
14906     echo "You have union semun in <sys/sem.h>." >&4
14907     val="$define"
14908 else
14909     echo "You do not have union semun in <sys/sem.h>." >&4
14910     val="$undef"
14911 fi
14912 $rm -f try try.c try.h
14913 set d_union_semun
14914 eval $setvar
14915
14916 : see how to do semctl IPC_STAT
14917 case "$d_sem" in
14918 $define)
14919     : see whether semctl IPC_STAT can use union semun
14920     echo " "
14921     $cat > try.h <<END
14922 #ifndef S_IRUSR
14923 #   ifdef S_IREAD
14924 #       define S_IRUSR S_IREAD
14925 #       define S_IWUSR S_IWRITE
14926 #       define S_IXUSR S_IEXEC
14927 #   else
14928 #       define S_IRUSR 0400
14929 #       define S_IWUSR 0200
14930 #       define S_IXUSR 0100
14931 #   endif
14932 #   define S_IRGRP (S_IRUSR>>3)
14933 #   define S_IWGRP (S_IWUSR>>3)
14934 #   define S_IXGRP (S_IXUSR>>3)
14935 #   define S_IROTH (S_IRUSR>>6)
14936 #   define S_IWOTH (S_IWUSR>>6)
14937 #   define S_IXOTH (S_IXUSR>>6)
14938 #endif
14939 #ifndef S_IRWXU
14940 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
14941 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
14942 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
14943 #endif
14944 END
14945
14946     $cat > try.c <<END
14947 #include <sys/types.h>
14948 #include <sys/ipc.h>
14949 #include <sys/sem.h>
14950 #include <sys/stat.h>
14951 #include <stdio.h>
14952 #include <errno.h>
14953 #include "try.h"
14954 #ifndef errno
14955 extern int errno;
14956 #endif
14957 #$d_union_semun HAS_UNION_SEMUN
14958 int main() {
14959     union semun
14960 #ifndef HAS_UNION_SEMUN
14961     {
14962         int val;
14963         struct semid_ds *buf;
14964         unsigned short *array;
14965     }
14966 #endif
14967     arg;
14968     int sem, st;
14969
14970 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
14971     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
14972     if (sem > -1) {
14973         struct semid_ds argbuf;
14974         arg.buf = &argbuf;
14975 #       ifdef IPC_STAT
14976         st = semctl(sem, 0, IPC_STAT, arg);
14977         if (st == 0)
14978             printf("semun\n");
14979         else
14980 #       endif /* IPC_STAT */
14981             printf("semctl IPC_STAT failed: errno = %d\n", errno);
14982 #       ifdef IPC_RMID
14983         if (semctl(sem, 0, IPC_RMID, arg) != 0)
14984 #       endif /* IPC_RMID */
14985             printf("semctl IPC_RMID failed: errno = %d\n", errno);
14986     } else
14987 #endif /* IPC_PRIVATE && ... */
14988         printf("semget failed: errno = %d\n", errno);
14989   return 0;
14990 }
14991 END
14992     val="$undef"
14993     set try
14994     if eval $compile; then
14995         xxx=`$run ./try`
14996         case "$xxx" in
14997         semun) val="$define" ;;
14998         esac
14999     fi
15000     $rm -f try try.c
15001     set d_semctl_semun
15002     eval $setvar
15003     case "$d_semctl_semun" in
15004     $define)
15005         echo "You can use union semun for semctl IPC_STAT." >&4
15006         also='also'
15007         ;;
15008     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15009         also=''
15010         ;;
15011     esac
15012
15013     : see whether semctl IPC_STAT can use struct semid_ds pointer
15014     $cat > try.c <<'END'
15015 #include <sys/types.h>
15016 #include <sys/ipc.h>
15017 #include <sys/sem.h>
15018 #include <sys/stat.h>
15019 #include "try.h"
15020 #include <stdio.h>
15021 #include <errno.h>
15022 #ifndef errno
15023 extern int errno;
15024 #endif
15025 int main() {
15026     struct semid_ds arg;
15027     int sem, st;
15028
15029 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15030     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15031     if (sem > -1) {
15032 #       ifdef IPC_STAT
15033         st = semctl(sem, 0, IPC_STAT, &arg);
15034         if (st == 0)
15035             printf("semid_ds\n");
15036         else
15037 #       endif /* IPC_STAT */
15038             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15039 #       ifdef IPC_RMID
15040         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15041 #       endif /* IPC_RMID */
15042             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15043     } else
15044 #endif /* IPC_PRIVATE && ... */
15045         printf("semget failed: errno = %d\n", errno);
15046
15047     return 0;
15048 }
15049 END
15050     val="$undef"
15051     set try
15052     if eval $compile; then
15053         xxx=`$run ./try`
15054         case "$xxx" in
15055         semid_ds) val="$define" ;;
15056         esac
15057     fi
15058     $rm -f try try.c
15059     set d_semctl_semid_ds
15060     eval $setvar
15061     case "$d_semctl_semid_ds" in
15062     $define)
15063         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15064         ;;
15065     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15066         ;;
15067     esac
15068     $rm -f try.h
15069     ;;
15070 *)  val="$undef"
15071
15072     # We do not have the full sem*(2) library, so assume we can not
15073     # use either.
15074
15075     set d_semctl_semun
15076     eval $setvar
15077
15078     set d_semctl_semid_ds
15079     eval $setvar
15080     ;;
15081 esac
15082
15083 : see if sendmsg exists
15084 set sendmsg d_sendmsg
15085 eval $inlibc
15086
15087 : see if setegid exists
15088 set setegid d_setegid
15089 eval $inlibc
15090
15091 : see if seteuid exists
15092 set seteuid d_seteuid
15093 eval $inlibc
15094
15095 : see if setgrent exists
15096 set setgrent d_setgrent
15097 eval $inlibc
15098
15099 : see if setgrent_r exists
15100 set setgrent_r d_setgrent_r
15101 eval $inlibc
15102 case "$d_setgrent_r" in
15103 "$define")
15104         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15105         case "$d_setgrent_r_proto:$usethreads" in
15106         ":define")      d_setgrent_r_proto=define
15107                 set d_setgrent_r_proto setgrent_r $hdrs
15108                 eval $hasproto ;;
15109         *)      ;;
15110         esac
15111         case "$d_setgrent_r_proto" in
15112         define)
15113         case "$setgrent_r_proto" in
15114         ''|0) try='int setgrent_r(FILE**);'
15115         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15116         esac
15117         case "$setgrent_r_proto" in
15118         ''|0) try='void setgrent_r(FILE**);'
15119         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15120         esac
15121         case "$setgrent_r_proto" in
15122         ''|0)   d_setgrent_r=undef
15123                 setgrent_r_proto=0
15124                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15125         * )     case "$setgrent_r_proto" in
15126                 REENTRANT_PROTO*) ;;
15127                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15128                 esac
15129                 echo "Prototype: $try" ;;
15130         esac
15131         ;;
15132         *)      case "$usethreads" in
15133                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15134                 esac
15135                 d_setgrent_r=undef
15136                 setgrent_r_proto=0
15137                 ;;
15138         esac
15139         ;;
15140 *)      setgrent_r_proto=0
15141         ;;
15142 esac
15143
15144 : see if sethostent exists
15145 set sethostent d_sethent
15146 eval $inlibc
15147
15148 : see if sethostent_r exists
15149 set sethostent_r d_sethostent_r
15150 eval $inlibc
15151 case "$d_sethostent_r" in
15152 "$define")
15153         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15154         case "$d_sethostent_r_proto:$usethreads" in
15155         ":define")      d_sethostent_r_proto=define
15156                 set d_sethostent_r_proto sethostent_r $hdrs
15157                 eval $hasproto ;;
15158         *)      ;;
15159         esac
15160         case "$d_sethostent_r_proto" in
15161         define)
15162         case "$sethostent_r_proto" in
15163         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15164         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15165         esac
15166         case "$sethostent_r_proto" in
15167         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15168         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15169         esac
15170         case "$sethostent_r_proto" in
15171         ''|0)   d_sethostent_r=undef
15172                 sethostent_r_proto=0
15173                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15174         * )     case "$sethostent_r_proto" in
15175                 REENTRANT_PROTO*) ;;
15176                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15177                 esac
15178                 echo "Prototype: $try" ;;
15179         esac
15180         ;;
15181         *)      case "$usethreads" in
15182                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15183                 esac
15184                 d_sethostent_r=undef
15185                 sethostent_r_proto=0
15186                 ;;
15187         esac
15188         ;;
15189 *)      sethostent_r_proto=0
15190         ;;
15191 esac
15192
15193 : see if setitimer exists
15194 set setitimer d_setitimer
15195 eval $inlibc
15196
15197 : see if setlinebuf exists
15198 set setlinebuf d_setlinebuf
15199 eval $inlibc
15200
15201 : see if setlocale exists
15202 set setlocale d_setlocale
15203 eval $inlibc
15204
15205 : see if locale.h is available
15206 set locale.h i_locale
15207 eval $inhdr
15208
15209 : see if setlocale_r exists
15210 set setlocale_r d_setlocale_r
15211 eval $inlibc
15212 case "$d_setlocale_r" in
15213 "$define")
15214         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15215         case "$d_setlocale_r_proto:$usethreads" in
15216         ":define")      d_setlocale_r_proto=define
15217                 set d_setlocale_r_proto setlocale_r $hdrs
15218                 eval $hasproto ;;
15219         *)      ;;
15220         esac
15221         case "$d_setlocale_r_proto" in
15222         define)
15223         case "$setlocale_r_proto" in
15224         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15225         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15226         esac
15227         case "$setlocale_r_proto" in
15228         ''|0)   d_setlocale_r=undef
15229                 setlocale_r_proto=0
15230                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15231         * )     case "$setlocale_r_proto" in
15232                 REENTRANT_PROTO*) ;;
15233                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15234                 esac
15235                 echo "Prototype: $try" ;;
15236         esac
15237         ;;
15238         *)      case "$usethreads" in
15239                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15240                 esac
15241                 d_setlocale_r=undef
15242                 setlocale_r_proto=0
15243                 ;;
15244         esac
15245         ;;
15246 *)      setlocale_r_proto=0
15247         ;;
15248 esac
15249
15250 : see if setnetent exists
15251 set setnetent d_setnent
15252 eval $inlibc
15253
15254 : see if setnetent_r exists
15255 set setnetent_r d_setnetent_r
15256 eval $inlibc
15257 case "$d_setnetent_r" in
15258 "$define")
15259         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15260         case "$d_setnetent_r_proto:$usethreads" in
15261         ":define")      d_setnetent_r_proto=define
15262                 set d_setnetent_r_proto setnetent_r $hdrs
15263                 eval $hasproto ;;
15264         *)      ;;
15265         esac
15266         case "$d_setnetent_r_proto" in
15267         define)
15268         case "$setnetent_r_proto" in
15269         ''|0) try='int setnetent_r(int, struct netent_data*);'
15270         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15271         esac
15272         case "$setnetent_r_proto" in
15273         ''|0) try='void setnetent_r(int, struct netent_data*);'
15274         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15275         esac
15276         case "$setnetent_r_proto" in
15277         ''|0)   d_setnetent_r=undef
15278                 setnetent_r_proto=0
15279                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15280         * )     case "$setnetent_r_proto" in
15281                 REENTRANT_PROTO*) ;;
15282                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15283                 esac
15284                 echo "Prototype: $try" ;;
15285         esac
15286         ;;
15287         *)      case "$usethreads" in
15288                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15289                 esac
15290                 d_setnetent_r=undef
15291                 setnetent_r_proto=0
15292                 ;;
15293         esac
15294         ;;
15295 *)      setnetent_r_proto=0
15296         ;;
15297 esac
15298
15299 : see if setprotoent exists
15300 set setprotoent d_setpent
15301 eval $inlibc
15302
15303 : see if setpgid exists
15304 set setpgid d_setpgid
15305 eval $inlibc
15306
15307 : see if setpgrp2 exists
15308 set setpgrp2 d_setpgrp2
15309 eval $inlibc
15310
15311 : see if setpriority exists
15312 set setpriority d_setprior
15313 eval $inlibc
15314
15315 : see if setproctitle exists
15316 set setproctitle d_setproctitle
15317 eval $inlibc
15318
15319 : see if setprotoent_r exists
15320 set setprotoent_r d_setprotoent_r
15321 eval $inlibc
15322 case "$d_setprotoent_r" in
15323 "$define")
15324         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15325         case "$d_setprotoent_r_proto:$usethreads" in
15326         ":define")      d_setprotoent_r_proto=define
15327                 set d_setprotoent_r_proto setprotoent_r $hdrs
15328                 eval $hasproto ;;
15329         *)      ;;
15330         esac
15331         case "$d_setprotoent_r_proto" in
15332         define)
15333         case "$setprotoent_r_proto" in
15334         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15335         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15336         esac
15337         case "$setprotoent_r_proto" in
15338         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15339         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15340         esac
15341         case "$setprotoent_r_proto" in
15342         ''|0)   d_setprotoent_r=undef
15343                 setprotoent_r_proto=0
15344                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15345         * )     case "$setprotoent_r_proto" in
15346                 REENTRANT_PROTO*) ;;
15347                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15348                 esac
15349                 echo "Prototype: $try" ;;
15350         esac
15351         ;;
15352         *)      case "$usethreads" in
15353                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15354                 esac
15355                 d_setprotoent_r=undef
15356                 setprotoent_r_proto=0
15357                 ;;
15358         esac
15359         ;;
15360 *)      setprotoent_r_proto=0
15361         ;;
15362 esac
15363
15364 : see if setpwent exists
15365 set setpwent d_setpwent
15366 eval $inlibc
15367
15368 : see if setpwent_r exists
15369 set setpwent_r d_setpwent_r
15370 eval $inlibc
15371 case "$d_setpwent_r" in
15372 "$define")
15373         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15374         case "$d_setpwent_r_proto:$usethreads" in
15375         ":define")      d_setpwent_r_proto=define
15376                 set d_setpwent_r_proto setpwent_r $hdrs
15377                 eval $hasproto ;;
15378         *)      ;;
15379         esac
15380         case "$d_setpwent_r_proto" in
15381         define)
15382         case "$setpwent_r_proto" in
15383         ''|0) try='int setpwent_r(FILE**);'
15384         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15385         esac
15386         case "$setpwent_r_proto" in
15387         ''|0) try='void setpwent_r(FILE**);'
15388         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15389         esac
15390         case "$setpwent_r_proto" in
15391         ''|0)   d_setpwent_r=undef
15392                 setpwent_r_proto=0
15393                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15394         * )     case "$setpwent_r_proto" in
15395                 REENTRANT_PROTO*) ;;
15396                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15397                 esac
15398                 echo "Prototype: $try" ;;
15399         esac
15400         ;;
15401         *)      case "$usethreads" in
15402                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15403                 esac
15404                 d_setpwent_r=undef
15405                 setpwent_r_proto=0
15406                 ;;
15407         esac
15408         ;;
15409 *)      setpwent_r_proto=0
15410         ;;
15411 esac
15412
15413 : see if setregid exists
15414 set setregid d_setregid
15415 eval $inlibc
15416 set setresgid d_setresgid
15417 eval $inlibc
15418
15419 : see if setreuid exists
15420 set setreuid d_setreuid
15421 eval $inlibc
15422 set setresuid d_setresuid
15423 eval $inlibc
15424
15425 : see if setrgid exists
15426 set setrgid d_setrgid
15427 eval $inlibc
15428
15429 : see if setruid exists
15430 set setruid d_setruid
15431 eval $inlibc
15432
15433 : see if setservent exists
15434 set setservent d_setsent
15435 eval $inlibc
15436
15437 : see if setservent_r exists
15438 set setservent_r d_setservent_r
15439 eval $inlibc
15440 case "$d_setservent_r" in
15441 "$define")
15442         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15443         case "$d_setservent_r_proto:$usethreads" in
15444         ":define")      d_setservent_r_proto=define
15445                 set d_setservent_r_proto setservent_r $hdrs
15446                 eval $hasproto ;;
15447         *)      ;;
15448         esac
15449         case "$d_setservent_r_proto" in
15450         define)
15451         case "$setservent_r_proto" in
15452         ''|0) try='int setservent_r(int, struct servent_data*);'
15453         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15454         esac
15455         case "$setservent_r_proto" in
15456         ''|0) try='void setservent_r(int, struct servent_data*);'
15457         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15458         esac
15459         case "$setservent_r_proto" in
15460         ''|0)   d_setservent_r=undef
15461                 setservent_r_proto=0
15462                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15463         * )     case "$setservent_r_proto" in
15464                 REENTRANT_PROTO*) ;;
15465                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15466                 esac
15467                 echo "Prototype: $try" ;;
15468         esac
15469         ;;
15470         *)      case "$usethreads" in
15471                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15472                 esac
15473                 d_setservent_r=undef
15474                 setservent_r_proto=0
15475                 ;;
15476         esac
15477         ;;
15478 *)      setservent_r_proto=0
15479         ;;
15480 esac
15481
15482 : see if setsid exists
15483 set setsid d_setsid
15484 eval $inlibc
15485
15486 : see if setvbuf exists
15487 set setvbuf d_setvbuf
15488 eval $inlibc
15489
15490 : see if sfio.h is available
15491 set sfio.h i_sfio
15492 eval $inhdr
15493
15494
15495 : see if sfio library is available
15496 case "$i_sfio" in
15497 $define)
15498         val=''
15499         set sfreserve val
15500         eval $inlibc
15501         ;;
15502 *)
15503         val="$undef"
15504         ;;
15505 esac
15506 : Ok, but do we want to use it.
15507 case "$val" in
15508 $define)
15509         case "$usesfio" in
15510         true|$define|[yY]*) dflt='y';;
15511         *) dflt='n';;
15512         esac
15513         echo "$package can use the sfio library, but it is experimental."
15514         case "$useperlio" in
15515         "$undef")
15516             echo "For sfio also the PerlIO abstraction layer is needed."
15517             echo "Earlier you said you wouldn't want that."
15518             ;;
15519         esac
15520         rp="You seem to have sfio available, do you want to try using it?"
15521         . ./myread
15522         case "$ans" in
15523         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15524                 useperlio="$define"
15525                 val="$define"
15526                 ;;
15527         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15528                 val="$undef"
15529                 ;;
15530         esac
15531         ;;
15532 *)      case "$usesfio" in
15533         true|$define|[yY]*)
15534                 echo "Sorry, cannot find sfio on this machine." >&4
15535                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15536                 val="$undef"
15537                 ;;
15538         esac
15539         ;;
15540 esac
15541 set d_sfio
15542 eval $setvar
15543 case "$d_sfio" in
15544 $define) usesfio='true';;
15545 *) usesfio='false';;
15546 esac
15547 case "$d_sfio" in
15548 $define) ;;
15549 *)      : Remove sfio from list of libraries to use
15550         case "$libs" in
15551         *-lsfio*)
15552                 echo "Removing unneeded -lsfio from library list" >&4
15553                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15554                 shift
15555                 libs="$*"
15556                 echo "libs = $libs" >&4
15557                 ;;
15558         esac
15559 ;;
15560 esac
15561
15562
15563 : see if shmctl exists
15564 set shmctl d_shmctl
15565 eval $inlibc
15566
15567 : see if shmget exists
15568 set shmget d_shmget
15569 eval $inlibc
15570
15571 : see if shmat exists
15572 set shmat d_shmat
15573 eval $inlibc
15574 : see what shmat returns
15575 case "$d_shmat" in
15576 "$define")
15577         $cat >shmat.c <<'END'
15578 #include <sys/shm.h>
15579 void *shmat();
15580 END
15581         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15582                 shmattype='void *'
15583         else
15584                 shmattype='char *'
15585         fi
15586         echo "and it returns ($shmattype)." >&4
15587         : see if a prototype for shmat is available
15588         xxx=`./findhdr sys/shm.h`
15589         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15590         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15591                 val="$define"
15592         else
15593                 val="$undef"
15594         fi
15595         $rm -f shmat.[co]
15596         ;;
15597 *)
15598         val="$undef"
15599         ;;
15600 esac
15601 set d_shmatprototype
15602 eval $setvar
15603
15604 : see if shmdt exists
15605 set shmdt d_shmdt
15606 eval $inlibc
15607
15608 : see how much of the 'shm*(2)' library is present.
15609 h_shm=true
15610 echo " "
15611 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15612 *"$undef"*) h_shm=false;;
15613 esac
15614 case "$osname" in
15615 freebsd)
15616     case "`ipcs 2>&1`" in
15617     "SVID shared memory"*"not configured"*)
15618         echo "Your $osname does not have the shm*(2) configured." >&4
15619         h_shm=false
15620         val="$undef"
15621         set shmctl d_shmctl
15622         evat $setvar
15623         set shmget d_shmget
15624         evat $setvar
15625         set shmat d_shmat
15626         evat $setvar
15627         set shmdt d_shmdt
15628         evat $setvar
15629         ;;
15630     esac
15631     ;;
15632 esac
15633 : we could also check for sys/ipc.h ...
15634 if $h_shm && $test `./findhdr sys/shm.h`; then
15635         echo "You have the full shm*(2) library." >&4
15636         val="$define"
15637 else
15638         echo "You don't have the full shm*(2) library." >&4
15639         val="$undef"
15640 fi
15641 set d_shm
15642 eval $setvar
15643
15644 echo " "
15645 : see if we have sigaction
15646 if set sigaction val -f d_sigaction; eval $csym; $val; then
15647         echo 'sigaction() found.' >&4
15648         $cat > try.c <<EOP
15649 #include <stdio.h>
15650 #include <sys/types.h>
15651 #include <signal.h>
15652 #$i_stdlib I_STDLIB
15653 #ifdef I_STDLIB
15654 #include <stdlib.h>
15655 #endif
15656 int main()
15657 {
15658     struct sigaction act, oact;
15659     act.sa_flags = 0;
15660     oact.sa_handler = 0;
15661     /* so that act and oact are used */
15662     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
15663 }
15664 EOP
15665         set try
15666         if eval $compile_ok; then
15667                 val="$define"
15668         else
15669                 echo "But you don't seem to have a useable struct sigaction." >&4
15670                 val="$undef"
15671         fi
15672 else
15673         echo 'sigaction NOT found.' >&4
15674         val="$undef"
15675 fi
15676 set d_sigaction; eval $setvar
15677 $rm -f try try$_o try.c
15678
15679 : see if sigprocmask exists
15680 set sigprocmask d_sigprocmask
15681 eval $inlibc
15682
15683 : see if sigsetjmp exists
15684 echo " "
15685 case "$d_sigsetjmp" in
15686 '')
15687         $cat >try.c <<EOP
15688 #include <setjmp.h>
15689 #$i_stdlib I_STDLIB
15690 #ifdef I_STDLIB
15691 #include <stdlib.h>
15692 #endif
15693 sigjmp_buf env;
15694 int set = 1;
15695 int main()
15696 {
15697         if (sigsetjmp(env,1))
15698                 exit(set);
15699         set = 0;
15700         siglongjmp(env, 1);
15701         exit(1);
15702 }
15703 EOP
15704         set try
15705         if eval $compile; then
15706                 if $run ./try >/dev/null 2>&1; then
15707                         echo "POSIX sigsetjmp found." >&4
15708                         val="$define"
15709                 else
15710                         $cat >&4 <<EOM
15711 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
15712 I'll ignore them.
15713 EOM
15714                         val="$undef"
15715                 fi
15716         else
15717                 echo "sigsetjmp not found." >&4
15718                 val="$undef"
15719         fi
15720         ;;
15721 *) val="$d_sigsetjmp"
15722         case "$d_sigsetjmp" in
15723         $define) echo "POSIX sigsetjmp found." >&4;;
15724         $undef) echo "sigsetjmp not found." >&4;;
15725         esac
15726         ;;
15727 esac
15728 set d_sigsetjmp
15729 eval $setvar
15730 $rm -f try.c try
15731
15732 : see if sockatmark exists
15733 set sockatmark d_sockatmark
15734 eval $inlibc
15735
15736 : see if prototype for sockatmark is available
15737 echo " "
15738 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
15739 eval $hasproto
15740
15741 : see if socks5_init exists
15742 set socks5_init d_socks5_init
15743 eval $inlibc
15744
15745 : see if srand48_r exists
15746 set srand48_r d_srand48_r
15747 eval $inlibc
15748 case "$d_srand48_r" in
15749 "$define")
15750         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15751         case "$d_srand48_r_proto:$usethreads" in
15752         ":define")      d_srand48_r_proto=define
15753                 set d_srand48_r_proto srand48_r $hdrs
15754                 eval $hasproto ;;
15755         *)      ;;
15756         esac
15757         case "$d_srand48_r_proto" in
15758         define)
15759         case "$srand48_r_proto" in
15760         ''|0) try='int srand48_r(long, struct drand48_data*);'
15761         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
15762         esac
15763         case "$srand48_r_proto" in
15764         ''|0)   d_srand48_r=undef
15765                 srand48_r_proto=0
15766                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
15767         * )     case "$srand48_r_proto" in
15768                 REENTRANT_PROTO*) ;;
15769                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
15770                 esac
15771                 echo "Prototype: $try" ;;
15772         esac
15773         ;;
15774         *)      case "$usethreads" in
15775                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
15776                 esac
15777                 d_srand48_r=undef
15778                 srand48_r_proto=0
15779                 ;;
15780         esac
15781         ;;
15782 *)      srand48_r_proto=0
15783         ;;
15784 esac
15785
15786 : see if srandom_r exists
15787 set srandom_r d_srandom_r
15788 eval $inlibc
15789 case "$d_srandom_r" in
15790 "$define")
15791         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15792         case "$d_srandom_r_proto:$usethreads" in
15793         ":define")      d_srandom_r_proto=define
15794                 set d_srandom_r_proto srandom_r $hdrs
15795                 eval $hasproto ;;
15796         *)      ;;
15797         esac
15798         case "$d_srandom_r_proto" in
15799         define)
15800         case "$srandom_r_proto" in
15801         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
15802         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
15803         esac
15804         case "$srandom_r_proto" in
15805         ''|0)   d_srandom_r=undef
15806                 srandom_r_proto=0
15807                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
15808         * )     case "$srandom_r_proto" in
15809                 REENTRANT_PROTO*) ;;
15810                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
15811                 esac
15812                 echo "Prototype: $try" ;;
15813         esac
15814         ;;
15815         *)      case "$usethreads" in
15816                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
15817                 esac
15818                 d_srandom_r=undef
15819                 srandom_r_proto=0
15820                 ;;
15821         esac
15822         ;;
15823 *)      srandom_r_proto=0
15824         ;;
15825 esac
15826
15827 : see if prototype for setresgid is available
15828 echo " "
15829 set d_sresgproto setresgid $i_unistd unistd.h
15830 eval $hasproto
15831
15832 : see if prototype for setresuid is available
15833 echo " "
15834 set d_sresuproto setresuid $i_unistd unistd.h
15835 eval $hasproto
15836
15837 : see if sys/stat.h is available
15838 set sys/stat.h i_sysstat
15839 eval $inhdr
15840
15841
15842 : see if stat knows about block sizes
15843 echo " "
15844 echo "Checking to see if your struct stat has st_blocks field..." >&4
15845 set d_statblks stat st_blocks $i_sysstat sys/stat.h
15846 eval $hasfield
15847
15848
15849 : see if this is a sys/vfs.h system
15850 set sys/vfs.h i_sysvfs
15851 eval $inhdr
15852
15853
15854 : see if this is a sys/statfs.h system
15855 set sys/statfs.h i_sysstatfs
15856 eval $inhdr
15857
15858
15859 echo " "
15860 echo "Checking to see if your system supports struct statfs..." >&4
15861 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
15862 eval $hasstruct
15863 case "$d_statfs_s" in
15864 "$define")      echo "Yes, it does."   ;;
15865 *)              echo "No, it doesn't." ;;
15866 esac
15867
15868
15869
15870 : see if struct statfs knows about f_flags
15871 case "$d_statfs_s" in
15872 define) 
15873         echo " "
15874         echo "Checking to see if your struct statfs has f_flags field..." >&4
15875         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
15876         eval $hasfield
15877         ;;
15878 *)      val="$undef"
15879         set d_statfs_f_flags
15880         eval $setvar
15881         ;;
15882 esac
15883 case "$d_statfs_f_flags" in
15884 "$define")      echo "Yes, it does."   ;;
15885 *)              echo "No, it doesn't." ;;
15886 esac
15887
15888 : see if _ptr and _cnt from stdio act std
15889 echo " "
15890
15891 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
15892         echo "(Looks like you have stdio.h from BSD.)"
15893         case "$stdio_ptr" in
15894         '') stdio_ptr='((fp)->_p)'
15895                 ptr_lval=$define
15896                 ;;
15897         *)      ptr_lval=$d_stdio_ptr_lval;;
15898         esac
15899         case "$stdio_cnt" in
15900         '') stdio_cnt='((fp)->_r)'
15901                 cnt_lval=$define
15902                 ;;
15903         *)      cnt_lval=$d_stdio_cnt_lval;;
15904         esac
15905         case "$stdio_base" in
15906         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
15907         esac
15908         case "$stdio_bufsiz" in
15909         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
15910         esac
15911 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
15912         echo "(Looks like you have stdio.h from Linux.)"
15913         case "$stdio_ptr" in
15914         '') stdio_ptr='((fp)->_IO_read_ptr)'
15915                 ptr_lval=$define
15916                 ;;
15917         *)      ptr_lval=$d_stdio_ptr_lval;;
15918         esac
15919         case "$stdio_cnt" in
15920         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
15921                 cnt_lval=$undef
15922                 ;;
15923         *)      cnt_lval=$d_stdio_cnt_lval;;
15924         esac
15925         case "$stdio_base" in
15926         '') stdio_base='((fp)->_IO_read_base)';;
15927         esac
15928         case "$stdio_bufsiz" in
15929         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
15930         esac
15931 else
15932         case "$stdio_ptr" in
15933         '') stdio_ptr='((fp)->_ptr)'
15934                 ptr_lval=$define
15935                 ;;
15936         *)      ptr_lval=$d_stdio_ptr_lval;;
15937         esac
15938         case "$stdio_cnt" in
15939         '') stdio_cnt='((fp)->_cnt)'
15940                 cnt_lval=$define
15941                 ;;
15942         *)      cnt_lval=$d_stdio_cnt_lval;;
15943         esac
15944         case "$stdio_base" in
15945         '') stdio_base='((fp)->_base)';;
15946         esac
15947         case "$stdio_bufsiz" in
15948         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
15949         esac
15950 fi
15951
15952 : test whether _ptr and _cnt really work
15953 echo "Checking how std your stdio is..." >&4
15954 $cat >try.c <<EOP
15955 #include <stdio.h>
15956 #$i_stdlib I_STDLIB
15957 #ifdef I_STDLIB
15958 #include <stdlib.h>
15959 #endif
15960 #define FILE_ptr(fp)    $stdio_ptr
15961 #define FILE_cnt(fp)    $stdio_cnt
15962 int main() {
15963         FILE *fp = fopen("try.c", "r");
15964         char c = getc(fp);
15965         if (
15966                 18 <= FILE_cnt(fp) &&
15967                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
15968         )
15969                 exit(0);
15970         exit(1);
15971 }
15972 EOP
15973 val="$undef"
15974 set try
15975 if eval $compile && $to try.c; then
15976         if $run ./try; then
15977                 echo "Your stdio acts pretty std."
15978                 val="$define"
15979         else
15980                 echo "Your stdio isn't very std."
15981         fi
15982 else
15983         echo "Your stdio doesn't appear very std."
15984 fi
15985 $rm -f try.c try
15986
15987 # glibc 2.2.90 and above apparently change stdio streams so Perl's
15988 # direct buffer manipulation no longer works.  The Configure tests
15989 # should be changed to correctly detect this, but until then,
15990 # the following check should at least let perl compile and run.
15991 # (This quick fix should be updated before 5.8.1.)
15992 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
15993 # A. Dougherty, June 3, 2002.
15994 case "$d_gnulibc" in
15995 $define)
15996         case "$gnulibc_version" in
15997         2.[01]*)  ;;
15998         2.2) ;;
15999         2.2.[0-9]) ;;
16000         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
16001                 val="$undef"
16002                 ;;
16003         esac
16004         ;;
16005 esac
16006 set d_stdstdio
16007 eval $setvar
16008
16009 : Can _ptr be used as an lvalue?
16010 case "$d_stdstdio$ptr_lval" in
16011 $define$define) val=$define ;;
16012 *) val=$undef ;;
16013 esac
16014 set d_stdio_ptr_lval
16015 eval $setvar
16016
16017 : Can _cnt be used as an lvalue?
16018 case "$d_stdstdio$cnt_lval" in
16019 $define$define) val=$define ;;
16020 *) val=$undef ;;
16021 esac
16022 set d_stdio_cnt_lval
16023 eval $setvar
16024
16025
16026 : test whether setting _ptr sets _cnt as a side effect
16027 d_stdio_ptr_lval_sets_cnt="$undef"
16028 d_stdio_ptr_lval_nochange_cnt="$undef"
16029 case "$d_stdio_ptr_lval$d_stdstdio" in
16030 $define$define)
16031         echo "Checking to see what happens if we set the stdio ptr..." >&4
16032 $cat >try.c <<EOP
16033 #include <stdio.h>
16034 /* Can we scream? */
16035 /* Eat dust sed :-) */
16036 /* In the buffer space, no one can hear you scream. */
16037 #$i_stdlib I_STDLIB
16038 #ifdef I_STDLIB
16039 #include <stdlib.h>
16040 #endif
16041 #define FILE_ptr(fp)    $stdio_ptr
16042 #define FILE_cnt(fp)    $stdio_cnt
16043 #include <sys/types.h>
16044 int main() {
16045         FILE *fp = fopen("try.c", "r");
16046         int c;
16047         char *ptr;
16048         size_t cnt;
16049         if (!fp) {
16050             puts("Fail even to read");
16051             exit(1);
16052         }
16053         c = getc(fp); /* Read away the first # */
16054         if (c == EOF) {
16055             puts("Fail even to read");
16056             exit(1);
16057         }
16058         if (!(
16059                 18 <= FILE_cnt(fp) &&
16060                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
16061         )) {
16062                 puts("Fail even to read");
16063                 exit (1);
16064         }
16065         ptr = (char*) FILE_ptr(fp);
16066         cnt = (size_t)FILE_cnt(fp);
16067
16068         FILE_ptr(fp) += 42;
16069
16070         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
16071                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
16072                 exit (1);
16073         }
16074         if (FILE_cnt(fp) <= 20) {
16075                 printf ("Fail (<20 chars to test)");
16076                 exit (1);
16077         }
16078         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
16079                 puts("Fail compare");
16080                 exit (1);
16081         }
16082         if (cnt == FILE_cnt(fp)) {
16083                 puts("Pass_unchanged");
16084                 exit (0);
16085         }       
16086         if (FILE_cnt(fp) == (cnt - 42)) {
16087                 puts("Pass_changed");
16088                 exit (0);
16089         }
16090         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
16091         return 1;
16092
16093 }
16094 EOP
16095         set try
16096         if eval $compile && $to try.c; then
16097                 case `$run ./try` in
16098                 Pass_changed)
16099                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
16100                         d_stdio_ptr_lval_sets_cnt="$define" ;;
16101                 Pass_unchanged)
16102                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
16103                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
16104                 Fail*)
16105                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
16106                 *)
16107                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
16108         esac
16109         else
16110                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
16111         fi
16112         $rm -f try.c try
16113         ;;
16114 esac
16115
16116 : see if _base is also standard
16117 val="$undef"
16118 case "$d_stdstdio" in
16119 $define)
16120         $cat >try.c <<EOP
16121 #include <stdio.h>
16122 #$i_stdlib I_STDLIB
16123 #ifdef I_STDLIB
16124 #include <stdlib.h>
16125 #endif
16126 #define FILE_base(fp)   $stdio_base
16127 #define FILE_bufsiz(fp) $stdio_bufsiz
16128 int main() {
16129         FILE *fp = fopen("try.c", "r");
16130         char c = getc(fp);
16131         if (
16132                 19 <= FILE_bufsiz(fp) &&
16133                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
16134         )
16135                 exit(0);
16136         exit(1);
16137 }
16138 EOP
16139         set try
16140         if eval $compile && $to try.c; then
16141                 if $run ./try; then
16142                         echo "And its _base field acts std."
16143                         val="$define"
16144                 else
16145                         echo "But its _base field isn't std."
16146                 fi
16147         else
16148                 echo "However, it seems to be lacking the _base field."
16149         fi
16150         $rm -f try.c try
16151         ;;
16152 esac
16153 set d_stdiobase
16154 eval $setvar
16155
16156 $cat >&4 <<EOM
16157 Checking how to access stdio streams by file descriptor number...
16158 EOM
16159 case "$stdio_stream_array" in
16160 '')     $cat >try.c <<EOCP
16161 #include <stdio.h>
16162 int main() {
16163   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16164     printf("yes\n");
16165 }
16166 EOCP
16167         for s in _iob __iob __sF
16168         do
16169                 set try -DSTDIO_STREAM_ARRAY=$s
16170                 if eval $compile; then
16171                         case "`$run ./try`" in
16172                         yes)    stdio_stream_array=$s; break ;;
16173                         esac
16174                 fi
16175         done
16176         $rm -f try.* try$exe_ext
16177 esac
16178 case "$stdio_stream_array" in
16179 '')     $cat >&4 <<EOM
16180 I can't figure out how to access stdio streams by file descriptor number.
16181 EOM
16182         d_stdio_stream_array="$undef"
16183         ;;
16184 *)      $cat >&4 <<EOM
16185 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16186 EOM
16187         d_stdio_stream_array="$define"
16188         ;;
16189 esac
16190
16191 : see if strcoll exists
16192 set strcoll d_strcoll
16193 eval $inlibc
16194
16195 : check for structure copying
16196 echo " "
16197 echo "Checking to see if your C compiler can copy structs..." >&4
16198 $cat >try.c <<'EOCP'
16199 int main()
16200 {
16201         struct blurfl {
16202                 int dyick;
16203         } foo, bar;
16204
16205         foo = bar;
16206 }
16207 EOCP
16208 if $cc -c try.c >/dev/null 2>&1 ; then
16209         val="$define"
16210         echo "Yup, it can."
16211 else
16212         val="$undef"
16213         echo "Nope, it can't."
16214 fi
16215 set d_strctcpy
16216 eval $setvar
16217 $rm -f try.*
16218
16219 : see if strerror and/or sys_errlist[] exist
16220 echo " "
16221 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16222     if set strerror val -f d_strerror; eval $csym; $val; then
16223                 echo 'strerror() found.' >&4
16224                 d_strerror="$define"
16225                 d_strerrm='strerror(e)'
16226                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16227                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16228                         d_syserrlst="$define"
16229                 else
16230                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16231                         d_syserrlst="$undef"
16232                 fi
16233     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16234                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16235                 echo 'strerror() found in string header.' >&4
16236                 d_strerror="$define"
16237                 d_strerrm='strerror(e)'
16238                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16239                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16240                                 d_syserrlst="$define"
16241                 else
16242                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16243                         d_syserrlst="$undef"
16244                 fi
16245     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16246                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16247                 d_strerror="$undef"
16248                 d_syserrlst="$define"
16249                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16250     else
16251                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16252                 d_strerror="$undef"
16253                 d_syserrlst="$undef"
16254                 d_strerrm='"unknown"'
16255     fi
16256 fi
16257
16258 : see if strerror_r exists
16259 set strerror_r d_strerror_r
16260 eval $inlibc
16261 case "$d_strerror_r" in
16262 "$define")
16263         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16264         case "$d_strerror_r_proto:$usethreads" in
16265         ":define")      d_strerror_r_proto=define
16266                 set d_strerror_r_proto strerror_r $hdrs
16267                 eval $hasproto ;;
16268         *)      ;;
16269         esac
16270         case "$d_strerror_r_proto" in
16271         define)
16272         case "$strerror_r_proto" in
16273         ''|0) try='int strerror_r(int, char*, size_t);'
16274         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16275         esac
16276         case "$strerror_r_proto" in
16277         ''|0) try='int strerror_r(int, char*, int);'
16278         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16279         esac
16280         case "$strerror_r_proto" in
16281         ''|0) try='char* strerror_r(int, char*, size_t);'
16282         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16283         esac
16284         case "$strerror_r_proto" in
16285         ''|0)   d_strerror_r=undef
16286                 strerror_r_proto=0
16287                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16288         * )     case "$strerror_r_proto" in
16289                 REENTRANT_PROTO*) ;;
16290                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16291                 esac
16292                 echo "Prototype: $try" ;;
16293         esac
16294         ;;
16295         *)      case "$usethreads" in
16296                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16297                 esac
16298                 d_strerror_r=undef
16299                 strerror_r_proto=0
16300                 ;;
16301         esac
16302         ;;
16303 *)      strerror_r_proto=0
16304         ;;
16305 esac
16306
16307 : see if strftime exists
16308 set strftime d_strftime
16309 eval $inlibc
16310
16311 : see if strtod exists
16312 set strtod d_strtod
16313 eval $inlibc
16314
16315 : see if strtol exists
16316 set strtol d_strtol
16317 eval $inlibc
16318
16319 : see if strtold exists
16320 set strtold d_strtold
16321 eval $inlibc
16322
16323 : see if strtoll exists
16324 set strtoll d_strtoll
16325 eval $inlibc
16326
16327 case "$d_longlong-$d_strtoll" in
16328 "$define-$define")
16329         $cat <<EOM
16330 Checking whether your strtoll() works okay...
16331 EOM
16332         $cat >try.c <<'EOCP'
16333 #include <errno.h>
16334 #ifdef __hpux
16335 #define strtoll __strtoll
16336 #endif
16337 #ifdef __EMX__
16338 #define strtoll _strtoll
16339 #endif
16340 #include <stdio.h>
16341 extern long long int strtoll(char *s, char **, int); 
16342 static int bad = 0;
16343 int check(char *s, long long ell, int een) {
16344         long long gll;
16345         errno = 0;
16346         gll = strtoll(s, 0, 10);
16347         if (!((gll == ell) && (errno == een)))
16348                 bad++;
16349 }
16350 int main() {
16351         check(" 1",                                      1LL, 0);
16352         check(" 0",                                      0LL, 0);
16353         check("-1",                                     -1LL, 0);
16354         check("-9223372036854775808", -9223372036854775808LL, 0);
16355         check("-9223372036854775808", -9223372036854775808LL, 0);
16356         check(" 9223372036854775807",  9223372036854775807LL, 0);
16357         check("-9223372036854775808", -9223372036854775808LL, 0);
16358         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16359         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16360         if (!bad)
16361                 printf("ok\n");
16362 }
16363 EOCP
16364         set try
16365         if eval $compile; then
16366                 yyy=`$run ./try`
16367                 case "$yyy" in
16368                 ok) echo "Your strtoll() seems to be working okay." ;;
16369                 *) cat <<EOM >&4
16370 Your strtoll() doesn't seem to be working okay.
16371 EOM
16372                    d_strtoll="$undef"
16373                    ;;
16374                 esac
16375         else
16376                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16377                 d_strtoll="$undef"
16378         fi
16379         ;;
16380 esac
16381
16382 : see if strtoq exists
16383 set strtoq d_strtoq
16384 eval $inlibc
16385
16386 : see if strtoul exists
16387 set strtoul d_strtoul
16388 eval $inlibc
16389
16390 case "$d_strtoul" in
16391 "$define")
16392         $cat <<EOM
16393 Checking whether your strtoul() works okay...
16394 EOM
16395         $cat >try.c <<'EOCP'
16396 #include <errno.h>
16397 #include <stdio.h>
16398 extern unsigned long int strtoul(char *s, char **, int); 
16399 static int bad = 0;
16400 void check(char *s, unsigned long eul, int een) {
16401         unsigned long gul;
16402         errno = 0;
16403         gul = strtoul(s, 0, 10);
16404         if (!((gul == eul) && (errno == een)))
16405                 bad++;
16406 }
16407 int main() {
16408         check(" 1", 1L, 0);
16409         check(" 0", 0L, 0);
16410 EOCP
16411         case "$longsize" in
16412         8)
16413             $cat >>try.c <<'EOCP'
16414         check("18446744073709551615", 18446744073709551615UL, 0);
16415         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16416 #if 0 /* strtoul() for /^-/ strings is undefined. */
16417         check("-1", 18446744073709551615UL, 0);
16418         check("-18446744073709551614", 2, 0);
16419         check("-18446744073709551615", 1, 0);
16420         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16421         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16422 #endif
16423 EOCP
16424                 ;;
16425         4)
16426                     $cat >>try.c <<'EOCP'
16427         check("4294967295", 4294967295UL, 0);
16428         check("4294967296", 4294967295UL, ERANGE);
16429 #if 0 /* strtoul() for /^-/ strings is undefined. */
16430         check("-1", 4294967295UL, 0);
16431         check("-4294967294", 2, 0);
16432         check("-4294967295", 1, 0);
16433         check("-4294967296", 4294967295UL, ERANGE);
16434         check("-4294967297", 4294967295UL, ERANGE);
16435 #endif
16436 EOCP
16437                 ;;
16438         *)
16439 : Should we write these tests to be more portable by sprintf-ing
16440 : ~0 and then manipulating that char string as input for strtol?
16441                 ;;
16442         esac
16443         $cat >>try.c <<'EOCP'
16444         if (!bad)
16445                 printf("ok\n");
16446         return 0;
16447 }
16448 EOCP
16449         set try
16450         if eval $compile; then
16451                 case "`$run ./try`" in
16452                 ok) echo "Your strtoul() seems to be working okay." ;;
16453                 *) cat <<EOM >&4
16454 Your strtoul() doesn't seem to be working okay.
16455 EOM
16456                    d_strtoul="$undef"
16457                    ;;
16458                 esac
16459         fi
16460         ;;
16461 esac
16462
16463 : see if strtoull exists
16464 set strtoull d_strtoull
16465 eval $inlibc
16466
16467 case "$d_longlong-$d_strtoull" in
16468 "$define-$define")
16469         $cat <<EOM
16470 Checking whether your strtoull() works okay...
16471 EOM
16472         $cat >try.c <<'EOCP'
16473 #include <errno.h>
16474 #ifdef __hpux
16475 #define strtoull __strtoull
16476 #endif
16477 #include <stdio.h>
16478 extern unsigned long long int strtoull(char *s, char **, int); 
16479 static int bad = 0;
16480 int check(char *s, long long eull, int een) {
16481         long long gull;
16482         errno = 0;
16483         gull = strtoull(s, 0, 10);
16484         if (!((gull == eull) && (errno == een)))
16485                 bad++;
16486 }
16487 int main() {
16488         check(" 1",                                        1LL, 0);
16489         check(" 0",                                        0LL, 0);
16490         check("18446744073709551615",  18446744073709551615ULL, 0);
16491         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16492 #if 0 /* strtoull() for /^-/ strings is undefined. */
16493         check("-1",                    18446744073709551615ULL, 0);
16494         check("-18446744073709551614",                     2LL, 0);
16495         check("-18446744073709551615",                     1LL, 0);
16496         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16497         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16498 #endif
16499         if (!bad)
16500                 printf("ok\n");
16501 }
16502 EOCP
16503         set try
16504         if eval $compile; then
16505                 case "`$run ./try`" in
16506                 ok) echo "Your strtoull() seems to be working okay." ;;
16507                 *) cat <<EOM >&4
16508 Your strtoull() doesn't seem to be working okay.
16509 EOM
16510                    d_strtoull="$undef"
16511                    ;;
16512                 esac
16513         fi
16514         ;;
16515 esac
16516
16517 : see if strtouq exists
16518 set strtouq d_strtouq
16519 eval $inlibc
16520
16521 case "$d_strtouq" in
16522 "$define")
16523         $cat <<EOM
16524 Checking whether your strtouq() works okay...
16525 EOM
16526         $cat >try.c <<'EOCP'
16527 #include <errno.h>
16528 #include <stdio.h>
16529 extern unsigned long long int strtouq(char *s, char **, int); 
16530 static int bad = 0;
16531 void check(char *s, unsigned long long eull, int een) {
16532         unsigned long long gull;
16533         errno = 0;
16534         gull = strtouq(s, 0, 10);
16535         if (!((gull == eull) && (errno == een)))
16536                 bad++;
16537 }
16538 int main() {
16539         check(" 1",                                        1LL, 0);
16540         check(" 0",                                        0LL, 0);
16541         check("18446744073709551615",  18446744073709551615ULL, 0);
16542         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16543 #if 0 /* strtouq() for /^-/ strings is undefined. */
16544         check("-1",                    18446744073709551615ULL, 0);
16545         check("-18446744073709551614",                     2LL, 0);
16546         check("-18446744073709551615",                     1LL, 0);
16547         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16548         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16549 #endif
16550         if (!bad)
16551                 printf("ok\n");
16552         return 0;
16553 }
16554 EOCP
16555         set try
16556         if eval $compile; then
16557                 case "`$run ./try`" in
16558                 ok) echo "Your strtouq() seems to be working okay." ;;
16559                 *) cat <<EOM >&4
16560 Your strtouq() doesn't seem to be working okay.
16561 EOM
16562                    d_strtouq="$undef"
16563                    ;;
16564                 esac
16565         fi
16566         ;;
16567 esac
16568
16569 : see if strxfrm exists
16570 set strxfrm d_strxfrm
16571 eval $inlibc
16572
16573 : see if symlink exists
16574 set symlink d_symlink
16575 eval $inlibc
16576
16577 : see if syscall exists
16578 set syscall d_syscall
16579 eval $inlibc
16580
16581 : see if prototype for syscall is available
16582 echo " "
16583 set d_syscallproto syscall $i_unistd unistd.h
16584 eval $hasproto
16585
16586 : see if sysconf exists
16587 set sysconf d_sysconf
16588 eval $inlibc
16589
16590 : see if system exists
16591 set system d_system
16592 eval $inlibc
16593
16594 : see if tcgetpgrp exists
16595 set tcgetpgrp d_tcgetpgrp
16596 eval $inlibc
16597
16598 : see if tcsetpgrp exists
16599 set tcsetpgrp d_tcsetpgrp
16600 eval $inlibc
16601
16602 : see if prototype for telldir is available
16603 echo " "
16604 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16605 eval $hasproto
16606
16607 : see if time exists
16608 echo " "
16609 if test "X$d_time" = X -o X"$timetype" = X; then
16610     if set time val -f d_time; eval $csym; $val; then
16611                 echo 'time() found.' >&4
16612                 val="$define"
16613                 rp="What is the type returned by time() on this system?"
16614                 set time_t timetype long stdio.h sys/types.h
16615                 eval $typedef_ask
16616     else
16617                 echo 'time() not found, hope that will do.' >&4
16618                 val="$undef"
16619                 timetype='int';
16620     fi
16621     set d_time
16622     eval $setvar
16623 fi
16624
16625 : see if this is a sys/times.h system
16626 set sys/times.h i_systimes
16627 eval $inhdr
16628
16629 : see if times exists
16630 echo " "
16631 if set times val -f d_times; eval $csym; $val; then
16632         echo 'times() found.' >&4
16633         d_times="$define"
16634         inc=''
16635         case "$i_systimes" in
16636         "$define") inc='sys/times.h';;
16637         esac
16638         rp="What is the type returned by times() on this system?"
16639         set clock_t clocktype long stdio.h sys/types.h $inc
16640         eval $typedef_ask
16641 else
16642         echo 'times() NOT found, hope that will do.' >&4
16643         d_times="$undef"
16644         clocktype='int'
16645 fi
16646
16647 : see if tmpnam_r exists
16648 set tmpnam_r d_tmpnam_r
16649 eval $inlibc
16650 case "$d_tmpnam_r" in
16651 "$define")
16652         hdrs="$i_systypes sys/types.h define stdio.h "
16653         case "$d_tmpnam_r_proto:$usethreads" in
16654         ":define")      d_tmpnam_r_proto=define
16655                 set d_tmpnam_r_proto tmpnam_r $hdrs
16656                 eval $hasproto ;;
16657         *)      ;;
16658         esac
16659         case "$d_tmpnam_r_proto" in
16660         define)
16661         case "$tmpnam_r_proto" in
16662         ''|0) try='char* tmpnam_r(char*);'
16663         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16664         esac
16665         case "$tmpnam_r_proto" in
16666         ''|0)   d_tmpnam_r=undef
16667                 tmpnam_r_proto=0
16668                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16669         * )     case "$tmpnam_r_proto" in
16670                 REENTRANT_PROTO*) ;;
16671                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16672                 esac
16673                 echo "Prototype: $try" ;;
16674         esac
16675         ;;
16676         *)      case "$usethreads" in
16677                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16678                 esac
16679                 d_tmpnam_r=undef
16680                 tmpnam_r_proto=0
16681                 ;;
16682         esac
16683         ;;
16684 *)      tmpnam_r_proto=0
16685         ;;
16686 esac
16687
16688 : see if truncate exists
16689 set truncate d_truncate
16690 eval $inlibc
16691
16692 : see if ttyname_r exists
16693 set ttyname_r d_ttyname_r
16694 eval $inlibc
16695 case "$d_ttyname_r" in
16696 "$define")
16697         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16698         case "$d_ttyname_r_proto:$usethreads" in
16699         ":define")      d_ttyname_r_proto=define
16700                 set d_ttyname_r_proto ttyname_r $hdrs
16701                 eval $hasproto ;;
16702         *)      ;;
16703         esac
16704         case "$d_ttyname_r_proto" in
16705         define)
16706         case "$ttyname_r_proto" in
16707         ''|0) try='int ttyname_r(int, char*, size_t);'
16708         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16709         esac
16710         case "$ttyname_r_proto" in
16711         ''|0) try='int ttyname_r(int, char*, int);'
16712         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16713         esac
16714         case "$ttyname_r_proto" in
16715         ''|0) try='char* ttyname_r(int, char*, int);'
16716         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16717         esac
16718         case "$ttyname_r_proto" in
16719         ''|0)   d_ttyname_r=undef
16720                 ttyname_r_proto=0
16721                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16722         * )     case "$ttyname_r_proto" in
16723                 REENTRANT_PROTO*) ;;
16724                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16725                 esac
16726                 echo "Prototype: $try" ;;
16727         esac
16728         ;;
16729         *)      case "$usethreads" in
16730                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16731                 esac
16732                 d_ttyname_r=undef
16733                 ttyname_r_proto=0
16734                 ;;
16735         esac
16736         ;;
16737 *)      ttyname_r_proto=0
16738         ;;
16739 esac
16740
16741 : see if tzname[] exists
16742 echo " "
16743 if set tzname val -a d_tzname; eval $csym; $val; then
16744         val="$define"
16745         echo 'tzname[] found.' >&4
16746 else
16747         val="$undef"
16748         echo 'tzname[] NOT found.' >&4
16749 fi
16750 set d_tzname
16751 eval $setvar
16752
16753 case "$osname" in
16754 next|rhapsody|darwin) multiarch="$define" ;;
16755 esac
16756 case "$multiarch" in
16757 ''|[nN]*) multiarch="$undef" ;;
16758 esac
16759
16760 : check for ordering of bytes in a UV
16761 echo " "
16762 case "$usecrosscompile$multiarch" in
16763 *$define*)
16764         $cat <<EOM
16765 You seem to be either cross-compiling or doing a multiarchitecture build,
16766 skipping the byteorder check.
16767
16768 EOM
16769         byteorder='ffff'
16770         ;;
16771 *)
16772         case "$byteorder" in
16773         '')
16774                 $cat <<'EOM'
16775 In the following, larger digits indicate more significance.  A big-endian
16776 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16777 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16778 machines may have weird orders like 3412.  A Cray will report 87654321,
16779 an Alpha will report 12345678. If the test program works the default is
16780 probably right.
16781 I'm now running the test program...
16782 EOM
16783                 $cat >try.c <<EOCP
16784 #include <stdio.h>
16785 #$i_stdlib I_STDLIB
16786 #ifdef I_STDLIB
16787 #include <stdlib.h>
16788 #endif
16789 #include <sys/types.h>
16790 typedef $uvtype UV;
16791 int main()
16792 {
16793         int i;
16794         union {
16795                 UV l;
16796                 char c[$uvsize];
16797         } u;
16798
16799         if ($uvsize > 4)
16800                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16801         else
16802                 u.l = (UV)0x04030201;
16803         for (i = 0; i < $uvsize; i++)
16804                 printf("%c", u.c[i]+'0');
16805         printf("\n");
16806         exit(0);
16807 }
16808 EOCP
16809                 xxx_prompt=y
16810                 set try
16811                 if eval $compile && ./try > /dev/null; then
16812                         dflt=`$run ./try`
16813                         case "$dflt" in
16814                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16815                                 echo "(The test program ran ok.)"
16816                                 echo "byteorder=$dflt"
16817                                 xxx_prompt=n
16818                         ;;
16819                         ????|????????) echo "(The test program ran ok.)" ;;
16820                         *) echo "(The test program didn't run right for some reason.)" ;;
16821                         esac
16822                 else
16823                         dflt='4321'
16824                         cat <<'EOM'
16825 (I can't seem to compile the test program.  Guessing big-endian...)
16826 EOM
16827                 fi
16828                 case "$xxx_prompt" in
16829                 y)
16830                         rp="What is the order of bytes in $uvtype?"
16831                         . ./myread
16832                         byteorder="$ans"
16833                         ;;
16834                 *)      byteorder=$dflt
16835                         ;;
16836                 esac
16837                 ;;
16838         esac
16839         $rm -f try.c try
16840         ;;
16841 esac
16842
16843
16844 $cat <<EOM
16845
16846 Checking to see whether you can access character data unalignedly...
16847 EOM
16848 case "$d_u32align" in
16849 '')   $cat >try.c <<EOCP
16850 #include <stdio.h>
16851 #$i_stdlib I_STDLIB
16852 #ifdef I_STDLIB
16853 #include <stdlib.h>
16854 #endif
16855 #define U32 $u32type
16856 #define BYTEORDER 0x$byteorder
16857 #define U8 $u8type
16858 #include <signal.h>
16859 #ifdef SIGBUS
16860 $signal_t bletch(s) int s; { exit(4); }
16861 #endif
16862 int main() {
16863 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16864     U8 buf[8];
16865     U32 *up;
16866     int i;
16867
16868     if (sizeof(U32) != 4) {
16869         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16870         exit(1);
16871     }
16872
16873     fflush(stdout);
16874
16875 #ifdef SIGBUS
16876     signal(SIGBUS, bletch);
16877 #endif
16878
16879     buf[0] = 0;
16880     buf[1] = 0;
16881     buf[2] = 0;
16882     buf[3] = 1;
16883     buf[5] = 0;
16884     buf[6] = 0;
16885     buf[7] = 0;
16886     buf[8] = 1;
16887
16888     for (i = 0; i < 4; i++) {
16889         up = (U32*)(buf + i);
16890         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
16891                (*up == 1 << (8*(3-i)))  /* little-endian */
16892               )
16893            )
16894         {
16895             printf("read failed (%x)\n", *up);
16896             exit(2);
16897         }
16898     }
16899
16900     /* write test */
16901     for (i = 0; i < 4; i++) {
16902         up = (U32*)(buf + i);
16903         *up = 0xBeef;
16904         if (*up != 0xBeef) {
16905             printf("write failed (%x)\n", *up);
16906             exit(3);
16907         }
16908     }
16909
16910     exit(0);
16911 #else
16912     printf("1\n");
16913     exit(1);
16914 #endif
16915     return 0;
16916 }
16917 EOCP
16918 set try
16919 if eval $compile_ok; then
16920         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
16921         $run ./try 2>&1 >/dev/null
16922         case "$?" in
16923         0)      cat >&4 <<EOM
16924 You can access character data pretty unalignedly.
16925 EOM
16926                 d_u32align="$undef"
16927                 ;;
16928         *)      cat >&4 <<EOM
16929 It seems that you must access character data in an aligned manner.
16930 EOM
16931                 d_u32align="$define"
16932                 ;;
16933         esac
16934 else
16935         rp='Can you access character data at unaligned addresses?'
16936         dflt='n'
16937         . ./myread
16938         case "$ans" in
16939         [yY]*)  d_u32align="$undef"  ;;
16940         *)      d_u32align="$define" ;;
16941         esac
16942 fi
16943 $rm -f core core.try.* try.core
16944 ;;
16945 esac
16946
16947 : see if ualarm exists
16948 set ualarm d_ualarm
16949 eval $inlibc
16950
16951 : see if umask exists
16952 set umask d_umask
16953 eval $inlibc
16954
16955 : see if unordered exists
16956 set unordered d_unordered
16957 eval $inlibc
16958
16959 : see if usleep exists
16960 set usleep d_usleep
16961 eval $inlibc
16962
16963 : see if prototype for usleep is available
16964 echo " "
16965 set d_usleepproto usleep $i_unistd unistd.h
16966 eval $hasproto
16967
16968 : see if ustat exists
16969 set ustat d_ustat
16970 eval $inlibc
16971
16972 : backward compatibility for d_hvfork
16973 if test X$d_hvfork != X; then
16974         d_vfork="$d_hvfork"
16975         d_hvfork=''
16976 fi
16977 : see if there is a vfork
16978 val=''
16979 set vfork val
16980 eval $inlibc
16981
16982 : Ok, but do we want to use it. vfork is reportedly unreliable in 
16983 : perl on Solaris 2.x, and probably elsewhere.
16984 case "$val" in
16985 $define)
16986         echo " "
16987         case "$usevfork" in
16988         false) dflt='n';;
16989         *) dflt='y';;
16990         esac
16991         cat <<'EOM'
16992  
16993 Perl can only use a vfork() that doesn't suffer from strict
16994 restrictions on calling functions or modifying global data in
16995 the child.  For example, glibc-2.1 contains such a vfork()
16996 that is unsuitable.  If your system provides a proper fork()
16997 call, chances are that you do NOT want perl to use vfork().
16998
16999 EOM
17000         rp="Do you still want to use vfork()?"
17001         . ./myread
17002         case "$ans" in
17003         y|Y) ;;
17004         *)
17005                 echo "Ok, we won't use vfork()."
17006                 val="$undef"
17007                 ;;
17008         esac
17009         ;;
17010 esac
17011 set d_vfork
17012 eval $setvar
17013 case "$d_vfork" in
17014 $define) usevfork='true';;
17015 *) usevfork='false';;
17016 esac
17017
17018 : see if closedir exists
17019 set closedir d_closedir
17020 eval $inlibc
17021
17022 case "$d_closedir" in
17023 "$define")
17024         echo " "
17025         echo "Checking whether closedir() returns a status..." >&4
17026         cat > try.c <<EOM
17027 #$i_dirent I_DIRENT             /**/
17028 #$i_sysdir I_SYS_DIR            /**/
17029 #$i_sysndir I_SYS_NDIR          /**/
17030 #$i_systypes I_SYS_TYPES        /**/
17031
17032 #if defined(I_SYS_TYPES)
17033 #include <sys/types.h>
17034 #endif
17035 #if defined(I_DIRENT)
17036 #include <dirent.h>
17037 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17038 #include <sys/dir.h>
17039 #endif
17040 #else
17041 #ifdef I_SYS_NDIR
17042 #include <sys/ndir.h>
17043 #else
17044 #ifdef I_SYS_DIR
17045 #ifdef hp9000s500
17046 #include <ndir.h>       /* may be wrong in the future */
17047 #else
17048 #include <sys/dir.h>
17049 #endif
17050 #endif
17051 #endif
17052 #endif 
17053 int main() { return closedir(opendir(".")); }
17054 EOM
17055         set try
17056         if eval $compile_ok; then
17057                 if $run ./try > /dev/null 2>&1 ; then
17058                         echo "Yes, it does."
17059                         val="$undef"
17060                 else
17061                         echo "No, it doesn't."
17062                         val="$define"
17063                 fi
17064         else
17065                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17066                 val="$define"
17067         fi
17068         ;;
17069 *)
17070         val="$undef";
17071         ;;
17072 esac
17073 set d_void_closedir
17074 eval $setvar
17075 $rm -f try try.*
17076 : see if there is a wait4
17077 set wait4 d_wait4
17078 eval $inlibc
17079
17080 : see if waitpid exists
17081 set waitpid d_waitpid
17082 eval $inlibc
17083
17084 : see if wcstombs exists
17085 set wcstombs d_wcstombs
17086 eval $inlibc
17087
17088 : see if wctomb exists
17089 set wctomb d_wctomb
17090 eval $inlibc
17091
17092 : see if writev exists
17093 set writev d_writev
17094 eval $inlibc
17095
17096 : preserve RCS keywords in files with variable substitution, grrr
17097 Date='$Date'
17098 Id='$Id'
17099 Log='$Log'
17100 RCSfile='$RCSfile'
17101 Revision='$Revision'
17102
17103 : check for alignment requirements
17104 echo " "
17105 case "$usecrosscompile$multiarch" in
17106 *$define*)
17107         $cat <<EOM
17108 You seem to be either cross-compiling or doing a multiarchitecture build,
17109 skipping the memory alignment check.
17110
17111 EOM
17112         case "$alignbytes" in
17113         '') alignbytes=8 ;;
17114         esac
17115         ;;
17116 *)
17117         case "$alignbytes" in
17118         '') echo "Checking alignment constraints..." >&4
17119                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17120                         $cat >try.c <<'EOCP'
17121 typedef long double NV;
17122 EOCP
17123                 else
17124                         $cat >try.c <<'EOCP'
17125 typedef double NV;
17126 EOCP
17127                 fi
17128                 $cat >>try.c <<'EOCP'
17129 #include <stdio.h>
17130 struct foobar {
17131         char foo;
17132         NV bar;
17133 } try_algn;
17134 int main()
17135 {
17136     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17137     return(0);
17138 }
17139 EOCP
17140                 set try
17141                 if eval $compile_ok; then
17142                         dflt=`$run ./try`
17143                 else
17144                         dflt='8'
17145                         echo "(I can't seem to compile the test program...)"
17146                 fi
17147                 ;;
17148         *) dflt="$alignbytes"
17149                 ;;
17150         esac
17151         rp="Doubles must be aligned on a how-many-byte boundary?"
17152         . ./myread
17153         alignbytes="$ans"
17154         $rm -f try.c try
17155         ;;
17156 esac
17157
17158
17159 : set the base revision
17160 baserev=5.0
17161
17162 : how do we catenate cpp tokens here?
17163 echo " "
17164 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
17165 $cat >cpp_stuff.c <<'EOCP'
17166 #define RCAT(a,b)a/**/b
17167 #define ACAT(a,b)a ## b
17168 RCAT(Rei,ser)
17169 ACAT(Cir,cus)
17170 EOCP
17171 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17172 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17173         echo "Oh!  Smells like ANSI's been here." >&4
17174         echo "We can catify or stringify, separately or together!"
17175         cpp_stuff=42
17176 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17177         echo "Ah, yes!  The good old days!" >&4
17178         echo "However, in the good old days we don't know how to stringify and"
17179         echo "catify at the same time."
17180         cpp_stuff=1
17181 else
17182         $cat >&4 <<EOM
17183 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
17184 to have to edit the values of CAT[2-5] in config.h...
17185 EOM
17186         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17187 fi
17188 $rm -f cpp_stuff.*
17189
17190 : see if this is a db.h system
17191 set db.h i_db
17192 eval $inhdr
17193
17194 case "$i_db" in
17195 $define)
17196         : Check db version.
17197         echo " "
17198         echo "Checking Berkeley DB version ..." >&4
17199         $cat >try.c <<EOCP
17200 #$d_const HASCONST
17201 #ifndef HASCONST
17202 #define const
17203 #endif
17204 #include <sys/types.h>
17205 #include <stdio.h>
17206 #$i_stdlib I_STDLIB
17207 #ifdef I_STDLIB
17208 #include <stdlib.h>
17209 #endif
17210 #include <db.h>
17211 int main(int argc, char *argv[])
17212 {
17213 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17214     int Major, Minor, Patch ;
17215     unsigned long Version ;
17216     (void)db_version(&Major, &Minor, &Patch) ;
17217     if (argc == 2) {
17218         printf("%d %d %d %d %d %d\n",
17219                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17220                Major, Minor, Patch);
17221         exit(0);
17222     }
17223     printf("You have Berkeley DB Version 2 or greater.\n");
17224
17225     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17226                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17227     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17228                 Major, Minor, Patch) ;
17229
17230     /* check that db.h & libdb are compatible */
17231     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17232         printf("db.h and libdb are incompatible.\n") ;
17233         exit(3);        
17234     }
17235
17236     printf("db.h and libdb are compatible.\n") ;
17237
17238     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17239                 + DB_VERSION_PATCH ;
17240
17241     /* needs to be >= 2.3.4 */
17242     if (Version < 2003004) {
17243     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17244         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17245         exit(2);        
17246     }
17247
17248     exit(0);
17249 #else
17250 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17251     if (argc == 2) {
17252         printf("1 0 0\n");
17253         exit(0);
17254     }
17255     printf("You have Berkeley DB Version 1.\n");
17256     exit(0);    /* DB version < 2: the coast is clear. */
17257 #else
17258     exit(1);    /* <db.h> not Berkeley DB? */
17259 #endif
17260 #endif
17261 }
17262 EOCP
17263         set try
17264         if eval $compile_ok && $run ./try; then
17265                 echo 'Looks OK.' >&4
17266                 set `$run ./try 1`
17267                 db_version_major=$1
17268                 db_version_minor=$2
17269                 db_version_patch=$3
17270         else
17271                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17272                 i_db=$undef
17273                 case " $libs " in
17274                 *"-ldb "*)
17275                         : Remove db from list of libraries to use
17276                         echo "Removing unusable -ldb from library list" >&4
17277                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17278                         shift
17279                         libs="$*"
17280                         echo "libs = $libs" >&4
17281                         ;;
17282                 esac
17283         fi
17284         $rm -f try.*
17285         ;;
17286 esac
17287
17288 case "$i_db" in
17289 define)
17290         : Check the return type needed for hash 
17291         echo " "
17292         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17293         $cat >try.c <<EOCP
17294 #$d_const HASCONST
17295 #ifndef HASCONST
17296 #define const
17297 #endif
17298 #include <sys/types.h>
17299 #include <db.h>
17300
17301 #ifndef DB_VERSION_MAJOR
17302 u_int32_t hash_cb (ptr, size)
17303 const void *ptr;
17304 size_t size;
17305 {
17306 }
17307 HASHINFO info;
17308 int main()
17309 {
17310         info.hash = hash_cb;
17311 }
17312 #endif
17313 EOCP
17314         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17315                 if $contains warning try.out >>/dev/null 2>&1 ; then
17316                         db_hashtype='int'
17317                 else
17318                         db_hashtype='u_int32_t'
17319                 fi
17320         else
17321                 : XXX Maybe we should just give up here.
17322                 db_hashtype=u_int32_t
17323                 $cat try.out >&4
17324                 echo "Help:  I can't seem to compile the db test program." >&4
17325                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17326         fi
17327         $rm -f try.*
17328         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17329         ;;
17330 *)      db_hashtype=u_int32_t
17331         ;;
17332 esac
17333 case "$i_db" in
17334 define)
17335         : Check the return type needed for prefix 
17336         echo " "
17337         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17338         cat >try.c <<EOCP
17339 #$d_const HASCONST
17340 #ifndef HASCONST
17341 #define const
17342 #endif
17343 #include <sys/types.h>
17344 #include <db.h>
17345
17346 #ifndef DB_VERSION_MAJOR
17347 size_t prefix_cb (key1, key2)
17348 const DBT *key1;
17349 const DBT *key2;
17350 {
17351 }
17352 BTREEINFO info;
17353 int main()
17354 {
17355         info.prefix = prefix_cb;
17356 }
17357 #endif
17358 EOCP
17359         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17360                 if $contains warning try.out >>/dev/null 2>&1 ; then
17361                         db_prefixtype='int'
17362                 else
17363                         db_prefixtype='size_t'
17364                 fi
17365         else
17366                 db_prefixtype='size_t'
17367                 : XXX Maybe we should just give up here.
17368                 $cat try.out >&4
17369                 echo "Help:  I can't seem to compile the db test program." >&4
17370                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17371         fi
17372         $rm -f try.*
17373         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17374         ;;
17375 *)      db_prefixtype='size_t'
17376         ;;
17377 esac
17378
17379
17380 : How can we generate normalized random numbers ?
17381 echo " "
17382 echo "Looking for a random number function..." >&4
17383 case "$randfunc" in
17384 '')
17385         if set drand48 val -f; eval $csym; $val; then
17386                 dflt="drand48"
17387                 echo "Good, found drand48()." >&4
17388         elif set random val -f; eval $csym; $val; then
17389                 dflt="random"
17390                 echo "OK, found random()." >&4
17391         else
17392                 dflt="rand"
17393                 echo "Yick, looks like I have to use rand()." >&4
17394         fi
17395         echo " "
17396         ;;
17397 *)
17398         dflt="$randfunc"
17399         ;;
17400 esac
17401 cont=true
17402
17403 case "$ccflags" in
17404 *-Dmy_rand=*|*-Dmy_srand=*)
17405         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17406         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17407         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17408         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17409         ;;
17410 esac
17411
17412 while $test "$cont"; do
17413         rp="Use which function to generate random numbers?"
17414         . ./myread
17415         if $test "$ans" = "$dflt"; then
17416                 : null
17417         else
17418                 randbits=''
17419         fi
17420         randfunc="$ans"
17421         if set $ans val -f; eval $csym; $val; then
17422                 cont=''
17423         else
17424                 dflt=y
17425                 rp="I cannot find function $ans. Use that name anyway?"
17426                 . ./myread
17427                 dflt=rand
17428                 case "$ans" in
17429                         [yY]*) cont='';;
17430                 esac
17431         fi
17432         case "$cont" in
17433         '')
17434                 case "$randfunc" in
17435                 drand48)
17436                         drand01="drand48()"
17437                         seedfunc="srand48"
17438                         randbits=48
17439                         randseedtype=long
17440                         ;;
17441                 rand|random)
17442                         case "$randbits" in
17443                         '')
17444 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17445                                 $cat >try.c <<EOCP
17446 #$i_unistd I_UNISTD
17447 #$i_stdlib I_STDLIB
17448 #include <stdio.h>
17449 #ifdef I_UNISTD
17450 #  include <unistd.h>
17451 #endif
17452 #ifdef I_STDLIB
17453 #  include <stdlib.h>
17454 #endif
17455 int main()
17456 {
17457         register int i;
17458         register unsigned long tmp;
17459         register unsigned long max = 0L;
17460
17461         for (i = 1000; i; i--) {
17462                 tmp = (unsigned long) $randfunc();
17463                 if (tmp > max) max = tmp;
17464         }
17465         for (i = 0; max; i++)
17466                 max /= 2;
17467         printf("%d\n",i);
17468 }
17469 EOCP
17470                                 set try
17471                                 if eval $compile_ok; then
17472                                         dflt=`try`
17473                                 else
17474                                         dflt='?'
17475                                         echo "(I can't seem to compile the test program...)"
17476                                 fi
17477                                 ;;
17478                         *)
17479                                 dflt="$randbits"
17480                                 ;;
17481                         esac
17482                         rp="How many bits does your $randfunc() function produce?"
17483                         . ./myread
17484                         randbits="$ans"
17485                         $rm -f try.c try
17486                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17487                         seedfunc="s$randfunc"
17488                         randseedtype=unsigned
17489                         ;;
17490                 *)
17491                         dflt="31"
17492                         rp="How many bits does your $randfunc() function produce?"
17493                         . ./myread
17494                         randbits="$ans"
17495                         seedfunc="s$randfunc"
17496                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17497                         if set $seedfunc val -f; eval $csym; $val; then
17498                                 echo "(Using $seedfunc() to seed random generator)"
17499                         else
17500                                 echo "(Warning: no $seedfunc() to seed random generator)"
17501                                 seedfunc=rand
17502                         fi
17503                         randseedtype=unsigned
17504                         ;;
17505                 esac
17506                 ;;
17507         esac
17508 done
17509
17510 echo " "
17511 echo "Determining whether or not we are on an EBCDIC system..." >&4
17512 $cat >try.c <<'EOM'
17513 int main()
17514 {
17515   if ('M'==0xd4) return 0;
17516   return 1;
17517 }
17518 EOM
17519
17520 val=$undef
17521 set try
17522 if eval $compile_ok; then
17523         if $run ./try; then
17524                 echo "You seem to speak EBCDIC." >&4
17525                 val="$define"
17526         else
17527                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17528         fi
17529 else
17530         echo "I'm unable to compile the test program." >&4
17531         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17532 fi
17533 $rm -f try try.*
17534 set ebcdic
17535 eval $setvar
17536
17537 echo " "
17538 $cat >&4 <<EOM
17539 Checking how to flush all pending stdio output...
17540 EOM
17541 # I only know how to find the first 32 possibly open files on SunOS.
17542 # See also hints/sunos_4_1.sh and util.c  --AD
17543 case "$osname" in
17544 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17545 esac
17546 $cat >>try.c <<EOCP
17547 #include <stdio.h>
17548 #$i_stdlib I_STDLIB
17549 #ifdef I_STDLIB
17550 #include <stdlib.h>
17551 #endif
17552 #$i_unistd I_UNISTD
17553 #ifdef I_UNISTD
17554 # include <unistd.h>
17555 #endif
17556 #$d_sysconf HAS_SYSCONF
17557 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17558 #ifdef HAS_STDIO_STREAM_ARRAY
17559 # define STDIO_STREAM_ARRAY $stdio_stream_array
17560 #endif
17561 int main() {
17562   FILE* p;
17563   unlink("try.out");
17564   p = fopen("try.out", "w");
17565 #ifdef TRY_FPUTC
17566   fputc('x', p);
17567 #else
17568 # ifdef TRY_FPRINTF
17569   fprintf(p, "x");
17570 # endif
17571 #endif
17572 #ifdef TRY_FFLUSH_NULL
17573   fflush(NULL);
17574 #endif
17575 #ifdef TRY_FFLUSH_ALL
17576   {
17577     long open_max = -1;
17578 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17579     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17580 # else
17581 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17582     open_max = sysconf(_SC_OPEN_MAX);
17583 #  else
17584 #   ifdef FOPEN_MAX
17585     open_max = FOPEN_MAX;
17586 #   else
17587 #    ifdef OPEN_MAX
17588     open_max = OPEN_MAX;
17589 #    else
17590 #     ifdef _NFILE
17591     open_max = _NFILE;
17592 #     endif
17593 #    endif
17594 #   endif
17595 #  endif
17596 # endif 
17597 # ifdef HAS_STDIO_STREAM_ARRAY
17598     if (open_max > 0) {
17599       long i;
17600       for (i = 0; i < open_max; i++)
17601             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17602                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17603                 STDIO_STREAM_ARRAY[i]._flag)
17604                 fflush(&STDIO_STREAM_ARRAY[i]);
17605     }   
17606   }
17607 # endif
17608 #endif
17609   _exit(42);
17610 }
17611 EOCP
17612 : first we have to find out how _not_ to flush
17613 $to try.c
17614 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17615     output=''
17616     set try -DTRY_FPUTC
17617     if eval $compile; then
17618             $run ./try 2>/dev/null
17619             code="$?"
17620             $from try.out
17621             if $test ! -s try.out -a "X$code" = X42; then
17622                 output=-DTRY_FPUTC
17623             fi
17624     fi
17625     case "$output" in
17626     '')
17627             set try -DTRY_FPRINTF
17628             if eval $compile; then
17629                     $run ./try 2>/dev/null
17630                     code="$?"
17631                     $from try.out
17632                     if $test ! -s try.out -a "X$code" = X42; then
17633                         output=-DTRY_FPRINTF
17634                     fi
17635             fi
17636         ;;
17637     esac
17638 fi
17639 : check for fflush NULL behaviour
17640 case "$fflushNULL" in
17641 '')     set try -DTRY_FFLUSH_NULL $output
17642         if eval $compile; then
17643                 $run ./try 2>/dev/null
17644                 code="$?"
17645                 $from try.out
17646                 if $test -s try.out -a "X$code" = X42; then
17647                         fflushNULL="`$cat try.out`"
17648                 else
17649                         if $test "X$code" != X42; then
17650                                 $cat >&4 <<EOM
17651 (If this test failed, don't worry, we'll try another method shortly.)
17652 EOM
17653                         fi
17654                 fi
17655         fi
17656         $rm -f core try.core core.try.*
17657         case "$fflushNULL" in
17658         x)      $cat >&4 <<EOM
17659 Your fflush(NULL) works okay for output streams.
17660 Let's see if it clobbers input pipes...
17661 EOM
17662 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17663 # bug that improperly flushes the input end of pipes.  So we avoid the
17664 # autoflush on fork/system/exec support for now. :-(
17665 $cat >tryp.c <<EOCP
17666 #include <stdio.h>
17667 int
17668 main(int argc, char **argv)
17669 {
17670     char buf[1024];
17671     int i;
17672     char *bp = buf;
17673     while (1) {
17674         while ((i = getc(stdin)) != -1
17675                && (*bp++ = i) != '\n'
17676                && bp < &buf[1024])
17677         /* DO NOTHING */ ;
17678         *bp = '\0';
17679         fprintf(stdout, "%s", buf);
17680         fflush(NULL);
17681         if (i == -1)
17682             return 0;
17683         bp = buf;
17684     }
17685 }
17686 EOCP
17687                 fflushNULL="$define"
17688                 set tryp
17689                 if eval $compile; then
17690                     $rm -f tryp.out
17691                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17692                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17693                        $cat >&4 <<EOM
17694 fflush(NULL) seems to behave okay with input streams.
17695 EOM
17696                         fflushNULL="$define"
17697                     else
17698                         $cat >&4 <<EOM
17699 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17700 EOM
17701                         fflushNULL="$undef"
17702                     fi
17703                 fi
17704                 $rm -f core tryp.c tryp.core core.tryp.*
17705                 ;;
17706         '')     $cat >&4 <<EOM
17707 Your fflush(NULL) isn't working (contrary to ANSI C).
17708 EOM
17709                 fflushNULL="$undef"
17710                 ;;
17711         *)      $cat >&4 <<EOM
17712 Cannot figure out whether your fflush(NULL) works or not.
17713 I'm assuming it doesn't (contrary to ANSI C).
17714 EOM
17715                 fflushNULL="$undef"
17716                 ;;
17717         esac
17718         ;;
17719 $define|true|[yY]*)
17720         fflushNULL="$define"
17721         ;;
17722 *)
17723         fflushNULL="$undef"
17724         ;;
17725 esac
17726 : check explicit looping only if NULL did not work, and if the pipe
17727 : bug does not show up on an explicit flush too
17728 case "$fflushNULL" in
17729 "$undef")
17730         $cat >tryp.c <<EOCP
17731 #include <stdio.h>
17732 int
17733 main(int argc, char **argv)
17734 {
17735     char buf[1024];
17736     int i;
17737     char *bp = buf;
17738     while (1) {
17739         while ((i = getc(stdin)) != -1
17740                && (*bp++ = i) != '\n'
17741                && bp < &buf[1024])
17742         /* DO NOTHING */ ;
17743         *bp = '\0';
17744         fprintf(stdout, "%s", buf);
17745         fflush(stdin);
17746         if (i == -1)
17747             return 0;
17748         bp = buf;
17749     }
17750 }
17751 EOCP
17752         set tryp
17753         if eval $compile; then
17754             $rm -f tryp.out
17755             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17756             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17757                $cat >&4 <<EOM
17758 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17759 EOM
17760                 : now check for fflushall behaviour
17761                 case "$fflushall" in
17762                 '')     set try -DTRY_FFLUSH_ALL $output
17763                         if eval $compile; then
17764                                 $cat >&4 <<EOM
17765 (Now testing the other method--but note that this also may fail.)
17766 EOM
17767                                 $run ./try 2>/dev/null
17768                                 code=$?
17769                                 $from try.out
17770                                 if $test -s try.out -a "X$code" = X42; then
17771                                         fflushall="`$cat try.out`"
17772                                 fi
17773                         fi
17774                         $rm -f core try.core core.try.*
17775                         case "$fflushall" in
17776                         x)      $cat >&4 <<EOM
17777 Whew. Flushing explicitly all the stdio streams works.
17778 EOM
17779                                 fflushall="$define"
17780                                 ;;
17781                         '')     $cat >&4 <<EOM
17782 Sigh. Flushing explicitly all the stdio streams doesn't work.
17783 EOM
17784                                 fflushall="$undef"
17785                                 ;;
17786                         *)      $cat >&4 <<EOM
17787 Cannot figure out whether flushing stdio streams explicitly works or not.
17788 I'm assuming it doesn't.
17789 EOM
17790                                 fflushall="$undef"
17791                                 ;;
17792                         esac
17793                         ;;
17794                 "$define"|true|[yY]*)
17795                         fflushall="$define"
17796                         ;;
17797                 *)
17798                         fflushall="$undef"
17799                         ;;
17800                 esac
17801             else
17802                 $cat >&4 <<EOM
17803 All is futile.  Even fflush(stdin) clobbers input pipes!
17804 EOM
17805                 fflushall="$undef"
17806             fi
17807         else
17808             fflushall="$undef"
17809         fi
17810         $rm -f core tryp.c tryp.core core.tryp.*
17811         ;;
17812 *)      fflushall="$undef"
17813         ;;
17814 esac
17815
17816 case "$fflushNULL$fflushall" in
17817 undefundef)
17818         $cat <<EOM
17819 OK, I give up.  I cannot figure out how to flush pending stdio output.
17820 We won't be flushing handles at all before fork/exec/popen.
17821 EOM
17822         ;;
17823 esac
17824 $rm -f try.* try$exe_ext
17825
17826 : Store the full pathname to the ar program for use in the C program
17827 : Respect a hint or command line value for full_ar.
17828 case "$full_ar" in
17829 '') full_ar=$ar ;;
17830 esac
17831
17832 : Store the full pathname to the sed program for use in the C program
17833 full_sed=$sed
17834
17835 : see what type gids are declared as in the kernel
17836 echo " "
17837 echo "Looking for the type for group ids returned by getgid()."
17838 set gid_t gidtype xxx stdio.h sys/types.h
17839 eval $typedef
17840 case "$gidtype" in
17841 xxx)
17842         xxx=`./findhdr sys/user.h`
17843         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17844         case $1 in
17845         unsigned) dflt="$1 $2" ;;
17846         *) dflt="$1" ;;
17847         esac
17848         ;;
17849 *) dflt="$gidtype";;
17850 esac
17851 case "$gidtype" in
17852 gid_t) echo "gid_t found." ;;
17853 *)      rp="What is the type for group ids returned by getgid()?"
17854         . ./myread
17855         gidtype="$ans"
17856         ;;
17857 esac
17858
17859 echo " "
17860 case "$gidtype" in
17861 *_t) zzz="$gidtype"     ;;
17862 *)   zzz="gid"          ;;
17863 esac
17864 echo "Checking the size of $zzz..." >&4 
17865 cat > try.c <<EOCP
17866 #include <sys/types.h>
17867 #include <stdio.h>
17868 #$i_stdlib I_STDLIB
17869 #ifdef I_STDLIB
17870 #include <stdlib.h>
17871 #endif
17872 int main() {
17873     printf("%d\n", (int)sizeof($gidtype));
17874     exit(0);
17875 }
17876 EOCP
17877 set try
17878 if eval $compile_ok; then
17879         yyy=`$run ./try`
17880         case "$yyy" in
17881         '')     gidsize=4
17882                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17883                 ;;
17884         *)      gidsize=$yyy
17885                 echo "Your $zzz is $gidsize bytes long."
17886                 ;;
17887         esac
17888 else
17889         gidsize=4
17890         echo "(I can't compile the test program--guessing $gidsize.)" >&4
17891 fi
17892
17893
17894 echo " "
17895 case "$gidtype" in
17896 *_t) zzz="$gidtype"     ;;
17897 *)   zzz="gid"          ;;
17898 esac
17899 echo "Checking the sign of $zzz..." >&4 
17900 cat > try.c <<EOCP
17901 #include <sys/types.h>
17902 #include <stdio.h>
17903 int main() {
17904         $gidtype foo = -1;
17905         if (foo < 0)
17906                 printf("-1\n");
17907         else
17908                 printf("1\n");
17909 }
17910 EOCP
17911 set try
17912 if eval $compile; then
17913         yyy=`$run ./try`
17914         case "$yyy" in
17915         '')     gidsign=1
17916                 echo "(I can't execute the test program--guessing unsigned.)" >&4
17917                 ;;
17918         *)      gidsign=$yyy
17919                 case "$gidsign" in
17920                  1) echo "Your $zzz is unsigned." ;;
17921                 -1) echo "Your $zzz is signed."   ;;
17922                 esac
17923                 ;;
17924         esac
17925 else
17926         gidsign=1
17927         echo "(I can't compile the test program--guessing unsigned.)" >&4
17928 fi
17929
17930
17931 echo " "
17932
17933 if $test X"$quadtype" != X; then
17934
17935 echo "Checking how to print 64-bit integers..." >&4
17936
17937 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
17938         $cat >try.c <<'EOCP'
17939 #include <sys/types.h>
17940 #include <stdio.h>
17941 int main() {
17942   int q = 12345678901;
17943   printf("%ld\n", q);
17944 }
17945 EOCP
17946         set try
17947         if eval $compile; then
17948                 yyy=`$run ./try`
17949                 case "$yyy" in
17950                 12345678901)
17951                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
17952                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
17953                         echo "We will use %d."
17954                         ;;
17955                 esac
17956         fi
17957 fi
17958
17959 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
17960         $cat >try.c <<'EOCP'
17961 #include <sys/types.h>
17962 #include <stdio.h>
17963 int main() {
17964   long q = 12345678901;
17965   printf("%ld\n", q);
17966 }
17967 EOCP
17968         set try
17969         if eval $compile; then
17970                 yyy=`$run ./try`
17971                 case "$yyy" in
17972                 12345678901)
17973                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
17974                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
17975                         echo "We will use %ld."
17976                         ;;
17977                 esac
17978         fi
17979 fi
17980
17981 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
17982         $cat >try.c <<'EOCP'
17983 #include <sys/types.h>
17984 #include <inttypes.h>
17985 #include <stdio.h>
17986 int main() {
17987   int64_t q = 12345678901;
17988   printf("%" PRId64 "\n", q);
17989 }
17990 EOCP
17991         set try
17992         if eval $compile; then
17993                 yyy=`$run ./try`
17994                 case "$yyy" in
17995                 12345678901)
17996                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
17997                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
17998                         echo "We will use the C9X style."
17999                         ;;
18000                 esac
18001         fi
18002 fi
18003
18004 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18005         $cat >try.c <<EOCP
18006 #include <sys/types.h>
18007 #include <stdio.h>
18008 int main() {
18009   $quadtype q = 12345678901;
18010   printf("%Ld\n", q);
18011 }
18012 EOCP
18013         set try
18014         if eval $compile; then
18015                 yyy=`$run ./try`
18016                 case "$yyy" in
18017                 12345678901)
18018                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18019                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18020                         echo "We will use %Ld."
18021                         ;;
18022                 esac
18023         fi
18024 fi
18025
18026 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18027         $cat >try.c <<'EOCP'
18028 #include <sys/types.h>
18029 #include <stdio.h>
18030 int main() {
18031   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18032   printf("%lld\n", q);
18033 }
18034 EOCP
18035         set try
18036         if eval $compile; then
18037                 yyy=`$run ./try`
18038                 case "$yyy" in
18039                 12345678901)
18040                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18041                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18042                         echo "We will use the %lld style."
18043                         ;;
18044                 esac
18045         fi
18046 fi
18047
18048 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18049         $cat >try.c <<EOCP
18050 #include <sys/types.h>
18051 #include <stdio.h>
18052 int main() {
18053   $quadtype q = 12345678901;
18054   printf("%qd\n", q);
18055 }
18056 EOCP
18057         set try
18058         if eval $compile; then
18059                 yyy=`$run ./try`
18060                 case "$yyy" in
18061                 12345678901)
18062                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18063                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18064                         echo "We will use %qd."
18065                         ;;
18066                 esac
18067         fi
18068 fi
18069
18070 if $test X"$sPRId64" = X; then
18071         echo "Cannot figure out how to print 64-bit integers." >&4
18072 fi
18073
18074 $rm -f try try.*
18075
18076 fi
18077
18078 case "$sPRId64" in
18079 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18080         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18081         ;;
18082 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18083         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18084         ;;
18085 esac
18086
18087
18088 echo " "
18089 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18090
18091 if $test X"$ivsize" = X8; then
18092         ivdformat="$sPRId64"
18093         uvuformat="$sPRIu64"
18094         uvoformat="$sPRIo64"
18095         uvxformat="$sPRIx64"
18096         uvXUformat="$sPRIXU64"
18097 else
18098         if $test X"$ivsize" = X"$longsize"; then
18099                 ivdformat='"ld"'
18100                 uvuformat='"lu"'
18101                 uvoformat='"lo"'
18102                 uvxformat='"lx"'
18103                 uvXUformat='"lX"'
18104         else
18105                 if $test X"$ivsize" = X"$intsize"; then
18106                         ivdformat='"d"'
18107                         uvuformat='"u"'
18108                         uvoformat='"o"'
18109                         uvxformat='"x"'
18110                         uvXUformat='"X"'
18111                 else
18112                         : far out
18113                         if $test X"$ivsize" = X"$shortsize"; then
18114                                 ivdformat='"hd"'
18115                                 uvuformat='"hu"'
18116                                 uvoformat='"ho"'
18117                                 uvxformat='"hx"'
18118                                 uvXUformat='"hX"'
18119                         fi
18120                 fi
18121         fi
18122 fi
18123
18124 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18125         nveformat="$sPRIeldbl"
18126         nvfformat="$sPRIfldbl"
18127         nvgformat="$sPRIgldbl"
18128         nvEUformat="$sPRIEUldbl"
18129         nvFUformat="$sPRIFUldbl"
18130         nvGUformat="$sPRIGUldbl"
18131 else
18132         nveformat='"e"'
18133         nvfformat='"f"'
18134         nvgformat='"g"'
18135         nvEUformat='"E"'
18136         nvFUformat='"F"'
18137         nvGUformat='"G"'
18138 fi
18139
18140 case "$ivdformat" in
18141 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18142     exit 1
18143     ;;
18144 esac
18145
18146
18147 echo " "
18148 $echo "Checking the format string to be used for gids..." >&4
18149
18150 case "$gidsign" in
18151 -1)     if $test X"$gidsize" = X"$ivsize"; then
18152                 gidformat="$ivdformat"
18153         else
18154                 if $test X"$gidsize" = X"$longsize"; then
18155                         gidformat='"ld"'
18156                 else
18157                         if $test X"$gidsize" = X"$intsize"; then
18158                                 gidformat='"d"'
18159                         else
18160                                 if $test X"$gidsize" = X"$shortsize"; then
18161                                         gidformat='"hd"'
18162                                 fi
18163                         fi
18164                 fi
18165         fi
18166         ;;
18167 *)      if $test X"$gidsize" = X"$uvsize"; then
18168                 gidformat="$uvuformat"
18169         else
18170                 if $test X"$gidsize" = X"$longsize"; then
18171                         gidformat='"lu"'
18172                 else
18173                         if $test X"$gidsize" = X"$intsize"; then
18174                                 gidformat='"u"'
18175                         else
18176                                 if $test X"$gidsize" = X"$shortsize"; then
18177                                         gidformat='"hu"'
18178                                 fi
18179                         fi
18180                 fi
18181         fi
18182         ;;
18183 esac
18184
18185 : see if getgroups exists
18186 set getgroups d_getgrps
18187 eval $inlibc
18188
18189 : see if setgroups exists
18190 set setgroups d_setgrps
18191 eval $inlibc
18192
18193
18194 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18195 echo " "
18196 case "$d_getgrps$d_setgrps" in
18197 *define*)
18198         case "$groupstype" in
18199         '') dflt="$gidtype" ;;
18200         *)  dflt="$groupstype" ;;
18201         esac
18202         $cat <<EOM
18203 What type of pointer is the second argument to getgroups() and setgroups()?
18204 Usually this is the same as group ids, $gidtype, but not always.
18205
18206 EOM
18207         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18208         . ./myread
18209         groupstype="$ans"
18210         ;;
18211 *)  groupstype="$gidtype";;
18212 esac
18213
18214 echo " "
18215 echo "Checking if your $make program sets \$(MAKE)..." >&4
18216 case "$make_set_make" in
18217 '')
18218         $sed 's/^X //' > testmake.mak << 'EOF'
18219 Xall:
18220 X       @echo 'maketemp="$(MAKE)"'
18221 EOF
18222         case "`$make -f testmake.mak 2>/dev/null`" in
18223         *maketemp=*) make_set_make='#' ;;
18224         *)      make_set_make="MAKE=$make" ;;
18225         esac
18226         $rm -f testmake.mak
18227         ;;
18228 esac
18229 case "$make_set_make" in
18230 '#') echo "Yup, it does.";;
18231 *) echo "Nope, it doesn't.";;
18232 esac
18233
18234 : see what type is used for mode_t
18235 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18236 set mode_t modetype int stdio.h sys/types.h
18237 eval $typedef_ask
18238
18239 : see if stdarg is available
18240 echo " "
18241 if $test `./findhdr stdarg.h`; then
18242         echo "<stdarg.h> found." >&4
18243         valstd="$define"
18244 else
18245         echo "<stdarg.h> NOT found." >&4
18246         valstd="$undef"
18247 fi
18248
18249 : see if varags is available
18250 echo " "
18251 if $test `./findhdr varargs.h`; then
18252         echo "<varargs.h> found." >&4
18253 else
18254         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18255 fi
18256
18257 : set up the varargs testing programs
18258 $cat > varargs.c <<EOP
18259 #ifdef I_STDARG
18260 #include <stdarg.h>
18261 #endif
18262 #ifdef I_VARARGS
18263 #include <varargs.h>
18264 #endif
18265
18266 #ifdef I_STDARG
18267 int f(char *p, ...)
18268 #else
18269 int f(va_alist)
18270 va_dcl
18271 #endif
18272 {
18273         va_list ap;
18274 #ifndef I_STDARG
18275         char *p;
18276 #endif
18277 #ifdef I_STDARG
18278         va_start(ap,p);
18279 #else
18280         va_start(ap);
18281         p = va_arg(ap, char *);
18282 #endif
18283         va_end(ap);
18284 }
18285 EOP
18286 $cat > varargs <<EOP
18287 $startsh
18288 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18289         echo "true"
18290 else
18291         echo "false"
18292 fi
18293 $rm -f varargs$_o
18294 EOP
18295 chmod +x varargs
18296
18297 : now check which varargs header should be included
18298 echo " "
18299 i_varhdr=''
18300 case "$valstd" in
18301 "$define")
18302         if `./varargs I_STDARG`; then
18303                 val='stdarg.h'
18304         elif `./varargs I_VARARGS`; then
18305                 val='varargs.h'
18306         fi
18307         ;;
18308 *)
18309         if `./varargs I_VARARGS`; then
18310                 val='varargs.h'
18311         fi
18312         ;;
18313 esac
18314 case "$val" in
18315 '')
18316 echo "I could not find the definition for va_dcl... You have problems..." >&4
18317         val="$undef"; set i_stdarg; eval $setvar
18318         val="$undef"; set i_varargs; eval $setvar
18319         ;;
18320 *) 
18321         set i_varhdr
18322         eval $setvar
18323         case "$i_varhdr" in
18324         stdarg.h)
18325                 val="$define"; set i_stdarg; eval $setvar
18326                 val="$undef"; set i_varargs; eval $setvar
18327                 ;;
18328         varargs.h)
18329                 val="$undef"; set i_stdarg; eval $setvar
18330                 val="$define"; set i_varargs; eval $setvar
18331                 ;;
18332         esac
18333         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18334 esac
18335 $rm -f varargs*
18336
18337 : see if we need va_copy
18338 echo " "
18339 case "$i_stdarg" in
18340 "$define")
18341         $cat >try.c <<EOCP
18342 #include <stdarg.h>
18343 #include <stdio.h>
18344 #$i_stdlib I_STDLIB
18345 #ifdef I_STDLIB
18346 #include <stdlib.h>
18347 #endif
18348 #include <signal.h>
18349
18350 int
18351 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18352 {
18353   return vfprintf(f, fmt, *valp);
18354 }
18355  
18356 int    
18357 myvfprintf(FILE *f, const  char *fmt, va_list val)
18358 {
18359   return ivfprintf(f, fmt, &val);
18360 }
18361       
18362 int
18363 myprintf(char *fmt, ...) 
18364 {
18365   va_list val;
18366   va_start(val, fmt);
18367   return myvfprintf(stdout, fmt, val); 
18368 }         
18369
18370 int
18371 main(int ac, char **av)
18372 {
18373   signal(SIGSEGV, exit);
18374
18375   myprintf("%s%cs all right, then\n", "that", '\'');                            
18376   exit(0);      
18377 }
18378 EOCP
18379         set try
18380         if eval $compile && $run ./try 2>&1 >/dev/null; then
18381                 case "`$run ./try`" in
18382                 "that's all right, then")
18383                         okay=yes
18384                         ;;
18385                 esac
18386         fi
18387         case "$okay" in
18388         yes)    echo "It seems that you don't need va_copy()." >&4
18389                 need_va_copy="$undef"
18390                 ;;
18391         *)      echo "It seems that va_copy() or similar will be needed." >&4
18392                 need_va_copy="$define"
18393                 ;;
18394         esac
18395         $rm -f try.* core core.* *.core *.core.*
18396         ;;
18397 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18398         ;;
18399 esac
18400
18401 : see what type is used for size_t
18402 rp="What is the type used for the length parameter for string functions?"
18403 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18404 eval $typedef_ask
18405
18406 : check for type of arguments to gethostbyaddr. 
18407 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18408         case "$d_gethbyaddr" in
18409         $define)
18410                 $cat <<EOM
18411
18412 Checking to see what type of arguments are accepted by gethostbyaddr().
18413 EOM
18414                 hdrs="$define sys/types.h
18415                         $d_socket sys/socket.h 
18416                         $i_niin netinet/in.h 
18417                         $i_netdb netdb.h
18418                         $i_unistd unistd.h"
18419                 : The first arg can 'char *' or 'void *'
18420                 : The second arg is some of integral type
18421                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18422                         for yyy in size_t long int; do
18423                                 case "$netdb_host_type" in
18424                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18425                                         if ./protochk "$try" $hdrs; then
18426                                                 echo "Your system accepts $xxx for the first arg."
18427                                                 echo "...and $yyy for the second arg."
18428                                                 netdb_host_type="$xxx"
18429                                                 netdb_hlen_type="$yyy"
18430                                         fi
18431                                         ;;
18432                                 esac
18433                         done
18434                 done
18435                 : In case none of those worked, prompt the user.
18436                 case "$netdb_host_type" in
18437                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18438                         dflt='char *'
18439                         . ./myread
18440                         netdb_host_type=$ans
18441                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18442                         dflt="$sizetype"
18443                         . ./myread
18444                         netdb_hlen_type=$ans
18445                         ;;
18446                 esac
18447                 ;;
18448         *)      : no gethostbyaddr, so pick harmless defaults
18449                 netdb_host_type='char *'
18450                 netdb_hlen_type="$sizetype"
18451                 ;;
18452         esac
18453         # Remove the "const" if needed. -- but then we'll have a 
18454         # prototype clash!
18455         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18456 fi
18457
18458 : check for type of argument to gethostbyname. 
18459 if test "X$netdb_name_type" = X ; then
18460         case "$d_gethbyname" in
18461         $define)
18462                 $cat <<EOM
18463
18464 Checking to see what type of argument is accepted by gethostbyname().
18465 EOM
18466                 hdrs="$define sys/types.h
18467                         $d_socket sys/socket.h 
18468                         $i_niin netinet/in.h 
18469                         $i_netdb netdb.h
18470                         $i_unistd unistd.h"
18471                 for xxx in "const char *" "char *"; do
18472                         case "$netdb_name_type" in
18473                         '')     try="extern struct hostent *gethostbyname($xxx);"
18474                                 if ./protochk "$try" $hdrs; then
18475                                         echo "Your system accepts $xxx."
18476                                         netdb_name_type="$xxx"
18477                                 fi
18478                                 ;;
18479                         esac
18480                 done
18481                 : In case none of those worked, prompt the user.
18482                 case "$netdb_name_type" in
18483                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18484                         dflt='char *'
18485                         . ./myread
18486                         netdb_name_type=$ans
18487                         ;;
18488                 esac
18489                 ;;
18490         *)      : no gethostbyname, so pick harmless default
18491                 netdb_name_type='char *'
18492                 ;;
18493         esac
18494 fi
18495
18496 : check for type of 1st argument to getnetbyaddr. 
18497 if test "X$netdb_net_type" = X ; then
18498         case "$d_getnbyaddr" in
18499         $define)
18500                 $cat <<EOM
18501
18502 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18503 EOM
18504                 hdrs="$define sys/types.h
18505                         $d_socket sys/socket.h 
18506                         $i_niin netinet/in.h 
18507                         $i_netdb netdb.h
18508                         $i_unistd unistd.h"
18509                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18510                         case "$netdb_net_type" in
18511                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18512                                 if ./protochk "$try" $hdrs; then
18513                                         echo "Your system accepts $xxx."
18514                                         netdb_net_type="$xxx"
18515                                 fi
18516                                 ;;
18517                         esac
18518                 done
18519                 : In case none of those worked, prompt the user.
18520                 case "$netdb_net_type" in
18521                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18522                         dflt='long'
18523                         . ./myread
18524                         netdb_net_type=$ans
18525                         ;;
18526                 esac
18527                 ;;
18528         *)      : no getnetbyaddr, so pick harmless default
18529                 netdb_net_type='long'
18530                 ;;
18531         esac
18532 fi
18533 : locate the preferred pager for this system
18534 fn=f/
18535 case "$pager" in
18536 '')
18537         dflt=''
18538         case "$pg" in
18539         /*) dflt=$pg;;
18540         [a-zA-Z]:/*) dflt=$pg;;
18541         esac
18542         case "$more" in
18543         /*) dflt=$more;;
18544         [a-zA-Z]:/*) dflt=$more;;
18545         esac
18546         case "$less" in
18547         /*) dflt=$less;;
18548         [a-zA-Z]:/*) dflt=$less;;
18549         esac
18550         case "$dflt" in
18551         '') dflt=/usr/ucb/more;;
18552         esac
18553         ;;
18554 *)      dflt="$pager"
18555         : Instruct ./getfile to trust the hinted or previous pager value,
18556         : even if it does not begin with a slash.  For example, on os2,
18557         : pager might be cmd /c more.  See comments in UU/getfile.
18558         fn="f/($pager)"
18559         ;;
18560 esac
18561 echo " "
18562 rp='What pager is used on your system?'
18563 . ./getfile
18564 pager="$ans"
18565
18566 : see what type pids are declared as in the kernel
18567 rp="What is the type of process ids on this system?"
18568 set pid_t pidtype int stdio.h sys/types.h
18569 eval $typedef_ask
18570
18571 : Find earliest binary compatible site_perl subdirectory perl can use.
18572 xs_apiversion=$version # The current site_perl version.
18573 : Find earliest pure perl site_perl subdirectory perl can use.
18574 : The versioned directories started at 5.005.
18575 pm_apiversion='5.005'
18576
18577 : see if ar generates random libraries by itself
18578 echo " "
18579 echo "Checking how to generate random libraries on your machine..." >&4
18580 echo 'int bar1() { return bar2(); }' > bar1.c
18581 echo 'int bar2() { return 2; }' > bar2.c
18582 $cat > foo.c <<EOP
18583 #$i_stdlib I_STDLIB
18584 #ifdef I_STDLIB
18585 #include <stdlib.h>
18586 #endif
18587 int main() { printf("%d\n", bar1()); exit(0); }
18588 EOP
18589 $cc $ccflags -c bar1.c >/dev/null 2>&1
18590 $cc $ccflags -c bar2.c >/dev/null 2>&1
18591 $cc $ccflags -c foo.c >/dev/null 2>&1
18592 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18593 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18594         $run ./foobar >/dev/null 2>&1; then
18595         echo "$ar appears to generate random libraries itself."
18596         orderlib=false
18597         ranlib=":"
18598 elif $ar ts bar$_a >/dev/null 2>&1 &&
18599         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18600         $run ./foobar >/dev/null 2>&1; then
18601                 echo "a table of contents needs to be added with '$ar ts'."
18602                 orderlib=false
18603                 ranlib="$ar ts"
18604 else
18605         case "$ranlib" in
18606         :) ranlib='';;
18607         '')
18608                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18609                 $test -f $ranlib || ranlib=''
18610                 ;;
18611         esac
18612         if $test -n "$ranlib"; then
18613                 echo "your system has '$ranlib'; we'll use that."
18614                 orderlib=false
18615         else
18616                 echo "your system doesn't seem to support random libraries"
18617                 echo "so we'll use lorder and tsort to order the libraries."
18618                 orderlib=true
18619                 ranlib=":"
18620         fi
18621 fi
18622 $rm -f foo* bar* 
18623
18624 : check for type of arguments to select. 
18625 case "$selecttype" in
18626 '') case "$d_select" in
18627         $define)
18628                 echo " "
18629                 $cat <<EOM
18630 Checking to see what type of arguments are accepted by select().
18631 EOM
18632                 hdrs="$define sys/types.h
18633                         $i_systime sys/time.h 
18634                         $i_sysselct sys/select.h
18635                         $d_socket sys/socket.h"
18636                 : The first arg can be int, unsigned, or size_t
18637                 : The last arg may or may not be 'const'
18638                 val=''
18639                 : void pointer has been seen but using that
18640                 : breaks the selectminbits test
18641                 for xxx in 'fd_set *' 'int *'; do
18642                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18643                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18644                                         case "$val" in
18645                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18646                                                 if ./protochk "$try" $hdrs; then
18647                                                         echo "Your system accepts $xxx."
18648                                                         val="$xxx"
18649                                                 fi
18650                                                 ;;
18651                                         esac
18652                                 done
18653                         done
18654                 done
18655                 case "$val" in
18656                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18657                         case "$d_fd_set" in
18658                                 $define) dflt="fd_set *" ;;
18659                                 *)              dflt="int *" ;;
18660                         esac
18661                         . ./myread
18662                         val=$ans
18663                         ;;
18664                 esac
18665                 selecttype="$val"
18666                 ;;
18667         *)      : no select, so pick a harmless default
18668                 selecttype='int *'
18669                 ;;
18670         esac
18671         ;;
18672 esac
18673
18674 : check for the select 'width'
18675 case "$selectminbits" in
18676 '') safebits=`expr $ptrsize \* 8`
18677     case "$d_select" in
18678         $define)
18679                 $cat <<EOM
18680
18681 Checking to see on how many bits at a time your select() operates...
18682 EOM
18683                 $cat >try.c <<EOCP
18684 #include <sys/types.h>
18685 #$i_time I_TIME
18686 #$i_systime I_SYS_TIME
18687 #$i_systimek I_SYS_TIME_KERNEL
18688 #ifdef I_TIME
18689 #   include <time.h>
18690 #endif
18691 #ifdef I_SYS_TIME
18692 #   ifdef I_SYS_TIME_KERNEL
18693 #       define KERNEL
18694 #   endif
18695 #   include <sys/time.h>
18696 #   ifdef I_SYS_TIME_KERNEL
18697 #       undef KERNEL
18698 #   endif
18699 #endif
18700 #$i_sysselct I_SYS_SELECT
18701 #ifdef I_SYS_SELECT
18702 #include <sys/select.h>
18703 #endif
18704 #$d_socket HAS_SOCKET
18705 #ifdef HAS_SOCKET
18706 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18707 #endif
18708 #include <stdio.h>
18709 #$i_stdlib I_STDLIB
18710 #ifdef I_STDLIB
18711 #include <stdlib.h>
18712 #endif
18713 $selecttype b;
18714 #define S sizeof(*(b))
18715 #define MINBITS 64
18716 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18717 #define NBITS  (NBYTES * 8)
18718 int main() {
18719     char *s = malloc(NBYTES);
18720     struct timeval t;
18721     int i;
18722     FILE* fp;
18723     int fd;
18724
18725     if (!s)
18726         exit(1);
18727     fclose(stdin);
18728     fp = fopen("try.c", "r");
18729     if (fp == 0)
18730       exit(2);
18731     fd = fileno(fp);
18732     if (fd < 0)
18733       exit(3);
18734     b = ($selecttype)s;
18735     for (i = 0; i < NBITS; i++)
18736         FD_SET(i, b);
18737     t.tv_sec  = 0;
18738     t.tv_usec = 0;
18739     select(fd + 1, b, 0, 0, &t);
18740     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18741     free(s);
18742     printf("%d\n", i + 1);
18743     return 0;
18744 }
18745 EOCP
18746                 set try
18747                 if eval $compile_ok; then
18748                         selectminbits=`$run ./try`
18749                         case "$selectminbits" in
18750                         '')     cat >&4 <<EOM
18751 Cannot figure out on how many bits at a time your select() operates.
18752 I'll play safe and guess it is $safebits bits.
18753 EOM
18754                                 selectminbits=$safebits
18755                                 bits="$safebits bits"
18756                                 ;;
18757                         1)      bits="1 bit" ;;
18758                         *)      bits="$selectminbits bits" ;;
18759                         esac
18760                         echo "Your select() operates on $bits at a time." >&4
18761                 else
18762                         rp='What is the minimum number of bits your select() operates on?'
18763                         case "$byteorder" in
18764                         12345678)       dflt=64 ;;
18765                         1234)           dflt=32 ;;
18766                         *)              dflt=1  ;;
18767                         esac
18768                         . ./myread
18769                         val=$ans
18770                         selectminbits="$val"
18771                 fi
18772                 $rm -f try.* try
18773                 ;;
18774         *)      : no select, so pick a harmless default
18775                 selectminbits=$safebits
18776                 ;;
18777         esac
18778         ;;
18779 esac
18780
18781 : Trace out the files included by signal.h, then look for SIGxxx names.
18782 : Remove SIGARRAYSIZE used by HPUX.
18783 : Remove SIGSTKSIZE used by Linux.
18784 : Remove SIGSTKSZ used by Posix.
18785 : Remove SIGTYP void lines used by OS2.
18786 : Some cpps, like os390, dont give the file name anywhere
18787 if [ "X$fieldn" = X ]; then
18788         : Just make some guesses.  We check them later.
18789         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18790 else
18791         xxx=`echo '#include <signal.h>' |
18792         $cppstdin $cppminus $cppflags 2>/dev/null |
18793         $grep '^[       ]*#.*include' | 
18794         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18795 fi
18796 : Check this list of files to be sure we have parsed the cpp output ok.
18797 : This will also avoid potentially non-existent files, such 
18798 : as ../foo/bar.h
18799 xxxfiles=''
18800 for xx in $xxx /dev/null ; do
18801         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18802 done
18803 : If we have found no files, at least try signal.h
18804 case "$xxxfiles" in
18805 '')     xxxfiles=`./findhdr signal.h` ;;
18806 esac
18807 xxx=`awk '
18808 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18809         print substr($2, 4, 20)
18810 }
18811 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18812         print substr($3, 4, 20)
18813 }' $xxxfiles`
18814 : Append some common names just in case the awk scan failed.
18815 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18816 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18817 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18818 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18819 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18820
18821 : generate a few handy files for later
18822 $cat > signal.c <<EOCP
18823 #include <sys/types.h>
18824 #include <signal.h>
18825 #$i_stdlib I_STDLIB
18826 #ifdef I_STDLIB
18827 #include <stdlib.h>
18828 #endif
18829 #include <stdio.h>
18830 int main() {
18831
18832 /* Strange style to avoid deeply-nested #if/#else/#endif */
18833 #ifndef NSIG
18834 #  ifdef _NSIG
18835 #    define NSIG (_NSIG)
18836 #  endif
18837 #endif
18838
18839 #ifndef NSIG
18840 #  ifdef SIGMAX
18841 #    define NSIG (SIGMAX+1)
18842 #  endif
18843 #endif
18844
18845 #ifndef NSIG
18846 #  ifdef SIG_MAX
18847 #    define NSIG (SIG_MAX+1)
18848 #  endif
18849 #endif
18850
18851 #ifndef NSIG
18852 #  ifdef MAXSIG
18853 #    define NSIG (MAXSIG+1)
18854 #  endif
18855 #endif
18856
18857 #ifndef NSIG
18858 #  ifdef MAX_SIG
18859 #    define NSIG (MAX_SIG+1)
18860 #  endif
18861 #endif
18862
18863 #ifndef NSIG
18864 #  ifdef SIGARRAYSIZE
18865 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18866 #  endif
18867 #endif
18868
18869 #ifndef NSIG
18870 #  ifdef _sys_nsig
18871 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18872 #  endif
18873 #endif
18874
18875 /* Default to some arbitrary number that's big enough to get most
18876    of the common signals.
18877 */
18878 #ifndef NSIG
18879 #    define NSIG 50
18880 #endif
18881
18882 printf("NSIG %d\n", NSIG);
18883
18884 #ifndef JUST_NSIG
18885
18886 EOCP
18887
18888 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18889 {
18890         printf "#ifdef SIG"; printf $1; printf "\n"
18891         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18892         printf $1; printf ");\n"
18893         printf "#endif\n"
18894 }
18895 END {
18896         printf "#endif /* JUST_NSIG */\n";
18897         printf "exit(0);\n}\n";
18898 }
18899 ' >>signal.c
18900 $cat >signal.awk <<'EOP'
18901 BEGIN { ndups = 0 }
18902 $1 ~ /^NSIG$/ { nsig = $2 }
18903 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
18904     if ($2 > maxsig) { maxsig = $2 }
18905     if (sig_name[$2]) {
18906         dup_name[ndups] = $1
18907         dup_num[ndups] = $2
18908         ndups++ 
18909     }
18910     else {
18911         sig_name[$2] = $1
18912         sig_num[$2] = $2
18913     }
18914 }
18915 END { 
18916     if (nsig == 0) {
18917         nsig = maxsig + 1
18918     }
18919     printf("NSIG %d\n", nsig);
18920     for (n = 1; n < nsig; n++) {
18921         if (sig_name[n]) {
18922             printf("%s %d\n", sig_name[n], sig_num[n])
18923         }
18924         else {
18925             printf("NUM%d %d\n", n, n) 
18926         }
18927     }
18928     for (n = 0; n < ndups; n++) {
18929         printf("%s %d\n", dup_name[n], dup_num[n])
18930     }
18931 }
18932 EOP
18933 $cat >signal_cmd <<EOS
18934 $startsh
18935 if $test -s signal.lst; then
18936     echo "Using your existing signal.lst file"
18937         exit 0
18938 fi
18939 xxx="$xxx"
18940 EOS
18941 $cat >>signal_cmd <<'EOS'
18942
18943 set signal
18944 if eval $compile_ok; then
18945         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
18946 else
18947         echo "(I can't seem be able to compile the whole test program)" >&4
18948         echo "(I'll try it in little pieces.)" >&4
18949         set signal -DJUST_NSIG
18950         if eval $compile_ok; then
18951                 $run ./signal$_exe > signal.nsg
18952                 $cat signal.nsg
18953         else
18954                 echo "I can't seem to figure out how many signals you have." >&4
18955                 echo "Guessing 50." >&4
18956                 echo 'NSIG 50' > signal.nsg
18957         fi
18958         : Now look at all the signal names, one at a time.
18959         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
18960                 $cat > signal.c <<EOCP
18961 #include <sys/types.h>
18962 #include <signal.h>
18963 #include <stdio.h>
18964 int main() {
18965 printf("$xx %d\n", SIG${xx});
18966 return 0;
18967 }
18968 EOCP
18969                 set signal
18970                 if eval $compile; then
18971                         echo "SIG${xx} found."
18972                         $run ./signal$_exe  >> signal.ls1
18973                 else
18974                         echo "SIG${xx} NOT found."
18975                 fi
18976         done
18977         if $test -s signal.ls1; then
18978                 $cat signal.nsg signal.ls1 |
18979                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
18980         fi
18981
18982 fi
18983 if $test -s signal.lst; then
18984         :
18985 else
18986         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
18987         echo 'kill -l' >signal
18988         set X `csh -f <signal`
18989         $rm -f signal
18990         shift
18991         case $# in
18992         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
18993         esac
18994         echo $@ | $tr ' ' $trnl | \
18995             $awk '{ printf "%s %d\n", $1, ++s; }
18996                   END { printf "NSIG %d\n", ++s }' >signal.lst
18997 fi
18998 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
18999 EOS
19000 chmod a+x signal_cmd
19001 $eunicefix signal_cmd
19002
19003 : generate list of signal names
19004 echo " "
19005 case "$sig_name_init" in
19006 '') doinit=yes ;;
19007 *)  case "$sig_num_init" in
19008     ''|*,*) doinit=yes ;;
19009     esac ;;
19010 esac
19011 case "$doinit" in
19012 yes)
19013         echo "Generating a list of signal names and numbers..." >&4
19014         . ./signal_cmd
19015         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19016         sig_name=`$awk 'BEGIN { printf "ZERO " }
19017                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19018         sig_num=`$awk  'BEGIN { printf "0 " }
19019                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19020         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19021                              !/^NSIG/   { printf "\"%s\", ", $1 }
19022                              END        { printf "0\n" }' signal.lst`
19023         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19024                              !/^NSIG/   { printf "%d, ", $2}
19025                              END        { printf "0\n"}' signal.lst`
19026         ;;
19027 esac
19028 echo "The following $sig_count signals are available:"
19029 echo " "
19030 echo $sig_name | $awk \
19031 'BEGIN { linelen = 0 }
19032 {
19033         for (i = 1; i <= NF; i++) {
19034                 name = "SIG" $i " "
19035                 linelen = linelen + length(name)
19036                 if (linelen > 70) {
19037                         printf "\n"
19038                         linelen = length(name)
19039                 }
19040                 printf "%s", name
19041         }
19042         printf "\n"
19043 }'
19044 sig_size=`echo $sig_name | awk '{print NF}'`
19045 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19046
19047 echo " "
19048 case "$sizetype" in
19049 *_t) zzz="$sizetype"    ;;
19050 *)   zzz="filesize"     ;;
19051 esac
19052 echo "Checking the size of $zzz..." >&4 
19053 cat > try.c <<EOCP
19054 #include <sys/types.h>
19055 #include <stdio.h>
19056 #$i_stdlib I_STDLIB
19057 #ifdef I_STDLIB
19058 #include <stdlib.h>
19059 #endif
19060 int main() {
19061     printf("%d\n", (int)sizeof($sizetype));
19062     exit(0);
19063 }
19064 EOCP
19065 set try
19066 if eval $compile_ok; then
19067         yyy=`$run ./try`
19068         case "$yyy" in
19069         '')     sizesize=4
19070                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19071                 ;;
19072         *)      sizesize=$yyy
19073                 echo "Your $zzz size is $sizesize bytes."
19074                 ;;
19075         esac
19076 else
19077         sizesize=4
19078         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19079 fi
19080
19081
19082 : check for socklen_t
19083 echo " "
19084 echo "Checking to see if you have socklen_t..." >&4
19085 $cat >try.c <<EOCP
19086 #include <sys/types.h>
19087 #$d_socket HAS_SOCKET
19088 #ifdef HAS_SOCKET
19089 #include <sys/socket.h>
19090 #endif
19091 int main() { socklen_t x = 16; }
19092 EOCP
19093 set try
19094 if eval $compile; then
19095         val="$define"
19096         echo "You have socklen_t."
19097 else
19098         val="$undef"
19099         echo "You do not have socklen_t."
19100         case "$sizetype" in
19101         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19102         esac
19103 fi
19104 $rm -f try try.*
19105 set d_socklen_t
19106 eval $setvar
19107
19108 : see if this is a socks.h system
19109 set socks.h i_socks
19110 eval $inhdr
19111
19112 : check for type of the size argument to socket calls
19113 case "$d_socket" in
19114 "$define")
19115         $cat <<EOM
19116
19117 Checking to see what type is the last argument of accept().
19118 EOM
19119         yyy=''
19120         case "$d_socklen_t" in
19121         "$define") yyy="$yyy socklen_t"
19122         esac
19123         yyy="$yyy $sizetype int long unsigned"
19124         for xxx in $yyy; do
19125                 case "$socksizetype" in
19126                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19127                         case "$usesocks" in
19128                         "$define")
19129                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19130                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19131                                         socksizetype="$xxx"
19132                                 fi
19133                                 ;;
19134                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19135                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19136                                         socksizetype="$xxx"
19137                                 fi
19138                                 ;;
19139                         esac
19140                         ;;
19141                 esac
19142         done
19143 : In case none of those worked, prompt the user.
19144         case "$socksizetype" in
19145         '')     rp='What is the type for socket address structure sizes?'
19146                 dflt='int'
19147                 . ./myread
19148                 socksizetype=$ans
19149                 ;;
19150         esac
19151         ;;
19152 *)      : no sockets, so pick relatively harmless default
19153         socksizetype='int'
19154         ;;
19155 esac
19156
19157 : see what type is used for signed size_t
19158 set ssize_t ssizetype int stdio.h sys/types.h
19159 eval $typedef
19160 dflt="$ssizetype"
19161 $cat > try.c <<EOM
19162 #include <stdio.h>
19163 #$i_stdlib I_STDLIB
19164 #ifdef I_STDLIB
19165 #include <stdlib.h>
19166 #endif
19167 #include <sys/types.h>
19168 #define Size_t $sizetype
19169 #define SSize_t $dflt
19170 int main()
19171 {
19172         if (sizeof(Size_t) == sizeof(SSize_t))
19173                 printf("$dflt\n");
19174         else if (sizeof(Size_t) == sizeof(int))
19175                 printf("int\n");
19176         else 
19177                 printf("long\n");
19178         exit(0);
19179 }
19180 EOM
19181 echo " "
19182 set try
19183 if eval $compile_ok && $run ./try > /dev/null; then
19184         ssizetype=`$run ./try`
19185         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19186 else
19187         $cat >&4 <<EOM
19188 Help! I can't compile and run the ssize_t test program: please enlighten me!
19189 (This is probably a misconfiguration in your system or libraries, and
19190 you really ought to fix it.  Still, I'll try anyway.)
19191
19192 I need a type that is the same size as $sizetype, but is guaranteed to
19193 be signed.  Common values are ssize_t, int and long.
19194
19195 EOM
19196         rp="What signed type is the same size as $sizetype?"
19197         . ./myread
19198         ssizetype="$ans"
19199 fi
19200 $rm -f try try.*
19201
19202 : see what type of char stdio uses.
19203 echo " "
19204 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19205 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19206         echo "Your stdio uses unsigned chars." >&4
19207         stdchar="unsigned char"
19208 else
19209         echo "Your stdio uses signed chars." >&4
19210         stdchar="char"
19211 fi
19212 $rm -f stdioh
19213
19214
19215
19216 : see what type uids are declared as in the kernel
19217 echo " "
19218 echo "Looking for the type for user ids returned by getuid()."
19219 set uid_t uidtype xxx stdio.h sys/types.h
19220 eval $typedef
19221 case "$uidtype" in
19222 xxx)
19223         xxx=`./findhdr sys/user.h`
19224         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19225         case $1 in
19226         unsigned) dflt="$1 $2" ;;
19227         *) dflt="$1" ;;
19228         esac
19229         ;;
19230 *) dflt="$uidtype";;
19231 esac
19232 case "$uidtype" in
19233 uid_t)  echo "uid_t found." ;;
19234 *)      rp="What is the type for user ids returned by getuid()?"
19235         . ./myread
19236         uidtype="$ans"
19237         ;;
19238 esac
19239
19240 echo " "
19241 case "$uidtype" in
19242 *_t) zzz="$uidtype"     ;;
19243 *)   zzz="uid"          ;;
19244 esac
19245 echo "Checking the size of $zzz..." >&4 
19246 cat > try.c <<EOCP
19247 #include <sys/types.h>
19248 #include <stdio.h>
19249 #$i_stdlib I_STDLIB
19250 #ifdef I_STDLIB
19251 #include <stdlib.h>
19252 #endif
19253 int main() {
19254     printf("%d\n", (int)sizeof($uidtype));
19255     exit(0);
19256 }
19257 EOCP
19258 set try
19259 if eval $compile_ok; then
19260         yyy=`$run ./try`
19261         case "$yyy" in
19262         '')     uidsize=4
19263                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19264                 ;;
19265         *)      uidsize=$yyy
19266                 echo "Your $zzz is $uidsize bytes long."
19267                 ;;
19268         esac
19269 else
19270         uidsize=4
19271         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19272 fi
19273
19274 echo " "
19275 case "$uidtype" in
19276 *_t) zzz="$uidtype"     ;;
19277 *)   zzz="uid"          ;;
19278 esac
19279 echo "Checking the sign of $zzz..." >&4
19280 cat > try.c <<EOCP
19281 #include <sys/types.h>
19282 #include <stdio.h>
19283 int main() {
19284         $uidtype foo = -1;
19285         if (foo < 0)
19286                 printf("-1\n");
19287         else
19288                 printf("1\n");
19289 }
19290 EOCP
19291 set try
19292 if eval $compile; then
19293         yyy=`$run ./try`
19294         case "$yyy" in
19295         '')     uidsign=1
19296                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19297                 ;;
19298         *)      uidsign=$yyy
19299                 case "$uidsign" in
19300                  1) echo "Your $zzz is unsigned." ;;
19301                 -1) echo "Your $zzz is signed."   ;;
19302                 esac
19303                 ;;
19304         esac
19305 else
19306         uidsign=1
19307         echo "(I can't compile the test program--guessing unsigned.)" >&4
19308 fi
19309
19310
19311
19312 echo " "
19313 $echo "Checking the format string to be used for uids..." >&4
19314
19315 case "$uidsign" in
19316 -1)     if $test X"$uidsize" = X"$ivsize"; then
19317                 uidformat="$ivdformat"
19318         else
19319                 if $test X"$uidsize" = X"$longsize"; then
19320                         uidformat='"ld"'
19321                 else
19322                         if $test X"$uidsize" = X"$intsize"; then
19323                                 uidformat='"d"'
19324                         else
19325                                 if $test X"$uidsize" = X"$shortsize"; then
19326                                         uidformat='"hd"'
19327                                 fi
19328                         fi
19329                 fi
19330         fi
19331         ;;
19332 *)      if $test X"$uidsize" = X"$uvsize"; then
19333                 uidformat="$uvuformat"
19334         else
19335                 if $test X"$uidsize" = X"$longsize"; then
19336                         uidformat='"lu"'
19337                 else
19338                         if $test X"$uidsize" = X"$intsize"; then
19339                                 uidformat='"u"'
19340                         else
19341                                 if $test X"$uidsize" = X"$shortsize"; then
19342                                         uidformat='"hu"'
19343                                 fi
19344                         fi
19345                 fi
19346         fi
19347         ;;
19348 esac
19349
19350 : determine compiler compiler
19351 case "$yacc" in
19352 '')
19353         dflt=yacc;;
19354 *)
19355         dflt="$yacc";;
19356 esac
19357 echo " "
19358 comp='yacc'
19359 if $test -f "$byacc$_exe"; then
19360         dflt="$byacc"
19361         comp="byacc or $comp"
19362 fi
19363 if $test -f "$bison$_exe"; then
19364         comp="$comp or bison -y"
19365 fi
19366 rp="Which compiler compiler ($comp) shall I use?"
19367 . ./myread
19368 yacc="$ans"
19369 case "$yacc" in
19370 *bis*)
19371         case "$yacc" in
19372         *-y*) ;;
19373         *)
19374                 yacc="$yacc -y"
19375                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19376                 ;;
19377         esac
19378         ;;
19379 esac
19380
19381 : see if this is a fp.h system
19382 set fp.h i_fp
19383 eval $inhdr
19384
19385 : see if this is a fp_class.h system
19386 set fp_class.h i_fp_class
19387 eval $inhdr
19388
19389 : see if this is a ieeefp.h system
19390 case "$i_ieeefp" in
19391 '' ) set ieeefp.h i_ieeefp
19392      eval $inhdr
19393      ;;
19394 esac
19395
19396 : see if this is a libutil.h system
19397 set libutil.h i_libutil
19398 eval $inhdr
19399
19400 : see if mach cthreads are available
19401 if test "X$usethreads" = "X$define"; then
19402         set mach/cthreads.h i_machcthr
19403         eval $inhdr
19404 else
19405         i_machcthr="$undef"
19406 fi
19407
19408
19409
19410 : see if this is a math.h system
19411 set math.h i_math
19412 eval $inhdr
19413
19414 : see if this is a mntent.h system
19415 set mntent.h i_mntent
19416 eval $inhdr
19417
19418 : see if ndbm.h is available
19419 set ndbm.h t_ndbm
19420 eval $inhdr
19421
19422 case "$t_ndbm" in
19423 $undef)
19424     # Some Linux distributions such as RedHat 7.1 put the
19425     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19426     if $test -f /usr/include/gdbm/ndbm.h; then
19427         echo '<gdbm/ndbm.h> found.'
19428         ccflags="$ccflags -I/usr/include/gdbm"
19429         cppflags="$cppflags -I/usr/include/gdbm"
19430         t_ndbm=$define
19431     fi
19432     ;;
19433 esac
19434
19435 case "$t_ndbm" in
19436 $define)
19437         : see if dbm_open exists
19438         set dbm_open d_dbm_open
19439         eval $inlibc
19440         case "$d_dbm_open" in
19441         $undef)
19442                 t_ndbm="$undef"
19443                 echo "We won't be including <ndbm.h>"
19444                 ;;
19445         esac
19446         ;;
19447 esac
19448 val="$t_ndbm"
19449 set i_ndbm
19450 eval $setvar
19451
19452 : see if net/errno.h is available
19453 val=''
19454 set net/errno.h val
19455 eval $inhdr
19456
19457 : Unfortunately, it causes problems on some systems.  Arrgh.
19458 case "$val" in
19459 $define)
19460         cat > try.c <<'EOM'
19461 #include <stdio.h>
19462 #include <errno.h>
19463 #include <net/errno.h>
19464 int func()
19465 {
19466         return ENOTSOCK;
19467 }
19468 EOM
19469         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19470                 echo "We'll be including <net/errno.h>." >&4
19471         else
19472                 echo "We won't be including <net/errno.h>." >&4
19473                 val="$undef"
19474         fi
19475         $rm -f try.* try
19476         ;;
19477 esac
19478 set i_neterrno
19479 eval $setvar
19480
19481 : see if netinet/tcp.h is available
19482 set netinet/tcp.h i_netinettcp
19483 eval $inhdr
19484
19485 : see if this is a poll.h system
19486 set poll.h i_poll
19487 eval $inhdr
19488
19489 : see if this is a prot.h system
19490 set prot.h i_prot
19491 eval $inhdr
19492
19493 echo " "
19494 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19495 $cat <<'EOSH' > Cppsym.know
19496 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19497 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19498 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19499 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19500 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19501 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19502 bull c cadmus clipper CMU COFF COMPILER_VERSION
19503 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19504 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19505 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19506 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19507 GLIBC GLIBC_MINOR
19508 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19509 H3050R H3050RX hbullx20 hcx host_mips
19510 hp200 hp300 hp700 HP700 hp800 hp9000
19511 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19512 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19513 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19514 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19515 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19516 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19517 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19518 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19519 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19520 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19521 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19522 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19523 MATH_HAS_NO_SIDE_EFFECTS
19524 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19525 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19526 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19527 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19528 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19529 NetBSD news1500 news1700 news1800 news1900 news3700
19530 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19531 ns32016 ns32332 ns32k nsc32000
19532 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19533 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19534 pc532 pdp11 PGC PIC plexus PORTAR posix
19535 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19536 POSIX_C_SOURCE POSIX_SOURCE POWER
19537 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19538 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19539 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19540 sony sony_news sonyrisc sparc sparclite spectrum
19541 stardent stdc STDC_EXT stratos sun sun3 sun386
19542 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19543 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19544 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19545 sysV68 sysV88 Tek4132 Tek4300 titan
19546 TM3200 TM5400 TM5600
19547 tower tower32 tower32_200 tower32_600 tower32_700
19548 tower32_800 tower32_850 tss
19549 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19550 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19551 unix UNIX95 UNIX99 unixpc unos
19552 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19553 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19554 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19555 USGr4 USGr4_2
19556 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19557 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19558 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19559 z8000
19560 EOSH
19561 # Maybe put other stuff here too.
19562 cat <<EOSH >>Cppsym.know
19563 $osname
19564 EOSH
19565 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19566 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19567 $cat Cppsym.know > Cppsym.c
19568 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19569 $rm -f Cppsym.a Cppsym.b Cppsym.c
19570 cat <<EOSH > Cppsym
19571 $startsh
19572 if $test \$# -gt 0; then
19573     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19574     if $test -s Cppsym.got; then
19575         $rm -f Cppsym.got
19576         exit 0
19577     fi
19578     $rm -f Cppsym.got
19579     exit 1
19580 else
19581     $tr " " "$trnl" | ./Cppsym.try
19582     exit 0
19583 fi
19584 EOSH
19585 chmod +x Cppsym
19586 $eunicefix Cppsym
19587 cat <<EOSH > Cppsym.try
19588 $startsh
19589 cat <<'EOCP' > try.c
19590 #include <stdio.h>
19591 int main() {
19592 EOCP
19593 $awk \\
19594 EOSH
19595 cat <<'EOSH' >> Cppsym.try
19596 'length($1) > 0 {
19597     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
19598     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
19599     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
19600     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
19601 }'       >> try.c
19602 echo 'return 0;}' >> try.c
19603 EOSH
19604 cat <<EOSH >> Cppsym.try
19605 ccflags="$ccflags"
19606 case "$osname-$gccversion" in
19607 irix-) ccflags="\$ccflags -woff 1178" ;;
19608 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19609 esac
19610 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19611 EOSH
19612 chmod +x Cppsym.try
19613 $eunicefix Cppsym.try
19614 ./Cppsym < Cppsym.know > Cppsym.true
19615 : now check the C compiler for additional symbols
19616 postprocess_cc_v=''
19617 case "$osname" in
19618 aix) postprocess_cc_v="|$tr , ' '" ;;
19619 esac
19620 $cat >ccsym <<EOS
19621 $startsh
19622 $cat >tmp.c <<EOF
19623 extern int foo;
19624 EOF
19625 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19626 do
19627         case "\$i" in
19628         -D*) echo "\$i" | $sed 's/^-D//';;
19629         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19630         esac
19631 done
19632 $rm -f try.c
19633 EOS
19634 postprocess_cc_v=''
19635 chmod +x ccsym
19636 $eunicefix ccsym
19637 ./ccsym > ccsym1.raw
19638 if $test -s ccsym1.raw; then
19639        $sort ccsym1.raw | $uniq >ccsym.raw
19640 else
19641        mv ccsym1.raw ccsym.raw
19642 fi
19643
19644 $awk '/\=/ { print $0; next }
19645         { print $0"=1" }' ccsym.raw >ccsym.list
19646 $awk '/\=/ { print $0; next }
19647         { print $0"=1" }' Cppsym.true >ccsym.true
19648 $comm -13 ccsym.true ccsym.list >ccsym.own
19649 $comm -12 ccsym.true ccsym.list >ccsym.com
19650 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19651 also=''
19652 if $test -z ccsym.raw; then
19653         echo "Your C compiler doesn't seem to define any symbols!" >&4
19654         echo " "
19655         echo "However, your C preprocessor defines the following symbols:"
19656         $cat Cppsym.true
19657         ccsymbols=''
19658         cppsymbols=`$cat Cppsym.true`
19659         cppsymbols=`echo $cppsymbols`
19660         cppccsymbols="$cppsymbols"
19661 else
19662         if $test -s ccsym.com; then
19663                 echo "Your C compiler and pre-processor define these symbols:"
19664                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19665                 also='also '
19666                 symbols='ones'
19667                 cppccsymbols=`$cat ccsym.com`
19668                 cppccsymbols=`echo $cppccsymbols`
19669                 $test "$silent" || sleep 1
19670         fi
19671         if $test -s ccsym.cpp; then
19672                 $test "$also" && echo " "
19673                 echo "Your C pre-processor ${also}defines the following symbols:"
19674                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19675                 also='further '
19676                 cppsymbols=`$cat ccsym.cpp`
19677                 cppsymbols=`echo $cppsymbols`
19678                 $test "$silent" || sleep 1
19679         fi
19680         if $test -s ccsym.own; then
19681                 $test "$also" && echo " "
19682                 echo "Your C compiler ${also}defines the following cpp symbols:"
19683                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19684                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19685                 ccsymbols=`$cat ccsym.own`
19686                 ccsymbols=`echo $ccsymbols`
19687                 $test "$silent" || sleep 1
19688         fi
19689 fi
19690
19691 : see if this is a termio system
19692 val="$undef"
19693 val2="$undef"
19694 val3="$undef"
19695 if $test `./findhdr termios.h`; then
19696         set tcsetattr i_termios
19697         eval $inlibc
19698         val3="$i_termios"
19699 fi
19700 echo " "
19701 case "$val3" in
19702 "$define") echo "You have POSIX termios.h... good!" >&4;;
19703 *) if ./Cppsym pyr; then
19704                 case "`/bin/universe`" in
19705                 ucb) if $test `./findhdr sgtty.h`; then
19706                                 val2="$define"
19707                                 echo "<sgtty.h> found." >&4
19708                         else
19709                                 echo "System is pyramid with BSD universe."
19710                                 echo "<sgtty.h> not found--you could have problems." >&4
19711                         fi;;
19712                 *) if $test `./findhdr termio.h`; then
19713                                 val="$define"
19714                                 echo "<termio.h> found." >&4
19715                         else
19716                                 echo "System is pyramid with USG universe."
19717                                 echo "<termio.h> not found--you could have problems." >&4
19718                         fi;;
19719                 esac
19720         elif ./usg; then
19721                 if $test `./findhdr termio.h`; then
19722                         echo "<termio.h> found." >&4
19723                         val="$define"
19724                 elif $test `./findhdr sgtty.h`; then
19725                         echo "<sgtty.h> found." >&4
19726                         val2="$define"
19727                 else
19728 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19729                 fi
19730         else
19731                 if $test `./findhdr sgtty.h`; then
19732                         echo "<sgtty.h> found." >&4
19733                         val2="$define"
19734                 elif $test `./findhdr termio.h`; then
19735                         echo "<termio.h> found." >&4
19736                         val="$define"
19737                 else
19738 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19739                 fi
19740         fi;;
19741 esac
19742 set i_termio; eval $setvar
19743 val=$val2; set i_sgtty; eval $setvar
19744 val=$val3; set i_termios; eval $setvar
19745
19746 : see if stddef is available
19747 set stddef.h i_stddef
19748 eval $inhdr
19749
19750 : see if this is a sunmath.h system
19751 set sunmath.h i_sunmath
19752 eval $inhdr
19753
19754 : see if sys/access.h is available
19755 set sys/access.h i_sysaccess
19756 eval $inhdr
19757
19758 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19759 set sys/filio.h i_sysfilio
19760 eval $inhdr
19761 echo " "
19762 if $test `./findhdr sys/ioctl.h`; then
19763         val="$define"
19764         echo '<sys/ioctl.h> found.' >&4
19765 else
19766         val="$undef"
19767         if $test $i_sysfilio = "$define"; then
19768             echo '<sys/ioctl.h> NOT found.' >&4
19769         else
19770                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19771                 $test $i_termio = "$define" && xxx="termio.h"
19772                 $test $i_termios = "$define" && xxx="termios.h"
19773 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19774         fi
19775 fi
19776 set i_sysioctl
19777 eval $setvar
19778
19779 : see if socket ioctl defs are in sys/sockio.h
19780 echo " "
19781 xxx=`./findhdr sys/sockio.h`
19782 if $test "$xxx"; then
19783         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19784                 val="$define"
19785                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19786         else
19787                 val="$undef"
19788                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19789         fi
19790 else
19791         val="$undef"
19792         $cat <<EOM
19793 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19794 EOM
19795 fi
19796 set i_syssockio
19797 eval $setvar
19798
19799
19800 : see if this is a syslog.h system
19801 set syslog.h i_syslog
19802 eval $inhdr
19803
19804
19805 : see if this is a sys/mode.h system
19806 set sys/mode.h i_sysmode
19807 eval $inhdr
19808
19809 : see if sys/resource.h has to be included
19810 set sys/resource.h i_sysresrc
19811 eval $inhdr
19812
19813 : see if sys/security.h is available
19814 set sys/security.h i_syssecrt
19815 eval $inhdr
19816
19817 : see if this is a sys/statvfs.h system
19818 set sys/statvfs.h i_sysstatvfs
19819 eval $inhdr
19820
19821 : see if this is a sys/un.h system
19822 set sys/un.h i_sysun
19823 eval $inhdr
19824
19825
19826 : see if this is a sys/utsname.h system
19827 set sys/utsname.h i_sysutsname
19828 eval $inhdr
19829
19830 : see if this is a syswait system
19831 set sys/wait.h i_syswait
19832 eval $inhdr
19833
19834 : see if this is a ustat.h system
19835 set ustat.h i_ustat
19836 eval $inhdr
19837
19838 : see if this is an utime system
19839 set utime.h i_utime
19840 eval $inhdr
19841
19842 : see if this is a values.h system
19843 set values.h i_values
19844 eval $inhdr
19845
19846 : see if this is a vfork system
19847 case "$d_vfork" in
19848 "$define")
19849         set vfork.h i_vfork
19850         eval $inhdr
19851         ;;
19852 *)
19853         i_vfork="$undef"
19854         ;;
19855 esac
19856
19857 : see if gdbm.h is available
19858 set gdbm.h t_gdbm
19859 eval $inhdr
19860 case "$t_gdbm" in
19861 $define)
19862         : see if gdbm_open exists
19863         set gdbm_open d_gdbm_open
19864         eval $inlibc
19865         case "$d_gdbm_open" in
19866         $undef)
19867                 t_gdbm="$undef"
19868                 echo "We won't be including <gdbm.h>"
19869                 ;;
19870         esac
19871         ;;
19872 esac
19873 val="$t_gdbm"
19874 set i_gdbm
19875 eval $setvar
19876
19877 echo " "
19878 echo "Looking for extensions..." >&4
19879 : If we are using the old config.sh, known_extensions may contain
19880 : old or inaccurate or duplicate values.
19881 known_extensions=''
19882 nonxs_extensions=''
19883 : We do not use find because it might not be available.
19884 : We do not just use MANIFEST because the user may have dropped
19885 : some additional extensions into the source tree and expect them
19886 : to be built.
19887
19888 : Function to recursively find available extensions, ignoring DynaLoader
19889 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19890 find_extensions='
19891     for xxx in *; do
19892        case "$xxx" in
19893            DynaLoader|dynaload) ;;
19894            *)
19895            if $test -f $xxx/$xxx.xs; then
19896                known_extensions="$known_extensions $1$xxx";
19897            elif $test -f $xxx/Makefile.PL; then
19898                nonxs_extensions="$nonxs_extensions $1$xxx";
19899            else
19900                if $test -d $xxx -a $# -lt 10; then
19901                    set $1$xxx/ $*;
19902                    cd "$xxx";
19903                    eval $find_extensions;
19904                    cd ..;
19905                    shift;
19906                fi;
19907            fi
19908            ;;
19909        esac;
19910     done'
19911 tdir=`pwd`
19912 cd "$rsrc/ext"
19913 set X
19914 shift
19915 eval $find_extensions
19916 # Special case:  Add in threads/shared since it is not picked up by the
19917 # recursive find above (and adding in general recursive finding breaks
19918 # SDBM_File/sdbm).  A.D.  10/25/2001.
19919 known_extensions="$known_extensions threads/shared"
19920 set X $nonxs_extensions
19921 shift
19922 nonxs_extensions="$*"
19923 set X $known_extensions
19924 shift
19925 known_extensions="$*"
19926 cd "$tdir"
19927
19928 : Now see which are supported on this system.
19929 avail_ext=''
19930 for xxx in $known_extensions ; do
19931         case "$xxx" in
19932         DB_File|db_file)
19933                 case "$i_db" in
19934                 $define) avail_ext="$avail_ext $xxx" ;;
19935                 esac
19936                 ;;
19937         GDBM_File|gdbm_fil)
19938                 case "$i_gdbm" in 
19939                 $define) avail_ext="$avail_ext $xxx" ;;
19940                 esac
19941                 ;;
19942         I18N/Langinfo|i18n_lan)
19943                 case "$i_langinfo$d_nl_langinfo" in 
19944                 $define$define) avail_ext="$avail_ext $xxx" ;;
19945                 esac
19946                 ;;
19947         NDBM_File|ndbm_fil)
19948                 case "$i_ndbm" in
19949                 $define)
19950                     case "$osname-$use64bitint" in
19951                     hpux-define)
19952                         case "$libs" in
19953                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
19954                         esac
19955                         ;;
19956                     *) avail_ext="$avail_ext $xxx" ;;
19957                     esac
19958                     ;;
19959                 esac
19960                 ;;
19961         ODBM_File|odbm_fil) 
19962                 case "${i_dbm}${i_rpcsvcdbm}" in
19963                 *"${define}"*)
19964                     case "$osname-$use64bitint" in
19965                     hpux-define)
19966                         case "$libs" in
19967                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
19968                         esac
19969                         ;;
19970                     *) avail_ext="$avail_ext $xxx" ;;
19971                     esac
19972                     ;;
19973                 esac
19974                 ;;
19975         POSIX|posix)
19976                 case "$useposix" in
19977                 true|define|y) avail_ext="$avail_ext $xxx" ;;
19978                 esac
19979                 ;;
19980         Opcode|opcode)
19981                 case "$useopcode" in
19982                 true|define|y) avail_ext="$avail_ext $xxx" ;;
19983                 esac
19984                 ;;
19985         Socket|socket)
19986                 case "$d_socket" in 
19987                 true|$define|y)
19988                     case "$osname" in
19989                     beos) ;; # not unless BONE
19990                     *) avail_ext="$avail_ext $xxx" ;;
19991                     esac
19992                     ;;
19993                 esac
19994                 ;;
19995         Sys/Syslog|sys/syslog)
19996                 : XXX syslog requires socket
19997                 case "$d_socket" in 
19998                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
19999                 esac
20000                 ;;
20001         Thread|thread)
20002                 case "$usethreads" in
20003                 true|$define|y)
20004                         case "$useithreads" in
20005                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20006                         esac
20007                 esac
20008                 ;;
20009         XS/APItest|xs/apitest)
20010                 # This is just for testing.  Skip it unless we have dynamic loading.
20011
20012                 case "$usedl" in
20013                 $define) avail_ext="$avail_ext $xxx" ;;
20014                 esac
20015                 ;;
20016         XS/Typemap|xs/typemap)
20017                 # This is just for testing.  Skip it unless we have dynamic loading.
20018                 case "$usedl" in
20019                 $define) avail_ext="$avail_ext $xxx" ;;
20020                 esac
20021                 ;;
20022         threads|threads/shared)
20023                 # threads and threads::shared are special cases.
20024                 # To stop people from asking "Perl 5.8.0 was supposed
20025                 # to have this new fancy threads implementation but my
20026                 # perl doesn't have it" and from people trying to
20027                 # (re)install the threads module using CPAN.pm and
20028                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20029                 # the threads.pm and threads/shared.pm will always be
20030                 # there, croaking informatively ("you need to rebuild
20031                 # all of Perl with threads, sorry") when threads haven't
20032                 # been compiled in.
20033                 # --jhi
20034                 avail_ext="$avail_ext $xxx"
20035                 ;;
20036         IPC/SysV|ipc/sysv)
20037                 : XXX Do we need a useipcsysv variable here
20038                 case "${d_msg}${d_sem}${d_shm}" in 
20039                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20040                 esac
20041                 ;;
20042         *)      avail_ext="$avail_ext $xxx"
20043                 ;;
20044         esac
20045 done
20046
20047 set X $avail_ext
20048 shift
20049 avail_ext="$*"
20050
20051 : Now see which nonxs extensions are supported on this system.
20052 : For now assume all are.
20053 nonxs_ext=''
20054 for xxx in $nonxs_extensions ; do
20055         case "$xxx" in
20056         *)      nonxs_ext="$nonxs_ext $xxx"
20057                 ;;
20058         esac
20059 done
20060
20061 set X $nonxs_ext
20062 shift
20063 nonxs_ext="$*"
20064
20065 case $usedl in
20066 $define)
20067         $cat <<EOM
20068 A number of extensions are supplied with $package.  You may choose to
20069 compile these extensions for dynamic loading (the default), compile
20070 them into the $package executable (static loading), or not include
20071 them at all.  Answer "none" to include no extensions.
20072 Note that DynaLoader is always built and need not be mentioned here.
20073
20074 EOM
20075         case "$dynamic_ext" in
20076         '')
20077                 : Exclude those listed in static_ext
20078                 dflt=''
20079                 for xxx in $avail_ext; do
20080                         case " $static_ext " in
20081                         *" $xxx "*) ;;
20082                         *) dflt="$dflt $xxx" ;;
20083                         esac
20084                 done
20085                 set X $dflt
20086                 shift
20087                 dflt="$*"
20088                 ;;
20089         *)      dflt="$dynamic_ext"
20090                 # Perhaps we are reusing an old out-of-date config.sh.
20091                 case "$hint" in
20092                 previous)
20093                         if test X"$dynamic_ext" != X"$avail_ext"; then
20094                                 $cat <<EOM
20095 NOTICE:  Your previous config.sh list may be incorrect. 
20096 The extensions now available to you are 
20097         ${avail_ext}
20098 but the default list from your previous config.sh is
20099         ${dynamic_ext} 
20100
20101 EOM
20102                         fi
20103                         ;;
20104                 esac
20105                 ;;
20106         esac
20107         case "$dflt" in
20108         '')     dflt=none;;
20109         esac
20110         rp="What extensions do you wish to load dynamically?"
20111         . ./myread
20112         case "$ans" in
20113         none) dynamic_ext=' ' ;;
20114         *) dynamic_ext="$ans" ;;
20115         esac
20116
20117         case "$static_ext" in
20118         '')
20119                 : Exclude those already listed in dynamic linking
20120                 dflt=''
20121                 for xxx in $avail_ext; do
20122                         case " $dynamic_ext " in
20123                         *" $xxx "*) ;;
20124                         *) dflt="$dflt $xxx" ;;
20125                         esac
20126                 done
20127                 set X $dflt
20128                 shift
20129                 dflt="$*"
20130                 ;;
20131         *)  dflt="$static_ext" 
20132                 ;;
20133         esac
20134
20135         case "$dflt" in
20136         '')     dflt=none;;
20137         esac
20138         rp="What extensions do you wish to load statically?"
20139         . ./myread
20140         case "$ans" in
20141         none) static_ext=' ' ;;
20142         *) static_ext="$ans" ;;
20143         esac
20144         ;;
20145 *)
20146         $cat <<EOM
20147 A number of extensions are supplied with $package.  Answer "none" 
20148 to include no extensions. 
20149 Note that DynaLoader is always built and need not be mentioned here.
20150
20151 EOM
20152         case "$static_ext" in
20153         '') dflt="$avail_ext" ;;
20154         *)      dflt="$static_ext"
20155                 # Perhaps we are reusing an old out-of-date config.sh.
20156                 case "$hint" in
20157                 previous)
20158                         if test X"$static_ext" != X"$avail_ext"; then
20159                                 $cat <<EOM
20160 NOTICE:  Your previous config.sh list may be incorrect. 
20161 The extensions now available to you are 
20162         ${avail_ext}
20163 but the default list from your previous config.sh is
20164         ${static_ext} 
20165
20166 EOM
20167                         fi
20168                         ;;
20169                 esac
20170                 ;;
20171         esac
20172         : Exclude those that are not xs extensions
20173         case "$dflt" in
20174         '')     dflt=none;;
20175         esac
20176         rp="What extensions do you wish to include?"
20177         . ./myread
20178         case "$ans" in
20179         none) static_ext=' ' ;;
20180         *) static_ext="$ans" ;;
20181         esac
20182         ;;
20183 esac
20184 #        
20185 # Encode is a special case.  If we are building Encode as a static
20186 # extension, we need to explicitly list its subextensions as well.
20187 # For other nested extensions, this is handled automatically by
20188 # the appropriate Makefile.PL.
20189 case " $static_ext " in
20190         *" Encode "*) # Add the subextensions of Encode
20191         cd "$rsrc/ext"
20192         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20193                 static_ext="$static_ext Encode/$xxx"
20194         done
20195         cd "$tdir"
20196         ;;
20197 esac
20198
20199 set X $dynamic_ext $static_ext $nonxs_ext
20200 shift
20201 extensions="$*"
20202
20203 : Remove libraries needed only for extensions
20204 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20205 : The exception is SunOS 4.x, which needs them.
20206 case "${osname}X${osvers}" in
20207 sunos*X4*)
20208     perllibs="$libs"
20209     ;;
20210 *) case "$usedl" in
20211     $define|true|[yY]*)
20212             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20213             shift
20214             perllibs="$*"
20215             ;;
20216     *)  perllibs="$libs"
20217             ;;
20218     esac
20219     ;;
20220 esac
20221
20222 : Remove build directory name from cppstdin so it can be used from
20223 : either the present location or the final installed location.
20224 echo " "
20225 : Get out of the UU directory to get correct path name.
20226 cd ..
20227 case "$cppstdin" in
20228 `pwd`/cppstdin)
20229         echo "Stripping down cppstdin path name"
20230         cppstdin=cppstdin
20231         ;;
20232 esac
20233 cd UU
20234
20235 : end of configuration questions
20236 echo " "
20237 echo "End of configuration questions."
20238 echo " "
20239
20240 : back to where it started
20241 if test -d ../UU; then
20242         cd ..
20243 fi
20244
20245 : configuration may be patched via a 'config.arch' file
20246 if $test -f config.arch; then
20247         echo "I see a config.arch file, loading it."
20248         . ./config.arch
20249 fi
20250
20251 : configuration may be patched via a 'config.over' file
20252 if $test -f config.over; then
20253         echo " "
20254         dflt=y
20255         rp='I see a config.over file.  Do you wish to load it?'
20256         . UU/myread
20257         case "$ans" in
20258         n*) echo "OK, I'll ignore it.";;
20259         *)      . ./config.over
20260                 echo "Configuration override changes have been loaded."
20261                 ;;
20262         esac
20263 fi
20264
20265 : in case they want portability, strip down executable paths
20266 case "$d_portable" in
20267 "$define")
20268         echo " "
20269         echo "Stripping down executable paths..." >&4
20270         for file in $loclist $trylist; do
20271                 eval temp=\$$file
20272                 eval $file=`basename $temp`
20273         done
20274         ;;
20275 esac
20276
20277 : create config.sh file
20278 echo " "
20279 echo "Creating config.sh..." >&4
20280 $spitshell <<EOT >config.sh
20281 $startsh
20282 #
20283 # This file was produced by running the Configure script. It holds all the
20284 # definitions figured out by Configure. Should you modify one of these values,
20285 # do not forget to propagate your changes by running "Configure -der". You may
20286 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20287 #
20288
20289 # Package name      : $package
20290 # Source directory  : $src
20291 # Configuration time: $cf_time
20292 # Configured by     : $cf_by
20293 # Target system     : $myuname
20294
20295 Author='$Author'
20296 Date='$Date'
20297 Header='$Header'
20298 Id='$Id'
20299 Locker='$Locker'
20300 Log='$Log'
20301 Mcc='$Mcc'
20302 RCSfile='$RCSfile'
20303 Revision='$Revision'
20304 Source='$Source'
20305 State='$State'
20306 _a='$_a'
20307 _exe='$_exe'
20308 _o='$_o'
20309 afs='$afs'
20310 afsroot='$afsroot'
20311 alignbytes='$alignbytes'
20312 ansi2knr='$ansi2knr'
20313 aphostname='$aphostname'
20314 api_revision='$api_revision'
20315 api_subversion='$api_subversion'
20316 api_version='$api_version'
20317 api_versionstring='$api_versionstring'
20318 ar='$ar'
20319 archlib='$archlib'
20320 archlibexp='$archlibexp'
20321 archname64='$archname64'
20322 archname='$archname'
20323 archobjs='$archobjs'
20324 asctime_r_proto='$asctime_r_proto'
20325 awk='$awk'
20326 baserev='$baserev'
20327 bash='$bash'
20328 bin='$bin'
20329 binexp='$binexp'
20330 bison='$bison'
20331 byacc='$byacc'
20332 byteorder='$byteorder'
20333 c='$c'
20334 castflags='$castflags'
20335 cat='$cat'
20336 cc='$cc'
20337 cccdlflags='$cccdlflags'
20338 ccdlflags='$ccdlflags'
20339 ccflags='$ccflags'
20340 ccflags_uselargefiles='$ccflags_uselargefiles'
20341 ccname='$ccname'
20342 ccsymbols='$ccsymbols'
20343 ccversion='$ccversion'
20344 cf_by='$cf_by'
20345 cf_email='$cf_email'
20346 cf_time='$cf_time'
20347 charsize='$charsize'
20348 chgrp='$chgrp'
20349 chmod='$chmod'
20350 chown='$chown'
20351 clocktype='$clocktype'
20352 comm='$comm'
20353 compress='$compress'
20354 contains='$contains'
20355 cp='$cp'
20356 cpio='$cpio'
20357 cpp='$cpp'
20358 cpp_stuff='$cpp_stuff'
20359 cppccsymbols='$cppccsymbols'
20360 cppflags='$cppflags'
20361 cpplast='$cpplast'
20362 cppminus='$cppminus'
20363 cpprun='$cpprun'
20364 cppstdin='$cppstdin'
20365 cppsymbols='$cppsymbols'
20366 crypt_r_proto='$crypt_r_proto'
20367 cryptlib='$cryptlib'
20368 csh='$csh'
20369 ctermid_r_proto='$ctermid_r_proto'
20370 ctime_r_proto='$ctime_r_proto'
20371 d_Gconvert='$d_Gconvert'
20372 d_PRIEUldbl='$d_PRIEUldbl'
20373 d_PRIFUldbl='$d_PRIFUldbl'
20374 d_PRIGUldbl='$d_PRIGUldbl'
20375 d_PRIXU64='$d_PRIXU64'
20376 d_PRId64='$d_PRId64'
20377 d_PRIeldbl='$d_PRIeldbl'
20378 d_PRIfldbl='$d_PRIfldbl'
20379 d_PRIgldbl='$d_PRIgldbl'
20380 d_PRIi64='$d_PRIi64'
20381 d_PRIo64='$d_PRIo64'
20382 d_PRIu64='$d_PRIu64'
20383 d_PRIx64='$d_PRIx64'
20384 d_SCNfldbl='$d_SCNfldbl'
20385 d__fwalk='$d__fwalk'
20386 d_access='$d_access'
20387 d_accessx='$d_accessx'
20388 d_aintl='$d_aintl'
20389 d_alarm='$d_alarm'
20390 d_archlib='$d_archlib'
20391 d_asctime_r='$d_asctime_r'
20392 d_atolf='$d_atolf'
20393 d_atoll='$d_atoll'
20394 d_attribut='$d_attribut'
20395 d_bcmp='$d_bcmp'
20396 d_bcopy='$d_bcopy'
20397 d_bsd='$d_bsd'
20398 d_bsdgetpgrp='$d_bsdgetpgrp'
20399 d_bsdsetpgrp='$d_bsdsetpgrp'
20400 d_bzero='$d_bzero'
20401 d_casti32='$d_casti32'
20402 d_castneg='$d_castneg'
20403 d_charvspr='$d_charvspr'
20404 d_chown='$d_chown'
20405 d_chroot='$d_chroot'
20406 d_chsize='$d_chsize'
20407 d_class='$d_class'
20408 d_closedir='$d_closedir'
20409 d_cmsghdr_s='$d_cmsghdr_s'
20410 d_const='$d_const'
20411 d_copysignl='$d_copysignl'
20412 d_crypt='$d_crypt'
20413 d_crypt_r='$d_crypt_r'
20414 d_csh='$d_csh'
20415 d_ctermid_r='$d_ctermid_r'
20416 d_ctime_r='$d_ctime_r'
20417 d_cuserid='$d_cuserid'
20418 d_dbl_dig='$d_dbl_dig'
20419 d_dbminitproto='$d_dbminitproto'
20420 d_difftime='$d_difftime'
20421 d_dirfd='$d_dirfd'
20422 d_dirnamlen='$d_dirnamlen'
20423 d_dlerror='$d_dlerror'
20424 d_dlopen='$d_dlopen'
20425 d_dlsymun='$d_dlsymun'
20426 d_dosuid='$d_dosuid'
20427 d_drand48_r='$d_drand48_r'
20428 d_drand48proto='$d_drand48proto'
20429 d_dup2='$d_dup2'
20430 d_eaccess='$d_eaccess'
20431 d_endgrent='$d_endgrent'
20432 d_endgrent_r='$d_endgrent_r'
20433 d_endhent='$d_endhent'
20434 d_endhostent_r='$d_endhostent_r'
20435 d_endnent='$d_endnent'
20436 d_endnetent_r='$d_endnetent_r'
20437 d_endpent='$d_endpent'
20438 d_endprotoent_r='$d_endprotoent_r'
20439 d_endpwent='$d_endpwent'
20440 d_endpwent_r='$d_endpwent_r'
20441 d_endsent='$d_endsent'
20442 d_endservent_r='$d_endservent_r'
20443 d_eofnblk='$d_eofnblk'
20444 d_eunice='$d_eunice'
20445 d_fchdir='$d_fchdir'
20446 d_fchmod='$d_fchmod'
20447 d_fchown='$d_fchown'
20448 d_fcntl='$d_fcntl'
20449 d_fcntl_can_lock='$d_fcntl_can_lock'
20450 d_fd_macros='$d_fd_macros'
20451 d_fd_set='$d_fd_set'
20452 d_fds_bits='$d_fds_bits'
20453 d_fgetpos='$d_fgetpos'
20454 d_finite='$d_finite'
20455 d_finitel='$d_finitel'
20456 d_flexfnam='$d_flexfnam'
20457 d_flock='$d_flock'
20458 d_flockproto='$d_flockproto'
20459 d_fork='$d_fork'
20460 d_fp_class='$d_fp_class'
20461 d_fpathconf='$d_fpathconf'
20462 d_fpclass='$d_fpclass'
20463 d_fpclassify='$d_fpclassify'
20464 d_fpclassl='$d_fpclassl'
20465 d_fpos64_t='$d_fpos64_t'
20466 d_frexpl='$d_frexpl'
20467 d_fs_data_s='$d_fs_data_s'
20468 d_fseeko='$d_fseeko'
20469 d_fsetpos='$d_fsetpos'
20470 d_fstatfs='$d_fstatfs'
20471 d_fstatvfs='$d_fstatvfs'
20472 d_fsync='$d_fsync'
20473 d_ftello='$d_ftello'
20474 d_ftime='$d_ftime'
20475 d_getcwd='$d_getcwd'
20476 d_getespwnam='$d_getespwnam'
20477 d_getfsstat='$d_getfsstat'
20478 d_getgrent='$d_getgrent'
20479 d_getgrent_r='$d_getgrent_r'
20480 d_getgrgid_r='$d_getgrgid_r'
20481 d_getgrnam_r='$d_getgrnam_r'
20482 d_getgrps='$d_getgrps'
20483 d_gethbyaddr='$d_gethbyaddr'
20484 d_gethbyname='$d_gethbyname'
20485 d_gethent='$d_gethent'
20486 d_gethname='$d_gethname'
20487 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20488 d_gethostbyname_r='$d_gethostbyname_r'
20489 d_gethostent_r='$d_gethostent_r'
20490 d_gethostprotos='$d_gethostprotos'
20491 d_getitimer='$d_getitimer'
20492 d_getlogin='$d_getlogin'
20493 d_getlogin_r='$d_getlogin_r'
20494 d_getmnt='$d_getmnt'
20495 d_getmntent='$d_getmntent'
20496 d_getnbyaddr='$d_getnbyaddr'
20497 d_getnbyname='$d_getnbyname'
20498 d_getnent='$d_getnent'
20499 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20500 d_getnetbyname_r='$d_getnetbyname_r'
20501 d_getnetent_r='$d_getnetent_r'
20502 d_getnetprotos='$d_getnetprotos'
20503 d_getpagsz='$d_getpagsz'
20504 d_getpbyname='$d_getpbyname'
20505 d_getpbynumber='$d_getpbynumber'
20506 d_getpent='$d_getpent'
20507 d_getpgid='$d_getpgid'
20508 d_getpgrp2='$d_getpgrp2'
20509 d_getpgrp='$d_getpgrp'
20510 d_getppid='$d_getppid'
20511 d_getprior='$d_getprior'
20512 d_getprotobyname_r='$d_getprotobyname_r'
20513 d_getprotobynumber_r='$d_getprotobynumber_r'
20514 d_getprotoent_r='$d_getprotoent_r'
20515 d_getprotoprotos='$d_getprotoprotos'
20516 d_getprpwnam='$d_getprpwnam'
20517 d_getpwent='$d_getpwent'
20518 d_getpwent_r='$d_getpwent_r'
20519 d_getpwnam_r='$d_getpwnam_r'
20520 d_getpwuid_r='$d_getpwuid_r'
20521 d_getsbyname='$d_getsbyname'
20522 d_getsbyport='$d_getsbyport'
20523 d_getsent='$d_getsent'
20524 d_getservbyname_r='$d_getservbyname_r'
20525 d_getservbyport_r='$d_getservbyport_r'
20526 d_getservent_r='$d_getservent_r'
20527 d_getservprotos='$d_getservprotos'
20528 d_getspnam='$d_getspnam'
20529 d_getspnam_r='$d_getspnam_r'
20530 d_gettimeod='$d_gettimeod'
20531 d_gmtime_r='$d_gmtime_r'
20532 d_gnulibc='$d_gnulibc'
20533 d_grpasswd='$d_grpasswd'
20534 d_hasmntopt='$d_hasmntopt'
20535 d_htonl='$d_htonl'
20536 d_ilogbl='$d_ilogbl'
20537 d_index='$d_index'
20538 d_inetaton='$d_inetaton'
20539 d_int64_t='$d_int64_t'
20540 d_isascii='$d_isascii'
20541 d_isfinite='$d_isfinite'
20542 d_isinf='$d_isinf'
20543 d_isnan='$d_isnan'
20544 d_isnanl='$d_isnanl'
20545 d_killpg='$d_killpg'
20546 d_lchown='$d_lchown'
20547 d_ldbl_dig='$d_ldbl_dig'
20548 d_link='$d_link'
20549 d_localtime_r='$d_localtime_r'
20550 d_locconv='$d_locconv'
20551 d_lockf='$d_lockf'
20552 d_longdbl='$d_longdbl'
20553 d_longlong='$d_longlong'
20554 d_lseekproto='$d_lseekproto'
20555 d_lstat='$d_lstat'
20556 d_madvise='$d_madvise'
20557 d_mblen='$d_mblen'
20558 d_mbstowcs='$d_mbstowcs'
20559 d_mbtowc='$d_mbtowc'
20560 d_memchr='$d_memchr'
20561 d_memcmp='$d_memcmp'
20562 d_memcpy='$d_memcpy'
20563 d_memmove='$d_memmove'
20564 d_memset='$d_memset'
20565 d_mkdir='$d_mkdir'
20566 d_mkdtemp='$d_mkdtemp'
20567 d_mkfifo='$d_mkfifo'
20568 d_mkstemp='$d_mkstemp'
20569 d_mkstemps='$d_mkstemps'
20570 d_mktime='$d_mktime'
20571 d_mmap='$d_mmap'
20572 d_modfl='$d_modfl'
20573 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20574 d_modflproto='$d_modflproto'
20575 d_mprotect='$d_mprotect'
20576 d_msg='$d_msg'
20577 d_msg_ctrunc='$d_msg_ctrunc'
20578 d_msg_dontroute='$d_msg_dontroute'
20579 d_msg_oob='$d_msg_oob'
20580 d_msg_peek='$d_msg_peek'
20581 d_msg_proxy='$d_msg_proxy'
20582 d_msgctl='$d_msgctl'
20583 d_msgget='$d_msgget'
20584 d_msghdr_s='$d_msghdr_s'
20585 d_msgrcv='$d_msgrcv'
20586 d_msgsnd='$d_msgsnd'
20587 d_msync='$d_msync'
20588 d_munmap='$d_munmap'
20589 d_mymalloc='$d_mymalloc'
20590 d_nanosleep='$d_nanosleep'
20591 d_nice='$d_nice'
20592 d_nl_langinfo='$d_nl_langinfo'
20593 d_nv_preserves_uv='$d_nv_preserves_uv'
20594 d_off64_t='$d_off64_t'
20595 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20596 d_oldpthreads='$d_oldpthreads'
20597 d_oldsock='$d_oldsock'
20598 d_open3='$d_open3'
20599 d_pathconf='$d_pathconf'
20600 d_pause='$d_pause'
20601 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20602 d_phostname='$d_phostname'
20603 d_pipe='$d_pipe'
20604 d_poll='$d_poll'
20605 d_portable='$d_portable'
20606 d_procselfexe='$d_procselfexe'
20607 d_pthread_atfork='$d_pthread_atfork'
20608 d_pthread_yield='$d_pthread_yield'
20609 d_pwage='$d_pwage'
20610 d_pwchange='$d_pwchange'
20611 d_pwclass='$d_pwclass'
20612 d_pwcomment='$d_pwcomment'
20613 d_pwexpire='$d_pwexpire'
20614 d_pwgecos='$d_pwgecos'
20615 d_pwpasswd='$d_pwpasswd'
20616 d_pwquota='$d_pwquota'
20617 d_qgcvt='$d_qgcvt'
20618 d_quad='$d_quad'
20619 d_random_r='$d_random_r'
20620 d_readdir64_r='$d_readdir64_r'
20621 d_readdir='$d_readdir'
20622 d_readdir_r='$d_readdir_r'
20623 d_readlink='$d_readlink'
20624 d_readv='$d_readv'
20625 d_recvmsg='$d_recvmsg'
20626 d_rename='$d_rename'
20627 d_rewinddir='$d_rewinddir'
20628 d_rmdir='$d_rmdir'
20629 d_safebcpy='$d_safebcpy'
20630 d_safemcpy='$d_safemcpy'
20631 d_sanemcmp='$d_sanemcmp'
20632 d_sbrkproto='$d_sbrkproto'
20633 d_scalbnl='$d_scalbnl'
20634 d_sched_yield='$d_sched_yield'
20635 d_scm_rights='$d_scm_rights'
20636 d_seekdir='$d_seekdir'
20637 d_select='$d_select'
20638 d_sem='$d_sem'
20639 d_semctl='$d_semctl'
20640 d_semctl_semid_ds='$d_semctl_semid_ds'
20641 d_semctl_semun='$d_semctl_semun'
20642 d_semget='$d_semget'
20643 d_semop='$d_semop'
20644 d_sendmsg='$d_sendmsg'
20645 d_setegid='$d_setegid'
20646 d_seteuid='$d_seteuid'
20647 d_setgrent='$d_setgrent'
20648 d_setgrent_r='$d_setgrent_r'
20649 d_setgrps='$d_setgrps'
20650 d_sethent='$d_sethent'
20651 d_sethostent_r='$d_sethostent_r'
20652 d_setitimer='$d_setitimer'
20653 d_setlinebuf='$d_setlinebuf'
20654 d_setlocale='$d_setlocale'
20655 d_setlocale_r='$d_setlocale_r'
20656 d_setnent='$d_setnent'
20657 d_setnetent_r='$d_setnetent_r'
20658 d_setpent='$d_setpent'
20659 d_setpgid='$d_setpgid'
20660 d_setpgrp2='$d_setpgrp2'
20661 d_setpgrp='$d_setpgrp'
20662 d_setprior='$d_setprior'
20663 d_setproctitle='$d_setproctitle'
20664 d_setprotoent_r='$d_setprotoent_r'
20665 d_setpwent='$d_setpwent'
20666 d_setpwent_r='$d_setpwent_r'
20667 d_setregid='$d_setregid'
20668 d_setresgid='$d_setresgid'
20669 d_setresuid='$d_setresuid'
20670 d_setreuid='$d_setreuid'
20671 d_setrgid='$d_setrgid'
20672 d_setruid='$d_setruid'
20673 d_setsent='$d_setsent'
20674 d_setservent_r='$d_setservent_r'
20675 d_setsid='$d_setsid'
20676 d_setvbuf='$d_setvbuf'
20677 d_sfio='$d_sfio'
20678 d_shm='$d_shm'
20679 d_shmat='$d_shmat'
20680 d_shmatprototype='$d_shmatprototype'
20681 d_shmctl='$d_shmctl'
20682 d_shmdt='$d_shmdt'
20683 d_shmget='$d_shmget'
20684 d_sigaction='$d_sigaction'
20685 d_sigprocmask='$d_sigprocmask'
20686 d_sigsetjmp='$d_sigsetjmp'
20687 d_sockatmark='$d_sockatmark'
20688 d_sockatmarkproto='$d_sockatmarkproto'
20689 d_socket='$d_socket'
20690 d_socklen_t='$d_socklen_t'
20691 d_sockpair='$d_sockpair'
20692 d_socks5_init='$d_socks5_init'
20693 d_sqrtl='$d_sqrtl'
20694 d_srand48_r='$d_srand48_r'
20695 d_srandom_r='$d_srandom_r'
20696 d_sresgproto='$d_sresgproto'
20697 d_sresuproto='$d_sresuproto'
20698 d_statblks='$d_statblks'
20699 d_statfs_f_flags='$d_statfs_f_flags'
20700 d_statfs_s='$d_statfs_s'
20701 d_statvfs='$d_statvfs'
20702 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20703 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20704 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20705 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20706 d_stdio_stream_array='$d_stdio_stream_array'
20707 d_stdiobase='$d_stdiobase'
20708 d_stdstdio='$d_stdstdio'
20709 d_strchr='$d_strchr'
20710 d_strcoll='$d_strcoll'
20711 d_strctcpy='$d_strctcpy'
20712 d_strerrm='$d_strerrm'
20713 d_strerror='$d_strerror'
20714 d_strerror_r='$d_strerror_r'
20715 d_strftime='$d_strftime'
20716 d_strtod='$d_strtod'
20717 d_strtol='$d_strtol'
20718 d_strtold='$d_strtold'
20719 d_strtoll='$d_strtoll'
20720 d_strtoq='$d_strtoq'
20721 d_strtoul='$d_strtoul'
20722 d_strtoull='$d_strtoull'
20723 d_strtouq='$d_strtouq'
20724 d_strxfrm='$d_strxfrm'
20725 d_suidsafe='$d_suidsafe'
20726 d_symlink='$d_symlink'
20727 d_syscall='$d_syscall'
20728 d_syscallproto='$d_syscallproto'
20729 d_sysconf='$d_sysconf'
20730 d_sysernlst='$d_sysernlst'
20731 d_syserrlst='$d_syserrlst'
20732 d_system='$d_system'
20733 d_tcgetpgrp='$d_tcgetpgrp'
20734 d_tcsetpgrp='$d_tcsetpgrp'
20735 d_telldir='$d_telldir'
20736 d_telldirproto='$d_telldirproto'
20737 d_time='$d_time'
20738 d_times='$d_times'
20739 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20740 d_tm_tm_zone='$d_tm_tm_zone'
20741 d_tmpnam_r='$d_tmpnam_r'
20742 d_truncate='$d_truncate'
20743 d_ttyname_r='$d_ttyname_r'
20744 d_tzname='$d_tzname'
20745 d_u32align='$d_u32align'
20746 d_ualarm='$d_ualarm'
20747 d_umask='$d_umask'
20748 d_uname='$d_uname'
20749 d_union_semun='$d_union_semun'
20750 d_unordered='$d_unordered'
20751 d_usleep='$d_usleep'
20752 d_usleepproto='$d_usleepproto'
20753 d_ustat='$d_ustat'
20754 d_vendorarch='$d_vendorarch'
20755 d_vendorbin='$d_vendorbin'
20756 d_vendorlib='$d_vendorlib'
20757 d_vendorscript='$d_vendorscript'
20758 d_vfork='$d_vfork'
20759 d_void_closedir='$d_void_closedir'
20760 d_voidsig='$d_voidsig'
20761 d_voidtty='$d_voidtty'
20762 d_volatile='$d_volatile'
20763 d_vprintf='$d_vprintf'
20764 d_wait4='$d_wait4'
20765 d_waitpid='$d_waitpid'
20766 d_wcstombs='$d_wcstombs'
20767 d_wctomb='$d_wctomb'
20768 d_writev='$d_writev'
20769 d_xenix='$d_xenix'
20770 date='$date'
20771 db_hashtype='$db_hashtype'
20772 db_prefixtype='$db_prefixtype'
20773 db_version_major='$db_version_major'
20774 db_version_minor='$db_version_minor'
20775 db_version_patch='$db_version_patch'
20776 defvoidused='$defvoidused'
20777 direntrytype='$direntrytype'
20778 dlext='$dlext'
20779 dlsrc='$dlsrc'
20780 doublesize='$doublesize'
20781 drand01='$drand01'
20782 drand48_r_proto='$drand48_r_proto'
20783 dynamic_ext='$dynamic_ext'
20784 eagain='$eagain'
20785 ebcdic='$ebcdic'
20786 echo='$echo'
20787 egrep='$egrep'
20788 emacs='$emacs'
20789 endgrent_r_proto='$endgrent_r_proto'
20790 endhostent_r_proto='$endhostent_r_proto'
20791 endnetent_r_proto='$endnetent_r_proto'
20792 endprotoent_r_proto='$endprotoent_r_proto'
20793 endpwent_r_proto='$endpwent_r_proto'
20794 endservent_r_proto='$endservent_r_proto'
20795 eunicefix='$eunicefix'
20796 exe_ext='$exe_ext'
20797 expr='$expr'
20798 extensions='$extensions'
20799 extras='$extras'
20800 fflushNULL='$fflushNULL'
20801 fflushall='$fflushall'
20802 find='$find'
20803 firstmakefile='$firstmakefile'
20804 flex='$flex'
20805 fpossize='$fpossize'
20806 fpostype='$fpostype'
20807 freetype='$freetype'
20808 from='$from'
20809 full_ar='$full_ar'
20810 full_csh='$full_csh'
20811 full_sed='$full_sed'
20812 gccansipedantic='$gccansipedantic'
20813 gccosandvers='$gccosandvers'
20814 gccversion='$gccversion'
20815 getgrent_r_proto='$getgrent_r_proto'
20816 getgrgid_r_proto='$getgrgid_r_proto'
20817 getgrnam_r_proto='$getgrnam_r_proto'
20818 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20819 gethostbyname_r_proto='$gethostbyname_r_proto'
20820 gethostent_r_proto='$gethostent_r_proto'
20821 getlogin_r_proto='$getlogin_r_proto'
20822 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20823 getnetbyname_r_proto='$getnetbyname_r_proto'
20824 getnetent_r_proto='$getnetent_r_proto'
20825 getprotobyname_r_proto='$getprotobyname_r_proto'
20826 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20827 getprotoent_r_proto='$getprotoent_r_proto'
20828 getpwent_r_proto='$getpwent_r_proto'
20829 getpwnam_r_proto='$getpwnam_r_proto'
20830 getpwuid_r_proto='$getpwuid_r_proto'
20831 getservbyname_r_proto='$getservbyname_r_proto'
20832 getservbyport_r_proto='$getservbyport_r_proto'
20833 getservent_r_proto='$getservent_r_proto'
20834 getspnam_r_proto='$getspnam_r_proto'
20835 gidformat='$gidformat'
20836 gidsign='$gidsign'
20837 gidsize='$gidsize'
20838 gidtype='$gidtype'
20839 glibpth='$glibpth'
20840 gmake='$gmake'
20841 gmtime_r_proto='$gmtime_r_proto'
20842 gnulibc_version='$gnulibc_version'
20843 grep='$grep'
20844 groupcat='$groupcat'
20845 groupstype='$groupstype'
20846 gzip='$gzip'
20847 h_fcntl='$h_fcntl'
20848 h_sysfile='$h_sysfile'
20849 hint='$hint'
20850 hostcat='$hostcat'
20851 html1dir='$html1dir'
20852 html1direxp='$html1direxp'
20853 html3dir='$html3dir'
20854 html3direxp='$html3direxp'
20855 i16size='$i16size'
20856 i16type='$i16type'
20857 i32size='$i32size'
20858 i32type='$i32type'
20859 i64size='$i64size'
20860 i64type='$i64type'
20861 i8size='$i8size'
20862 i8type='$i8type'
20863 i_arpainet='$i_arpainet'
20864 i_bsdioctl='$i_bsdioctl'
20865 i_crypt='$i_crypt'
20866 i_db='$i_db'
20867 i_dbm='$i_dbm'
20868 i_dirent='$i_dirent'
20869 i_dld='$i_dld'
20870 i_dlfcn='$i_dlfcn'
20871 i_fcntl='$i_fcntl'
20872 i_float='$i_float'
20873 i_fp='$i_fp'
20874 i_fp_class='$i_fp_class'
20875 i_gdbm='$i_gdbm'
20876 i_grp='$i_grp'
20877 i_ieeefp='$i_ieeefp'
20878 i_inttypes='$i_inttypes'
20879 i_langinfo='$i_langinfo'
20880 i_libutil='$i_libutil'
20881 i_limits='$i_limits'
20882 i_locale='$i_locale'
20883 i_machcthr='$i_machcthr'
20884 i_malloc='$i_malloc'
20885 i_math='$i_math'
20886 i_memory='$i_memory'
20887 i_mntent='$i_mntent'
20888 i_ndbm='$i_ndbm'
20889 i_netdb='$i_netdb'
20890 i_neterrno='$i_neterrno'
20891 i_netinettcp='$i_netinettcp'
20892 i_niin='$i_niin'
20893 i_poll='$i_poll'
20894 i_prot='$i_prot'
20895 i_pthread='$i_pthread'
20896 i_pwd='$i_pwd'
20897 i_rpcsvcdbm='$i_rpcsvcdbm'
20898 i_sfio='$i_sfio'
20899 i_sgtty='$i_sgtty'
20900 i_shadow='$i_shadow'
20901 i_socks='$i_socks'
20902 i_stdarg='$i_stdarg'
20903 i_stddef='$i_stddef'
20904 i_stdlib='$i_stdlib'
20905 i_string='$i_string'
20906 i_sunmath='$i_sunmath'
20907 i_sysaccess='$i_sysaccess'
20908 i_sysdir='$i_sysdir'
20909 i_sysfile='$i_sysfile'
20910 i_sysfilio='$i_sysfilio'
20911 i_sysin='$i_sysin'
20912 i_sysioctl='$i_sysioctl'
20913 i_syslog='$i_syslog'
20914 i_sysmman='$i_sysmman'
20915 i_sysmode='$i_sysmode'
20916 i_sysmount='$i_sysmount'
20917 i_sysndir='$i_sysndir'
20918 i_sysparam='$i_sysparam'
20919 i_sysresrc='$i_sysresrc'
20920 i_syssecrt='$i_syssecrt'
20921 i_sysselct='$i_sysselct'
20922 i_syssockio='$i_syssockio'
20923 i_sysstat='$i_sysstat'
20924 i_sysstatfs='$i_sysstatfs'
20925 i_sysstatvfs='$i_sysstatvfs'
20926 i_systime='$i_systime'
20927 i_systimek='$i_systimek'
20928 i_systimes='$i_systimes'
20929 i_systypes='$i_systypes'
20930 i_sysuio='$i_sysuio'
20931 i_sysun='$i_sysun'
20932 i_sysutsname='$i_sysutsname'
20933 i_sysvfs='$i_sysvfs'
20934 i_syswait='$i_syswait'
20935 i_termio='$i_termio'
20936 i_termios='$i_termios'
20937 i_time='$i_time'
20938 i_unistd='$i_unistd'
20939 i_ustat='$i_ustat'
20940 i_utime='$i_utime'
20941 i_values='$i_values'
20942 i_varargs='$i_varargs'
20943 i_varhdr='$i_varhdr'
20944 i_vfork='$i_vfork'
20945 ignore_versioned_solibs='$ignore_versioned_solibs'
20946 inc_version_list='$inc_version_list'
20947 inc_version_list_init='$inc_version_list_init'
20948 incpath='$incpath'
20949 inews='$inews'
20950 installarchlib='$installarchlib'
20951 installbin='$installbin'
20952 installhtml1dir='$installhtml1dir'
20953 installhtml3dir='$installhtml3dir'
20954 installman1dir='$installman1dir'
20955 installman3dir='$installman3dir'
20956 installprefix='$installprefix'
20957 installprefixexp='$installprefixexp'
20958 installprivlib='$installprivlib'
20959 installscript='$installscript'
20960 installsitearch='$installsitearch'
20961 installsitebin='$installsitebin'
20962 installsitehtml1='$installsitehtml1'
20963 installsitehtml3='$installsitehtml3'
20964 installsitelib='$installsitelib'
20965 installsiteman1='$installsiteman1'
20966 installsiteman3='$installsiteman3'
20967 installsitescript='$installsitescript'
20968 installstyle='$installstyle'
20969 installusrbinperl='$installusrbinperl'
20970 installvendorarch='$installvendorarch'
20971 installvendorbin='$installvendorbin'
20972 installvendorhtml1='$installvendorhtml1'
20973 installvendorhtml3='$installvendorhtml3'
20974 installvendorlib='$installvendorlib'
20975 installvendorman1='$installvendorman1'
20976 installvendorman3='$installvendorman3'
20977 installvendorscript='$installvendorscript'
20978 intsize='$intsize'
20979 issymlink='$issymlink'
20980 ivdformat='$ivdformat'
20981 ivsize='$ivsize'
20982 ivtype='$ivtype'
20983 known_extensions='$known_extensions'
20984 ksh='$ksh'
20985 ld='$ld'
20986 lddlflags='$lddlflags'
20987 ldflags='$ldflags'
20988 ldflags_uselargefiles='$ldflags_uselargefiles'
20989 ldlibpthname='$ldlibpthname'
20990 less='$less'
20991 lib_ext='$lib_ext'
20992 libc='$libc'
20993 libperl='$libperl'
20994 libpth='$libpth'
20995 libs='$libs'
20996 libsdirs='$libsdirs'
20997 libsfiles='$libsfiles'
20998 libsfound='$libsfound'
20999 libspath='$libspath'
21000 libswanted='$libswanted'
21001 libswanted_uselargefiles='$libswanted_uselargefiles'
21002 line='$line'
21003 lint='$lint'
21004 lkflags='$lkflags'
21005 ln='$ln'
21006 lns='$lns'
21007 localtime_r_proto='$localtime_r_proto'
21008 locincpth='$locincpth'
21009 loclibpth='$loclibpth'
21010 longdblsize='$longdblsize'
21011 longlongsize='$longlongsize'
21012 longsize='$longsize'
21013 lp='$lp'
21014 lpr='$lpr'
21015 ls='$ls'
21016 lseeksize='$lseeksize'
21017 lseektype='$lseektype'
21018 mail='$mail'
21019 mailx='$mailx'
21020 make='$make'
21021 make_set_make='$make_set_make'
21022 mallocobj='$mallocobj'
21023 mallocsrc='$mallocsrc'
21024 malloctype='$malloctype'
21025 man1dir='$man1dir'
21026 man1direxp='$man1direxp'
21027 man1ext='$man1ext'
21028 man3dir='$man3dir'
21029 man3direxp='$man3direxp'
21030 man3ext='$man3ext'
21031 mips_type='$mips_type'
21032 mkdir='$mkdir'
21033 mmaptype='$mmaptype'
21034 modetype='$modetype'
21035 more='$more'
21036 multiarch='$multiarch'
21037 mv='$mv'
21038 myarchname='$myarchname'
21039 mydomain='$mydomain'
21040 myhostname='$myhostname'
21041 myuname='$myuname'
21042 n='$n'
21043 need_va_copy='$need_va_copy'
21044 netdb_hlen_type='$netdb_hlen_type'
21045 netdb_host_type='$netdb_host_type'
21046 netdb_name_type='$netdb_name_type'
21047 netdb_net_type='$netdb_net_type'
21048 nm='$nm'
21049 nm_opt='$nm_opt'
21050 nm_so_opt='$nm_so_opt'
21051 nonxs_ext='$nonxs_ext'
21052 nroff='$nroff'
21053 nvEUformat='$nvEUformat'
21054 nvFUformat='$nvFUformat'
21055 nvGUformat='$nvGUformat'
21056 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21057 nveformat='$nveformat'
21058 nvfformat='$nvfformat'
21059 nvgformat='$nvgformat'
21060 nvsize='$nvsize'
21061 nvtype='$nvtype'
21062 o_nonblock='$o_nonblock'
21063 obj_ext='$obj_ext'
21064 old_pthread_create_joinable='$old_pthread_create_joinable'
21065 optimize='$optimize'
21066 orderlib='$orderlib'
21067 osname='$osname'
21068 osvers='$osvers'
21069 otherlibdirs='$otherlibdirs'
21070 package='$package'
21071 pager='$pager'
21072 passcat='$passcat'
21073 patchlevel='$patchlevel'
21074 path_sep='$path_sep'
21075 perl5='$perl5'
21076 perl='$perl'
21077 perl_patchlevel='$perl_patchlevel'
21078 perladmin='$perladmin'
21079 perllibs='$perllibs'
21080 perlpath='$perlpath'
21081 pg='$pg'
21082 phostname='$phostname'
21083 pidtype='$pidtype'
21084 plibpth='$plibpth'
21085 pm_apiversion='$pm_apiversion'
21086 pmake='$pmake'
21087 pr='$pr'
21088 prefix='$prefix'
21089 prefixexp='$prefixexp'
21090 privlib='$privlib'
21091 privlibexp='$privlibexp'
21092 procselfexe='$procselfexe'
21093 prototype='$prototype'
21094 ptrsize='$ptrsize'
21095 quadkind='$quadkind'
21096 quadtype='$quadtype'
21097 randbits='$randbits'
21098 randfunc='$randfunc'
21099 random_r_proto='$random_r_proto'
21100 randseedtype='$randseedtype'
21101 ranlib='$ranlib'
21102 rd_nodata='$rd_nodata'
21103 readdir64_r_proto='$readdir64_r_proto'
21104 readdir_r_proto='$readdir_r_proto'
21105 revision='$revision'
21106 rm='$rm'
21107 rmail='$rmail'
21108 run='$run'
21109 runnm='$runnm'
21110 sPRIEUldbl='$sPRIEUldbl'
21111 sPRIFUldbl='$sPRIFUldbl'
21112 sPRIGUldbl='$sPRIGUldbl'
21113 sPRIXU64='$sPRIXU64'
21114 sPRId64='$sPRId64'
21115 sPRIeldbl='$sPRIeldbl'
21116 sPRIfldbl='$sPRIfldbl'
21117 sPRIgldbl='$sPRIgldbl'
21118 sPRIi64='$sPRIi64'
21119 sPRIo64='$sPRIo64'
21120 sPRIu64='$sPRIu64'
21121 sPRIx64='$sPRIx64'
21122 sSCNfldbl='$sSCNfldbl'
21123 sched_yield='$sched_yield'
21124 scriptdir='$scriptdir'
21125 scriptdirexp='$scriptdirexp'
21126 sed='$sed'
21127 seedfunc='$seedfunc'
21128 selectminbits='$selectminbits'
21129 selecttype='$selecttype'
21130 sendmail='$sendmail'
21131 setgrent_r_proto='$setgrent_r_proto'
21132 sethostent_r_proto='$sethostent_r_proto'
21133 setlocale_r_proto='$setlocale_r_proto'
21134 setnetent_r_proto='$setnetent_r_proto'
21135 setprotoent_r_proto='$setprotoent_r_proto'
21136 setpwent_r_proto='$setpwent_r_proto'
21137 setservent_r_proto='$setservent_r_proto'
21138 sh='$sh'
21139 shar='$shar'
21140 sharpbang='$sharpbang'
21141 shmattype='$shmattype'
21142 shortsize='$shortsize'
21143 shrpenv='$shrpenv'
21144 shsharp='$shsharp'
21145 sig_count='$sig_count'
21146 sig_name='$sig_name'
21147 sig_name_init='$sig_name_init'
21148 sig_num='$sig_num'
21149 sig_num_init='$sig_num_init'
21150 sig_size='$sig_size'
21151 signal_t='$signal_t'
21152 sitearch='$sitearch'
21153 sitearchexp='$sitearchexp'
21154 sitebin='$sitebin'
21155 sitebinexp='$sitebinexp'
21156 sitehtml1='$sitehtml1'
21157 sitehtml1exp='$sitehtml1exp'
21158 sitehtml3='$sitehtml3'
21159 sitehtml3exp='$sitehtml3exp'
21160 sitelib='$sitelib'
21161 sitelib_stem='$sitelib_stem'
21162 sitelibexp='$sitelibexp'
21163 siteman1='$siteman1'
21164 siteman1exp='$siteman1exp'
21165 siteman3='$siteman3'
21166 siteman3exp='$siteman3exp'
21167 siteprefix='$siteprefix'
21168 siteprefixexp='$siteprefixexp'
21169 sitescript='$sitescript'
21170 sitescriptexp='$sitescriptexp'
21171 sizesize='$sizesize'
21172 sizetype='$sizetype'
21173 sleep='$sleep'
21174 smail='$smail'
21175 so='$so'
21176 sockethdr='$sockethdr'
21177 socketlib='$socketlib'
21178 socksizetype='$socksizetype'
21179 sort='$sort'
21180 spackage='$spackage'
21181 spitshell='$spitshell'
21182 srand48_r_proto='$srand48_r_proto'
21183 srandom_r_proto='$srandom_r_proto'
21184 src='$src'
21185 ssizetype='$ssizetype'
21186 startperl='$startperl'
21187 startsh='$startsh'
21188 static_ext='$static_ext'
21189 stdchar='$stdchar'
21190 stdio_base='$stdio_base'
21191 stdio_bufsiz='$stdio_bufsiz'
21192 stdio_cnt='$stdio_cnt'
21193 stdio_filbuf='$stdio_filbuf'
21194 stdio_ptr='$stdio_ptr'
21195 stdio_stream_array='$stdio_stream_array'
21196 strerror_r_proto='$strerror_r_proto'
21197 strings='$strings'
21198 submit='$submit'
21199 subversion='$subversion'
21200 sysman='$sysman'
21201 tail='$tail'
21202 tar='$tar'
21203 targetarch='$targetarch'
21204 tbl='$tbl'
21205 tee='$tee'
21206 test='$test'
21207 timeincl='$timeincl'
21208 timetype='$timetype'
21209 tmpnam_r_proto='$tmpnam_r_proto'
21210 to='$to'
21211 touch='$touch'
21212 tr='$tr'
21213 trnl='$trnl'
21214 troff='$troff'
21215 ttyname_r_proto='$ttyname_r_proto'
21216 u16size='$u16size'
21217 u16type='$u16type'
21218 u32size='$u32size'
21219 u32type='$u32type'
21220 u64size='$u64size'
21221 u64type='$u64type'
21222 u8size='$u8size'
21223 u8type='$u8type'
21224 uidformat='$uidformat'
21225 uidsign='$uidsign'
21226 uidsize='$uidsize'
21227 uidtype='$uidtype'
21228 uname='$uname'
21229 uniq='$uniq'
21230 uquadtype='$uquadtype'
21231 use5005threads='$use5005threads'
21232 use64bitall='$use64bitall'
21233 use64bitint='$use64bitint'
21234 usecrosscompile='$usecrosscompile'
21235 usedl='$usedl'
21236 useithreads='$useithreads'
21237 uselargefiles='$uselargefiles'
21238 uselongdouble='$uselongdouble'
21239 usemorebits='$usemorebits'
21240 usemultiplicity='$usemultiplicity'
21241 usemymalloc='$usemymalloc'
21242 usenm='$usenm'
21243 useopcode='$useopcode'
21244 useperlio='$useperlio'
21245 useposix='$useposix'
21246 usereentrant='$usereentrant'
21247 usesfio='$usesfio'
21248 useshrplib='$useshrplib'
21249 usesocks='$usesocks'
21250 usethreads='$usethreads'
21251 usevendorprefix='$usevendorprefix'
21252 usevfork='$usevfork'
21253 usrinc='$usrinc'
21254 uuname='$uuname'
21255 uvXUformat='$uvXUformat'
21256 uvoformat='$uvoformat'
21257 uvsize='$uvsize'
21258 uvtype='$uvtype'
21259 uvuformat='$uvuformat'
21260 uvxformat='$uvxformat'
21261 vendorarch='$vendorarch'
21262 vendorarchexp='$vendorarchexp'
21263 vendorbin='$vendorbin'
21264 vendorbinexp='$vendorbinexp'
21265 vendorhtml1='$vendorhtml1'
21266 vendorhtml1exp='$vendorhtml1exp'
21267 vendorhtml3='$vendorhtml3'
21268 vendorhtml3exp='$vendorhtml3exp'
21269 vendorlib='$vendorlib'
21270 vendorlib_stem='$vendorlib_stem'
21271 vendorlibexp='$vendorlibexp'
21272 vendorman1='$vendorman1'
21273 vendorman1exp='$vendorman1exp'
21274 vendorman3='$vendorman3'
21275 vendorman3exp='$vendorman3exp'
21276 vendorprefix='$vendorprefix'
21277 vendorprefixexp='$vendorprefixexp'
21278 vendorscript='$vendorscript'
21279 vendorscriptexp='$vendorscriptexp'
21280 version='$version'
21281 version_patchlevel_string='$version_patchlevel_string'
21282 versiononly='$versiononly'
21283 vi='$vi'
21284 voidflags='$voidflags'
21285 xlibpth='$xlibpth'
21286 xs_apiversion='$xs_apiversion'
21287 yacc='$yacc'
21288 yaccflags='$yaccflags'
21289 zcat='$zcat'
21290 zip='$zip'
21291 EOT
21292
21293 : Add in command line options if available
21294 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21295
21296 : add special variables
21297 $test -f $src/patchlevel.h && \
21298 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21299 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21300 echo "PERL_CONFIG_SH=true" >>config.sh
21301
21302 : propagate old symbols
21303 if $test -f UU/config.sh; then
21304         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21305         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21306         $sort | $uniq -u >UU/oldsyms
21307         set X `cat UU/oldsyms`
21308         shift
21309         case $# in
21310         0) ;;
21311         *)
21312                 cat <<EOM
21313 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21314 EOM
21315                 echo "# Variables propagated from previous config.sh file." >>config.sh
21316                 for sym in `cat UU/oldsyms`; do
21317                         echo "    Propagating $hint variable "'$'"$sym..."
21318                         eval 'tmp="$'"${sym}"'"'
21319                         echo "$tmp" | \
21320                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21321                 done
21322                 ;;
21323         esac
21324 fi
21325
21326 : Finish up by extracting the .SH files
21327 case "$alldone" in
21328 exit)
21329         $rm -rf UU
21330         echo "Extraction done."
21331         exit 0
21332         ;;
21333 cont)
21334         ;;
21335 '')
21336         dflt=''
21337         nostick=true
21338         $cat <<EOM
21339
21340 If you'd like to make any changes to the config.sh file before I begin
21341 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21342
21343 EOM
21344         rp="Press return or use a shell escape to edit config.sh:"
21345         . UU/myread
21346         nostick=''
21347         case "$ans" in
21348         '') ;;
21349         *) : in case they cannot read
21350                 sh 1>&4 -c "$ans";;
21351         esac
21352         ;;
21353 esac
21354
21355 : if this fails, just run all the .SH files by hand
21356 . ./config.sh
21357
21358 echo " "
21359 exec 1>&4
21360 pwd=`pwd`
21361 . ./UU/extract
21362 cd "$pwd"
21363
21364 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21365         dflt=y
21366         case "$silent" in
21367         true) ;;
21368         *)
21369                 $cat <<EOM
21370
21371 Now you need to generate make dependencies by running "$make depend".
21372 You might prefer to run it in background: "$make depend > makedepend.out &"
21373 It can take a while, so you might not want to run it right now.
21374
21375 EOM
21376                 ;;
21377         esac
21378         rp="Run $make depend now?"
21379         . UU/myread
21380         case "$ans" in
21381         y*)
21382                 $make depend && echo "Now you must run '$make'."
21383                 ;;
21384         *)
21385                 echo "You must run '$make depend' then '$make'."
21386                 ;;
21387         esac
21388 elif test -f [Mm]akefile; then
21389         echo " "
21390         echo "Now you must run a $make."
21391 else
21392         echo "Configure done."
21393 fi
21394
21395 if $test -f Policy.sh; then
21396     $cat <<EOM
21397
21398 If you compile $package on a different machine or from a different object
21399 directory, copy the Policy.sh file from this object directory to the
21400 new one before you run Configure -- this will help you with most of
21401 the policy defaults.
21402
21403 EOM
21404 fi
21405 if $test -f config.msg; then
21406     echo "Hmm.  I also noted the following information while running:"
21407     echo " "
21408     $cat config.msg >&4
21409     $rm -f config.msg
21410 fi
21411 $rm -f kit*isdone ark*isdone
21412 $rm -rf UU
21413
21414 : End of Configure
21415